DZWON

Są tacy, którzy czytali tę wiadomość przed tobą.
Zapisz się, aby otrzymywać świeże artykuły.
E-mail
Nazwa
Nazwisko
Jak chcesz przeczytać „Dzwon”?
Bez spamu

W budownictwie stale mamy do czynienia z pomiarami temperatury: należy kontrolować temperaturę podczas wypalania klinkieru w procesie produkcji cementu, przestrzeganie warunków temperaturowych jest ważne podczas odparowywania betonu i betonowania monolitycznego, bez zapewnienia kontroli termicznej nie da się prawidłowo przygotować asfaltu mieszanka betonowa, podczas badania betonu pod kątem mrozoodporności ważne jest również wytrzymanie reżimu temperaturowego. Do rozwiązania każdego z tych problemów potrzebne są różne termometry: dla różnych zakresów temperatur, z różnymi czujnikami (temperatura medium, temperatura powierzchni), termometr jednokanałowy, termometr dwukanałowy, termometr wielokanałowy, z trybem rejestracji i bez.

Każde zadanie konstrukcyjne związane z termoregulacją można rozwiązać za pomocą urządzeń Interpribor. Jest to możliwe dzięki szerokiej gamie czujników podłączonych do urządzeń. Dołączenie tego lub innego czujnika do opakowania urządzenia do monitorowania termicznego umożliwi kupującemu zakup urządzenia przeznaczonego do określonych celów.

Rodzaje czujników temperatury

Wśród czujników do urządzeń kontrolujących temperaturę znajdują się:

  • Seria powierzchniowych czujników temperatury: TZ-P i TZ-PO. Czujnik TZ-P przeznaczony jest do pomiaru temperatury powierzchni zakrzywionych. Wyróżnia się dużą wydajnością dzięki wykonaniu na zimnej termoparze z błędem względnym ±2,0%. Konstrukcja czujnika TZ-PO zapewnia dokładność ±0,5% (w zakresie temperatur –50...+100 C) przy pomiarze temperatury powierzchni ciał o stosunkowo niskiej przewodności cieplnej (szkło, beton itp.) . TZ-PO wykonany jest w oparciu o element platynowy o małej bezwładności Pt1000.
  • Czujniki temperatury otoczenia również występują w kilku wersjach: TZ-S, DTS-1.0 i DTS-1.4. Czujnik TZ-S wykonany jest na termoparze XK osobliwość Jest zwiększona wydajność oraz szeroki zakres mierzonych temperatur z dokładnością pomiaru ±1,0%. Czujniki DTS-1.0 i 1.4 to cyfrowe czujniki temperatury o podwyższonej dokładności pomiaru ±0,5% w wąskim zakresie temperatur –10…+85 C i zakresie –55…+125 C z dokładnością ±2,0%. Czujnik DTS-1.4 charakteryzuje się wyższą wydajnością ze względu na swoje cechy konstrukcyjne.

25.11.2012 Uwaga! Program termostatu został zaktualizowany do wersji v2b_1.

Przedstawiam Państwu moje urządzenie - dwukanałowy termometr-termostat. Na prośbę bliskich wykonałem termostat, aby utrzymać stałą temperaturę w pudełku z ziemniakami. Jeśli w innych latach nie było takiej potrzeby, to ubiegła zima pokazała, że ​​jest to konieczne.

Jako czujniki użyłem DS18B20. Mikrokontroler (ATmega8) działa z wewnętrznego oscylatora głównego 4 MHz (dodatkowo płytka posiada możliwość montażu kwarcu). Ze względu na artefakty dynamicznego wyświetlacza (mruganie było zauważalne w momencie odpytywania czujnika) musieliśmy zrezygnować z odczytu ROM czujnika i obliczenia CRC. Urządzenie wykorzystuje jednak dwa czujniki, które są podłączone do różnych pinów MK. Jeden mierzy temperaturę powietrza na zewnątrz, drugi w skrzynce. Kontrola temperatury jest zorganizowana tylko dla czujnika nr 2 (pudełko).



Termometr-termostat jest podzielony na dwie obudowy. W jednym znajduje się część sterująca i wyświetlacz, w drugim zasilacz i przekaźnik sterujący obciążeniem. Na płycie sterującej przewidziano montaż stabilizatora mocy z kondensatorami do zasilania mikrokontrolera, jednak ponieważ zasilanie dochodzi przy napięciu 5 V, nie jest ono wlutowane (w przypadku zasilania z zasilaczy o napięciu wyjściowym większym niż 5 V) v, należy go wlutować). Obudowa sterownicza wyposażona jest w uchwyt umożliwiający montaż na szynie DIN lub po prostu za pomocą wkrętów samogwintujących do ściany.



Złącza urządzenia:
— sygnały sterujące przesyłane są poprzez złącze USB w celu załączenia przekaźnika;
— czujniki temperatury podłączane są poprzez złącza audio.

Ponieważ program zajmuje 66% pamięci, zdecydowano się na zrobienie drugiego kanału sterującego, na wszelki wypadek, z PB5. W tym programie nie ma drugiego kanału i nie wiem jeszcze, czy będzie on w ogóle potrzebny, ale na PP drugi kanał jest w pełni zorganizowany, tylko przekaźnik nie jest zainstalowany.












