Instrument control package: Difference between revisions

Jump to navigation Jump to search
Line 372: Line 372:
In the example case the temperature sensor is connected to the i2c-ch341-usb device, as as sufficient permissions to access the device as a user.  
In the example case the temperature sensor is connected to the i2c-ch341-usb device, as as sufficient permissions to access the device as a user.  


Accoridng to the datasheet, the temperature device uses address 0x40, so create a i2c device using the linux device and address:
According to the datasheet, the temperature device uses address 0x40, so create a i2c device using the linux device and address:


{{Code||<syntaxhighlight lang="octave" style="font-size:13px">
<syntaxhighlight lang="octave" style="font-size:13px">
i2cdev = i2c("/dev/i2c-1", 0x40)
i2cdev = i2c("/dev/i2c-1", 0x40)
}}
</syntaxhighlight>


To read  the termaturem register 0xF3 must be addressed and read (2 bytes of data):
To read  the termaturem register 0xF3 must be addressed and read (2 bytes of data):


{{Code||<syntaxhighlight lang="octave" style="font-size:13px">
<syntaxhighlight lang="octave" style="font-size:13px">
TEMP_MEASURE_NOHOLD = hex2dec("F3");
TEMP_MEASURE_NOHOLD = hex2dec("F3");
fwrite (i2cdev, uint8([TEMP_MEASURE_NOHOLD]));
fwrite (i2cdev, uint8([TEMP_MEASURE_NOHOLD]));
pause (0.02);
pause (0.02);
data = fread (i2cdev, 3);
data = fread (i2cdev, 3);
}}
</syntaxhighlight>


The data needs to be converted to a 16 bit value and the unused part masked out.
<syntaxhighlight lang="octave" style="font-size:13px">
 
{{Code||<syntaxhighlight lang="octave" style="font-size:13px">
value = uint16(data(1))*256 + uint16(data(2));
value = uint16(data(1))*256 + uint16(data(2));
value = bitand (value, hex2dec("FFFC"));
value = bitand (value, hex2dec("FFFC"));
temp_Code = double(value);
temp_Code = double(value);
}}
</syntaxhighlight>


Now convert the temperature to degrees C and display:
Now convert the temperature to degrees C and display:


{{Code||<syntaxhighlight lang="octave" style="font-size:13px">
<syntaxhighlight lang="octave" style="font-size:13px">
C = (175.72*temp_Code/65536)-46.85;
C = (175.72*temp_Code/65536)-46.85;
printf ("temperature read %f C\n", C);
printf ("temperature read %f C\n", C);
}}
</syntaxhighlight>


== TCP ==
== TCP ==
Anonymous user

Navigation menu