1 |
#!/usr/bin/python |
1 |
#!/usr/bin/python |
2 |
|
2 |
|
3 |
# Setuup of LION1CELL MLAB module |
3 |
# Setuup of LION1CELL MLAB module |
4 |
|
4 |
|
5 |
import time |
5 |
import time |
6 |
import sys |
6 |
import sys |
7 |
from pymlab import config |
7 |
from pymlab import config |
8 |
|
8 |
|
9 |
while True: |
9 |
while True: |
10 |
#### Sensor Configuration ########################################### |
10 |
#### Sensor Configuration ########################################### |
11 |
cfg = config.Config( |
11 |
cfg = config.Config( |
12 |
i2c = { |
12 |
i2c = { |
13 |
"port": 0, # I2C bus number |
13 |
"port": 6, # I2C bus number |
14 |
}, |
14 |
}, |
15 |
|
15 |
|
16 |
bus = [ |
16 |
bus = [ |
17 |
{ |
17 |
{ |
18 |
"type": "i2chub", |
18 |
"type": "i2chub", |
19 |
"address": 0x73, |
19 |
"address": 0x73, |
20 |
|
20 |
|
21 |
"children": [ |
21 |
"children": [ |
22 |
{"name": "guage", "type": "lioncell", "channel": 7, }, |
22 |
{"name": "guage", "type": "lioncell", "channel": 7, }, |
23 |
], |
23 |
], |
24 |
}, |
24 |
}, |
25 |
], |
25 |
], |
26 |
) |
26 |
) |
27 |
|
27 |
|
28 |
|
28 |
|
29 |
cfg.initialize() |
29 |
cfg.initialize() |
30 |
guage = cfg.get_device("guage") |
30 |
guage = cfg.get_device("guage") |
31 |
|
31 |
|
32 |
|
32 |
|
33 |
guage.WriteFlashByte(48, 0, 21, 0x0D) # Design Capacity 3350 mAh |
33 |
guage.WriteFlashByte(48, 0, 21, 0x0D) # Design Capacity 3350 mAh |
34 |
guage.WriteFlashByte(48, 0, 22, 0x16) # |
34 |
guage.WriteFlashByte(48, 0, 22, 0x16) # |
35 |
print "Design Capacity " |
35 |
print "Design Capacity " |
36 |
guage.WriteFlashByte(48, 0, 23, 0x5E) # Design Energy 12060 mWh |
36 |
guage.WriteFlashByte(48, 0, 23, 0x5E) # Design Energy 12060 mWh |
37 |
guage.WriteFlashByte(48, 0, 24, 0x38) # |
37 |
guage.WriteFlashByte(48, 0, 24, 0x38) # |
38 |
print "Design Energy" |
38 |
print "Design Energy" |
39 |
#guage.WriteFlashByte(64, 0, 0, 0x9) # External Voltage Measurement |
39 |
#guage.WriteFlashByte(64, 0, 0, 0x9) # External Voltage Measurement |
40 |
#print "External Voltage Measurement" |
40 |
#print "External Voltage Measurement" |
41 |
#guage.WriteFlashByte(64, 0, 7, 0x2) # Two Cells |
41 |
#guage.WriteFlashByte(64, 0, 7, 0x2) # Two Cells |
42 |
#print "Two Cells" |
42 |
#print "Two Cells" |
43 |
guage.WriteFlashByte(64, 0, 4, 0x64) # 7 LED (1+6), Shift Register |
43 |
guage.WriteFlashByte(64, 0, 4, 0x64) # 7 LED (1+6), Shift Register |
44 |
print "LED" |
44 |
print "LED" |
45 |
#guage.WriteFlashByte(104, 0, 14, 0x28) # Voltage Measurement Range 10240 mV |
45 |
#guage.WriteFlashByte(104, 0, 14, 0x28) # Voltage Measurement Range 10240 mV |
46 |
#guage.WriteFlashByte(104, 0, 15, 0x00) # |
46 |
#guage.WriteFlashByte(104, 0, 15, 0x00) # |
47 |
#print "Voltage Measurement Range" |
47 |
#print "Voltage Measurement Range" |
48 |
guage.WriteFlashByte(82, 0, 0, 0x0D) # Set initial cell capacity 3350 mAh |
48 |
guage.WriteFlashByte(82, 0, 0, 0x0D) # Set initial cell capacity 3350 mAh |
49 |
guage.WriteFlashByte(82, 0, 1, 0x16) # |
49 |
guage.WriteFlashByte(82, 0, 1, 0x16) # |
50 |
print "Initial cell capacity" |
50 |
print "Initial cell capacity" |
51 |
guage.WriteFlashByte(83, 0, 0, 0x20) # Set Chem ID |
51 |
guage.WriteFlashByte(83, 0, 0, 0x20) # Set Chem ID |
52 |
guage.WriteFlashByte(83, 0, 1, 0x17) # |
52 |
guage.WriteFlashByte(83, 0, 1, 0x17) # |
53 |
print "Chem ID" |
53 |
print "Chem ID" |
54 |
guage.reset() # Reset Guage |
54 |
guage.reset() # Reset Guage |
55 |
print "Reset" |
55 |
print "Reset" |
56 |
time.sleep(1) |
56 |
time.sleep(1) |
57 |
|
57 |
|
58 |
flash = guage.ReadFlashBlock(48, 0) |
58 |
flash = guage.ReadFlashBlock(48, 0) |
59 |
print "48 - ", |
59 |
print "48 - ", |
60 |
print " ".join([hex(i) for i in flash]) |
60 |
print " ".join([hex(i) for i in flash]) |
61 |
flash = guage.ReadFlashBlock(64, 0) |
61 |
flash = guage.ReadFlashBlock(64, 0) |
62 |
print "64 - ", |
62 |
print "64 - ", |
63 |
print " ".join([hex(i) for i in flash]) |
63 |
print " ".join([hex(i) for i in flash]) |
64 |
flash = guage.ReadFlashBlock(104, 0) |
64 |
flash = guage.ReadFlashBlock(104, 0) |
65 |
print "104 - ", |
65 |
print "104 - ", |
66 |
print " ".join([hex(i) for i in flash]) |
66 |
print " ".join([hex(i) for i in flash]) |
67 |
|
67 |
|
68 |
print "DesCap =", guage.DesignCapacity(), "mAh" |
68 |
print "DesCap =", guage.DesignCapacity(), "mAh" |
69 |
flash = guage.Chemistry() |
69 |
flash = guage.Chemistry() |
70 |
print "Chemistry = ", |
70 |
print "Chemistry = ", |
71 |
print " ".join([hex(i) for i in flash]) |
71 |
print " ".join([hex(i) for i in flash]) |
72 |
|
72 |
|
73 |
try: |
73 |
try: |
74 |
while True: |
74 |
while True: |
75 |
# Battery status readout |
75 |
# Battery status readout |
76 |
print "NominalAvailableCapacity =", guage.NominalAvailableCapacity(), "mAh, FullAvailabeCapacity =", guage.FullAvailabeCapacity(), "mAh, AvailableEnergy =", guage.AvailableEnergy(), "* 10 mWh" |
76 |
print "NominalAvailableCapacity =", guage.NominalAvailableCapacity(), "mAh, FullAvailabeCapacity =", guage.FullAvailabeCapacity(), "mAh, AvailableEnergy =", guage.AvailableEnergy(), "* 10 mWh" |
77 |
print "Temp =", guage.getTemp(), "degC, RemainCapacity =", guage.getRemainingCapacity(), "mAh, cap =", guage.FullChargeCapacity(), "mAh, U =", guage.Voltage(), "mV, I =", guage.AverageCurrent(), "mA, charge =", guage.StateOfCharge(), "%" |
77 |
print "Temp =", guage.getTemp(), "degC, RemainCapacity =", guage.getRemainingCapacity(), "mAh, cap =", guage.FullChargeCapacity(), "mAh, U =", guage.Voltage(), "mV, I =", guage.AverageCurrent(), "mA, charge =", guage.StateOfCharge(), "%" |
78 |
time.sleep(3) |
78 |
time.sleep(3) |
79 |
|
79 |
|
80 |
except IOError: |
80 |
except IOError: |
81 |
err = err + 1 |
81 |
err = err + 1 |
82 |
print "IOError" |
82 |
print "IOError" |
83 |
continue |
83 |
continue |
84 |
|
84 |
|
85 |
except KeyboardInterrupt: |
85 |
except KeyboardInterrupt: |
86 |
sys.exit(0) |
86 |
sys.exit(0) |