Opis działania termostatu.
Urządzenie posiada trzy przyciski sterujące. Przycisk (OK), (Góra), (Dn). Po włączeniu zasilania na wskaźniku wyświetlana jest temperatura czujnika nr 1 (powietrze zewnętrzne).




Aby wyświetlić temperaturę w polu, naciśnij przycisk (OK). Jednocześnie zapala się niebieska dioda LED HL1 (patrz schemat), sygnalizując, że na wyświetlaczu wyświetlana jest temperatura czujnika nr 2.




Po ponownym naciśnięciu przycisku (OK) wyświetli się temperatura czujnika nr 1 i zgaśnie dioda HL1.

Wejście w tryb ustawiania górnego progu wyłączenia i dolnego progu grzania. Należy wcisnąć obydwa przyciski (Góra), (Dn) i przytrzymać je przez co najmniej 5 sekund. Po upływie tego czasu urządzenie przejdzie w tryb podglądu górnego progu wyłączenia grzania. Teraz należy zwolnić przyciski. Na wyświetlaczu wyświetli się wartość progu, a przy czwartej cyfrze zaświeci się górny segment, co oznacza, że ​​jest to próg górny.




Aby zmienić ustawienie progu, należy nacisnąć przycisk (OK). Wartość na wyświetlaczu zacznie migać, wskazując, że wartość zadana jest gotowa do zmiany. Ustawienie można zmieniać w zakresie od +1 do +10 stopni, w odstępach co 1 stopień. Wartość zwiększa się za pomocą przycisku (W górę) i zmniejsza za pomocą przycisku (Dn). Aby zapisać ustawienie lub po prostu przejść do następnego progu, należy nacisnąć przycisk (OK). Na wyświetlaczu pojawi się dolny próg, a czwarta cyfra będzie miała dolny segment, wskazując, że jest to dolny próg.




Aby zmienić ustawienie progu należy ponownie nacisnąć przycisk (OK). Wartość na wyświetlaczu zacznie migać, wskazując, że wartość zadana jest gotowa do zmiany. Po ustawieniu progu załączenia należy nacisnąć przycisk (OK), aby zapisać i wyjść z trybu ustawiania progów termostatu. Ustawienia są zapisywane w pamięci nieulotnej MK i nie są resetowane po zaniku zasilania.

Dla wygody monitorowania temperatury w skrzynce wprowadzono dodatkowy algorytm alarmowania o niskiej temperaturze w skrzynce. Jaki on naprawdę jest? Gdy na wyświetlaczu pojawi się temperatura czujnika nr 1, a temperatura w skrzynce spadnie (np. na skutek awarii grzałki) i osiągnie wartość poniżej +1 stopnia, dioda HL1 zaczyna migać, sygnalizując niską temperaturę w pudełko. Jeżeli temperatura w skrzynce wzrośnie powyżej +2 stopni, dioda LED przestanie migać.

Algorytm nieprawidłowego działania czujnika. Jeżeli czujnik działa nieprawidłowo, na wyświetlaczu pojawia się Err No. Liczba oznacza kod błędu od 1 do 3. Liczba 1 oznacza brak wysokiego poziomu, 2 oznacza brak czujnika, 3 oznacza, że ​​wysoki poziom nie został przywrócony.




Gdy na wyświetlaczu pojawi się temperatura czujnika nr 1, a nastąpi awaria czujnika nr 2, dioda HL1 zaczyna migać, sygnalizując awarię. Dzięki temu, gdy na wyświetlaczu pojawi się temperatura czujnika nr 1, nie przeoczysz awarii termostatu. Oczywiście, jeśli czujnik nr 2 ulegnie awarii, ogrzewanie się wyłączy.

Jeszcze kilka punktów. Termostat wyłącza się, jeśli ustawienie dolnego progu jest równe progowi górnemu lub ustawienie progu dolnego jest wyższe niż ustawienie progu górnego. Jeśli czujnik nr 1 lub nr 2 jest uszkodzony, to w menu ustawień nie zobaczysz ustawionej wartości, chociaż wartość zadaną można zmienić, ale na ślepo. Odbywa się to tak, aby użytkownik nie zawracał sobie głowy zmianą ustawień w przypadku awarii czujników.


Pliki do złożenia urządzenia.

(Odwiedziono 19 717 razy, 1 wizyty dzisiaj)

Sekcja: Tagi: ,

Nawigacja po wpisach

