Add support for Temperature Comparison register set/get functions
This commit is contained in:
parent
547ebdf3ff
commit
4c037bfeac
|
@ -1,6 +1,7 @@
|
||||||
# LM92 module
|
# LM92 module
|
||||||
This module adds basic support for the LM92 +-0.33C 12bit+sign temperature sensor. More details in the [datasheet](http://www.ti.com/lit/ds/symlink/lm92.pdf).
|
This module adds basic support for the LM92 +-0.33C 12bit+sign temperature sensor. More details in the [datasheet](http://www.ti.com/lit/ds/symlink/lm92.pdf).
|
||||||
Works:
|
Works:
|
||||||
|
- 06/01/2016: Add get/set comparison registers. Thyst, Tlow, Thigh and Tcrit
|
||||||
- getting the temperature
|
- getting the temperature
|
||||||
- entering the chip's to shutdown mode (350uA -> 5uA power consumption)
|
- entering the chip's to shutdown mode (350uA -> 5uA power consumption)
|
||||||
- waking up the chip from shutdown
|
- waking up the chip from shutdown
|
||||||
|
@ -94,5 +95,181 @@ shutdown()
|
||||||
```lua
|
```lua
|
||||||
LM92.shutdown()
|
LM92.shutdown()
|
||||||
```
|
```
|
||||||
|
|
||||||
|
##setThyst()
|
||||||
|
####Description
|
||||||
|
Set hysteresis Temperature.
|
||||||
|
|
||||||
|
####Syntax
|
||||||
|
setThyst(data_wr)
|
||||||
|
|
||||||
|
####Parameters
|
||||||
|
data_wr: 130~-55 ºC, hysteresis Temperature
|
||||||
|
|
||||||
|
####Returns
|
||||||
|
nil
|
||||||
|
|
||||||
|
####Example
|
||||||
|
```lua
|
||||||
|
LM92.setThyst(3)
|
||||||
|
```
|
||||||
|
|
||||||
|
##setTcrit()
|
||||||
|
####Description
|
||||||
|
Set Critical Temperature.
|
||||||
|
|
||||||
|
####Syntax
|
||||||
|
setTcrit(data_wr)
|
||||||
|
|
||||||
|
####Parameters
|
||||||
|
data_wr: 130~-55 ºC, Critical Temperature
|
||||||
|
|
||||||
|
####Returns
|
||||||
|
nil
|
||||||
|
|
||||||
|
####Example
|
||||||
|
```lua
|
||||||
|
LM92.setTcrit(100.625)
|
||||||
|
```
|
||||||
|
|
||||||
|
##setTlow()
|
||||||
|
####Description
|
||||||
|
Set Low Window Temperature.
|
||||||
|
|
||||||
|
####Syntax
|
||||||
|
setTlow(data_wr)
|
||||||
|
|
||||||
|
####Parameters
|
||||||
|
data_wr: 130~-55 ºC, Low Window Temperature
|
||||||
|
|
||||||
|
####Returns
|
||||||
|
nil
|
||||||
|
|
||||||
|
####Example
|
||||||
|
```lua
|
||||||
|
LM92.setTlow(32.25)
|
||||||
|
```
|
||||||
|
##setThigh()
|
||||||
|
####Description
|
||||||
|
Set High Window Temperature.
|
||||||
|
|
||||||
|
####Syntax
|
||||||
|
setThigh(data_wr)
|
||||||
|
|
||||||
|
####Parameters
|
||||||
|
data_wr: 130~-55 ºC, High Window Temperature
|
||||||
|
|
||||||
|
####Returns
|
||||||
|
nil
|
||||||
|
|
||||||
|
####Example
|
||||||
|
```lua
|
||||||
|
LM92.setThigh(27.5)
|
||||||
|
```
|
||||||
|
|
||||||
|
##getThyst()
|
||||||
|
####Description
|
||||||
|
Get hysteresis Temperature.
|
||||||
|
|
||||||
|
####Syntax
|
||||||
|
getThyst()
|
||||||
|
|
||||||
|
####Parameters
|
||||||
|
--
|
||||||
|
|
||||||
|
####Returns
|
||||||
|
Hysteresis Temperature in degree Celsius.
|
||||||
|
|
||||||
|
####Example
|
||||||
|
```lua
|
||||||
|
t = LM92.getThyst()
|
||||||
|
print("Got hysteresis temperature: "..t.." C")
|
||||||
|
```
|
||||||
|
|
||||||
|
##getTcrit()
|
||||||
|
####Description
|
||||||
|
Get Critical Temperature.
|
||||||
|
|
||||||
|
####Syntax
|
||||||
|
getTcrit()
|
||||||
|
|
||||||
|
####Parameters
|
||||||
|
--
|
||||||
|
|
||||||
|
####Returns
|
||||||
|
Critical Temperature in degree Celsius.
|
||||||
|
|
||||||
|
####Example
|
||||||
|
```lua
|
||||||
|
t = LM92.getTcrit()
|
||||||
|
print("Got Critical temperature: "..t.." C")
|
||||||
|
```
|
||||||
|
|
||||||
|
##getTlow()
|
||||||
|
####Description
|
||||||
|
Get Low Window Temperature.
|
||||||
|
|
||||||
|
####Syntax
|
||||||
|
getTlow()
|
||||||
|
|
||||||
|
####Parameters
|
||||||
|
--
|
||||||
|
|
||||||
|
####Returns
|
||||||
|
Low Window Temperature in degree Celsius.
|
||||||
|
|
||||||
|
####Example
|
||||||
|
```lua
|
||||||
|
t = LM92.getTlow()
|
||||||
|
print("Got Low Window temperature: "..t.." C")
|
||||||
|
```
|
||||||
|
|
||||||
|
##getThigh()
|
||||||
|
####Description
|
||||||
|
Get High Window Temperature.
|
||||||
|
|
||||||
|
####Syntax
|
||||||
|
getThigh()
|
||||||
|
|
||||||
|
####Parameters
|
||||||
|
--
|
||||||
|
|
||||||
|
####Returns
|
||||||
|
High Window Temperature in degree Celsius.
|
||||||
|
|
||||||
|
####Example
|
||||||
|
```lua
|
||||||
|
t = LM92.getThigh()
|
||||||
|
print("Got High Window temperature: "..t.." C")
|
||||||
|
```
|
||||||
|
|
||||||
|
##Full example
|
||||||
|
--node.compile("lm92.lua")
|
||||||
|
LM92 = require("lm92")
|
||||||
|
gpio0 = 3
|
||||||
|
gpio2 = 4
|
||||||
|
sda = gpio0
|
||||||
|
scl = gpio2
|
||||||
|
addr = 0x48
|
||||||
|
LM92.init(sda, scl,addr)
|
||||||
|
|
||||||
|
t = LM92.getTemperature()
|
||||||
|
print("Got temperature: "..t.." C")
|
||||||
|
|
||||||
|
--Seting comparison temperatures
|
||||||
|
LM92.setThyst(3)
|
||||||
|
LM92.setTcrit(40.75)
|
||||||
|
LM92.setTlow(28.5)
|
||||||
|
LM92.setThigh(31.625)
|
||||||
|
|
||||||
|
t = LM92.getThyst()
|
||||||
|
print("Got hyster: "..t.." C")
|
||||||
|
t = LM92.getTcrit()
|
||||||
|
print("Got Crit: "..t.." C")
|
||||||
|
t = LM92.getTlow()
|
||||||
|
print("Got Low: "..t.." C")
|
||||||
|
t = LM92.getThigh()
|
||||||
|
print("Got High: "..t.." C")
|
||||||
|
|
||||||
#### TODO:
|
#### TODO:
|
||||||
- add full support of the features, including interrupt and critical alert support
|
- add full support of the features, including interrupt and critical alert support
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
--
|
--
|
||||||
-- Written by Levente Tamas <levente.tamas@navicron.com>
|
-- Written by Levente Tamas <levente.tamas@navicron.com>
|
||||||
--
|
--
|
||||||
|
-- modify by Garberoglio Leonardo <leogarberoglio@gmail.com>
|
||||||
|
--
|
||||||
-- GNU LGPL, see https://www.gnu.org/copyleft/lesser.html
|
-- GNU LGPL, see https://www.gnu.org/copyleft/lesser.html
|
||||||
-- ******************************************************
|
-- ******************************************************
|
||||||
|
|
||||||
|
@ -47,6 +49,15 @@ local function write_reg(reg_addr, data)
|
||||||
i2c.stop(id)
|
i2c.stop(id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--write comparison reg with 2 bytes
|
||||||
|
local function write_comp_reg(reg_addr, msb, lsb)
|
||||||
|
i2c.start(id)
|
||||||
|
i2c.address(id, address, i2c.TRANSMITTER)
|
||||||
|
i2c.write(id, reg_addr)
|
||||||
|
i2c.write(id, msb)
|
||||||
|
i2c.write(id, lsb)
|
||||||
|
i2c.stop(id)
|
||||||
|
end
|
||||||
-- initialize i2c
|
-- initialize i2c
|
||||||
-- d: sda
|
-- d: sda
|
||||||
-- c: scl
|
-- c: scl
|
||||||
|
@ -90,5 +101,96 @@ function M.wakeup()
|
||||||
write_reg(0x01,0x00)
|
write_reg(0x01,0x00)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Write the LM92 Thyst SET POINT
|
||||||
|
function M.setThyst(data_wr)
|
||||||
|
local tmp = data_wr / 0.0625
|
||||||
|
if (tmp>=0x1000) then
|
||||||
|
tmp= tmp-0x2000 --convert the two's complement
|
||||||
|
end
|
||||||
|
tmp = bit.lshift(tmp,3)
|
||||||
|
local lsb = bit.band(tmp, 0x00FF)
|
||||||
|
tmp = bit.rshift(bit.band(tmp, 0xFF00),8)
|
||||||
|
write_comp_reg(0x02,tmp, lsb)
|
||||||
|
end
|
||||||
|
|
||||||
return M
|
-- Write the LM92 T_crit SET POINT
|
||||||
|
function M.setTcrit(data_wr)
|
||||||
|
local tmp = data_wr / 0.0625
|
||||||
|
if (tmp>=0x1000) then
|
||||||
|
tmp= tmp-0x2000 --convert the two's complement
|
||||||
|
end
|
||||||
|
tmp = bit.lshift(tmp,3)
|
||||||
|
local lsb = bit.band(tmp, 0x00FF)
|
||||||
|
tmp = bit.rshift(bit.band(tmp, 0xFF00),8)
|
||||||
|
write_comp_reg(0x03,tmp, lsb)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Write the LM92 Tlow SET POINT
|
||||||
|
function M.setTlow(data_wr)
|
||||||
|
local tmp = data_wr / 0.0625
|
||||||
|
if (tmp>=0x1000) then
|
||||||
|
tmp= tmp-0x2000 --convert the two's complement
|
||||||
|
end
|
||||||
|
tmp = bit.lshift(tmp,3)
|
||||||
|
local lsb = bit.band(tmp, 0x00FF)
|
||||||
|
tmp = bit.rshift(bit.band(tmp, 0xFF00),8)
|
||||||
|
write_comp_reg(0x04,tmp, lsb)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Write the LM92 T_high SET POINT
|
||||||
|
function M.setThigh(data_wr)
|
||||||
|
local tmp = data_wr / 0.0625
|
||||||
|
if (tmp>=0x1000) then
|
||||||
|
tmp= tmp-0x2000 --convert the two's complement
|
||||||
|
end
|
||||||
|
tmp = bit.lshift(tmp,3)
|
||||||
|
local lsb = bit.band(tmp, 0x00FF)
|
||||||
|
tmp = bit.rshift(bit.band(tmp, 0xFF00),8)
|
||||||
|
write_comp_reg(0x05,tmp, lsb)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Read the LM92 Thyst SET POINT
|
||||||
|
function M.getThyst()
|
||||||
|
local temperature
|
||||||
|
local tmp=read_reg(0x02,2) --read 2 bytes from the Hysteresis register
|
||||||
|
temperature=bit.rshift(tmp[1]*256+tmp[2],3) --lower 3 bits are status bits
|
||||||
|
if (temperature>=0x1000) then
|
||||||
|
temperature= temperature-0x2000 --convert the two's complement
|
||||||
|
end
|
||||||
|
return temperature * 0.0625
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Read the LM92 T_crit SET POINT
|
||||||
|
function M.getTcrit()
|
||||||
|
local temperature
|
||||||
|
local tmp=read_reg(0x03,2) --read 2 bytes from the T Critical register
|
||||||
|
temperature=bit.rshift(tmp[1]*256+tmp[2],3) --lower 3 bits are status bits
|
||||||
|
if (temperature>=0x1000) then
|
||||||
|
temperature= temperature-0x2000 --convert the two's complement
|
||||||
|
end
|
||||||
|
return temperature * 0.0625
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Read the LM92 Tlow SET POINT
|
||||||
|
function M.getTlow()
|
||||||
|
local temperature
|
||||||
|
local tmp=read_reg(0x04,2) --read 2 bytes from the T Low register
|
||||||
|
temperature=bit.rshift(tmp[1]*256+tmp[2],3) --lower 3 bits are status bits
|
||||||
|
if (temperature>=0x1000) then
|
||||||
|
temperature= temperature-0x2000 --convert the two's complement
|
||||||
|
end
|
||||||
|
return temperature * 0.0625
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Read the LM92 T_high SET POINT
|
||||||
|
function M.getThigh()
|
||||||
|
local temperature
|
||||||
|
local tmp=read_reg(0x05,2) --read 2 bytes from the T High register
|
||||||
|
temperature=bit.rshift(tmp[1]*256+tmp[2],3) --lower 3 bits are status bits
|
||||||
|
if (temperature>=0x1000) then
|
||||||
|
temperature= temperature-0x2000 --convert the two's complement
|
||||||
|
end
|
||||||
|
return temperature * 0.0625
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
|
|
Loading…
Reference in New Issue