(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:
|
|||
na której nóżce niby? i jaka
na której nóżce niby? i jaka wartość? na schemacie u Mirley'a nie ma tam zadnego rezystora przecież....
Popatrz na schemat z projektu
180 R wystarczy
PIND.6 -> dioda-> rezystor->+5V
to zastanów sie czy rezystor
to zastanów sie czy rezystor przy diodzie czy przy czujniku ?
demsy dzieki za odpowiedz
demsy dzieki za odpowiedz jednak podobnie jak plejek nie kumam o co chodzi z tymi rezystorami przy czujniku DS18B20?
Schemat poprawilem:
http://zapodaj.net/8c3b6562438b7.png.html
http://zapodaj.net/34730aebd7795.png.html
Przy diodzie i przy czujniku
Przy diodzie i przy czujniku . Zerknijcie na schemat minitermometr uniwersalny jest tam rezystor 4.7k podpiety pod czujnik z jednej strony, a z drugiej do +5V
demsy robiles ten projekt?
demsy robiles ten projekt? Mozesz rzucic okiem czy teraz jest juz poprawnie:
http://zapodaj.net/0815120283889.png.html
Dzieki
Edit. Zapomnialem wczesniej o
Edit.
Zapomnialem wczesniej o gniazdku teraz chyba powinno byc ok:
http://zapodaj.net/b063d14f8f3e9.png.html
http://zapodaj.net/a5acf70b4fd3e.png.html
Wszelkie pomocne uwagi mile widziane,
Jaki zasilacz chcesz
Jaki zasilacz chcesz podłączyć kolega raz/dwa pod złącze J1? schemat wygląda OK.
stabilizowany 5V 500mA. Czyli
stabilizowany 5V 500mA. Czyli moge juz wytrawic plytke czy cos jeszcze moze nie grac? Zalezy mi troche na czasie zeby sprawdzic czy to dziala, a nie chce tracic kasy dwa razy na trawienie. Thx za pomoc.
Wyświetlacz
Jaki wyświetlacz kolega zastosował?
Doświadczenie mi mówi że nie
Doświadczenie mi mówi że nie warto się spieszyć, no chyba że kolega ma wyznaczony termin do skończenia projektu. Lepiej zrobić powoli, 3 razy sprawdzić niż potem żałować :)
Nie, no jasne Gregorius masz
Nie, no jasne Gregorius masz racje. Co do wyswietlacza to mam zamiar uzyc AT5636BG-B. Gregorius wedlug ciebie ten schemat co podalem wyzej jest juz poprawny?
Wg mnie podłączenie diody
Wg mnie podłączenie diody powinno wyglądać tak port->rezystor(np 120-150R)->katoda(led)anoda->Vcc
Wyświetlacz musi mieć WSPÓLNĄ ANODĘ (to bardzo ważne, inaczej nie zadziała), najlepiej potrójny.
Poza tym git, prześledź jeszcze ze 3 razy każdą ze scieżek, bo a nuż siedzi jakiś diabeł w szczegółach. Schemat jest dobry, zresztą sam możesz porównać z tym umieszczonym na stronie.
Quote:Wg mnie podłączenie
Wyjaśni kolega dlaczego tak ma być?
Z wyjaśnieniem bedzie
Z wyjaśnieniem bedzie trudniej, ale zauważ ze na tej samej zasadzie działa wyświetlacz. Ma rezystory wstawione od strony katod. Poza tym, kilka wypowiedzi wcześniej mirley dokładnie taki sposób podał. Cytuję:
Z wyjaśnieniem bedzie
Z wyjaśnieniem bedzie trudniej, ale zauważ ze na tej samej zasadzie działa wyświetlacz. Ma rezystory wstawione od strony katod. Poza tym, kilka wypowiedzi wcześniej mirley dokładnie taki sposób podał. Cytuję:
Dla zwykłej diody LED nie ma
Wyświetlacz to inna bajka. Dla zwykłej diody LED nie ma znaczenia z której strony jest opornik, czy na nóżce +, czy -. Lutujesz tak jak ci wygodnie i tyle, a kolega Mirley stosuje przy procku bo najprawdopodobniej później wygodniej płytkę jest wykonać, ale nie będziemy się o to spierać bo nie po to jest te forum
Ok w takim razie zostawie ten
Ok w takim razie zostawie ten opornik tak jak jest. Jeszcze mam 2 pytania odnosnie programu Eagle.
1. Czy jak dam automatyczne polaczenie sciezek przez program, a pozniej sam poprawie niektore sciezki to bedzie ok?
2. Czy juz po zrobieniu sciezek, gdy zmieniam cos w oknie schematu i dodaje/usuwam jeszcze jakies elementy to polaczenie automatyczne nadal zadziala poprawnie? Jakos tak mnie te pytanie nurtuja a jestem troche ciemnawy jeszcze w tej kwesti.
Pdzr
Quote:Wyświetlacz to inna
No chyba że jest tak jak kolega mówi, sam się nad tym zastanawiałem i myśle ze teraz już wiem jak to działa.
Kwarc
Realizując ten projekt z wykorzystaniem ATtiny2313 mozna zastosować rezonator kwarcowy taki sam jak do AT89C2051 czyli 12MHz ?
Kwarc
Kwarc 12MHz a kondensatory przy nim 22pF
Wyświetlacz
Mozna było by zamiast proponowanego wyświetlacza użyć ten http://rutronic.eu/opisy/ldd/LTD056.pdf ???
Jeśli tak , to czy trzeba zmieniać wartości elementów w układzie tego termometru?
Wyświetlacz
Wspólna anoda czy katoda??
Wyświetlacz
Anoda
Re; termometr
Wyświetlacz ok..... wyprowadzenia się zgadzają - nic nie trzeba zmieniać
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.
mirley odnosnie tego schematu
mirley odnosnie tego schematu moglbys rzucic okiem czy jest poprawny:
http://zapodaj.net/ec70f50484119.png.html
koledzy wyzej napisali ze wszystko jest ok, ale wole sie jednak upewnic zanim wytrawie plytke. Szczegolnie:
1)czy dobrze podlaczona jest dioda LED2
2)czy rezystor R4=10k od Resetu(wyj. 1) do Vcc (wyj. 20) jest poprawnie
3)czy dobrze jest z tym zasilaniem Vcc przez R17=4,7k do wyjscia 5 i na czujnik ds18b20
Z gory wielkie dzieki za pomoc.
Jest jeszcze błąd z
Według twojej płytki to jest zwarcie na zasilaniu, brak połączeń GND i jeszcze kilka
http://zapodaj.net/a5acf70b4fd3e.png.html
Moglbys napisac w jaki sposob
Moglbys napisac w jaki sposob mam poprawic ta plytke, bo sciezki generowalem automatycznie w eaglu, a skoro schemat jest dobry to wydawalo mi sie ze program sam to dobrze narysuje.
demsy1 dzieki ze to
demsy1 dzieki ze to sprawdziles zapomnialem podpiac gnd nr 1 na focie (n/c na ten temat jak to w ogole mozliwe...)
http://zapodaj.net/ef0d36445b013.png.html
Pytanie czy numery 2 i 3 sa dobrze?
demsy1 jak dam automatyczne polaczenie w eaglu to program zorbi to dobrze? Sa jeszcze jakies bledy?
1 ok 2 powinno być VCC 3 ok
1 ok
2 powinno być VCC
3 ok
Tak ten numer 2 to cos sie
Tak ten numer 2 to cos sie zamotalem powinno byc vcc. demsy1 widze ze sie dobrze w tym orientujesz to powiedz mi czy jak teraz przejde do tworzenia plytki w eaglu i automatycznie wygeneruje sciezki to czy bedzie wszystko gralo?
Dlaczego chcesz
Dlaczego chcesz automatycznie? lepiej ręcznie to zrobić
to jest moje gg 5799899 jak cos to pisz
Wydawalo mi sie ze prosciej
Wydawalo mi sie ze prosciej bedzie automatycznie wygenerowac, moze mniej efektywnie ale szybciej.
Sorry ze tek post pod postem,
Sorry ze tek post pod postem, ale nie da sie edytowac.
Plytka prezentuje sie teraz tak(sciezki wygenerowane w eaglu z lekka modyfikacja):
http://zapodaj.net/f363db9ca0350.png.html
Jakby ktos chcial rzucic okiem to pliki z eagla:
http://hostuje.net/file.php?id=595cc39513f23b1d91c3497040874a2b
Ja bym poprawił kwarc i
Ja bym poprawił kwarc i kondensatory,trochę bliżej procka.Nie wiem ,czy Ci się uda polutować bez zwarcia tranzystor i chyba czujnik DS.Lepiej zrób zworkę zamiast prowadzić ścieżkę miedzy tymi nóżkami.Ogolnie masz tam trochę chaos i pewnie jak byś sie pomęczył to zrobiłbyś to lepiej.
Grzeniu dzieki za rade, kwarc
Grzeniu dzieki za rade, kwarc z kondensatorami umiescilem troche blizej procesora. Natomiast co do zworki to chcialbym uniknac robienia plytki dwustronnej(o ile dobrze rozumiem to musialbym zrobic przelotke na przednia warstwe).
nie musisz robić
nie musisz robić dwustronnej,tylko połączysz drucikiem i już.Zapisz sobie ten projekt ,a później otwórz go i zapisz pod inna nazwa.Wtedy będziesz mógł sie pobawić i inaczej poustawiać elementy.Na 100% da się ja zrobić mniejsza i bardziej przejrzysta.
Ok dzieki za rade i pewnie ja
Ok dzieki za rade i pewnie ja wykorzystam. Co do ustawienia elementow to pewnie tez sie pobawie, teraz tak ulozylem bo nie wiedzialem czy schemat jest poprawny. Mam nadzieje ze juz nic w nim nie brakuje i postaram sie lepiej ulozyc te elementy na plytce.
Zasilanie
Witam
Mam zasilanie 4.5V lub 6V i to jest zasilacz zewnętrzny, lub też bateria 9V, pytanie, czy mogę któreś z tych napięć podpinać do tego układu,czy muszę coś zmieniać aby działał poprawine? Bardzo proszę o dokładną odpowiedź,jestem laikiem i ciężko mi ze zmianami na własną rękę, tym bardziej jeżeli będę musiał zmienić ścieżki...
Pzdr
Raczej żadne z tych napiec
Raczej żadne z tych napiec nie będzie odpowiednie. W układzie nie ma stabilizatora.Poszukaj zasilacza na 5v ,chociaż te tanie nie maja zazwyczaj stabilnego napięcia.Tu na stronce znajdziesz mini moduły zasilania.Możesz sobie coś takiego zrobić.
Re: Zasilanie
4.5V powinno na styk wystarczyć ale lepiej dać 6V i w szeregu diodę krzemową lub dwie diody 1N4007. Trzeba zmierzyć napięcie za diodami względem masy
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.
Mam problem z
Mam problem z zaprogramowaniem mikroprocesora, mianowicie posiadam taki programator:
http://allegro.pl/programator-usbasp-avr-atmel-isp-podstawka-tasma-i3087106163.html
Chcialem zaprogramowac ten uklad przez Burn-O-Mat'a i tu napotykam problem. Podczas konfiguracj podanej na tej stronie w opcjach mam puste pole (zaznaczone na zdjeciu):
avr.jpg
Co mam z tym zrobic? Czy mimo to ten programator poprawnie zaprogramuje attiny2313?
Dodam ze w wersji konsolowej wszystko poprawnie sie laczy, podobnie w Bascomie. Chyba ze ktos moglby podac jak ustawic fusebity w Bascomie dla tego projektu, bo nie wiem jak to zrobic.
programator
Ustaw dokładną scieżke do plików które masz troszke wyżej w tym okienku. Też miałem ten problem bo avrdude.exe mialem w innym miejscu niz domyślnie
Dobra juz sobie poradzilem
Dobra juz sobie poradzilem innym programem (mkAVR Calculator). Takie pytanie mam jeszcze czy ten fusebit Spien zawsze jest wybrany? Bo w tym mkAVR nie bylo do wyboru wiec uznalem ze zawsze jest wybrany na stale.
Ustawienia
Ustawienia fusebitow:
http://zapodaj.net/34a8847eb93ce.jpg.html
Czy jak skopiuje kod z tego miejsca http://mirley.firlej.org/files/TERMOMETRUNIWERSALNYAVR.HEX
i zapisze to w pliku tekstowym z rozszerzeniem .hex a potem wrzuce na mikroprocesor to bedzie wszystko ok?
Czujnik temperatury
Witam!
JEst opcja, żeby podpiać czujnik Ds18b20 na dwóch nogach? Tzn 1i3 złączone a środkowa oddzielnie? Mam już zaizolowany czujnik z połączonymi tak nogami i zastanawiam się, czy mogę go tak podpiąć do układu, jeżeli tak to co modyfikować? Wszystko już wlutowałem zgodnie ze schematem na attiny 2313. Pozdrawiam
CD.
Jeszcze druga część pytania. Nie było w sklepie wyświetlacza potrójnego więc wziąłem 3 pojedyncze segmenty, wszystkie nóżki ABC itd złączyłem przewodem i wpiąłem do płytki. Zostały mi po 2 nogi na segmencie wolne, które mają być podpięte wg. schematu do BC557B, rozumiem, że mam te 2 nóżki spiąć razem i podpiąć, segment 1 do pierwszego BC557B, segment drugi do drugiego BC557B itd? Czy może tylko jedna z tych dwóch nóżek ma być podpięta?
Użyłem Attiny2313, zamiast kondensatora C3 użyłem rezystora 4.7K, tak jest ok? A może zostawić w tym miejscu lukę i zewrzeć ze sobą otwory?
Układ złożyłem tak jak mam opisane w tym poście, po podłączeniu zasilania nic się nie dzieje, wyświetlacz nawet nie mrugnął, nie zaśmierdziało spalenizną. Dodam, że jeszcze nie programowałem, czy bez programu tak się to zachowuje? Liczyłem na to, że będzie się ciągle świecił wyświetlacz, albo jakikolwiek znak życia.. Nie wlutowałem jedynie czujnika temperatury, bo nie wiem czy mogę to zrobić na 2 przewodach a nie 3.
Czy jeżeli nie umieszczam diody itp, to rezystor od strony druku jest konieczny? Jego też nie montowałem.
Proszę o pomoc, jutro mam możliwość odwiedzić sklep elektroniczny, bo jadę po oporniki do simply isp lpt programmer, więc mogę coś dokupić do tego układu, a może wszystko się wydaje ok? Pozdrawiam
Zaprogramowałem układ,
Zaprogramowałem układ, ustawiłem fusebity i na każdym segmencie wyświetla jedną kreskę, w dodatku w tym samym miejscu.. Czasami trzeba całością poruszać, ale nie mogę zidentyfikować miejsca, gdzie mogłoby być jakieś ''przebicie''. Co mogłem zrobić nie tak? Wszystkie segmenty dobrze zlutowałem.. W trakcie programowania na jednym wyświetlało się 'c' a reszta nie świeciła, podejrzewam, że miało to być ''err'' bo czujnik nie był podpięty.. Teraz na każdym wyświetla 1kreskę, co zmienić?
Pzdr
kreska
Możliwości jest wiele. Też miałem taki komunikat ale to wina dupnej podstawki (nigdy w życiu już nie wlutuje podstawki która została wylutowana z innego układu, a wręcz wyrwana), oraz tragicznego lutowania ( jeszcze muszę się podszkolić). Czy wlutowałeś rezystor 4,7k między Vcc a 1-wire(to na środku od czujnika)? Jeśli tak to posprawdzaj multimetrem napięcia, gdzie jest a gdzie nie ma. Jeśli nie, to czym prędzej to zrób bo działać bez tego nie ma prawa. Popatrz pod lupą czy nie ma jakiś zwarć. Wg mnie to przyczyna jak najbardziej mechaniczna.
PS: jakbym widział siebie ;p dokładnie takie same problemy mialem jak kolega. Polecam kupić potrójny wyświetlacz.
Re: Program Hex
Program trzeba ściągnąć w postaci pliku hex a nie kopiować do notatnika.
---------
Ds można podłączyć na dwóch przewodach - w karcie katalogowej są pokazane wszystkie opcje. Przy uruchamianiu należy podłaczyć 3 przewody aby być pewnym że termometr 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.