084-Dwukanałowy termometr-termostat na ATmega8.: 86 komentarzy

  1. fizik_89

    Witaj SVN.
    Planuję zmontować urządzenie według Twojego projektu. Ciekawi Cię, jakiej grzałki użyłeś do termoboxu? Sądząc po zasilaniu, wytwarza napięcie 12 V 0,5 A. Czyli grzałka ma tylko 6 W? Wydaje mi się, że moc 6 W nie zapewni wymaganych warunków termicznych. A może coś źle zrozumiałem?)

  2. SVN Autor wpisu
  3. aleks52

    Zmontowałem termostat, zadziałał od razu. Tylko, że pokazuje dziwną temperaturę: minus 38,6 (oba czujniki) w ciepłym pomieszczeniu, gdzie jest około 20 stopni. Czujniki (DC18B20) reagują na zmiany temperatury. Po podgrzaniu lutownicą temperatura wzrasta do minus 21 stopni. Jaki jest problem?

  4. SVN Autor wpisu
  5. aleks52

    Po podłączeniu zasilania do urządzenia wyświetlacz pokazywał wartość 85,0*C, a następnie po około 2 sekundach: -36,3*C. Następnie zamieniłem czujniki: ponownie wyświetliła się wartość 85,0*C, a następnie po około 2 sekundach: -36,5*C. Niestety byłem chory i nie mogłem kupić nowych czujników. Któregoś dnia tak zrobię i napiszę o efektach. Dziękuję za pomoc.

  6. SVN Autor wpisu

    :
    Po podłączeniu zasilania do urządzenia wyświetlacz pokazywał wartość 85,0*C, a następnie po około 2 sekundach: -36,3*C. Następnie zamieniłem czujniki: ponownie wyświetliła się wartość 85,0*C, a następnie po około 2 sekundach: -36,5*C. Niestety byłem chory i nie mogłem kupić nowych czujników. Któregoś dnia tak zrobię i napiszę o efektach. Dziękuję za pomoc.

    Po podłączeniu zasilania do czujnika, czujnik zapisuje do rejestrów wartość równą 85,0, czyli wartość odczytaną przez urządzenie. Potwierdza to prawidłowe przeliczenie odczytanych wartości. Wygląda więc na to, że natrafiłeś na aktywa niepłynne, co zdarza się bardzo rzadko. Spróbuj kupić czujniki w innym sklepie. Efekt ten może jednak wystąpić, jeśli do czujnika nie dotrze napięcie +5 V. Sprawdź, czy zasilanie czujnika jest zgodne.

  7. aleks52

    Tak, miałeś rację, czujniki okazały się niespełniające norm. Nowy czujnik pokazuje normalne wartości. Po prostu wydawało mi się mało prawdopodobne, aby dwa czujniki były równie niskiej jakości. Prawdopodobnie da się przeanalizować działanie tych czujników i programowo skorygować odczyty. Spróbuję w wolnym czasie. Dziękuję.

  8. aleks52

    Swoją drogą może to DS18S20? Oni mają inny rodzaj reprezentacje temperatury. W przypadku DS18S20 temperatura jest reprezentowana jako 9-bitowa wartość uzupełnienia do dwójki, a w przypadku DS18B20 jako liczba binarna o szerokości od 9 do 12 bitów. Dla DS18S20 i DS18B20 z wyjątkiem numer seryjny ROM zawiera kod rodziny (10h dla DS18S20 i 28h dla DS18B20). Nie masz rodzinnego czytnika kodów lub programu do współpracy z DS18S20?

  9. SVN Autor wpisu

    :
    Swoją drogą może to DS18S20? Mają inny typ reprezentacji temperatury. W przypadku DS18S20 temperatura jest reprezentowana jako 9-bitowa wartość uzupełnienia do dwójki, a w przypadku DS18B20 jako liczba binarna o szerokości od 9 do 12 bitów. W przypadku DS18S20 i DS18B20, oprócz numeru seryjnego, ROM zawiera kod rodziny (10h dla DS18S20 i 28h dla DS18B20). Nie masz rodzinnego czytnika kodów lub programu do współpracy z DS18S20?

    Nie mam takiego programu. Ale gdyby to był DS18S20, to na początku programu nie zobaczyłbyś wartości +85*C. To na pewno jest małżeństwo. Lepiej zwrócić wadę do sklepu.

  10. aleks52
  11. pino24

    Ale czy nie byłoby piękniej, gdybyś zastosował dwuliniowy wyświetlacz?

  12. SVN Autor wpisu

    :
    Ale czy nie byłoby piękniej, gdybyś zastosował dwuliniowy wyświetlacz?

    To jest sposób, w jaki każdy to lubi. W przypadku wyświetlania dwuliniowego program będzie musiał zostać całkowicie przepisany.

  13. Włodzimierz1619

    Cześć. Dziękuję autorowi i wszystkim, którzy brali udział w rozwoju tego urządzenia.
    Zmontowałem, ale pojawił się problem, którego nie mogę już rozwiązać (brak mi wiedzy i doświadczenia).
    Urządzenie działa, ale wskaźniki pokazują coś przeciwnego;
    Wszystkie przecinki oprócz drugiego są podświetlone, a cyfry niezrozumiałe,
    wyłączenie wszystkich czujników DS18B20, pisze E.9.9.2..
    Wskaźnik zmontowałem sam, ale na pewno jest on poprawnie podłączony i działa w innych urządzeniach.
    Proszę o poradę jeśli to możliwe. Dziękuję.

  14. Skifco

    Wielkie dzięki dla twórców! Chciałem wyjaśnić tę kwestię. Robię mniej więcej to samo urządzenie, ale o bardziej medycznym charakterze. Chciałbym się dowiedzieć czy można pomóc w ustaleniu diagramów czasowych dla Waszego urządzenia oraz chciałbym wiedzieć jakie pakiety i w jaki sposób transmitują czujniki, co należy do nich wysłać aby je odpytywać i jaka jest częstotliwość odpytywania ?
    Z góry dziękuję!

