Project

General

Profile

Download (2.81 KB) Statistics
| Branch: | Tag: | Revision:
e45aa19e dsorber
import sys
import time

import smbus

class TMP512(object):

def __init__(self, address):
self.bus = smbus.SMBus(1)
self.address = address

018481aa dsorber
# Shunt Measurement Configuration
# - turn off shunt/bus voltage measurement
self.write_reg(0x00, 0x3998)

# Temperature Measurement Configuration
# - continous conversion at 1 conversion/second
# - enable remote 1, remote 2 and local
self.write_reg(0x01, 0xBE00)

e45aa19e dsorber
def _reverse16(self, value):
""" A quick hack method for reversing byte order for a 16 bit value """
str_val = '%04X' % value
new_val = str_val[2:4] + str_val[0:2]
return int(new_val, 16)

def read_reg(self, reg):
raw = self.bus.read_word_data(self.address, reg)
return self._reverse16(raw)

018481aa dsorber
def write_reg(self, reg, data):
raw = self._reverse16(data)
self.bus.write_word_data(self.address, reg, raw)

def reset(self):
self.write_reg(0x00, 0xB998)
time.sleep(1)

def status(self):
return self.read_reg(0x02)

e45aa19e dsorber
def device_id(self):
return '0x%04X' % self.read_reg(0x1F)

74eab0f1 dsorber
def _convert_temp(self, raw_val):
018481aa dsorber
# Raw temp is a 13 bit number, the units are 0.0625 C
74eab0f1 dsorber
temp = (raw_val >> 3) * 0.0625
# Convert C to F
return (temp * 1.8) + 32

e45aa19e dsorber
def local_temp(self):
74eab0f1 dsorber
return self._convert_temp(self.read_reg(0x08))

def temp_sensor1(self):
return self._convert_temp(self.read_reg(0x09))

def temp_sensor2(self):
return self._convert_temp(self.read_reg(0x0A))
e45aa19e dsorber

def main():
018481aa dsorber
import time

e376a628 dsorber
tmp512_1 = TMP512(0x5d)
tmp512_2 = TMP512(0x5c)

print 'TMP512-1 status: 0x%04X' % tmp512_1.status()
print 'TMP512-2 status: 0x%04X' % tmp512_2.status()

print 'TMP512-1 local temp is %d' % tmp512_1.local_temp()
print 'TMP512-2 local temp is %d' % tmp512_2.local_temp()

print 'TMP512-1 remote 1 temp is %d' % tmp512_1.temp_sensor1()
print 'TMP512-1 remote 2 temp is %d' % tmp512_1.temp_sensor2()
print 'TMP512-2 remote 1 temp is %d' % tmp512_2.temp_sensor1()
print 'TMP512-2 remote 2 temp is %d' % tmp512_2.temp_sensor2()

print '---'
018481aa dsorber
time.sleep(1)
e376a628 dsorber
print 'TMP512-1 remote 1 temp is %d' % tmp512_1.temp_sensor1()
print 'TMP512-1 remote 2 temp is %d' % tmp512_1.temp_sensor2()
print 'TMP512-2 remote 1 temp is %d' % tmp512_2.temp_sensor1()
print 'TMP512-2 remote 2 temp is %d' % tmp512_2.temp_sensor2()

print '---'
018481aa dsorber
time.sleep(1)
e376a628 dsorber
print 'TMP512-1 remote 1 temp is %d' % tmp512_1.temp_sensor1()
print 'TMP512-1 remote 2 temp is %d' % tmp512_1.temp_sensor2()
print 'TMP512-2 remote 1 temp is %d' % tmp512_2.temp_sensor1()
print 'TMP512-2 remote 2 temp is %d' % tmp512_2.temp_sensor2()
e45aa19e dsorber

if __name__ == '__main__':
sys.exit(main())