(14 głosujących) Termometr ten pracuje w zakresie temperatur od -50.0 do +99.9 stopni lub w drugiej wersji oprogramowania aż do +125 stopni. Układ został zaprojektowany do mierzenia temperatury w akwarium ale z powodzeniem można dla niego znaleźć wiele innych zastosowań. Na płytce znajduje się miejsce na dwa przyciski oraz dodatkowe złącze ogólnego przeznaczenia. Po zmianie oprogramowania urządzenie może pełnić funkcję prostego termostatu, lub bardziej złożonego regulatora temperatury. Układ został zbudowany w oparciu o popularny, często stosowany czujnik DS18B20 i mikrokontroler AT89C2051 co znacznie uprościło jego konstrukcję i zmniejszyło wymiary. W układzie można też bez większego trudu zastosować mikrokontroler ATTiny2313, wymaga to tylko wprowadzenia kilku prostych modyfikacji.
Działanie:Schemat termometru przedstawia poniższy rysunek: Sercem urządzenia jest mikrokontroler U2 (AT89C2051) wraz z rezonatorem kwarcowym X1 (12MHz) i dwoma kondensatorami C4 (33pF) i C5 (33pF). Kondensator C3 (1uF) resetuje procesor po włączeniu napięcia zasilającego, a C1 (220uF) filtruje to napięcie. Do złącza zas podłączamy napięcie zasilające o wartości 5V. Rezystory R9 - R16 (330R) ograniczają prąd wyświetlaczy. Tranzystory T1 - T3 (BC557B) wraz z rezystorami R1 - R6 (3,3k) sterują anodami wyświetlaczy. Budowa:Termometr można zbudować z wykorzystaniem dostępnej tutaj płytki drukowanej. Wersja płytki w odbiciu lustrzanym dostępna jest tutaj. Montaż elementów można dokonać w dowolnej kolejności, najlepiej od najmniejszych do największych. Pod wyświetlacz dobrze jest wlutować kawałek podstawki DIP40, natomiast pod mikrokontroler podsatwka jest bezwzględnie konieczna. Od strony druku należy wlutować rezystor 4,7k podciągający magistralę 1-Wire (nóźka 9 układu U2) do plusa zasilania. Złącze GP1 w wersji podstawowej służy do podłączenia diody sygnalizującej ujemną temperaturę (katodą do portu procesora, anodą do VCC) gdyby miało być wykorzystywane w inny sposób należy usunąć z kodu programu linijkę: P3.7 = Not Minus. Przód obudowy można z powodzeniem wykonać z kawałka laminatu. Płytkę termometru mocujemy do panelu przedniego za pomocą dwóch przylutowanych do niego śrub. Pomocą przy konstrukcji może okazać się schemat montażowy dostępny tutaj. Jeżeli w układzie będzie zastosowany mikrokontroler ATTiny2313 zamiast AT89C2051, nie należy montować kondensatora C3, a kondensatory C4 i C5 powinny mieć wartość 22pF. Wykaz Elementów:8x 330R 2x 33pF 1x Rezonator Kwarcowy 12MHz Programowanie:Oprogramowanie do termometru zostało napisane w wersji demo programu BASCOM 8051 firmy MCS Electronics (http://www.mcselec.com/). Program w całości przedstawiony jest poniżej: '**************************** 'Konfiguracja '**************************** $crystal = 12000000 '12MHz $regfile = "89C2051.DAT" Config 1wire = P3.5 Config Timer0 = Timer , Gate = Internal , Mode = 2 On Timer0 Przerwanie0 Load Timer0 , 250 Enable Timer0 Start Timer0 Enable Interrupts '**************************** 'Zmienne '**************************** Dim Lsb As Byte Dim Msb As Byte Dim Co4ms As Byte , Co100ms As Byte , Co1s As Byte Dim Wysw As Word , Wysw1 As Byte , Wysw10 As Byte , Wysw100 As Byte Dim Tempa As Word Dim Mux As Byte Dim Zezw_wysw As Bit Dim Pomiar_odczyt As Bit Dim Minus As Bit Dim Ur As Bit '**************************** 'Wartosci Poczatkowe '**************************** Reset Pomiar_odczyt Reset Ur Wysw1 = 191 Wysw10 = 191 Wysw100 = 191 '**************************** 'Petla glowna '**************************** Do If Zezw_wysw = 1 Then Reset Zezw_wysw 'co 4ms Wysw = Tempa If Ur = 1 Then Gosub Przelicz Gosub Wyswietl End If Loop End '**************************** 'Przerwanie timer0 '**************************** Przerwanie0: Incr Co4ms If Co4ms = 16 Then Co4ms = 0 '*************************************** co 4ms Set Zezw_wysw Incr Co100ms If Co100ms = 25 Then Co100ms = 0 '*************************************** co 100 ms 'ew flaga obslugi przyciskow Incr Co1s If Co1s = 7 Then Co1s = 0 '*************************************** co 1s Pomiar_odczyt = Not Pomiar_odczyt Disable Interrupts 1wreset If Pomiar_odczyt = 1 Then 1wwrite &HCC 1wwrite &H44 Else If Err = 0 Then 1wwrite &HCC 1wwrite &HBE Lsb = 1wread(): Msb = 1wread(): Minus = Msb.7 Tempa = Msb * 256 Tempa = Tempa + Lsb If Minus = 1 Then Tempa = Not Tempa Tempa = Tempa + 1 End If Tempa = Tempa * 10 'temperatura *10 Tempa = Tempa / 16 If Ur = 0 Then Ur = 1 Else Tempa = 10000 'Er wyswietli wyswietlacz potem End If End If Enable Interrupts '*************************************** End If '*************************************** End If '*************************************** End If Return '**************************** 'Inne Etykiety '**************************** Przelicz: If Wysw < 1000 Then Wysw1 = Wysw Mod 10 Wysw = Wysw / 10 Wysw10 = Wysw Mod 10 Wysw = Wysw / 10 Wysw100 = Wysw Mod 10 If Wysw100 = 0 Then Wysw100 = 10 'wygaszenie zera wiodcego Wysw1 = Lookup(wysw1 , Tabela) Wysw10 = Lookup(wysw10 , Tabela2) Wysw100 = Lookup(wysw100 , Tabela) Else Wysw1 = 175 'r Wysw10 = 175 'r Wysw100 = 134 'E End If Return Wyswietl: Incr Mux If Mux = 3 Then Mux = 0 P3.7 = Not Minus Select Case Mux Case 0: Set P3.0 P1 = Wysw100 Reset P3.2 Case 1: Set P3.2 P1 = Wysw10 Reset P3.1 Case 2: Set P3.1 P1 = Wysw1 Reset P3.0 End Select Return 'Tabele do wyswietlania na wyswietlaczu Tabela: Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144 , 255 'znak: 0 1 2 3 4 5 6 7 8 9 pusty Tabela2: Data 64 , 121 , 36 , 48 , 25 , 18 , 2 , 120 , 0 , 16 , 255 'znak: 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. pusty Ustawienia Fusebitów dla mikrokontrolera ATTiny2313: Zdjęcia Projektu:
|
|||
Problem z dokładnością
Dziękuje za odpowiedź Mirley na mój problem, jednak zamienienie miejscami czujników nie przyniosło efektu, jeden z czujników wciąż pokazuje dokładność do 0,5stopnia. Oba są fabrycznie nowe ale z dwóch różnych miejsc kupione, czy jest jakiś inny sposób aby je przepogramowac żeby były bardziej dokładne, tzn 0,1 stopnia?
Re: Termometr
Dalej nie odpowiedziałeś na pytanie? może jaśniej.... czy ten dobry czujnik, daje dobre wyniki temperatury w obu układach termometru? chce wiedzieć czy wina lezy po stronie czujnika czy układu?
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Spróbuj przed Do Loop wrzucić
Spróbuj przed Do Loop wrzucić taki kawałek kodu:
Powinien on zapisac w ds konfiguracje precyzji pomiaru temperatury na 12 bitów
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Problem z dokładnością
Tak, oba czujniki wykazywały dobrą temperaturę tylko to była kwestia dokładności stąd moje pytanie. Po dodaniu dodatkowego kodu, czujnik działa precyzyjnie z dokładnością 0.1stopnia, wszystko jest ok :)
Układ nie działa.
Mrugają tylko środkowe, poziome kreski na wyświetlaczu. Może ktoś wie o co chodzi?
Zamiast BC557 dałem BC327, takie miałem. Reszta zgodna ze schematem. Wszystko na 2313, które zaprogramowały się bez problemu.
Z góry dziękuję za pomoc.
Układ już działa.
Okazało się, że jednak fusebit'y były źle ustawione.
Po poprawieniu termometr ruszył.
220V DC
Jest jakiś układ bezstykowy aby załączać napięcie 220V DC, z paneli PV? Nie umiem znaleść nic powyżej 32V.
Re: 230VDC
A tranzystor mosfet się nie nadaje? Trzeba odciąć to napięcie od strony+ czy może być od strony masy?.
jak od + to trzeba dac jakiegoś PMOS wysokonapięciowego i transoptor aby łatwo przejść na standard 0-5V i po kłopocie... Do PMOS'a będą potrzebne jeszcze dwa rezystory żeby napięcie na bramce nie było za wysokie i PMOS się wyłączył jak transoptor przestanie przewodzić
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Obudowa
Hej, w jakiej obudowie umieściłeś termometr?
Przód zrobilem z kawałka
Przód zrobilem z kawałka laminatu a tyłu nie ma bo jest zamknięte w sklejce
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Wyświetlacz
Czy ktoś ma na stanie (na zbyciu) taki wyświetlacz?? Kolor wyświetlacza nie ma znaczenia :)
Re: LED
Najszybciej kupisz na allegro, wpisz w wyszukiwarce np: "LED 3 cyfry" i szukaj wyświetlacza ze wspólną anoda rozmiar 14mm (0.56 cala) - zwróc uwagę na wyprowadzenia ale osobiście nie widziałem wyświetlacza 3 cyfrowego z innymi wyprowadzeniami niż ten w projekcie...
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Wyświetlacz
Ma ktoś może rozwiązanie mojego problemu? A mianowicie, podłączam zasilanie (z czujnikiem) i na wyświetlaczu świeci się tylko 0.0, jeśli podłączę zasilanie bez czujnika świecą się - - -, po podłączeniu czujnika świeci się 0.0, po odłączeniu czujnika Err. Program wgrany poprawnie, fusy ustawione tak jak na screenie. Czujnik wymieniałem na nowy, dzieje się tak samo. Brak zwarć. Połączenie z procesora do wyświetlacza jest. Proszę o pomoc. Z góry bardzo dziękuję :)
Problem rozwiązany :)
Problem rozwiązany :) termometr super się sprawuje, mam pytanie chciałbym zamontować termometr w zasilaczu, jednak nie mam tam napięcia 5V tylko 12V :( masz jakiś układ zmniejszający napięcie?? Albo jakieś inne rozwiązanie??
Re: Termometr
stabilizator 7805 + 2 kondensatorki
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Czyli coś...
Czyli ten układ na 78XX ze strony http://mirley.firlej.org/uniwersalne_minizasilacze ??
re.termometr
Właśnie tak jak piszesz,tylko dołóż radiatorek bo będzie gorący.