Termometr dwukanałowy oparty na mikrokontrolerze ATmega8 i czujnikach DS18B20

Charakterystyka termometru:
— 2 kanały do ​​pomiaru aktualnej temperatury, czujniki podłączane są do różnych bitów portu mikrokontrolera
— każdy kanał umożliwia pomiar aktualnej temperatury w zakresie od +125 şС do -55 şС z rozdzielczością do 0,1 şС
— błąd pomiaru temperatury ±0,5 şС
- detekcja i sygnalizacja możliwe błędy w pracy z czujnikami temperatury
— aktualny odstęp pomiaru temperatury — 2 sekundy

Drodzy czytelnicy strony!
Jeśli interesuje Cię projekt termometru dwukanałowego, mogę polecić użycie oprogramowania układowego do flashowania mikrokontrolera (tutaj jest bardziej zoptymalizowany i „połączony” kod)

Dzisiaj, kontynuując rozwój projektu na ATmega8, przyjrzymy się projektowi „ Termometr dwukanałowy z czujnikami temperatury DS18B20«.
Projekt, na który zwróciłeś uwagę, jest prosty, zawiera minimum części i nie wymaga konfiguracji.

(Chciałbym od razu ostrzec, że czas nie stoi w miejscu i po opublikowaniu artykułu program termometru został sfinalizowany - wprowadzono w nim trzy zmiany: w pracy używany jest tylko jeden timer T0, częstotliwość zegara wewnętrznego zwiększono częstotliwość mikrokontrolera do 8 MHz, zmieniono algorytm wyznaczania dziesiątych części temperatury (obecnie części dziesiąte nie są obliczane, ale przyjmują wartość zależną od liczby zapisanej w dolnym półbajcie rejestru LS-bite). Nowy program zamieszczono poniżej opisane w tym artykule))

Aktualna temperatura wskazywana jest na dwóch trzycyfrowych, siedmiosegmentowych wskaźnikach LED, na których znajdują się:
— temperatura poniżej +100 şС — wskazanie odbywa się trzycyfrowo z dokładnością do dziesiątych
— temperatura powyżej +99,9 şС — wskazanie odbywa się na trzech cyfrach z dokładnością do jednego stopnia
- temperatura powyżej -10 şС - następuje wskazanie: pierwsza cyfra to znak „-”, druga i trzecia cyfra to jednostki i dziesiątki stopni
- temperatura poniżej -9,9 şС - następuje wskazanie: pierwsza cyfra to znak „-”, druga i trzecia cyfra to dziesiątki i jednostki stopni
— nieistotne zera nie są wyświetlane
Jeżeli podczas pracy z czujnikami temperatury wystąpią możliwe błędy, na wskaźnikach wyświetli się:
— brak wysokiego poziomu na linii DQ czujnika — „Er1”
— brak impulsu obecności z czujnika — „Er2”
- po impulsie obecności linia DQ nie wróciła do stanu logicznego „1” - „Er3”
Sygnalizacja błędów pozwala na szybką identyfikację i naprawę usterek.

Schemat termometru dwukanałowego opartego na czujnikach ATmega8 i DS18B20:


Części użyte w konstrukcji termometru

Mikrokontroler ATmega8-16PU z wewnętrzną częstotliwością zegara 4 MHz.
Wskaźniki— trzycyfrowe, siedmiosegmentowe kierunkowskazy LED z obwodem przełączającym „wspólna katoda”.
Tranzystory— Struktury „NPN” BC547 (tranzystory można zastąpić dowolnymi innymi konstrukcjami NPN małej mocy).
Stałe opory- dowolny typ, moc 0,25 W, zbliżona do wartości wskazanych na schemacie.
Czujniki— czujniki temperatury DS18B20. Rozdzielczość jest ustawiona „domyślnie” - 12 bitów, co odpowiada rozdzielczości pomiaru temperatury wynoszącej 0,0625 şС.

Czujniki komunikują się z mikrokontrolerem poprzez magistralę 1-Wire, co w zasadzie pozwala na „umieszczenie” czujników na tej samej linii. W prezentowanej konstrukcji czujniki podłączone są do różnych bitów portu „PB” (odpowiednio 6 i 7) z trzech powodów:
— jeżeli konieczne jest oddzielenie czujników różne kierunki upraszcza instalację przewodów łączących
- program jest uproszczony - nie ma konieczności definiowania 64-bitowych kodów czujników, a co za tym idzie, skraca się czas komunikacji z czujnikami (co jest istotne w tej konstrukcji przy dynamicznym wyświetlaniu 6 cyfr wskaźników)
- i tak cały port pozostaje niewykorzystany
Cykliczna kontrola redundancyjna (CRC) nie jest zdefiniowana - w tej konstrukcji nie widzę sensu sprawdzania poprawności transmisji wyników konwersji temperatury przez czujniki.
Przy dużych odległościach pomiędzy czujnikami a jednostką główną może zaistnieć konieczność doboru rezystorów podciągających (od 1 do 5 kOhm). Może lepszym rozwiązaniem będzie podłączenie tych rezystorów bezpośrednio do czujników.

