Guest User

DS2782 arduino Code

a guest
Mar 14th, 2016
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.91 KB | None | 0 0
  1. #include <Wire.h>
  2.  
  3. #define gaugeAddress 0x34
  4.  
  5. // Aging Capacity = 409.6mAh (wegen 1 Ohm Rsns)
  6. #define agingCapRegM 0x62
  7. char agingCapM = 0x90;
  8. char agingCapL = 0x00;
  9.  
  10. // Charge Voltage = 8.4V/2
  11. #define chargeVolReg 0x64
  12. char chargeVol = 0xD2;
  13.  
  14. // Minimum Charge Voltage = 10mA
  15. #define minChargeCurReg 0x65
  16. char minChargeCur = 0xC8;
  17.  
  18. // Active Empty Voltage = 6.5V/2
  19. #define activeEmptyVolReg 0x66
  20. char activeEmptyVol = 0xA6;
  21.  
  22. // Active Empty Current = 5mA (zum testen...)
  23. #define activeEmptyCurReg 0x67
  24. char activeEmptyCur = 0x19;
  25.  
  26. // Sense Resistor = 1Ohm
  27. #define rsnsReg 0x69
  28. char rsns = 0x01;
  29.  
  30. // Full 40
  31. #define full40RegM 0x6A
  32. char full40M = 0x90;
  33. char full40L = 0x00;
  34.  
  35. // Empty 40
  36. #define empty40Reg 0x68
  37. char empty40 = 0x06;
  38.  
  39. // full model
  40. #define full3040Reg 0x6C
  41. char full3040 = 0x10;
  42. char full2030 = 0x17;
  43. char full1020 = 0x3C;
  44. char full0010 = 0x49;
  45.  
  46. // active empty model
  47. char activeEmpty3040 = 0x06;
  48. char activeEmpty2030 = 0x0D;
  49. char activeEmpty1020 = 0x15;
  50. char activeEmpty0010 = 0x2F;
  51.  
  52. char standbyEmpty3040 = 0x03;
  53. char standbyEmpty2030 = 0x05;
  54. char standbyEmpty1020 = 0x08;
  55. char standbyEmpty0010 = 0x1B;
  56.  
  57. #define remainingCapReg 0x03
  58.  
  59. #define voltageRegisterMSB 0x0C
  60. #define voltageRegisterLSB 0x0D
  61. int input;
  62. double voltage;
  63. int percentage;
  64.  
  65. int test;
  66. double test_d;
  67.  
  68. void setup()
  69. {
  70.   delay(2000);
  71.   Wire.begin();
  72.   Serial.begin(9600);
  73.   initFG();
  74. }
  75.  
  76. void loop()
  77. {
  78.   Wire.beginTransmission(gaugeAddress);
  79.   Wire.write(voltageRegisterMSB);
  80.   Wire.endTransmission();
  81.   Wire.requestFrom(gaugeAddress, 2);
  82.   if(2 <= Wire.available())
  83.   {
  84.     input = (Wire.read() << 8);
  85.     input |= Wire.read();
  86.     input = input >> 5;
  87.     voltage = input*0.00488*2;    
  88.   }
  89.   Serial.print("Voltage: ");
  90.   Serial.println(voltage);
  91.  
  92.   Wire.beginTransmission(gaugeAddress);
  93.     Wire.write(remainingCapReg);
  94.   Wire.endTransmission();
  95.   Wire.requestFrom(gaugeAddress, 1);
  96.   if(1 == Wire.available())
  97.   {
  98.     percentage = Wire.read();
  99.   }
  100.   Serial.print("Remaining Cap: ");
  101.   Serial.println(percentage);
  102.   Serial.println();
  103.  
  104.   Wire.beginTransmission(gaugeAddress);
  105.     Wire.write(0x16);
  106.   Wire.endTransmission();
  107.   Wire.requestFrom(gaugeAddress, 2);
  108.   if(2 <= Wire.available())
  109.   {
  110.     test = Wire.read() << 8;
  111.     test |= Wire.read();
  112.     test_d = test * 0.00625;
  113.   }
  114.   Serial.println(test_d);
  115.  
  116.  delay(1000);
  117. }
  118.  
  119. void initFG()
  120. {
  121.   Serial.println("Initializing...");
  122.   Wire.beginTransmission(gaugeAddress);
  123.     Wire.write(agingCapRegM);
  124.     Wire.write(agingCapM);
  125.     Wire.write(agingCapL);
  126.   Wire.endTransmission();
  127.  
  128.   Wire.beginTransmission(gaugeAddress);
  129.     Wire.write(chargeVolReg);
  130.     Wire.write(chargeVol);
  131.   Wire.endTransmission();
  132.  
  133.   Wire.beginTransmission(gaugeAddress);
  134.     Wire.write(minChargeCurReg);
  135.     Wire.write(minChargeCur);
  136.   Wire.endTransmission();
  137.  
  138.   Wire.beginTransmission(gaugeAddress);
  139.     Wire.write(activeEmptyCurReg);
  140.     Wire.write(activeEmptyCur);
  141.   Wire.endTransmission();
  142.  
  143.   Wire.beginTransmission(gaugeAddress);
  144.     Wire.write(rsnsReg);
  145.     Wire.write(rsns);
  146.   Wire.endTransmission();
  147.  
  148.   Wire.beginTransmission(gaugeAddress);
  149.     Wire.write(full40RegM);
  150.     Wire.write(full40M);
  151.     Wire.write(full40L);
  152.   Wire.endTransmission();
  153.  
  154.   Wire.beginTransmission(gaugeAddress);
  155.     Wire.write(empty40Reg);
  156.     Wire.write(empty40);
  157.   Wire.endTransmission();
  158.  
  159.   Wire.beginTransmission(gaugeAddress);
  160.     Wire.write(full3040Reg);
  161.     Wire.write(full3040);
  162.     Wire.write(full2030);
  163.     Wire.write(full1020);
  164.     Wire.write(full0010);
  165.    
  166.     Wire.write(activeEmpty3040);
  167.     Wire.write(activeEmpty2030);
  168.     Wire.write(activeEmpty1020);
  169.     Wire.write(activeEmpty0010);
  170.    
  171.     Wire.write(standbyEmpty3040);
  172.     Wire.write(standbyEmpty2030);
  173.     Wire.write(standbyEmpty1020);
  174.     Wire.write(standbyEmpty0010);
  175.   Wire.endTransmission();
  176.  
  177.   delay(500);
  178.   Serial.println("Finished...");
  179. }
Advertisement
Add Comment
Please, Sign In to add comment