Licznik impulsów z podtrzymaniem bateryjnym

Licznik impulsów z podtrzymaniem bateryjnym

Minimoduł z licznikiem impulsów i komunikacją poprzez I²C może być przydatny w domowej automatyce do zliczania ilości impulsów np. z wodomierzy lub innych liczników mediów wyposażonych w wyjścia impulsowe lub w zliczaniu osób. Dodatkowo licznik wyposażony jest w baterię podtrzymującą uniezależniającą proces zliczania od zasilania współpracującego sterownika.

Podstawowe parametry:
  • pojemność licznika wynosi 999999 impulsów,
  • maksymalna częstotliwość zliczania to kilka...kilkanaście kHz,
  • komunikacja poprzez I²C,
  • moduł jest wyposażony w baterię podtrzymującą działanie uniezależniającą proces zliczania od zasilania.
Uwaga: moduł zasilany jest baterią LiSOCL2, której nie wolno ładować, zwierać, rozhermetyzować i wystawiać na działanie ognia, ekstremalnych temperatur i wilgoci.

Moduł zawiera popularny układ zegara czasu rzeczywistego typu PCF8583, który oprócz odmierzenia czasu udostępnia tryb zliczania impulsów z zakresem do 999999 impulsów. Wybór trybu odbywa się programowo przez konfigurację odpowiednich rejestrów U2. Układ zlicza impulsy doprowadzone do wejścia OSCI. Maksymalna częstotliwość zliczania nie jest zbyt wysoka (rzędu kilku...kilkunastu kHz), ale wystarczy do wielu zastosowań.

Budowa i działanie

Schemat wewnętrzny modułu pokazano na rysunku 1. Układ U1 formuje zliczane impulsy pochodzące najczęściej z wyjścia stykowego zrealizowanego na kontaktronie (suchy styk) lub w postaci elektronicznej OC/OD. Dodatkowo zapewnia polaryzację podłączonego wyjścia i ochronę ESD licznika.

Rysunek 1. Schemat licznika impulsów

Moduł zasilany jest poprzez złącze magistrali I²C napięciem 5 V. Dodatkowo układ wyposażony jest w podtrzymanie zasilania z baterią LiSOCL2 typu 14250. Dioda D1 kluczuje źródła zasilania. Moduł pracuje poprawnie zasilany napięciem powyżej 3 V, przy niższych napięciach będzie pobierał prąd z baterii, której napięcie na początku pracy wynosi ok. 3,6 V i będzie wyższe od napięcia VDD. Pojemność baterii 14250 oscyluje w okolicach 0,9...1,2 Ah, co zapewnia kilkanaście miesięcy podtrzymania. Pobór prądu jest mniejszy od 10 μA przy rozwartym wejściu i ok. 50 μA przy zwartym.

Układ U2 pozwala po zliczeniu określonej ilości impulsów na generację przerwania na wyjściu INT typu OD dostępnym na złączu INT. Przerwanie może zostać wykorzystane do wybudzenia układu nadrzędnego, po określonej liczbie zliczonych impulsów, np. w celu zabezpieczenia przed przepełnieniem licznika. Złącza i moduł są zgodne ze standardem Grove.

Układ U2 ma możliwość wyboru dwóch adresów bazowych przy pomocy zwory ADR, co pozwala na niezależne zliczanie z dwóch źródeł impulsów. W przypadku konieczności obsługi większej ilości źródeł można wykorzystać opisane w EP multipleksery magistrali I²C lub układy przesunięcia adresu bazowego.

Montaż i uruchomienie

Moduł jest zmontowany na dwustronnej płytce drukowanej, której schemat został pokazany na rysunku 2. Sposób montażu jest klasyczny i nie wymaga opisu. W przypadku zastosowania baterii z zgrzanymi wyprowadzeniami można zrezygnować koszyka, ale należy zwrócić szczególną uwagę na to, aby nie zewrzeć jej wyprowadzeń podczas lutowania.

Rysunek 2. Schemat płytki PCB

Przed włożeniem baterii w podstawkę należy ją depasywować szczególnie po dłuższym przechowywaniu. Depasywację przeprowadzamy za pomocą rezystora o wartości około 10 kΩ, mierząc napięcie wyjściowe ogniwa. Gdy jego wartość rośnie, zbliżając się do nominalnej (3,65 V) dla nowego ogniwa, oznacza to że odzyskało ono swoje własności. W przeciwnym wypadku ogniwo w krótkim czasie obniży swoje napięcie i spowoduje zakłócenia w działaniu układu.

