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