Новая схема (всё на реле). Передаём наверх все напряжения, пусть там разбираются

This commit is contained in:
ftc
2024-03-03 18:19:18 +03:00
parent 6d944c1a44
commit acaba420d6
2 changed files with 26 additions and 25 deletions
+26 -25
View File
@@ -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);
}
}
BIN
View File
Binary file not shown.