Czujnik odbicia

Czujnik odbicia to kolejny element systemu Pan z Pogodna – ten akurat pomaga mi w monitorowaniu zużycia prądu w domu. Nigdy nie przypuszczałem, że taki czujnik nie dość że istnieje, to jeszcze może robić tak prostą i banalną rzecz jak liczenie impulsów licznika.

Geneza potrzeby

Problem, a raczej potrzeba zliczania impulsów pojawił się już w 2014 – jeszcze przed projektem Pan z Pogodna, który rośnie z miesiąca na miesiąc. Chęć liczenia zużycia mediów w domu pojawiła się przy okazji aplikacji iOS Stanomierz, która obrazowała dane z liczników prądu, wody czy gazu… jednak to było na poziomie formularza. Comiesięczne wędrówki do liczników i ręczne spisywanie stanów liczników szybko stały się uciążliwe, bo wymagały dyscypliny i wytrwałości. Od lat szukałem innego sposobu odczytu danych z liczników. I jakiś czas temu szukałem rozwiązania typu OCR, aż tu natknąłem się na inną metodę. Nie czytanie stanów a zliczanie impulsów jakie generują liczniki – jak się okazuje każdy daje po sobie poznać że coś liczy. I tak dziś o liczniku prądu.

Analogowy licznik prądu

Stary, analogowy licznik prądowy … ma dysk. Dysk, a raczej tarczę, która kręci się z różną prędkością, zależną od chwilowego poboru prądu – jego droga do wykonania obrotu jest zawsze stała. Tenże dysk ma kolorowe, czarne oznaczenie którego widoczność sygnalizuje jeden obrót. Więc nie pozostaje nic innego jak liczyć moment widoczności tej czarnej tarczy i po 375 cyklach okazuje się, że zużyto 1 kWh prądu

Czujnik odbicia reaguje na zmianę ilości odbitego od powierzchni światła

Jest to analogowy czujnik, który współpracuje z Arduino. Zasadą pracy jest obserwowanie ilości obitego światła przez z małe diody na powierzchni płytki. Można to robić z konsoli Arduino, czytając dane z czujnika i reagować na odbiegające od normy odczyty, pojawiające się z momencie natrafienia przez czujnik koloru czarnego. Sam zasięg pracy jest oczywiście mały, nawet bardzo – tak samo jak sam układ. Działa na ok 8-10 mm nawet przez plastikową szybkę i co ważne bez zakłóceń światła dziennego.

Podłączenie do mikrokontrolera

Czujnik działa na 5V i wykorzystuje pin analogowy kontrolera, więc podłączenie jest proste:

GND -> GND
VIN -> 5V
OUT -> A1

Przykładowy kod arduino

int czujnik = A1;   //pin analogowy A1
bool doOnce = true;

void setup() {

  Serial.begin(115200);
  Serial.println("Test czujnika odbiciowego");

}

void loop() {
  int distance = analogRead(czujnik);//odczytanie wartości z czujnika
  Serial.println(distance); //wyświetlenie jej na monitorze

  if (distance > 300) {

    if (doOnce) {
      Serial.println("jeden obrót");
      doOnce = false;
    }

  } else {
    doOnce = true;
  }

}

I tak dane regularnie trafiają do jednostki centralnej Pan z Pogodna, która regularnie zlicza impulsy i w momencie wysyłki danych na serwer raz na 20 minut resetuje licznik impulsów i zlicza je znów od zera. Dane trafiają do bazy danych i już pozostaje pobrać dane do aplikacji webowej, ubrać je w wykres i gotowe!


Opublikowano: 8 grudnia, 2020 przez Pan z Pogodna

Leave a Reply