Dla sprawdzenia modułu można użyć Raspberry Pi. Po podłączeniu modułu do zasilania 3,3 V i magistrali I²C wpisujemy polecenie: i2cdetect -y 1, które pozwoli sprawdzić obecność układu na magistrali (w modelu ustawiony adres 0x50, zwora ADR=0). Dla obsługi trybu zliczania konieczna jest konfiguracja PCF8583. Układ zawiera rejestr kontrolny pod adresem 0x00, w którym należy ustawić wartość 0x24, ustawiającą tryb zliczania i aktywująca wyjście alarmowe zgodnie z rysunkiem 3.

Rysunek 3. Rejestr konfiguracji (za notą NXP)

Zliczane impulsy dostępne są w rejestrach pod adresami 0x01, 0x02, 0x03. Wartości rejestrów zliczania warto skasować przed rozpoczęciem pracy układu poleceniami:

i2cset -y 1 0x50 0x01 0x00
i2cset -y 1 0x50 0x02 0x00
i2cset -y 1 0x50 0x03 0x00

Odczyt i zapis wartości można sprawdzić zrzucając mapę rejestrów poleceniem:

i2cdump -y -r 0x00-0x0f 1 0x50

co da w efekcie:

0 1 2 3 4 5 6 7 8 9 a  b c d e f
00: 26 02 01 00 00 01 01 00 90 05 00 00 ff ff ff ff

Aby skorzystać z generacji przerwań należy skonfigurować rejestr kontrolny alarmów 0x08, ustawiając w nim bity D7 i D4 zgodnie z rysunkiem 4, co można wykonać poleceniem:

i2cset -y 1 0x50 0x08 0x90
Rysunek 4. Rejestr konfiguracji alarmu

Wartość do porównania z licznikiem zapisywana jest w rejestrach 0x09, 0x0A, 0x0B. Gdy zliczana wartość zrówna się z wartością alarmową zostanie ustawiony D1 w rejestrze konfiguracji 0x00 oraz wyjście int zostanie ustawione w stan niski. Kasowanie flagi przerwania odbywa się poprzez wyzerowanie bitu D1 w rejestrze konfiguracji. Przykładowo ustawiamy wartość 5 w rejestrach alarmowych:

i2cset -y 1 0x50 0x09 0x05
i2cset -y 1 0x50 0x0a 0x00
i2cset -y 1 0x50 0x0b 0x00

kasujemy liczniki:

i2cset -y 1 0x50 0x01 0x00
i2cset -y 1 0x50 0x02 0x00
i2cset -y 1 0x50 0x03 0x00

ustawiamy przerwanie:

i2cset -y 1 0x50 0x08 0x90

generując impulsy (poprzez zwieranie wejścia ZI) sprawdzamy zachowanie się flagi D1 oraz generację przerwania poleceniem:

i2cdump -y -r 0x00-0x0f 1 0x50

i otrzymamy:

0 1 2 3 4 5 6 7 8 9 a  b c d e f
00: 24 04 00 00 00 01 01 00 90 05 00 00 ff ff ff ff

a w kolejnym cyklu:

0 1 2 3 4 5 6 7 8 9 a  b c d e f
00: 26 05 00 00 00 01 01 00 90 05 00 00 ff ff ff ff

Pozostałe rejestry 0x0F...0xFF układu mogą być wykorzystane jako podtrzymywana pomięć RAM. Jeżeli wszystko działa poprawnie można układ zastosować we własnej aplikacji.

Adam Tatuś, EP

Wykaz elementów:
Rezystory: (SMD0603, 5%)
  • R1, R2: 10 kΩ
Kondensatory: (SMD0603)
  • C1: 10 μF ceramiczny 10 V
  • C2, C3: 0,1 μF ceramiczny 10 V
Półprzewodniki:
  • D1: BAV170 dioda podwójna (SOT-23)
  • U1: MAX6816EUS (SOT-143)
  • U2: PCF8583T,115 (SO8_400)
Pozostałe:
  • BAT: Bateria LiSOCL 14250 + oprawka PCB
  • ZI: złącze DG381-3.5-2
Artykuł ukazał się w
Elektronika Praktyczna
grudzień 2022
DO POBRANIA
Materiały dodatkowe
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik grudzień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio listopad - grudzień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje listopad - grudzień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna grudzień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich styczeń 2025

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów