Kod programu (z zaczątkiem sterowania drugiego przekaźnika):
Code: Select all
void setup() {
// Zainicjowanie wyjść dla przekaźnika (PIN 2, PIN 3)
pinMode(2, OUTPUT);
digitalWrite(2, HIGH);
pinMode(3, OUTPUT);
digitalWrite(3, HIGH);
}
int test_count = 0;
int pulse = 10000; // Ilość ompulsów testowych
int t_start = 10000; // Opóźnienie rozpoczęcia testu w milisekundach
int t1_off = 3000; // Czas wyłączenia przekaźnika 1 w milisekundach
int t1_on = 90; // Czas załączemia przekaźnika 1 w milisekundach
int t2_off = 5000; // Czas wyłączenia przekaźnika 2 w milisekundach
int t2_on = 90; // Czas załączemia przekaźnika 2 w milisekundach
void loop()
{
delay (t_start);
while (test_count < pulse)
{
digitalWrite(2, HIGH);
delay (t1_off);
digitalWrite(2, LOW);
delay (t1_on);
test_count++;
}
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
}Wyniki dwóch testów - jedno wejście licznika impulsów:
TEST 1
Ilość impulsów: 10 000
Długość impulsu: 90 ms
Czas przerwy: 1500 ms
Zliczone impulsów: 9979
Brak impulsów: 21
Błąd: 0,21%
TEST 2
Ilość impulsów: 10 000
Długość impulsu: 90 ms
Czas przerwy: 3000 ms
Zliczone impulsów: 9999
Brak impulsów: 1
Błąd: 0,01%
Jak widać, przy impulsie co 3 sekundy błąd jest do zaakceptowania. Np. typowy wodomierz mieszkaniowy ma maksymalny przepływ 4 m3/h. Wyjście impulsowe wodomierza podaje 100 impulsów / 1 m3. Daje to maksymalnie 400 impulsów na godzinę, a więc impuls co 6 - 7 sekund. Zresztą w instalacji domowej nie jesteśmy w stanie przekroczyć przepływu 3m3/h.
Krótki filmik z testu: https://youtu.be/pHXGGJadpJo
W załączeniu arkusz Excel z danymi z testów (włącznie z historią pomiarów z CLOUD) oraz krótki filmik z testowania.