Konstrukcja zasilana jest ze stabilizowanego źródła 5 V. Możesz wykorzystać niepotrzebny sprzęt jako źródło zasilania Ładowarka z komórka o napięciu wyjściowym 5 woltów

Działanie termometru

Program termometru dwukanałowego został napisany w środowisku Algorithm Builder


W programie zastosowano dwa timery mikrokontrolera ATmega8 - T0 i T1, które są skonfigurowane do wywoływania przerwań w przypadku przepełnienia liczników.
Gdy urządzenie jest włączone, ustawienia wstępne portów mikrokontrolera biorących udział w operacji, wprowadzając niezbędne dane do zmiennych i włączając przerwania, wówczas program przechodzi w nieskończoną pętlę. W przyszłości cała praca urządzenia będzie odbywać się poprzez przerwy od timerów T0 i T1.
W której:
Podczas przetwarzania przerwania od timera T0:
— włączone dynamiczne wyświetlanie aktualnych wartości temperatur Wskaźniki LED
— naprzemienny odczyt danych z czujników temperatury
— obliczanie i przeliczanie temperatury do wyświetlania na wskaźnikach
Podczas przetwarzania przerwania z timera T1,
— wysyłanie naprzemiennie polecenia przeliczenia temperatury przez czujniki (z częstotliwością 1 sekundy)
Dzielniki częstotliwości timera przy częstotliwości wewnętrznej mikrokontrolera wynoszącej 4 MHz konfigurowane są:
- T1 - SK/64 - wywołanie przerwania następuje niemal po 1 sekundzie
— T0 — ustawienie częstotliwości dzielnika dla timera powinno wynosić SK lub SK/8 — 512 mcs lub 64 mcs — niekrytyczne (ale nie mniejsze niż 2 ms). Wynika to z faktu, że czas przetwarzania przerwania z timera T1 jest równy czasowi potrzebnemu czujnikowi na przeliczenie temperatury (wg karty katalogowej przy rozdzielczości 12bit maksymalny czas konwersji wynosi 750ms, w w rzeczywistości jest dużo szybciej)

Aby uzyskać więcej częste aktualizacje obecna temperatura Możesz ustawić wewnętrzny oscylator mikrokontrolera na częstotliwość 8 MHz i ustawić dzielniki częstotliwości timera:
— T0 — SK/64 (częstotliwość wywołania przerwania wynosi około 2 ms)
- T1 - SK/64 (częstotliwość wywołania przerwania wynosi około 0,5 s)
co pozwoli Ci aktualizować aktualną temperaturę z czujników co sekundę. Częstsze polecenia przeliczania temperatury na czujniki mogą prowadzić do ich nagrzewania, a co za tym idzie, do wzrostu błędu pomiaru.

Jeśli jesteś „znajomym” z programem „Algorithm Builder”. wówczas można go skonfigurować tak, aby aktualizował aktualną temperaturę w sposób ciągły, natychmiast po przeliczeniu temperatury przez czujnik. Aby to zrobić, musisz wykonać następujące czynności:
1. Wyłącz timer T1
2. Wyłącz procedurę przetwarzania przerwań z timera T1 (nie musisz jej wyłączać)
3. Dołącz fragment „szarego kodu” do „nieskończonej pętli”
Możliwe, że aby zapobiec migotaniu wskaźników, częstotliwość zegara mikrokontrolera będzie musiała zostać zwiększona do 8 MHz
4. Ustaw dzielnik częstotliwości timera T0 na częstotliwość przerwania wynoszącą co najmniej 2 ms

Jeśli wskaźniki nadal migają, spróbuj „zabawić się” poleceniami NOP na początku i na końcu nieskończonej pętli - dodaj lub usuń. Np:


Część kodu programu jest wyłączona, ma to na celu zmniejszenie rozdzielczości czujników. Aby zmienić rozdzielczość przetwornika temperatury należy:
1. Dołącz część kodu strona główna oraz podprogram zmiany rozdzielczości w zakładce „DS18B20”:

2. Włącz stałe podświetlone na czerwono w zakładce „DS18B20”:

Cel stałych:
- Read_Scratchpad - polecenie funkcji DS18B20 ($4E). Polecenie to pozwala urządzeniu sterującemu zapisać 3 bajty danych do pamięci DS18B20. Pierwszy bajt danych jest zapisywany do rejestru (TH), drugi bajt jest zapisywany do rejestru (TL), trzeci bajt jest zapisywany do rejestru konfiguracyjnego
— TH i TL — rejestry alarmowe górnej i dolnej granicy, stała b#01010101 — odpowiada 85 şС (domyślnie ustawione w czujnikach)
bit11— rejestr konfiguracyjny, wpisanie stałej b#01011111 spowoduje zmianę rozdzielczości z 12 na 11 bitów, co skróci o połowę czas konwersji temperatury czujników. Dla rozdzielczości 10-bitowej - b#00111111, dla rozdzielczości 9-bitowej - b#00011111
3. Zmień liczbę 625 w podprogramie obliczania temperatury w zakładce „DS18B20” na liczbę rozdzielczości pomiaru temperatury dla odpowiedniej rozdzielczości (125, 25, 5) oraz odpowiednio liczby 1000 i 999 (dla 125 - 1000 i 999, dla 25 - 100 i 99, dla 5 - 10 i 9)

