Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h>
- #define gaugeAddress 0x34
- // Aging Capacity = 409.6mAh (wegen 1 Ohm Rsns)
- #define agingCapRegM 0x62
- char agingCapM = 0x90;
- char agingCapL = 0x00;
- // Charge Voltage = 8.4V/2
- #define chargeVolReg 0x64
- char chargeVol = 0xD2;
- // Minimum Charge Voltage = 10mA
- #define minChargeCurReg 0x65
- char minChargeCur = 0xC8;
- // Active Empty Voltage = 6.5V/2
- #define activeEmptyVolReg 0x66
- char activeEmptyVol = 0xA6;
- // Active Empty Current = 5mA (zum testen...)
- #define activeEmptyCurReg 0x67
- char activeEmptyCur = 0x19;
- // Sense Resistor = 1Ohm
- #define rsnsReg 0x69
- char rsns = 0x01;
- // Full 40
- #define full40RegM 0x6A
- char full40M = 0x90;
- char full40L = 0x00;
- // Empty 40
- #define empty40Reg 0x68
- char empty40 = 0x06;
- // full model
- #define full3040Reg 0x6C
- char full3040 = 0x10;
- char full2030 = 0x17;
- char full1020 = 0x3C;
- char full0010 = 0x49;
- // active empty model
- char activeEmpty3040 = 0x06;
- char activeEmpty2030 = 0x0D;
- char activeEmpty1020 = 0x15;
- char activeEmpty0010 = 0x2F;
- char standbyEmpty3040 = 0x03;
- char standbyEmpty2030 = 0x05;
- char standbyEmpty1020 = 0x08;
- char standbyEmpty0010 = 0x1B;
- #define remainingCapReg 0x03
- #define voltageRegisterMSB 0x0C
- #define voltageRegisterLSB 0x0D
- int input;
- double voltage;
- int percentage;
- int test;
- double test_d;
- void setup()
- {
- delay(2000);
- Wire.begin();
- Serial.begin(9600);
- initFG();
- }
- void loop()
- {
- Wire.beginTransmission(gaugeAddress);
- Wire.write(voltageRegisterMSB);
- Wire.endTransmission();
- Wire.requestFrom(gaugeAddress, 2);
- if(2 <= Wire.available())
- {
- input = (Wire.read() << 8);
- input |= Wire.read();
- input = input >> 5;
- voltage = input*0.00488*2;
- }
- Serial.print("Voltage: ");
- Serial.println(voltage);
- Wire.beginTransmission(gaugeAddress);
- Wire.write(remainingCapReg);
- Wire.endTransmission();
- Wire.requestFrom(gaugeAddress, 1);
- if(1 == Wire.available())
- {
- percentage = Wire.read();
- }
- Serial.print("Remaining Cap: ");
- Serial.println(percentage);
- Serial.println();
- Wire.beginTransmission(gaugeAddress);
- Wire.write(0x16);
- Wire.endTransmission();
- Wire.requestFrom(gaugeAddress, 2);
- if(2 <= Wire.available())
- {
- test = Wire.read() << 8;
- test |= Wire.read();
- test_d = test * 0.00625;
- }
- Serial.println(test_d);
- delay(1000);
- }
- void initFG()
- {
- Serial.println("Initializing...");
- Wire.beginTransmission(gaugeAddress);
- Wire.write(agingCapRegM);
- Wire.write(agingCapM);
- Wire.write(agingCapL);
- Wire.endTransmission();
- Wire.beginTransmission(gaugeAddress);
- Wire.write(chargeVolReg);
- Wire.write(chargeVol);
- Wire.endTransmission();
- Wire.beginTransmission(gaugeAddress);
- Wire.write(minChargeCurReg);
- Wire.write(minChargeCur);
- Wire.endTransmission();
- Wire.beginTransmission(gaugeAddress);
- Wire.write(activeEmptyCurReg);
- Wire.write(activeEmptyCur);
- Wire.endTransmission();
- Wire.beginTransmission(gaugeAddress);
- Wire.write(rsnsReg);
- Wire.write(rsns);
- Wire.endTransmission();
- Wire.beginTransmission(gaugeAddress);
- Wire.write(full40RegM);
- Wire.write(full40M);
- Wire.write(full40L);
- Wire.endTransmission();
- Wire.beginTransmission(gaugeAddress);
- Wire.write(empty40Reg);
- Wire.write(empty40);
- Wire.endTransmission();
- Wire.beginTransmission(gaugeAddress);
- Wire.write(full3040Reg);
- Wire.write(full3040);
- Wire.write(full2030);
- Wire.write(full1020);
- Wire.write(full0010);
- Wire.write(activeEmpty3040);
- Wire.write(activeEmpty2030);
- Wire.write(activeEmpty1020);
- Wire.write(activeEmpty0010);
- Wire.write(standbyEmpty3040);
- Wire.write(standbyEmpty2030);
- Wire.write(standbyEmpty1020);
- Wire.write(standbyEmpty0010);
- Wire.endTransmission();
- delay(500);
- Serial.println("Finished...");
- }
Advertisement
Add Comment
Please, Sign In to add comment