Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

MADACU: Data Logger do zapisu temperatury

dp-mion7 17 Lip 2017 23:24 4551 14
  • MADACU: Data Logger do zapisu temperatury
    Witam! Postanowiłem przedstawić mój projekt urządzenia do rejestracji danych na karcie SD (tzw. data logger). Urządzeniu nadałem nazwę MADACU stanowiący skrót od szumnej nazwy Measurement And Data Acquisition Control Unit. Urządzenie miało być uniwersalne tzn. służyć do pomiaru temperatury, oświetlenia i sterować czymś przez MOSFETy (np. światłem). PCB projektowałem dawno (2012 r.) i po wytrawieniu uświadomiłem sobie że są na płytce błędy i nie do końca przemyślane elementy, dlatego płytka trafiła do szuflady. Na szczęście postanowiłem wrócić do porzuconego projektu.
    Działanie:
    Układ co 1 minutę dokonuje pomiaru temperatury za pomocą czujników DS18B20 (do 5 czujników), wyniki wyświetla na wyświetlaczu (ZM204D), wysyła je za pomocą bluetooth (HC-05) i zapisuje je na karcie SD w plikach txt. Po 12 h lub 24 h następuje reset programu, tworzy się nowy plik. Nazwy plików zawierają kolejne numery. Przed resetem układ wysyła do HC-05 minimalne i maksymalne temperatury z każdego czujnika wraz z czasami ich uzyskania. Nie trzeba jednak czekać do resetu gdyż można zapytać układ przez BT wysyłając odpowiednią komendę np. ?T min? lub ?T max?. Można także skrócić zakres czasu z którego wyznaczane są minima i maksima za pomocą komendy ?zeruj?.
    Na wyświetlaczu pojawiają się temperatury z 3 lub 5 czujników, godzina i data pomiaru, numer pomiaru (P) i numer pliku (F), cyfra w nawiasie oznacza ilość czujników DS18B20 które wykrył. Wartości z jednego czujnika (1-sza linijka na LCD) są analizowane pod względem tendencji wzrostowej lub spadkowej. W tym celu program analizuje 4 kolejne pomiary i jeśli każdy kolejny jest mniejszy to stwierdza tendencje spadkową, wówczas na ekranie pojawia się ostrzeżenie w postaci ?Z!? w przeciwnym razie jest ?ok?. Dodatkowo w momencie wykrycia tendencji spadkowej zaświeca się czerwony LED oraz uruchamia buzzer, który załączany jest na 100ms. Buzzer jest aktywny w zależności od wartości zapisanej w EEPROM, którą można zmienić komendą przez BT.
    Urządzenie posiada tylko jeden przycisk, który służy do podświetlania ekranu. Podświetlenie jest sterowne przez PWM a jasność zależy od wartości zapisanej w EEPROM, którą można zmienić komendą przez BT.
    Problemy:
    Jednym z problemów były błędne ścieżki dochodzące do miejsca pinów PCF8583 (lustrzane odbicie). Na szczęście wystarczy przegiąć nóżki PCFa (w obudowie DIP8) na drugą stronę i pasuje! Aczkolwiek projektując pcb zapomniałem o diodach prostowniczych między baterią 3V a PCF8583 (może dlatego że patrzyłem na jakiś schemat w którym był DS1307). W tym przypadku ścieżki porozcinałem i wstawiłem diody SMD. Mimo to dobry elektronik dostrzeże błąd który powoduje dość szybkie zużycie tej baterii.
    Na pcb zaprojektowałem złącze COM (RS232) ale szybko doszedłem do wniosku że tego nie będę używać (USB by było lepsze). Na szczęście linie RXD i TXD zostały wyprowadzone na goldpiny (projektując myślałem o zworkach aby wybierać czy mega644 ma być połączona z drugim AVRem czy z COM). Na goldpin podłączyłem moduł HC-05. Na płytce znajduje się miejsce na ATMEGA8 która miała zajmować się przetwarzaniem danych z odbiornika 433MHz AM OOK a który miał służyć do bezprzewodowego pomiaru temperatury (współpracując z nadajnikiem 433MHz) ale ostatecznie z tego zrezygnowałem.
    Na płytce zrobiłem miejsce na 4 MOSFETy a ostatecznie jest tylko jeden (sterujący buzerem). Buzer w ogóle nie był przewidziany podczas projektowania ale na szczęście jakoś te dziurki spasowały i udało mi się go wcisnąć. W miejscu przeznaczonym na innego MOSFETa znajduje się potencjometr do regulacji kontrastu (też mi umknęło przy projektowaniu pcb).
    Finalne rozwiązanie:
    Układem steruje ATMEGA644PA z kwarcem 8 MHz. Przez SPI do atmegi podłączona jest karta SD 2GB. Linie I2C są wykorzystane do komunikacji z zegarem (RTC) tj. PCF8583, który jest połączony z baterią 3V podtrzymującą jego działanie przy braku zasilania zewnętrznego (klasyczne rozwiązanie). Linie RXD i TXD są wykorzystane do komunikacji z BT. Jak wiadomo karta SD potrzebuje 3V, HC-05 właściwie też powinien mieć 3V na liniach TXD i RXD. Atmega644PA może iść na 3V lub 5V. Postanowiłem dać mikrokontrolerowi 3V i uniknąć problemów z jakimiś rezystorami i zenerami miedzy AVRem a kartą SD oraz dodawania czegoś na liniach TXD i RXD. Pojawił się jednak problem z LCD a właściwie jego kontrastem. Aby kontrast był dobry (aby było cokolwiek widać) napięcie między Vdd a Vo powinno być większe niż 4,5V. Na szczęście na płytce mam MAX232 który generuje ujemne napięcie. A więc skoro MAX232 nie służy do komunikacji (zamiast niego jest BT) wykorzystałem jego ujemne napięcie do sterowania kontrastem LCD (znalazłem ten sposób na tym forum).
    Program napisany w bascomie (głownie ze względu na AVR-DOS) zajmuje 32% flashu, i wykorzystuje ok. 3/4 ramu. Program udostępniam. Nie będę go opisywał, chyba że ktoś jest zainteresowany.
    Czujniki na razie mierzą temperaturę w domu, na kaloryferze i zewnętrzną ale ciekawi mnie jak głęboko przemarza grunt w zimie a wiec dodam jeszcze tam. Projekt jest skończony ale może dodam jeszcze kiedyś inne czujniki np. ciśnienia i wilgotności. Na pcb widnieje napis MADACU 1 gdyż już wtedy myślałem że zrobię drugą lepszą płytkę (z Xmegą i kolorowym wyświetlaczem graficznym). A więc może kiedyś.

    MADACU: Data Logger do zapisu temperatury MADACU: Data Logger do zapisu temperatury MADACU: Data Logger do zapisu temperatury MADACU: Data Logger do zapisu temperatury MADACU: Data Logger do zapisu temperatury MADACU: Data Logger do zapisu temperatury MADACU: Data Logger do zapisu temperatury

    Filmik z działania jeszcze w pierwotnej ?obudowie?.
    https://www.youtube.com/watch?v=GQKiNcLbLKY

    Obudowę finalną zrobiłem z przeźroczystego polistyrenu i kątownika chyba z PP. Elementy pokleiłem butaprenem. Ściankę boczną prawą mogę wysunąć i wtedy mam dostęp do karty SD.
    Filmik prezentujący nowa obudowę.
    https://www.youtube.com/watch?v=Wtoq1YKo_RQ

    Na podstawie własnych błędów radzę wszystkim nowym elektronikom czytającym to DIY dobrze sobie przemyśleć co konkretnie oczekujemy od urządzenia projektując płytkę PCB. Zawsze trzeba pójść na kompromis i powiedzieć że ?to? będzie a ?tego? nie. Urządzenie ?do wszystkiego? może się okazać do niczego.
    Schemat:
    MADACU: Data Logger do zapisu temperatury


    Fajne!
  • #2 18 Lip 2017 09:54
    Steryd3
    Poziom 31  

    Projekt ...może mało odkrywczy ale niech będzie.
    Wygląda jak co druga praca dyplomowa...czyli niezły bajzel upchnięty do obudowy z pleksi (nie twierdzę, iż moja była efektowniejsza).
    Czy karta SD była obdarzona jakimś systemem plików...bo na to nie trafiłem?
    Przydał by się jakiś schemat w wątku ... jest grupa ludzi (ja się do niej zaliczam) którzy na schemat by rzucili okiem ale nie są na tyle zainteresowani projektem by ściągać pliki, rozpakowywać, szukać programu by otworzyć...słowem walczyć o te informacje.
    Reasumując..estetyka marna, innowacyjność niska...jedynie aspekt edukacyjny do przyjęcia.

  • #3 18 Lip 2017 10:29
    h3c4
    Poziom 13  

    Zgadzam się z przedmówcą płytka wydaję się że ma sterować całym Pentagonem a tu tylko logowanie temperatury ; ).

  • #4 18 Lip 2017 12:30
    wasyl32
    Poziom 18  

    Witam
    Trochę ironicznie, ale czemu dokładność wyniku na wyświetlaczu to tylko 2, a nie 3 lub 4 miejsca po przecinku?
    Przecież w nocie widnieje jak byk "±0.5°C accuracy from –10°C to +85°C". Rozumiem, że można interpolować wyniki pomiaru, ale bez przesady :)

  • #5 18 Lip 2017 20:54
    lukashb
    Poziom 38  

    Ja powiem szczerze, że ostatnimi czasy myślę, nad zupełnym obcięciem końcówki po kropce. Z punktu widzenia mojego jest to zbędne miejsce na wyświetlaczu. Czy jest to dla mnie istotne, że zobaczę 20.5 stopnia? a nie 20 stopni? Jak temperatura będzie rosła, to zobaczę w końcu 21 stopni, a nie interesuje mnie, że zmiana nastąpiła na 20.6 stopnia... to bez sensu imho.

  • #6 18 Lip 2017 21:08
    dp-mion7
    Poziom 11  

    Dziękuję za opinie.
    Racja, schemat powinien być łatwo dostępny, zatem go dodaję.

    Nie jestem studentem elektroniki ani tym podobnych, to nie jest praca dyplomowa, to jest moje hobby. :)
    Owszem płytka jest za duża, wszystko (czego finalnie używam) zmieściłoby się na płytce rozmiarami dopasowanej do tej z LCD.
    Wiem widać "bebechy", ale jak się coś zrobi samemu to cieszy to oko. Po jakimś czasie mogę okleić obudowę.
    Można takie coś kupić wiadomo. Dla mnie jest ważne że działa tak jak ja chcę i mogę podłączyć tyle czujników ile chcę i jakie chcę (są ograniczenia wiadomo).

    Tak dokładność tych DS18B20 jest do ok. 0,5C. Myślałem o tym żeby ograniczyć wyświetlany wynik do liczby całkowitej, ale mając na wyświetlaczu dwa miejsca po przecinku widzę czy temperatura ma tendencję wzrostową czy spada (a to mnie interesuje). Poza tym wyniki zapisane na SD (też do dwóch miejsc po przecinku) obrabiam w excelu uśredniam lub filtrem Savitzky'ego–Golay'a.

  • #7 19 Lip 2017 11:04
    Belialek
    Poziom 22  

    dp-mion7 napisał:
    Myślałem o tym żeby ograniczyć wyświetlany wynik do liczby całkowitej, ale mając na wyświetlaczu dwa miejsca po przecinku widzę czy temperatura ma tendencję wzrostową czy spada (a to mnie interesuje).


    To nie lepiej zamiast tych dwóch miejsc po przecinku dodać po prostu symbol tendencji (strzałka w górę / w dół) a samą wartość temperatury zostawić jako liczbę całkowitą? Wg mnie znacząco poprawiło by to czytelność.

  • #8 20 Lip 2017 18:29
    PiotrPitucha
    Poziom 32  

    Witam
    Nie podoba mi się sterowanie buzerem... czy to w ogóle działa?
    Nie dość że niskie napięcie zasilania to jeszcze dałeś dzielnik na bramkę...
    Na dodatek dzielnik R5 R12 podpięty jest do 3,3V zamiast do 5V, jeszcze lepiej byłoby wstawić N Mostet Logic Level zamiast P Mosfet i sterować bramkę bezpośrednio z procesora oszczędzając tranzystor NPN i dwa oporniki.
    Pozdrawiam

  • #9 21 Lip 2017 22:11
    dp-mion7
    Poziom 11  

    Belialek napisał:
    dodać po prostu symbol tendencji (strzałka w górę / w dół)

    Tak zrobię przy następnej modyfikacji programu.

    Sterowanie buzerem działa. Wiem nie jest to optymalne rozwiązanie ale tak mnie zmusiły ścieżki na pcb.
    PiotrPitucha napisał:
    lepiej byłoby wstawić N Mostet Logic Level
    Zapisałem to na schemacie.
    Buzer jest zasilany z 5V, natomiast rezystor 10k pełni rolę pull-upu. Bez tego rezystora buzer się włączył i nie wyłączał.

  • #10 22 Lip 2017 16:32
    ..::MariuszB::..
    Poziom 16  

    Ja tak z poza tematu, mimo braku tak potrzebnej do życia dokładności temperatury z 4 miejscami po przecinku czy braku pozłacanych połączeń,idealnych ścieżek stwierdzam,że wykonane przez hobbyste urządzenie jest świetne,gratuluje projektu i powoli bez stresu dopieszczaj,ucz się i nie zniechęcaj się przez sfrustrowanych życiowo "elektroników" :-)

  • #11 24 Lip 2017 11:00
    waleryfw
    Poziom 12  

    Dziękuję za takie urządzenie . Po małych zmianach chcę wykorzystać do pomiaru i zapisu w mojej kotłowni . Mam jednak problem przy kompilacji wyskakuje brak pliku
    Config_MMC.bas czy można podesłać lub umieścić na elektrodzie .

  • #12 24 Lip 2017 11:22
    LA72
    Poziom 39  

    waleryfw napisał:
    Dziękuję za takie urządzenie . Po małych zmianach chcę wykorzystać do pomiaru i zapisu w mojej kotłowni . Mam jednak problem przy kompilacji wyskakuje brak pliku
    Config_MMC.bas czy można podesłać lub umieścić na elektrodzie .


    Plik znajduje się w Bascom w katalogu Samples.

  • #13 24 Lip 2017 12:00
    waleryfw
    Poziom 12  

    Dziękuję oczywiście plik jest . A plik Config_AVR-DOS mam ze strony kolegi "DUCH__ .
    Teraz wszystko się kompiluje .

  • #14 25 Lip 2017 19:03
    dp-mion7
    Poziom 11  

    Cieszę się że komuś się przydadzą moje pomysły :) Chcę zwrócić uwagę na to że zastosowałem stabilizator 3.3V dający max 100mA jednak w większości tego typu projektów stosuje się mocniejsze (800mA) bo niektóre karty SD są naprawdę prądożerne. Na szczęście ta którą zastosowałem nie jest. Chciałem dać moduł WiFi ale te też okazują się wymagające jeśli chodzi o zasilanie.

  • #15 25 Lip 2017 19:15
    Freddy
    Poziom 43  

    waleryfw napisał:
    plik Config_AVR-DOS mam ze strony kolegi "DUCH__
    Tyle, że AVR-DOS nie jest darmową biblioteką :) i nie wolno jej rozdawać.
    Darmowa jest wyłącznie do celów niekomercyjnych i programie musi być zamieszczona informacja o pochodzeniu i licencji.
    Cytat:
    AVR-DOS is only free for non commercial use. For commercial use, or when you are interested in ASM-Code and complete documentation please check License directives

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME