(3 głosujących) Urządzenie jest prostym termometrem zbudowanym w oparciu o czujnik DS18S20 i sterujący nim mikrokontroler AT89C2051. Układ przystosowany jest do wskazywania temperatury na zewnątrz, obsługuje ujemne wartości. Umożliwia wyłączenie wskazań na wyświetlaczu (w celu oszczędności energii) w dwóch trybach, nie przerywając pomiaru temperatury. Za pomocą zworki dokonujemy wyboru trybu wyświetlania (czasowy lub ręczne wł/wył w którym każde kolejne wciśnięcie przcisku cyklicznie włącza i wyłącza pokazywanie temperatury). Dzięki podłączeniu wyświetlacza "do góry nogami" możliwe jest wyświetlenie znaku stopnia Celsjusza wykorzystując kropkę u dołu cyfry.
Działanie:Schemat ideowy termometru przedstawia poniższy rysunek: Sercem układu jest mikrokontroler U2 (AT89C2051) wraz z rezonatorem kwarcowym X1 (12MHz) i kondensatorami C4 (33pF) i C5 (33pF). W obwodzie resetu procesora pracuje kondensator C3 (4,7uF), zapewnia on poprawną pracę mikrokontrolera po włączeniu zasilania. Przycisk S1 i zworka GP sterują funkcjami termometru. Napięcia dla całego obwodu dostarcza zasilacz zbudowany na stabilizatorze U1 (7805) oraz elementach C1 (1000uF) i C2 (47uF). Do złącza zas podłączamy transformator zasilający. Rezystory R9 - R16 (510R) ograniczają prąd wyświetlaczy led. Anodami wyświetlaczy sterują tranzystory T1 - T4 (BC557) wraz z rezystorami R1 - R8 (3,3k). Budowa:Termometr można zbudować w oparciu o płytkę drukowaną dostępną tutaj. Rysunek w odbiciu lustrzanym dostępny jest tutaj. Montaż należy rozpocząć od wlutowania dwóch zworek. Kolejność pozostałych elementów jest dowolna ale dobrze jest lutować elementy w kolejności od najmniejszych do największych. Pod wyświetlacz i procesor dobrze jest zastosować podstawki. Pod mikrokontroler jest ona bezwzględnie konieczna. Wyświetlacz jest zamontowany "do góry nogami" ze względu na łatwe wyświetlenie znaku stopnia Celsjusza. Czujnik DS18S20 należy zamontować na kawałku przewodu. Pomocą w konstrukcji może okazać się schemat montażowy dostępny tutaj. Wykaz Elementów:1x Złącze ARK2 2x Listwa goldpin 1x3 1x uSwitch 8x 510R 2x 33pF 1x Rezonator Kwarcowy 12MHz Programowanie:Mikrokontroler do termometru został zaprogramowany w wersji demo programu BASCOM 8051 firmy MCS Electronics (http://www.mcselec.com/). Program przedstawiony jest poniżej: Config Timer0 = Timer , Gate = Internal , Mode = 2 'okres Timera0 250*12*Tosc=250us Load Timer0 , 250 On Timer0 Przerwanie Enable Interrupts Enable Timer0 Start Timer0 P1 = 255 P3 = 255 Config 1wire = P3.5 '******************************************************************************* 'Zmienne '******************************************************************************* Dim Lsb As Byte Dim Msb As Byte Dim Co4ms As Byte , Co100ms As Byte , Co1s As Byte Dim Wysw As Byte , Wysw1 As Byte , Wysw10 As Byte Dim Tempa As Byte Dim Mux As Byte Dim Autooff As Word Dim Przycisk As Byte Dim Zezw_przyc As Bit , Zezw_wysw As Bit Dim Pomiar_odczyt As Bit Dim Minus As Bit Dim Pokaz As Bit Dim Przyc As Bit '******************************************************************************* 'wartosci '******************************************************************************* Reset Pomiar_odczyt Set Pokaz Autooff = 1500 '******************************************************************************* 'Petla glowna '******************************************************************************* Do If Zezw_wysw = 1 Then 'wyswietlanie Reset Zezw_wysw '***************************************** 'co 4ms If P3.4 = 0 Then Incr Przycisk If Przycisk = 200 Then Przycisk = 0 Set Przyc End If Else Przycisk = 180 Reset Przyc End If If P3.7 = 0 Then If Przyc = 1 Then Reset Przyc Pokaz = Not Pokaz End If Else If Przyc = 1 Then Reset Przyc Set Pokaz Autooff = 1500 End If If Autooff > 0 Then Decr Autooff Else Reset Pokaz End If End If If Pokaz = 1 Then Wysw = Tempa Gosub Przelicz Gosub Wyswietl Else P1 = 255 End If '***************************************** End If Loop End '******************************************************************************* 'Przerwanie Timera '******************************************************************************* Przerwanie: 'co 250us Incr Co4ms If Co4ms = 16 Then Co4ms = 0 '*************************************** co 4ms Set Zezw_wysw Incr Co100ms If Co100ms = 25 Then Co100ms = 0 '*************************************** co 100 ms Set Zezw_przyc Incr Co1s If Co1s = 10 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(): If Msb = 0 Then Reset Minus Tempa = Lsb / 2 Else Set Minus Lsb = Not Lsb Tempa = Lsb / 2 Tempa = Tempa + 1 End If Else Tempa = 255 'Er wyswietli wyswietlacz potem End If End If Enable Interrupts '*************************************** End If '*************************************** End If '*************************************** End If Return '******************************************************************************* Przelicz: If Wysw < 100 Then Wysw1 = Wysw Mod 10 Wysw1 = Lookup(wysw1 , Tabela) If Wysw > 9 Then Wysw10 = Wysw / 10 Wysw10 = Lookup(wysw10 , Tabela) Else Wysw10 = 255 ' znika 0 na pierwszym miejscu End If Else Wysw1 = 175 'r Wysw10 = 134 'E End If Return '******************************************************************************* Wyswietl: Incr Mux If Mux = 4 Then Mux = 0 Select Case Mux Case 0: Set P3.0 If Minus = 1 Then If Wysw10 = 255 Then P1 = 255 Else P1 = 191 End If Else P1 = 255 End If Reset P3.3 Case 1: Set P3.3 If Minus = 1 Then If Wysw10 = 255 Then P1 = 191 Else P1 = Wysw10 End If Else P1 = Wysw10 End If Reset P3.2 Case 2: Set P3.2 P1 = Wysw1 Reset P3.1 Case 3: Set P3.1 P1 = 70 Reset P3.0 End Select Return '******************************************************************************* 'Tabela do wyswietlania na wyswietlaczu '******************************************************************************* Tabela: Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144 'znak: 0 1 2 3 4 5 6 7 8 9 '******************************************************************************* Zdjęcia Projektu:
|
|||||||||||||||||||||
Re: Termometr
W tym fragmencie trzeba ustawić w zmiennej odpowiedni bit:
linijka:
ustawi na 6 bicie (segment g) stan niski kiedy minus = 1. Można jeszcze dopisać żeby minus pojawiał się na pierwszym wyswietlaczu gdy jest < niż -10 i na drugim gdy jest > -10. Nie musisz przy tym rezygnować z wyświetlania części po przecinku. Są 4 wyświetlacze więc najlepiej jest zrobić, np tak: -10.0 i zrezygnować ze znaku stopnia celsjusza na wyświetlaczu. Drugą wersją jest ograniczenie się do -19.9 stopnia i znak - będzie wyświetlany razem z 1 na pierwszym wyswietlaczu w przypadku < -9.9
Poza tym zadumaj się nad procedurą wyświetl bo coś jest nie tak:
nie powinno byc w jednym case, set i reset tego samego portu, w kolejnych case ma być zawsze set poprzedniego i reset tego na którym chcesz coś wyświetlić. Całą sprawą tego co jest wyświetlane ma się zajmować procedura przelicz
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.
Częstotliwość odświeżania
Po pierwsze bardzo dziękuję za pomoc. Pozmieniałem trochę listing programu, dodałem Twoją poprawkę. W tej chwili już działa z temperaturą ujemną bez żadnego problemu.
Mam teraz jeszcze jeden problem. Chodzi o odświeżanie wyświetlacza. Mam zrobione takie cztery termometry. Wyświetlacze są w czterech różnych kolorach. Mam zamiar je złożyć w jedną obudowę i wspólne zasilanie.
Czy możliwe jest to, że wyświetlacze różnych producentów będą miały różne czasy odświeżania?. W moim przypadku czerwony, zielony jest w miarę ok, natomiast na żółtym i niebieskim widać z bliska dość znaczne migotanie. Jest jakiś sposób na zlikwidowanie tego problemu?.
Poniżej, w pełni działający program, z obsługą temperatur ujemnych:
Re: Wyświetlacze LED
Spróbuj zwiększyć prąd jaki płynie na każdy z segmentów LED zmniejszając rezystory R9-16 np do 330R lub 470R... nie wiem jednak czy to coś pomoże. Procedura obsługi Ds jest tutaj napisana w najprostszy sposób i dlatego powstaje migotanie. Możesz jeszcze spróbować z inną częstotliwością odświeżania w programie. Sam wyświetlacz nie ma czegoś takiego jak odświeżanie bo to poprostu zbiór diod led w jednej obudowie. Ewentualnie czas reakcji diody mógłby dawać różnicę ale nie zastanawiałem się nad tym nigdy dokładnie.
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świetlacze LED rozwiązanie
Zrobiłem drugi termometr, tym razem podwójny. Poczwórny zrobiłem, złożyłem i działa na razie bez zmian.
W nowym zmieniłem rezystory R9-R16 na 470R, tak jak wspomniałeś. Dodatkowo ponieważ nie miałem kwarców 12 Mhz, dałem 16 Mhz. Co ciekawe, nie zmieniałem częstotliwości w programie, pozostawiłem ją tak jak było wcześniej. Działa teraz idealnie. Pytanie co pomogło, co tutaj miało wpływ?, zmiana kwarca?, czy rezystorów?, a może wszystko razem?.
CIEKAWE ale warte rozbudowy !!!
Termometry na rynku sa bardzo tanie i łatwo dostępne natomiast koszt elementów a głównie czujnika DS 18xx sprawiaja że układ jest mało atrakcyjny dlatego proponuję dokonać przeróbki układu na REGULATOR temperatury i jako czujnik zastosować jakiegoś KTYa co prawda aplikacja nieco sie rozbuduje ale i tak koszt sie nie zwiększy natomiast użyteczność tego typu układu jest w wielu miejscach nie oceniona i znajdzie zastosowanie w wielu miejscach w każdym domu np.Hobby Akwarystyka ,Modelarstwo,czy regulacja temperatury w domu itd....
Oczywiście nic nikomu nie nażucam ale doszedłem do takiego wniosku rozglądając sie po pracowni gdzie jestem obstawiony termometrami i zegarami.
POZDRAWIAM WSZYSTKICH ODWIEDZAJACYCH FORUM
Elektroland
CIEKAWE ale warte rozbudowy !!!
Po pierwsze niepotrzebnie wyrażasz swoje myśli krzycząc. Po drugie, akurat zastosowanie czujnika ds18b20 bardzo mi pasuje. Jest on na tyle popularny, tak rozpowszechniony, że nie mamy o czym mówić. Pozatym nie jest wcale taki drogi. Można go kupić za mniej niż 4 zł np. na allegro, a nie potrzebujemy przecież tych czujników aż tyle, żeby to było nieopłacalne, a jeśli już, to coś co mocno nadszarpnie nasz budżet. Przy obecnym zalewie produktów z Chin, mało co staje się opłacalne. O jakości większości tych produktów przemilczę, każdy wie jak sprawa się przedstawia. Osobiście nie robię takich rzeczy na sprzedaż, tylko dla własnej satysfakcji.
Re: Termometr
jakimov:
Dwa efekty które zrobiłeś poprawiają pracę wyświetlacza więc trudno powiedzieć... to że działa z innym kwarcem to raczej przypadek ale działa więc nie ma co kombinować.
ELEKTROLAND:
Nie uważam czujników rezystancyjnych wcale za takie atrakcyjne, trzeba zrobić źródło prądowe, potem wzmacniacz pomiarowy, na końcu przetwornik ADC, pociąga to za sobą zastosowanie uC z przetwornikiem (rozwiązanie najtańsze ale dokładność kiepska) lub zewnętrzny przetwornik (duża cena). Tak czy inaczej mija się to z celem przy aktualnej cenie i dodatkowej wygodzie ze stosowania DS'ów. Poza tym sprawa ztermostatem... jest wersja programu dla termometru uniwersalnego z mojej strony... ten akurat nie posiada specjalnego oprogramowania bo ma mniej popularny układ w wersji S. Poza tym nie jest normalne jeśli robię termometr zaokienny żeby pakować do niego termostat
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.
Re: Termometr
Masz świętą rację Mirley, dlatego już więcej nic w nim nie będę zmieniać.
Lampy LC-513
Witam!
Czy istnieje możliwość aby zamiast wyświetlacza led podłączyć lampy LC-513??
Czy wiąże się to z wielkimi przeróbkami??
Pozdrawiam!
Re: Termometr
Popatrz na projekt zegara nixie na mojej stronie.... trzeba zrobić nowy projekt bo 2051 ani tiny2313 tego nie uciągnie ze względu na piny, a dodatkowo obwody wyjściowe są inne
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.
ma ktoś może podstawkę
ma ktoś może podstawkę programującą na ten uc?
i jeszcze pytanie ponieważ mam programator stk 200/300 na lpt ciężko mi znaleść instrukcję, albo jak zacząć programować od podstaw bo mnie to nie idzie.
acha, wszystkie wyświetlacze spotykane przeze mnie mają 12 pinów a nie14.Jaki zastosować?
z góry dziękuję
Re; Termometr
Poszukaj sobie w internecie kursu "mikroprocesorowa ośla łączka". Tego procka AT89C2051 nie zaprogramujesz w STK200. Musisz mieć wersję AT89S2051. Opis programowania procków tej rodziny przedstawiony jest u mnie na stronie w artykułach: "Programowanie 89SXX...."
Wyświetlacz musi mieć zgodne wyprowadzenia z tym co na schemacie. Inaczej będziesz musiał podłączyć piny w inny sposób niz na płytce
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.
jak zmienie uc to nie musze z
jak zmienie uc to nie musze z mieniać programu? (jak zmienie na serie "c")
Re: Program
Jak zamienisz procesor z serii C na S i odwrotnie to program powinien działać dokładnie ten sam
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.
Zasilanie
Witam. Rozumiem, ze można zasilać baterią np 9V 6LR61 poprzez usunięcie mostka prostowniczego i połączeniu ścieżek pozostałych po mostku? Jeśli się mylę to poprawcie mnie. Ewentualnie może inna baterią zasilany być ale jaką? Proszę o pomoc.
Re: Termometr
Bateria 9V będzie chyba najlepsza. Pamiętaj że układ pobiera trochę prądu i może sie bateria szybko wyładować. Mostek możesz usunąć tak jak piszesz
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.
Programator
Witam
W jakim programatorze mogę zaprogramować ten układ?
Zrobiłem STK200 z twojego schematu, ale niestety posiadam AT89C2051 :/
A drugie pytanie: mogę zastąpić BC557B tranzystorem C557C?
Re: Termometr
Do C2051 potrzebujesz programatora równoległego..... STK200 nie da rady, chyba że kupisz procka z literką S to na podstawie mojego opisu programowanie AT89SXX poradzisz sobie za pomocą STK200.
Tranzystor wydaje sie być zwykłym BC557 więc nie powinno być problemu a juz napewno w takiej konfiguracji gdzie tranzystor działa jak klucz
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.
W takim razie jaki
W takim razie jaki programator da radę(jakiś najprostrzy)?
Re: Programator
Ja mam coś takiego http://sklep.avt.pl/p/pl/48061/programator+procesorow+89cx051.html Nie wymaga programowania procków do sterowanie programatorem
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.
układ
Da się zastąpić ten układ innym?
Re: Program
Da się zastąpić tiny2313 ale trzeba przepisać program pod tiny2313
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.
Z tego co wiem Mirley nie ma
Z tego co wiem Mirley nie ma niestety czasu, ale jeśli ktoś inny przerobił ten kod na attiny2313, albo wie jak to bardzo proszę o udostępnienie(marcin1828@poczta.onet.pl).
A ja proszę, ze jak ktoś, coś
A ja proszę, ze jak ktoś, coś przerabia, to niech udostępni tutaj (a raczej w nowym wątku na forum, bo w odpowiedziach się zagubi) ew. na jakims publicznym repozytorium (np. github), zeby inni tez mogli skorzystać.
Fotografia, Linux, programowanie, python.. czyli strona domowa || Galeria fotografii http://galeria.firlej.org
W jaki sposób można sprawdzić
W jaki sposób można sprawdzić ten termometr(bez procesora)? Które piny należy złączyć?
Re: Termometr
Patrz tutaj
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.
fuse bity??
witam , jak wyglada sprawa z fusebitami jak je trzeba ustawic??
Re: Fusebity
Mam specjalny artykuł na ten temat -> patrz artykuły rózne. Odpowiedni zrzut ustawień dla tiny2313 masz tutaj:
http://mirley.firlej.org/files/ART_fuseT2313_02B.gif
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.
korekcja temperatury
Jak zrobić korekcję temperatury o jeden stopień w dół? Dzięki z góry za pomoc.
re: korekcja temperatury
Chodzi o wersję z ds 18S20.
Re: Termometr
Np w linii:
Wysw = Tempa
wpisać:
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 LED
Witam!
Czy istnieje możliwość aby ten wyświetlacz zamontować odwrotnie? Chciałbym aby mierzył standardowo od -50 stopni Celsjusza do 120 stopni Celsjusza. Bez wyświetlania tego znaku tylko pierwsza cyfra powinna wskazywać w znak "-" przy ujemnych temperaturach np.: -12,3 stopnia Celsjusza. Oraz czy zamontowanie drugiego wyświetlacza i czujnika to duży problem? Pokazywanie temperatury miałoby się odbywać bez przerwy :)
Mam nadzieję że dobrze się wyraziłem :)
Pozdrawiam!
Re: termometr
Popatrz na http://mirley.firlej.org/termometr_uniwersalny gdzieś już pisałem wyświetlanie - na wyświetlaczu, jednak nie pamiętam dokładnie, co do drugiego czujnika to w programie który tu jest nie za bardzo da się to zrobić. Trzeba całkiem inaczej to napisać
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.
Witam, Czy można zastosować
Witam,
Czy można zastosować w/w program dla ATmega8? Posiadam dużo wywietlaczy 1-segmentowych i chciałbym ich do czegoś użyć, rozumiem, żeby ich użyć powinienem połączyć wszystkie kadody razem, a anody sterować tranzystorami osobno dla każdego wyświetlacza?
Pozdrawiam,
Marcin
Re: Termometr
Popatrz na projekt termometr domowy tam jest kod pod tiny2313, po przekompilowaniu powinno zadziałać tez na M8.
Co do wyświetlaczy to masz połączyć wszystkie te same segmenty wszystkich wyświetlaczy razem.... a z a, b z b itd. - powinno działać
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.