Новая схема (всё на реле). Передаём наверх все напряжения, пусть там разбираются
This commit is contained in:
+26
-25
@@ -11,9 +11,7 @@ ModbusRTU mb;
|
|||||||
#define ACC_STATE_REGISTER 4
|
#define ACC_STATE_REGISTER 4
|
||||||
#define LAMP_STATE_REGISTER 5
|
#define LAMP_STATE_REGISTER 5
|
||||||
#define U_ACC_LOW_REGISTER 6
|
#define U_ACC_LOW_REGISTER 6
|
||||||
#define U_ACC_HIGH_REGISTER 7
|
#define U_LAMP_LOW_REGISTER 10
|
||||||
#define U_LAMP_LOW_REGISTER 8
|
|
||||||
#define U_LAMP_HIGH_REGISTER 9
|
|
||||||
|
|
||||||
#define ACC_PIN 2
|
#define ACC_PIN 2
|
||||||
#define LAMP_PIN 3
|
#define LAMP_PIN 3
|
||||||
@@ -45,16 +43,19 @@ void setup()
|
|||||||
mb.addHreg(I_LAMP_HIGH_REGISTER);
|
mb.addHreg(I_LAMP_HIGH_REGISTER);
|
||||||
mb.addHreg(ACC_STATE_REGISTER);
|
mb.addHreg(ACC_STATE_REGISTER);
|
||||||
mb.addHreg(LAMP_STATE_REGISTER);
|
mb.addHreg(LAMP_STATE_REGISTER);
|
||||||
mb.addHreg(U_ACC_LOW_REGISTER);
|
for (int i = 0; i < 4; i++)
|
||||||
mb.addHreg(U_ACC_HIGH_REGISTER);
|
{
|
||||||
mb.addHreg(U_LAMP_LOW_REGISTER);
|
mb.addHreg(U_ACC_LOW_REGISTER + i);
|
||||||
mb.addHreg(U_LAMP_HIGH_REGISTER);
|
mb.addHreg(U_LAMP_LOW_REGISTER + i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float I_lamp;
|
float I_lamp;
|
||||||
float I_acc;
|
float I_acc;
|
||||||
float U_lamp;
|
float U1_lamp;
|
||||||
float U_acc;
|
float U2_lamp;
|
||||||
|
float U1_acc;
|
||||||
|
float U2_acc;
|
||||||
|
|
||||||
void ReadLamp()
|
void ReadLamp()
|
||||||
{
|
{
|
||||||
@@ -62,10 +63,9 @@ void ReadLamp()
|
|||||||
int a5 = analogRead(A5);
|
int a5 = analogRead(A5);
|
||||||
// multiply by 5 as reference current,
|
// multiply by 5 as reference current,
|
||||||
// multiply by 3 because of the divider
|
// multiply by 3 because of the divider
|
||||||
float v1 = a4 / 1023.0 * 5 * 3;
|
U1_lamp = a4 / 1023.0 * 5 * 3;
|
||||||
float v2 = a5 / 1023.0 * 5 * 3;
|
U2_lamp = a5 / 1023.0 * 5 * 3;
|
||||||
I_lamp = (v1 - v2) / R_lamp;
|
I_lamp = (U1_lamp - U2_lamp) / R_lamp;
|
||||||
U_lamp = v1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReadAcc()
|
void ReadAcc()
|
||||||
@@ -74,10 +74,9 @@ void ReadAcc()
|
|||||||
int a3 = analogRead(A3);
|
int a3 = analogRead(A3);
|
||||||
// multiply by 5 as reference current,
|
// multiply by 5 as reference current,
|
||||||
// multiply by 3 because of the divider
|
// multiply by 3 because of the divider
|
||||||
float v1 = a2 / 1023.0 * 5 * 3;
|
U1_acc = a2 / 1023.0 * 5 * 3;
|
||||||
float v2 = a3 / 1023.0 * 5 * 3;
|
U2_acc = a3 / 1023.0 * 5 * 3;
|
||||||
I_acc = (v1 - v2) / R_LIMITER;
|
I_acc = (U1_acc - U2_acc) / R_LIMITER;
|
||||||
U_acc = v1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void WriteFloatReg(int start, float val)
|
void WriteFloatReg(int start, float val)
|
||||||
@@ -95,26 +94,28 @@ void loop()
|
|||||||
ReadLamp();
|
ReadLamp();
|
||||||
ReadAcc();
|
ReadAcc();
|
||||||
WriteFloatReg(I_ACC_LOW_REGISTER, I_acc);
|
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(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();
|
mb.task();
|
||||||
lamp_state = mb.Hreg(lamp_state);
|
lamp_state = mb.Hreg(LAMP_STATE_REGISTER);
|
||||||
acc_state = mb.Hreg(acc_state);
|
acc_state = mb.Hreg(ACC_STATE_REGISTER);
|
||||||
if (lamp_state)
|
if (lamp_state)
|
||||||
{
|
{
|
||||||
digitalWrite(LAMP_PIN, 1);
|
digitalWrite(LAMP_PIN, HIGH);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
digitalWrite(LAMP_PIN, 0);
|
digitalWrite(LAMP_PIN, LOW);
|
||||||
}
|
}
|
||||||
if (acc_state)
|
if (acc_state)
|
||||||
{
|
{
|
||||||
digitalWrite(ACC_PIN, 1);
|
digitalWrite(ACC_PIN, HIGH);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
digitalWrite(ACC_PIN, 0);
|
digitalWrite(ACC_PIN, LOW);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user