Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Miernik temperatury i wilgotności o ultraniskim poborze prądu

Kubald 26 Apr 2013 23:37 25596 2
  • Miernik temperatury i wilgotności o ultraniskim poborze prądu
    Niniejszy artykuł stanowi tłumaczenie anglojęzycznego skrótu artykułu opublikowanego przez autora w miesięczniku Радио.

    Po zbudowaniu kilku różnych (opisanych w innych artykułach na stronach autora) mierników temperatury i wilgotności autor zdał sobie sprawę, że praktycznym rozwiązaniem byłoby posiadanie takiego urządzenia w każdym pomieszczeniu, włączając w to piwnicę, pralnię, toaletę itd. Niestety, czujnik typu SHT15 zastosowany w innych opisanych miernikach jest zbyt drogi, aby można było go wykorzystać w kolejnych konstrukcjach. Autor zdecydował się więc wykorzystać tańsze podzespoły i zaprojektować układ tak, by pobierał jak najmniej prądu. Średni pobór prądu prezentowanego urządzenia wynosi mniej niż 1 μA, więc zasilając je z baterii typu CR2032, powinna ona wystarczyć na około 10 lat!

    Miernik temperatury i wilgotności o ultraniskim poborze prądu Miernik temperatury i wilgotności o ultraniskim poborze prądu


    Sprzęt
    Wykorzystany w urządzeniu czujnik wilgotności to HIH-5030 firmy Honeywell. Jest on następcą serii czujników HIH-4000 i można go zasilać napięciem o wartości 3V. Sterownik wyświetlacza LCD oparto o układy CMOS CD4043, których statyczny pobór prądu wynosi zaledwie 40 nA. Symetryczny przebieg o częstotliwości 22 Hz, niezbędny do sterowania wyświetlacza LCD, generowany jest przez multiwibrator na układzie CD4047. Niski pobór prądu układu gwarantuje zastosowanie rezystora R4 o dużej wartości, więc układy sterujące wyświetlaczem LCD DD2-DD6 pobierają wszystkie w sumie około 0,6 μA. Dane do wyświetlania przesyłane są na wejścia A, B, C i D układów sterujących, przesył poprzedzony jest sygnałem bramkującym podawanym na wejście LE.

    Temperatura jest mierzona przez wbudowany w mikroprocesor czujnik, który jest zaprojektowany do pomiaru temperatury z dokładnością do ±1°C. Zarówno temperatura, jak i wilgotność są mierzone co 2 sekundy. W pozostałym okresie czasu procesor przechodzi w stan głębokiego uśpienia, z którego wybudzany jest dzięki wbudowanemu, 32-bitowemu timerowi SmaRTClock, który jest taktowany częstotliwością 16,4 kHz. W trybie uśpienia pobór prądu procesora z pracującym jedynie timerem wynosi około 0,3 μA. Należy pamiętać, że czujnik temperatury jest wrażliwy na światło i przy oświetleniu potrzebuje około 1 ms na uruchomienie się, podczas gdy w ciemności ten czas jest prawie zerowy. Procesor jest taktowany z częstotliwością 20 MHz, więc pomiar zajmuje zaledwie kilkadziesiąt mikrosekund, więc pobór prądu przez pracujący procesor nie ma widocznego wpływu na wartość średnią.

    Należy zauważyć, że nie ma sensu, aby urządzenie pracowało w ciemnościach, ze względu na zastosowane wyświetlacze LCD. Dla jeszcze większej oszczędności energii urządzenie jest wyłączane, jeśli poziom oświetlenia spadnie poniżej określonej wartości. Poziom oświetlenia jest wykrywany za pomocą fotodiody VD1, generującej napięcie rzędu 0,4V w pełnym oświetleniu słonecznym, co czyni wykrywanie natężenia oświetlenia bardzo czułym. Fotodioda połączona jest z wbudowanym w procesor komparatorem, pobierającym około 0,4 μA w czasie pracy. W ciemnościach komparator uruchamiany jest co 2 sekundy, aby sprawdzić, czy nie zaszła zmiana warunków oświetlenia. Ponieważ sprawdzenie stanu komparatora zajmuje też kilka mikrosekund, w ciemności średni pobór prądu maleje trzykrotnie do wartości 0,36 μA. W czasie dnia warunki oświetleniowe sprawdzane są co 256 pomiarów, czyli co każde 8,5 minuty.

    Urządzenie zmontowano na płytce drukowanej zaprojektowanej w Eagle'u. Bateria i kilka zwór zamontowane są na spodzie płytki drukowanej, co widać na zaprezentowanych zdjęciach. Obudowa wykonana została z profili aluminiowych 3/4", do których przymocowano płytkę drukowaną za pomocą wsporników 1/4". Boczne ściany wykonano z profili aluminiowych 3/4" w kształcie litery "L". Tylny i przedni panel wykonano z pleksiglasu o grubości 3 mm. Kondensator C1 powinien mieć obudowę 0805, pozostałe elementy powinny mieć obudowy typu 0402. Jeśli nie zakłada się pracy urządzenia w ciemności, można pominąć montaż fotodiody VD1. W tym przypadku należy też odkomentować 59. linijkę kodu, zawierającą instrukcję "smjp loop". Wtedy warunki oświetleniowe nie będą sprawdzane.

    Oprogramowanie
    Ponieważ w karcie katalogowej czujnika wilgotności zawarto wszystkie niezbędne informacje na temat konwersji wartości z przetwornika A/D na wartość wilgotności, wykorzystany wzór dokonuje obliczeń na wartościach całkowitych:

    H(%) = ((((A16 - 2480)(2392 + 5T(°C)) + 18) >> 10) + 128) >> 8

    Gdzie A oznacza wartość z przetwornika A/D, a >> przesunięcie danych w prawo. Stałe obecne we wzorze zostały dobrane w sposób inny niż przedstawiony w karcie katalogowej czujnika, gdzie przedstawiono wartości dla obliczeń pokrywających zakres wilgotności od 10% do 90% z dokładnością ±1 i temperatury od 0 do 50°C. Do pomiarów w temperaturze pokojowej obydwa wzmiankowane wzory sprawdzają się w 75% przypadków. Zastosowany czujnik okazał się być całkiem dokładny, mierzone wartości -bez uprzedniej kalibracji - różniły się o ±2% od wartości mierzonych czujnikiem SHT15. Program uśrednia ostatnich 16 pomiarów wilgotności i 8 pomiarów temperatury.

    Wbudowany w procesor czujnik temperatury wymaga kalibracji. Nota katalogowa procesorów C8051F9xx opisuje jednopunktową metodę kalibracji, która nie wystarcza do dokładnych pomiarów temperatury. Dla lepszych wyników należy przeprowadzić kalibrację dwupunktową w sposób opisany dalej. Na początek należy zaprogramować procesor plikiem temp.asm i pozwolić urządzeniu pracować przez około 10 minut. Należy zapisać wartość z przetwornika A/D wskazaną na wyświetlaczach i wartość temperatury zmierzoną dodatkowym termometrem (najlepiej cyfrowym). Następnie należy umieścić urządzenie wraz z dodatkowym termometrem w lodówce (nie w zamrażalniku) na co najmniej 30 minut i zapisać wartość temperatury i odpowiednią wartość z przetwornika A/D. Otrzymane wartości należy wpisać do pliku HIH5030.html, a następnie kliknąć przycisk "Compute". Wygenerowane wartości INDEX_CORR i INDEX_MAX należy wprowadzić w 3 i 4 linijce kodu w pliku humi.asm. Należy również umieścić wygenerowaną przez plik tabelę na końcu kodu, zastępując zapisane tam wartości. Tak przeprowadzona kalibracja powoduje brak różnic temperatury pomiędzy pomiarem przez procesor a zewnętrzny termometr o ± 1°C.

    Kody dla procesora zostały napisane w assemblerze przy użyciu środowiska projektowego dostarczanego przez Silicon Labs. Procesor został zaprogramowany programatorem DEBUGADPTR1-USB.

    Należy pamiętać, że z wprowadzeniem procesora w stan głębokiego uśpienia wiąże się kilka szczegółów, zależnych od rodziny procesorów, więcej na ten temat można znaleźć w odnośniku [2]. Istnieje realne niebezpieczeństwo, że programator może utracić łączność z procesorem. Aby temu zapobiec, po rozpoczęciu działania przewidziano w programie 10-sekundową zwłokę, co wystarcza na nawiązanie komunikacji między debuggerem/programatorem a procesorem po podaniu na niego zasilania.

    Odnośniki
    [1] Chew M.T., Gupta G.S. Programming with Field-Programmable Mixed-Signal Controllers. wyd. drugie, 267pp.
    [2] Optimizing Low-Power Operation of the C8051F9xx, nota aplikacyjna Silicon Labs nr AN358, 2010.

    Na stronie źródłowej można znaleźć kod dla procesora i projekt układu w formacie Eagle'a.

    Cool? Ranking DIY
    About Author
    Kubald
    Level 15  
    Offline 
    Has specialization in: spektroskopia exafs/xanes, uc, it
    Kubald wrote 188 posts with rating 105. Live in city Kraków. Been with us since 2004 year.
  • #2
    kiler_89
    Level 12  
    Czytając liczyłem że czujnik naprawdę jest tani, niestety kosztuje od 37 do 70 złotych !
    Chiński kalibrowany cyfrowy czujnik kosztuje ok 6zł pobiera dużo więcej prądu i jest fizycznie większy ale można go wyłączać tranzystorem
  • #3
    excray
    Level 40  
    Ten pobór prądu to liczony czy mierzony? Bo coś mi się zdaje że liczony i że autor zapomniał policzyć prąd pobierany przez LCD.