Новая схема (всё на реле). Передаём наверх все напряжения, пусть там разбираются
This commit is contained in:
+26
-25
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user