Masz pytania napisz, odpowiem.

Załączniki do artykułu:

(50,6 KiB, 26 984 odsłon)

Oto projekt termometru dwukanałowego. Może mierzyć temperaturę w zakresie od -50,0 do +99,9 stopni. Urządzenie zostało zaprojektowane do pomiaru temperatury wewnątrz i na zewnątrz, ale ma także wiele innych zastosowań. Po niewielkiej zmianie programu urządzenie może pełnić także funkcję termostatu. Termometr zbudowany jest w oparciu o popularny i bardzo rozpowszechniony czujnik i mikrokontroler ATtiny2313, co znacznie uprościło prace rozwojowe i pozwoliło na znaczne zmniejszenie gabarytów. Termometr został skompresowany tak, że prawie wszystkie elementy znalazły się pod trzycyfrowym wyświetlaczem o przekątnej 15 mm. Prawie wszystkie elementy są SMD. Można oczywiście zastosować podzespoły TH, jednak w dobie miniaturyzacji lepiej pójść o krok dalej i stworzyć układ o jak najmniejszych gabarytach. Termometr może mierzyć temperaturę w dwóch miejscach, wykorzystując dwa czujniki połączone na niezależnych magistralach. Zmiana wyświetlanej temperatury odbywa się za pomocą dwóch przycisków.

Zasada działania

Schemat:

Sercem urządzenia jest mikrokontroler U1 (ATTINY2313), taktowany wewnętrznym oscylatorem 8MHz, bez dzielnika częstotliwości. Brak kwarcu pozwolił zmniejszyć rozmiar urządzenia, a także uwolnił dwie nogi MK, do jednej z nich podłączony jest teraz przycisk S2. Mikrokontroler odbiera odczyty temperatury z dwóch czujników, przetwarza dane do postaci odpowiedniej do wyświetlenia na wyświetlaczu i przetwarza naciśnięcia przycisków S1 i S2. Kondensator C1 (100nF), umieszczony obok mikrokontrolera, jest kondensatorem filtrującym. Do poprawnej pracy U3 (78L05) niezbędne są kondensatory C2 (10 µF) i C3 (10 µF).Prostota obwodu wynika z zastosowanego czujnika temperatury. Jest to 12-bitowy termometr cyfrowy, który może pracować w zakresie od -55 do +125 stopni. Czas przetwarzania (konwersji) temperatury trwa nie dłużej niż 750 ms. Komunikacja z mikrokontrolerem odbywa się poprzez interfejs 1-Wire. Wskaźnikiem temperatury jest trzycyfrowy wyświetlacz LED (AT5636BMR-B) z wewnętrznymi przyłączami segmentowymi, przystosowany do wyświetlania dynamicznego. Rezystory R4-R11 ograniczają prąd do Wyświetlacz LED do 10-12 mA (na segment). Jednakże średni prąd jest mniejszy ze względu na zastosowanie wyświetlacza dynamicznego. Anodami sterują trzy popularne tranzystory T1 - T3 (BC857). Prądy bazowe są ograniczone przez rezystory R1-R3 (3,3 kOhm). Ważnym elementem jest złącze GP1, poprzez które podłączane są czujniki i wyjście sterujące (w przypadku termostatu).

Produkcja

Urządzenie wykonane jest na tej podstawie płytka drukowana. Płytka jest jednostronna, a prawie wszystkie elementy to SMD. Wyjątkiem jest wyświetlacz, przyciski sterujące i złącza. Montaż nie jest trudny, jednak wymaga dużych umiejętności przy lutowaniu SMD. Wadą płytki jest brak złącza do programowania, więc jeśli zajdzie potrzeba wprowadzenia zmian w programie, konieczne będzie przylutowanie przewodów programatora bezpośrednio do płytki. Ale możesz zainstalować miniaturowe złącze na płycie.

Układ pinów złącza

Styki 1 i 2 tego złącza to zasilanie i masa. Pin 3 przeznaczony jest do podłączenia sygnalizacji temperatur ujemnych (katoda do złącza, anoda do +5V przez rezystor 200 - 300 Ohm). Czujniki są połączone przewodem trójprzewodowym. Pierwszy czujnik podłączamy do pinu 5, drugi czujnik do pinu 6. Urządzenie zasilane jest z napięcia 7-12V poprzez stabilizator 78L05.

Programowanie

Program napisany jest w znanym środowisku programistycznym. Zajmuje około 70% pamięci mikrokontrolera i można go z powodzeniem skompilować w wersji demonstracyjnej BASCOM"a. Program nie jest skomplikowany. Poniżej kilka elementów kodu

Procedura obsługi przerwań Timer0:

