Difference between revisions of "Blog 05"
(→!BETA!) |
|||
(3 intermediate revisions by the same user not shown) | |||
Line 6: | Line 6: | ||
Script 1(The name I gave it was: ui): | Script 1(The name I gave it was: ui): | ||
− | #!/bin/sh | + | #!/bin/sh |
− | + | ui="bw_tool -a 94 -I -D /dev/i2c-1" | |
− | + | $ui -W 70:c7:b # internal tempsens with internal 1.1V as reference | |
− | + | $ui -W 71:c6:b # external tempsens with internal 1.1V as reference | |
− | + | $ui -W 81:1000:s | |
− | + | $ui -W 82:6:b | |
− | + | $ui -W 80:2:b | |
After this we make ui executable: | After this we make ui executable: | ||
Line 31: | Line 31: | ||
( There will be nothing printed out when you activate it ) | ( There will be nothing printed out when you activate it ) | ||
+ | * | ||
+ | Now it's time to make the second script. ( I named it showtemp) | ||
+ | |||
+ | #!/bin/sh | ||
+ | # | ||
+ | # | ||
+ | # Set the number of samples to 64, and shift by 0, or set the | ||
+ | # number of samples to 4096 and shift by 6. The latter is recommended! | ||
+ | # | ||
+ | adcmaxval=65520 | ||
+ | #adcmaxval=1023 | ||
+ | # | ||
+ | # MCP9700 degrees per volt. | ||
+ | vperdeg=0.010 | ||
+ | #refvoltage=4.9000 | ||
+ | refvoltage=1.1000 | ||
+ | # mcp offset voltage is 500mv at 0 deg. At 0.010 volt per deg that comes to | ||
+ | # 50 degrees C. | ||
+ | offset=50 | ||
+ | # | ||
+ | # | ||
+ | # 60 adc channel 0, direct value (0-1023) | ||
+ | # 68 adc channel 0, averaged value (0-65520 with nsamp=4096, shift=6) | ||
+ | # 61 adc channel 1, direct value (0-1023) | ||
+ | # 69 adc channel 1, averaged value (0-65520 with nsamp=4096, shift=6) | ||
+ | register_to_read=69 | ||
+ | |||
+ | # | ||
+ | # settings are done, now the preparations. | ||
+ | convfactor=`(echo scale = 10 ; echo obase=16;echo $refvoltage / $vperdeg / $adcmaxval ) | bc` | ||
+ | offsethex=`(echo obase=16; echo scale=3;echo $offset) | bc ` | ||
+ | |||
+ | |||
+ | # now do the real deal. | ||
+ | rawtemp=`sudo bw_tool -I -D /dev/i2c-1 -a 94 -R $register_to_read:s | tr a-z A-Z` | ||
+ | (echo ibase=16; echo scale=3;echo $rawtemp \* $convfactor - $offsethex) | bc | ||
− | + | After that we make is executable, like we did with the ui script. | |
chmod +x showtemp | chmod +x showtemp | ||
Line 39: | Line 75: | ||
-rwxr-xr-x 1 pi pi 999 Sep 7 14:26 showtemp | -rwxr-xr-x 1 pi pi 999 Sep 7 14:26 showtemp | ||
+ | |||
+ | We trying it out I got failures, because I didn't download bc.: | ||
apt-get install bc | apt-get install bc | ||
+ | To check if your scripts work: | ||
sh -x ./ui | sh -x ./ui | ||
Line 74: | Line 113: | ||
24.251648852 | 24.251648852 | ||
+ | If a line is wrong it should give a warning. | ||
− | + | So now everything is fine it is time to print it out: | |
− | |||
+ | bw_tool -I -D /dev/i2c-1 -a 94 -t "temp: "`./showtemp` | ||
− | + | [[File:Temperature.png|400px|thumb|none|]] | |
− | |||
− | |||
− | + | (The remove the latest temperature and see the newest one: | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | The remove the latest | ||
bw_tool -I -D /dev/i2c-1 -a 94 -w 10:00 | bw_tool -I -D /dev/i2c-1 -a 94 -w 10:00 | ||
bw_tool -I -D /dev/i2c-1 -a 94 -t "temp: "`./showtemp | bw_tool -I -D /dev/i2c-1 -a 94 -t "temp: "`./showtemp | ||
+ | ) | ||
− | Code that I used: http://www.bitwizard.nl/wiki/index.php/Temperature_sensor_example | + | Code that I used: [[http://www.bitwizard.nl/wiki/index.php/Temperature_sensor_example Temperature Sensor example]] |
− | |||
− | |||
− | |||
− | |||
Line 116: | Line 138: | ||
So I am going to try to mix the previous code with temperature code so it will check the code every amount of time. ( I will take 5 sec ) | So I am going to try to mix the previous code with temperature code so it will check the code every amount of time. ( I will take 5 sec ) | ||
− | + | I made the script(Temp5): | |
− | |||
− | |||
− | |||
− | ( | ||
− | |||
− | |||
#!/bin/bash | #!/bin/bash | ||
+ | DISPL="bw_tool -I -D /dev/i2c-1 -a 94" | ||
+ | |||
+ | $DISPL -W 10:0:b | ||
+ | |||
while true;do | while true;do | ||
bw_tool -I -D /dev/i2c-1 -a 94 -w 10:00 | bw_tool -I -D /dev/i2c-1 -a 94 -w 10:00 | ||
Line 132: | Line 152: | ||
− | + | Do like the other times: | |
− | chmod +x | + | chmod +x Temp5 |
+ | |||
+ | And now when you do: | ||
− | + | ./Temp5 | |
+ | He will print the temperature every 5 seconds. | ||
On [[Blog 06]] I combined made it possible to show the time and temperature on the display. | On [[Blog 06]] I combined made it possible to show the time and temperature on the display. |
Latest revision as of 14:33, 21 September 2015
!BETA!
Now the temperature sensor: For making the temperature sensor we have to make 2 script.
Script 1(The name I gave it was: ui):
#!/bin/sh ui="bw_tool -a 94 -I -D /dev/i2c-1" $ui -W 70:c7:b # internal tempsens with internal 1.1V as reference $ui -W 71:c6:b # external tempsens with internal 1.1V as reference $ui -W 81:1000:s $ui -W 82:6:b $ui -W 80:2:b
After this we make ui executable:
chmod +x ui
And look if it worked:
ls -l ui
This result should have -rwxr-xr-x like me: -rwxr-xr-x 1 root root 216 Sep 7 15:46 ui
Ater you see it works activate it:
./ui
( There will be nothing printed out when you activate it )
Now it's time to make the second script. ( I named it showtemp)
#!/bin/sh # # # Set the number of samples to 64, and shift by 0, or set the # number of samples to 4096 and shift by 6. The latter is recommended! # adcmaxval=65520 #adcmaxval=1023 # # MCP9700 degrees per volt. vperdeg=0.010 #refvoltage=4.9000 refvoltage=1.1000 # mcp offset voltage is 500mv at 0 deg. At 0.010 volt per deg that comes to # 50 degrees C. offset=50 # # # 60 adc channel 0, direct value (0-1023) # 68 adc channel 0, averaged value (0-65520 with nsamp=4096, shift=6) # 61 adc channel 1, direct value (0-1023) # 69 adc channel 1, averaged value (0-65520 with nsamp=4096, shift=6) register_to_read=69 # # settings are done, now the preparations. convfactor=`(echo scale = 10 ; echo obase=16;echo $refvoltage / $vperdeg / $adcmaxval ) | bc` offsethex=`(echo obase=16; echo scale=3;echo $offset) | bc ` # now do the real deal. rawtemp=`sudo bw_tool -I -D /dev/i2c-1 -a 94 -R $register_to_read:s | tr a-z A-Z` (echo ibase=16; echo scale=3;echo $rawtemp \* $convfactor - $offsethex) | bc
After that we make is executable, like we did with the ui script.
chmod +x showtemp ls -l showtemp
-rwxr-xr-x 1 pi pi 999 Sep 7 14:26 showtemp
We trying it out I got failures, because I didn't download bc.:
apt-get install bc
To check if your scripts work:
sh -x ./ui + ui=bw_tool -a 94 -I -D /dev/i2c-1 + bw_tool -a 94 -I -D /dev/i2c-1 -W 70:c7:b + bw_tool -a 94 -I -D /dev/i2c-1 -W 71:c6:b + bw_tool -a 94 -I -D /dev/i2c-1 -W 81:1000:s + bw_tool -a 94 -I -D /dev/i2c-1 -W 82:6:b + bw_tool -a 94 -I -D /dev/i2c-1 -W 80:2:b
sh -x ./showtemp + adcmaxval=65520 + vperdeg=0.010 + refvoltage=1.1000 + offset=50 + register_to_read=69 + + bc echo scale = 10 + echo obase=16 + echo 1.1000 / 0.010 / 65520 + convfactor=.006E06E01 + echo obase=16 + echo+ scale=3 bc+ echo 50 + offsethex=32 + sudo bw_tool+ -I -Dtr a-z A-Z /dev/i2c-1 -a 94 -R 69:s + rawtemp=ACC3 + echo ibase=16 + echo scale=3 + echo ACC3 * .006E06E01 - 32 + bc 24.251648852
If a line is wrong it should give a warning.
So now everything is fine it is time to print it out:
bw_tool -I -D /dev/i2c-1 -a 94 -t "temp: "`./showtemp`
(The remove the latest temperature and see the newest one:
bw_tool -I -D /dev/i2c-1 -a 94 -w 10:00 bw_tool -I -D /dev/i2c-1 -a 94 -t "temp: "`./showtemp
)
Code that I used: [Temperature Sensor example]
Now we have this. It may be better that we also get it to refresh around a several second instead we have to type the code:
bw_tool -I -D /dev/i2c-1 -a 94 -w 10:00 bw_tool -I -D /dev/i2c-1 -a 94 -t "temp: "`./showtemp
over and over again. So I am going to try to mix the previous code with temperature code so it will check the code every amount of time. ( I will take 5 sec )
I made the script(Temp5):
#!/bin/bash DISPL="bw_tool -I -D /dev/i2c-1 -a 94" $DISPL -W 10:0:b while true;do bw_tool -I -D /dev/i2c-1 -a 94 -w 10:00 bw_tool -I -D /dev/i2c-1 -a 94 -t "temp: "`./showtemp` sleep 5 done
Do like the other times:
chmod +x Temp5
And now when you do:
./Temp5
He will print the temperature every 5 seconds.
On Blog 06 I combined made it possible to show the time and temperature on the display.