diff --git a/charger/charger.ino b/charger/charger.ino index d107cad..fc54eac 100644 --- a/charger/charger.ino +++ b/charger/charger.ino @@ -11,9 +11,7 @@ ModbusRTU mb; #define ACC_STATE_REGISTER 4 #define LAMP_STATE_REGISTER 5 #define U_ACC_LOW_REGISTER 6 -#define U_ACC_HIGH_REGISTER 7 -#define U_LAMP_LOW_REGISTER 8 -#define U_LAMP_HIGH_REGISTER 9 +#define U_LAMP_LOW_REGISTER 10 #define ACC_PIN 2 #define LAMP_PIN 3 @@ -45,16 +43,19 @@ void setup() mb.addHreg(I_LAMP_HIGH_REGISTER); mb.addHreg(ACC_STATE_REGISTER); mb.addHreg(LAMP_STATE_REGISTER); - mb.addHreg(U_ACC_LOW_REGISTER); - mb.addHreg(U_ACC_HIGH_REGISTER); - mb.addHreg(U_LAMP_LOW_REGISTER); - mb.addHreg(U_LAMP_HIGH_REGISTER); + for (int i = 0; i < 4; i++) + { + mb.addHreg(U_ACC_LOW_REGISTER + i); + mb.addHreg(U_LAMP_LOW_REGISTER + i); + } } float I_lamp; float I_acc; -float U_lamp; -float U_acc; +float U1_lamp; +float U2_lamp; +float U1_acc; +float U2_acc; void ReadLamp() { @@ -62,10 +63,9 @@ void ReadLamp() int a5 = analogRead(A5); // multiply by 5 as reference current, // multiply by 3 because of the divider - float v1 = a4 / 1023.0 * 5 * 3; - float v2 = a5 / 1023.0 * 5 * 3; - I_lamp = (v1 - v2) / R_lamp; - U_lamp = v1; + U1_lamp = a4 / 1023.0 * 5 * 3; + U2_lamp = a5 / 1023.0 * 5 * 3; + I_lamp = (U1_lamp - U2_lamp) / R_lamp; } void ReadAcc() @@ -74,10 +74,9 @@ void ReadAcc() int a3 = analogRead(A3); // multiply by 5 as reference current, // multiply by 3 because of the divider - float v1 = a2 / 1023.0 * 5 * 3; - float v2 = a3 / 1023.0 * 5 * 3; - I_acc = (v1 - v2) / R_LIMITER; - U_acc = v1; + U1_acc = a2 / 1023.0 * 5 * 3; + U2_acc = a3 / 1023.0 * 5 * 3; + I_acc = (U1_acc - U2_acc) / R_LIMITER; } void WriteFloatReg(int start, float val) @@ -95,26 +94,28 @@ void loop() ReadLamp(); ReadAcc(); WriteFloatReg(I_ACC_LOW_REGISTER, I_acc); - WriteFloatReg(U_ACC_LOW_REGISTER, U_acc); + WriteFloatReg(U_ACC_LOW_REGISTER, U1_acc); + WriteFloatReg(U_ACC_LOW_REGISTER + 2, U2_acc); WriteFloatReg(I_LAMP_LOW_REGISTER, I_lamp); - WriteFloatReg(U_LAMP_LOW_REGISTER, U_lamp); + WriteFloatReg(U_LAMP_LOW_REGISTER, U1_lamp); + WriteFloatReg(U_LAMP_LOW_REGISTER + 2, U2_lamp); mb.task(); - lamp_state = mb.Hreg(lamp_state); - acc_state = mb.Hreg(acc_state); + lamp_state = mb.Hreg(LAMP_STATE_REGISTER); + acc_state = mb.Hreg(ACC_STATE_REGISTER); if (lamp_state) { - digitalWrite(LAMP_PIN, 1); + digitalWrite(LAMP_PIN, HIGH); } else { - digitalWrite(LAMP_PIN, 0); + digitalWrite(LAMP_PIN, LOW); } if (acc_state) { - digitalWrite(ACC_PIN, 1); + digitalWrite(ACC_PIN, HIGH); } else { - digitalWrite(ACC_PIN, 0); + digitalWrite(ACC_PIN, LOW); } } diff --git a/charger_neww.rrb b/charger_neww.rrb new file mode 100644 index 0000000..2e620f5 Binary files /dev/null and b/charger_neww.rrb differ