Moduł do odczytu wodomierza

Miejsce na posty nie związane z powyższymi
ODPOWIEDZ
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Moduł do odczytu wodomierza

Post autor: pimowo » 19 sty 2018, 6:58

Hej.
Potrzebuję pomysł na układ/moduł do odczytu wodomierza, a dokładniej miało by to działać tak:
1. zbieranie impulsów
- wodomierz podaje impuls co 1 litr wody (kontaktron)
2. zapis danych do pamięci nieulotnej
- musi być możliwość korygowania tego zapisu
* ten zapis to będzie faktyczny stan licznika
3. odczyt modułu co minutę poprzez RS232/RS485
- odczyt zużytych litrów w ciągu minuty
- odczyt stanu licznika

Czy dobrze kombinuję?
- dowolny (prawie) uC ze sprzętowym UARTem
- zbieranie impulsów na pinie INT0/1

A teraz w sumie najważniejsze pytanie, jak, gdzie, na czym zapisać dane aby ich nie stracić?
Dane mają być dość często zapisywane więc to "coś" nie może się szybko zużyć ;)

Z góry wielkie dzięki za pomoc.
Pikczu
Posty: 389
Rejestracja: 17 sie 2015, 13:46
Lokalizacja: Dublin, Ireland
Kontakt:

Re: Moduł do odczytu wodomierza

Post autor: Pikczu » 19 sty 2018, 19:29

Ja bym to zrobił tak: czujnik hala w małej obudowie np sot23(zamiast kontaktronu nie będzie drgania styków).
RS 485 tak jak piszesz a do wyświetlania może Think speak i wykresy na stronie???
Albo zapis na SD.
Awatar użytkownika
niveasoft
Posty: 1213
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Moduł do odczytu wodomierza

Post autor: niveasoft » 19 sty 2018, 19:45

W samochodach jest Eeprom i liczy do milionów kilometrów :D
Używa się tam Wear Leveling czyli zapis do komórek Eeprom jest rozłożony na większą ilość komórek.
Przykładowo jedna komórka ma możliwość 100 tyś razy być zapisana. Biorąc dziesięć komórek możesz zapisywać już milion razy...
Nie wiem do ilu potrzebujesz liczyć, ale jak Ci wystarczy 65535 litrów to poniżej dzielę się gotowymi funkcjami by BARTek ;)

Jak Ci to nie wystarczy to możesz to sobie analogicznie rozszerzyć do czterech bajtów i zapisywać 4294967295 litrów :P

Proszę. Funkcje same zapisują i same odczytują wartości a żywotnośc eepromu zwiększona o 10x ;)
  1. Sub Clear_buff()
  2. 'sub zajmuje się pamięcią EEPROM. Zapisze bufor Wear Leveling czyli go wyzeruje
  3.    Fn = 10.
  4.    Do
  5.     Numer_strony_ee(fn) = &HFFFF
  6.      Decr Fn
  7.    Loop Until Fn = 0
  8. End Sub
  9.  
  10. Sub Write_numer(byref Mem_it As Word)
  11.  
  12.  Fn = 1
  13.  While Fn < 10
  14.  
  15.   If Numer_strony_ee(fn) = &HFFFF Then
  16.    Numer_strony_ee(fn) = Mem_it
  17.     Exit Sub
  18.   End If
  19.  
  20.   Incr Fn
  21.  Wend
  22.  
  23.  Call Clear_buff()
  24.   Numer_strony_ee(1) = Mem_it
  25.  
  26. End Sub
  27.  
  28. Function Read_numer() As Word
  29.  
  30.  Helpw = &HFFFF
  31.  
  32.   For Fn = 1 To 10
  33.    If Numer_strony_ee(fn) <> &HFFFF Then                    'po kolei sprawdzaj czy napotkasz FFFF
  34.     Helpw = Numer_strony_ee(fn)                             'zapisuj te które sa różne of FFFF
  35.    Else                                                     'jeśli napotkał FFFF to poprzedni to ostatni zapis
  36.     Read_numer = Helpw
  37.      Exit Function
  38.    End If
  39.   Next
  40.  
  41. End Function
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Moduł do odczytu wodomierza

Post autor: pimowo » 19 sty 2018, 21:04

Pikczu pisze:Ja bym to zrobił tak: czujnik hala w małej obudowie np sot23(zamiast kontaktronu nie będzie drgania styków).
Licznik już mam. Musiałem wymienić ponieważ kończyła się legalizacja więc nowy kupiłem już kontaktronem ;)
Pikczu pisze:RS 485 tak jak piszesz
Tu jeszcze się zastanawiam... Dane będą odczytywane po RS485 lub poprzez ESP8266 posyłanie do serwera domowego.
Pikczu pisze:do wyświetlania może Think speak i wykresy na stronie???
Dane z wodomierza będą odczytywane przez NetTemp
Pikczu pisze:Albo zapis na SD.
Zapis wszystkiego będzie na HDD serwera, ale tu mi chodzi o coś takiego abym miał "lustro" elektroniczne przy liczniku-co co na liczniku to i w module. Stan licznika będzie normalnie na liczniku, ale i w module w wersji elektronicznej. Nawet jak by coś się stało na serwerze czy coś to przy liczniku zawsze będą aktualne dane.
niveasoft pisze:W samochodach jest Eeprom i liczy do milionów kilometrów :D
Używa się tam Wear Leveling czyli zapis do komórek Eeprom jest rozłożony na większą ilość komórek.
Przykładowo jedna komórka ma możliwość 100 tyś razy być zapisana. Biorąc dziesięć komórek możesz zapisywać już milion razy...
A ja żyłem w przekonaniu, że eeprom nie nadaje się do takich rzeczy. Tak to jest jak człowiek się nie zna i naczyta się na forach ;)
niveasoft pisze:Nie wiem do ilu potrzebujesz liczyć, ale jak Ci wystarczy 65535 litrów to poniżej dzielę się gotowymi funkcjami by BARTek ;)
Licznik ma legalizację na 5 lat więc co bym nie robił to nie zużyję 65535 litrów wody (1000 litrów na miesiąc) w tym czasie ;)
niveasoft pisze:Proszę. Funkcje same zapisują i same odczytują wartości a żywotnośc eepromu zwiększona o 10x ;)
Dzięki wielkie za kod. Ja tu na razie jestem na etapie obmyślania całości, a już mam gotowca :)
ODPOWIEDZ