Przerwanie0: Timer0 = 131 Ustaw F4ms Zwiększ. Dziel(1) Jeśli Dziel(1) = 25 Następnie Dziel(1) = 0 Ustaw F100ms Zwiększ. Dziel(2) Jeśli Dziel(2) = 10 Następnie Dziel(2) = 0 Ustaw F1s Koniec Jeśli koniec Jeśli powróci

Główna pętla:

Wykonaj Jeśli F4ms = 1 Następnie zresetuj F4ms "co 4ms Wysw = T Gosub Wyswietl_zmierz End If Jeśli F100ms = 1 Następnie zresetuj F100ms "co 100ms Jeśli Pind.2 = 0 Wtedy Kanal = 1 Jeśli Pina.0 = 0 Wtedy Kanal = 0 Koniec Jeśli Koniec pętli

Procedura sterowania wyświetlaczem:

Wyswietl_zmierz: Incr Mux Jeśli Mux = 5 Wtedy Mux = 0 Portd.3 = Not Minus Dla I = 1 do 3 Wysw_pomoc = Wysw Mod 10 Ww = Wysw_pomoc W(i) = Lookup(ww , Tabela) Wysw = Wysw / 10 Next I Jeśli W(3) = 40 To W(3) = 255 "wygaszenie zera wiodącego Wybierz Case Mux Case 0: Portb = W(3) Reset Portd.6 Case 1: Set Portd.6 Portb = W(2) And &B11011111 Reset Portd.5 Przypadek 2: Ustaw Portd.5 Portb = W(1) Resetuj Portd.4 Przypadek 3: Ustaw Portd.4 Portb = 255 Gosub Temp "Przypadek 4: Koniec Wybierz Powrót Tabelaa: Dane 40 , 235 , 50 , 162 , 225, 164, 36, 234, 32, 160

Procedura pomiaru temperatury:

Temp: Jeśli F1s = 1 Następnie zresetuj F1s 1wreset Pind , Kanal 1wwrite &HCC , 1 , Pind , Kanał 1wwrite &HBE , 1 , Pind , Kanal T = 1wread(2 , Pind , Kanal): Minus = T.15 T = Abs(t ) T = T * 10 T = T / 16 1wreset Pind , Kanał 1wwrite &HCC , 1 , Pind , Kanał 1wwrite &H44 , 1 , Pind , Koniec kanału Jeśli powrót

Fusebity mikrokontrolera muszą być ustawione do pracy z wewnętrznym oscylatorem RC 8 MHz

Zdjęcia

Lista radioelementów

Przeznaczenie Typ Określenie Ilość NotatkaSklepMój notatnik
U1 MK AVR 8-bitowy

ATtiny2313

1 SO20 Do notatnika
U3 regulator liniowy

L78L05

1 SOT89 Do notatnika
T1-T3 Tranzystor bipolarny

BC857

3 Do notatnika
C1 Kondensator100 nF1 Do notatnika
C2, C3 Kondensator elektrolityczny10 µF2 Tantal SMD 3216A Do notatnika
R1-R3 Rezystor

3,3 kOhm

3 SMD 0805 Do notatnika
R4-R11 Rezystor

330 omów

8 SMD 0805 Do notatnika
R12, R13 Rezystor

4,7 kOhm

2 SMD 0805 Do notatnika
W1 Wskaźnik siedmiosegmentowyAT5636BMR1

Postanowiłem zrobić termometr dwukanałowy, ale nie zwykły, ale z bezprzewodowym czujnikiem na ulicę. Pomysł z pewnością nie jest nowy, podobne termometry przemysłowe są już dostępne na rynku. Ponieważ miałem doświadczenie w łączeniu modułów radiowych z mikrokontrolerem, zacząłem opracowywać własną wersję termometru bezprzewodowego.

Do pomiaru temperatury użyłem popularnych czujników DS18B20, a do wyświetlania odczytów wykorzystałem nie mniej popularny. Moduły radiowe i algorytm transmisji danych omawiałem już wcześniej w artykule nt

Poniżej znajduje się schemat czujnika bezprzewodowego na mikrokontrolerze PIC12F675.

Po włączeniu zasilania mikrokontroler odczytuje wartość temperatury z czujnika BK1 i przesyła te dane do nadajnika radiowego A1, po czym przechodzi w stan uśpienia. Mikrokontroler budzi się poprzez przerwanie, które generowane jest przez zmianę poziomu na linii GP0. Do tej linii podłączony jest obwód RC na elementach R2 i C4, który pełni funkcję timera. Po wyjściu z trybu uśpienia linia GP0 jest ustawiana na niski poziom logiczny, rozładowując w ten sposób kondensator C4. Przed przejściem w „uśpienie” linia jest dopasowywana do wejścia, kondensator zaczyna się ładować przez rezystor R4, a po osiągnięciu napięcia progowego (około 1,2 V) mikrokontroler zostaje przerwany i wybudzony. Przy wartościach R2 i C4 wskazanych na schemacie okres przebudzenia wynosi około 5 minut. Zakładając zworkę JP1 można skrócić ten okres do 5,5 sekundy. Wybierając kondensator i rezystor, można dostosować żądany okres czasu, ale należy wziąć pod uwagę prąd ładowania kondensatora pod względem zużycia energii.

