Testy poprawności zliczania impulsów dla licznika impulsów

Post Reply
User avatar
Robert Błaszczak
Posts: 428
Joined: Sat Dec 22, 2018 8:55 pm
Location: Zielona Góra
Contact:

Sat Jun 15, 2019 11:28 am

Część osób zgłasza, że licznik impulsów potrafi gubić impulsy. Potwierdził to również @pzygmunt - "ESP8266 ma przypadłość gubienia przerwań przez co gubi impulsy". Napisałem więc sobie prosty programik na Arduino, który generuje mi określonej długości impulsy co zadany czas.

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);
}
Chciałbym przetestować dwa wejścia jednocześnie. Jednak nie bardzo umiem sobie poradzić ze wysterowaniem drugiego przekaźnika. Zdaje się, będzie trzeba użyć przerwań, a moja wiedza w temacie programowania jest mizerna :lol:. Jest ktoś chętny pomóc uzupełnić kod? :D

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.
Pozdrawiam
Robert Błaszczak
https://www.blaszczak.pl
User avatar
pzygmunt
Posts: 6685
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Contact:

Sat Jun 15, 2019 3:05 pm

Problem pomijania impulsów wynika z natury ESP i można go ominąć dodatkowym układem. Dodanie układu wymaga tez zmiany softu ale w tym zastosowaniu nie ma to sensu.
Albert
Posts: 44
Joined: Fri Jan 04, 2019 8:32 pm
Location: Chełm

Sat Jun 15, 2019 6:13 pm

Potwierdzam. Mi też przez kilka dni zgubił kilka kWh. Ale chyba taka natura tego sprzętu :)
Post Reply