Wartość temperatury przesyłana jest kanałem radiowym w postaci pakietu 3 bajtów, ostatni bajt jest sumą kontrolną pierwszych 2 bajtów. Algorytm przesyłania danych, którego używam, w zasadzie pozwala nam się obejść suma kontrolna, prawdopodobieństwo otrzymania nieprawidłowych danych jest niskie. Szybkość transmisji wynosi 3,3 Kb/s. Każdorazowo po zmierzeniu temperatury wysyłane są 3 pakiety bajtów, przerwa pomiędzy pakietami wynosi 10 ms, taką opcję transmisji zastosowałem w celu zwiększenia pewności odbioru danych przez odbiornik. Dzieje się tak dlatego, że strona odbiorcza przerywa odbiór sygnału na 4-5 ms podczas pomiaru temperatury z czujnika wewnętrznego (domowego).

Jako zasilanie zastosowano baterię 6F22 9V („Krona”), moduł nadajnika radiowego A1 zasilany jest bezpośrednio z akumulatora. Do zasilania mikrokontrolera wykorzystywany jest mikrostabilizator napięcia DA1 (MCP1702) o napięciu 5 V, pobór prądu własnego stabilizatora wynosi zaledwie 1-2 µA, maksymalny prąd obciążenia wynosi do 250 mA. Stabilizator MCP1702 można zastąpić LP2950, ​​którego pobór prądu jest większy i wynosi 75 µA. Konwencjonalne stabilizatory napięcia typu L78xx mają wysoki pobór prądu rzędu kilku miliamperów i dlatego nie nadają się do urządzeń zasilanych bateryjnie. Pobór prądu przez urządzenie w trybie uśpienia zmienia się w czasie w miarę ładowania kondensatora C4; przez pierwsze 2,5 minuty pobór wynosi 10 μA, przez kolejne 2,5 minuty prąd stopniowo wzrasta, aż do wyjścia z trybu uśpienia. Zjawisko to występuje na skutek obecności prądów przełączających w buforze wejściowym mikrokontrolera.

Zaznaczam, że w niskich temperaturach pojemność akumulatorów spada szybciej, nie wszystkie typy akumulatorów nadają się do pracy w takich warunkach. W ujemnych temperaturach najlepiej radzą sobie akumulatory litowe, drugie miejsce zajmują akumulatory Ni-Mh, trzecie miejsce zajmują akumulatory alkaliczne, ogniwa solne nie nadają się do takich warunków.

Poniżej znajduje się schemat termometru na mikrokontrolerze PIC16F628A.


Wyświetlacz HG1, czujnik BK1 oraz mikrokontroler zasilane są napięciem 3,3V ze stabilizatora DA2. Wartość tę wybrano ze względu na charakterystykę wyświetlacza, maksymalne napięcie których zasilanie wynosi 3,3V, ponadto nie ma konieczności dopasowywania poziomów napięć pomiędzy liniami wejścia/wyjścia wyświetlacza i mikrokontrolera. Moduł odbiorczy A1 zasilany jest ze stabilizatora DA1 o napięciu wyjściowym 5V. Rezystory R6, R7 są instalowane w celu dopasowania poziomów napięcia.

Mikrokontroler DD1 co 2 sekundy odczytuje wartość temperatury z czujnika BK1, równolegle odbiera sygnał z odbiornika, a po odebraniu pakietu bajtów z nadajnika dioda HL1 miga. U góry wyświetlacza wyświetlany jest napis „Dom”, pod którym wyświetlana jest wartość temperatury z czujnika wewnętrznego (domowego), poniżej napis „Ulica” oraz temperatura otrzymana z czujnika bezprzewodowego. Po odebraniu danych kanałem radiowym mikrokontroler uruchamia timer odliczający czas kontroli odbioru danych. Jeżeli w czasie odliczania timera nie zostaną odebrane żadne dane, zamiast odczytów temperatury na wyświetlaczu pojawią się kreski „- – – – -”. Czas odliczania można ustawić w zakresie od 1 do 15 minut w odstępach jednominutowych. W tym celu przed zaprogramowaniem mikrokontrolera należy wpisać liczbę od 1 do 15 do komórki EEPROM o adresie 0x00. Domyślny okres to 7 minut. W przypadku nieprawidłowego działania czujników BK1 dla obu urządzeń zamiast odpowiedniej wartości temperatury wyświetli się komunikat „BŁĄD”. Przycisk SB1 steruje podświetleniem wyświetlacza; domyślnie podświetlenie jest włączone. Przycisk SB2 służy do regulacji kontrastu wyświetlacza, ponieważ może się on różnić w zależności od modelu.

Do zasilania urządzenia odpowiednie jest niestabilizowane źródło zasilania o napięciu wyjściowym 8-12V. Obydwa urządzenia umieszczono w plastikowych obudowach. Antena do modułów radiowych wykonana jest w postaci kawałka drutu jednożyłowego o długości 17 cm (jedna czwarta długości fali częstotliwości nośnej).





DZWON

Są tacy, którzy czytali tę wiadomość przed tobą.
Zapisz się, aby otrzymywać świeże artykuły.
E-mail
Nazwa
Nazwisko
Jak chcesz przeczytać „Dzwon”?
Bez spamu