(10 głosujących) Opisywany tutaj układ jest uniwersalnym termometrem dwukanałowym. Pracuje on w zakresie temperatur od -50.0 do +99.9 stopni. Układ został zaprojektowany do mierzenia temperatury w domu i na dworze ale z powodzeniem można dla niego znaleźć wiele innych zastosowań. 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/czujniki DS18B20 i mikrokontroler ATTiny2313 co znacznie uprościło jego konstrukcję i zmniejszyło wymiary. Termometr udało się tak skompresować, że prawie wszystkie elementy mieszczą się pod typowym wyświetlaczem 3-cyfry o wysokości rzędu 15mm. Projekt jest rozwinięciem układu dostępnego tutaj z tym że prawie wszystkie elementy zostały zmienione na komponenty SMD. Oczywiście można by było upakować bardziej elementy przewlekane jednak w dobie miniaturyzacji lepiej zrobić jeden krok dalej, budując układ o możliwie najmniejszych wymiarach. Daje to możliwość zamontowania gotowego modułu termometru lub prostego termostatu w już istniejące urządzenie lub zastosowanie obudowy niewiele większej od wyświetlacza. W wersji podstawowej termometr potrafi mierzyć dwie temperatury, wykorzystując dwa czujniki podłączone na niezależnych magistralach. Zmiany wyświetlanej aktualnie temperatury dokonuje się za pomocą dwóch przycisków.
Projekt został opublikowany w Elektronice dla Wszystkich 08/2011 i jest dostępny w postaci kitu AVT2985 Działanie:Schemat ideowy układu znajduje się na rysunku poniżej: Sercem urządzenia jest mikrokontroler U1 (ATTINY2313), który pracuje na wewnętrznym oscylatorze, bez dzielnika częstotliwości. Daje to w efekcie taktowanie 8MHz. Brak rezonatora kwarcowego pozwolił zmniejszyć płytkę a dodatkowo umożliwił wykorzystanie wolnego pinu XTAL jako portu wejściowego PA0, do którego obecnie dołączony jest przycisk S2. Zadaniem mikrokontrolera jest odczyt pomiaru temperatury z dwóch czujników, przeliczanie wskazań do postaci dogodnej dla wyświetlania i obsługa przycisków S1 i S2. Kondensator C1 (100nF), umieszczony blisko mikrokontrolera filtruje jego napięcie zasilania podobnie jak kondensatory C2 (10uF) i C3 (10uF), które są konieczne do prawidłowej pracy stabilizatora U3 (78L05). Prostota układu wynika z zastosowanego czujnika temperatury, którym tym przypadku jest Ds18B20. Stanowi on w typowym ustawieniu 12-bitowy termometr cyfrowy mogący pracować w zakresie -55 do +125 stopni. Czas przetwarzania (konwersji) temperatury do wartości binarnej (liczby) trwa nie dłużej niż 750ms. Odczyt temperatury jest w pełni cyfrowy, a łączność z mikrokontrolerem zapewnia popularna magistrala 1-Wire. Do prezentacji temperatury wykorzystywany jest trój-cyfrowy wyświetlacz LED (AT5636BMR-B) z wewnętrznie połączonymi segmentami, przystosowanymi do multipleksowania. Znakomicie ułatwia to proces projektowania płytki. W tym przypadku zastosowanie trzech pojedynczych wyświetlaczy uniemożliwiło by wykonanie taniej jednostronnej płytki drukowanej. Rezystory R4-R11 ograniczają prąd wyświetlacza LED do wartości maksymalnej rzędu 10-12mA (na segment). Średni prąd będzie jednak mniejszy ze względu na multipleksowanie. Do sterowania anodami wyświetlacza wykorzystywane są trzy popularne tranzystory T1-T3 (BC857). Ich prądy baz ograniczane są przez rezystory R1-R3 (3,3k). Zaświecanie cyfr na kolejnych wyświetlaczach odbywa się poprzez cykliczne podawanie stanu niskiego na bazę jednego z tranzystorów T1-T3. W tej same chwili na porcie B mikrokontrolera powinna pojawić się zakodowana wartość odzwierciedlająca wyświetlany znak. Ważnym komponentem jest tutaj złącze GP1, które stanowi jednocześnie miejsce podłączenia czujników oraz wyjście sterowania (w przypadku budowy termostatu). Nie trzeba tutaj montować złącza goldpin, jak w projekcie modelowym, wystarczy wlutować przewody bezpośrednio w płytkę. W programie termometru stan niski na wyjściu sterowania pojawia się gdy temperatura jest ujemna. Wystarczy dołączyć diodę LED z szeregowym rezystorem 470R między to wyjście a +5V aby mieć sygnalizację znaku "-". Budowa:Układ z powodzeniem można zbudować w oparciu o płytkę drukowaną dostępną tutaj. Rysunek w odbiciu lustrzanym dostępny jest tutaj. Pomocą w konstrukcji będzie schemat montażowy termometru znajdujący się tutaj, natomiast elementy SMD można z łatwością zamontować posługując się rysunkiem dostępnym tutaj. Płytka została zaprojektowana jako jednostronna, a prawie wszystkie elementy są typu SMD. Wyjątek stanowią tu wyświetlacz, przyciski i złącza. Montaż nie jest skomplikowany ale wymaga niewielkiej wprawy w lutowaniu SMD. Na samym początku dobrze jest przylutować właśnie te elementy, ponieważ brak wystających części z drugiej strony ułatwi montaż. Należy zwrócić uwagę że obwód masy przechodzi w jednym miejscu przez zworkę jaką tworzy przycisk (przycisk ma 4 wyprowadzenia parami zwarte). Gdyby zaszła konieczność rezygnacji z przycisków to zamiast S1 należy wlutować zworkę po stronie masy (kolor czerwony). Wadą małej płytki jest brak wyprowadzonego złącza programującego procesora, więc gdyby zaszła konieczność zmiany programu będzie trzeba przylutować kabelek programujący do pinów mikrokontrolera. W roli złącza zasilania podobnie jak w przypadku GP1 dobrze sprawdzają się kabelki przylutowane bezpośrednio do płytki. Opis pinów złącza GP1 przedstawiony jest na rysunku poniżej: Wyprowadzenia 1 i 2 tego złącza to odpowiednio: zasilanie i masa. Wyjście sterowania (OUT) jest tutaj dostępne na pinie 3. Czujniki należy podłączyć trój-przewodowo wykorzystując wyprowadzone zasilanie, masę i linie sygnałowe 5 i 6. Linia danych czujnika pierwszego ma zostać podłączona do pinu 5, a z czujnika drugiego do pinu 6 złącza GP1. Układ termometru zasilany jest napięciem z przedziału 7-12V dzięki obecności stabilizatora 78L05. Nic nie stoi na przeszkodzie aby pominąć stabilizator a napięcie zasilania 5V podać bezpośrednio na termometr. Wykaz Elementów:2x uSwitch 3x 3,3k SMD/0805 2x 10uF SMD/3216A Tantalowy 3x BC857 Programowanie:Program sterujący pracą termometru został napisany w dobrze znanym programie BASCOM AVR . Zajmuje on około 70% dostępnej pamięci mikrokontrolera i może być z powodzeniem kompilowany w wersji demo BASCOM'a. Działanie programu nie jest skomplikowane i w skrócie wygląda to następująco: cały czas procesor kręci się w nieskończonej pętli Do Loop, czekając na ustawienie jednej z flag taktujących w przerwaniu. Za odpowiednie taktowanie odpowiada Timer0. Co około 4ms wywoływana jest procedura multipleksowania wyświetlacza, z której w odpowiednim momencie następuje skok do odczytu temperatury. Procedura obsługi przerwania Timera0 widoczna jest poniżej: Przerwanie0: Timer0 = 131 Set F4ms Incr Dziel(1) If Dziel(1) = 25 Then Dziel(1) = 0 Set F100ms Incr Dziel(2) If Dziel(2) = 10 Then Dziel(2) = 0 Set F1s End If End If Return Na początku do licznika timera ładowana jest wartość 131, daje to przerwanie po odliczeniu 125 impulsów (256-131). Timer pracuje z dzielnikiem sprzętowym przez 256 co przy częstotliwości taktowania 8MHz daje przerwanie co 4ms. Bezpośrednio po wystąpieniu przerwania ustawiana jest flaga F4ms. Zmienne Dziel(1) i Dziel(2) stanowią dzielnik częstotliwości. Pierwsza odpowiada za podział przez 25 i po przepełnieniu licznika ustawiana jest flaga F100ms (następuje to co 100ms). Druga zmienna jest licznikiem do 10 i zapewnia ustawianie flagi F1s co 1s. Pętla główna widoczna jest poniżej: Do If F4ms = 1 Then Reset F4ms 'co 4ms Wysw = T Gosub Wyswietl_zmierz End If If F100ms = 1 Then Reset F100ms 'co 100ms If Pind.2 = 0 Then Kanal = 1 If Pina.0 = 0 Then Kanal = 0 End If Loop End Działanie jest bardzo proste i zależne tylko od flag: F4ms i F100ms. Przez większość czasu procesor kręci się w nieskończonej pętli Do Loop czekając na ustawienie jednej z flag. Co 4ms wywoływana jest procedura obsługująca wyświetlacz i pomiar temperatury, natomiast co 100ms odczytywane są stany klawiszy. W podstawowej wersji programu wystarczy prosta obsługa klawiatury poprzez bezpośredni odczyt stanu pinów wejściowych. Naciśnięcie S1 powoduje przejście do odczytu drugiego czujnika, natomiast naciśnięcie S2 przechodzi do czytania czujnika pierwszego. Procedura obsługi wyświetlacza i pomiaru temperatury widoczna jest poniżej: Wyswietl_zmierz: Incr Mux If Mux = 5 Then Mux = 0 Portd.3 = Not Minus For I = 1 To 3 Wysw_pomoc = Wysw Mod 10 Ww = Wysw_pomoc W(i) = Lookup(ww , Tabela) Wysw = Wysw / 10 Next I If W(3) = 40 Then W(3) = 255 'wygaszenie zera wiodącego Select Case Mux Case 0: Portb = W(3) Reset Portd.6 Case 1: Set Portd.6 Portb = W(2) And &B11011111 Reset Portd.5 Case 2: Set Portd.5 Portb = W(1) Reset Portd.4 Case 3: Set Portd.4 Portb = 255 Gosub Temp 'Case 4: End Select Return Tabela: Data 40 , 235 , 50 , 162 , 225 , 164 , 36 , 234 , 32 , 160 Działanie składa się z 5 kroków zależnych od stanu zmiennej pomocniczej Mux. Przyjmuje ona wartości od 0 do 4 i zmienia się cyklicznie z kolejnym wywołaniem procedury. Na wyjście sterowania (Portd.3) przepisywana jest zanegowana wartość zmiennej Minus. Odpowiada ona za wyświetlanie ujemnych temperatur i tym samym na porcie d.3 mikrokontrolera pojawia się stan niski gdy mierzona temperatura jest ujemna. W dalszej kolejności dzięki pętli for, zmienna Wysw, zawierająca wartość do wyświetlenia, dzielona jest na trzy pojedyncze cyfry. Następnie są one zamieniane na kody wyświetlacza LED za pomocą polecenia Lookup (z wykorzystaniem tabeli przeliczeniowej). Po wyjściu z pętli for uzyskuje się tablicę W(n) z zakodowanymi wartościami, gdzie n=1...3 indeksuje kolejne znaki wyświetlacza. Dalsza część procedury zależy od zmiennej Mux. Dla wartości 0 do 2 zaświecane są kolejne cyfry poprzez wyłączenie poprzedniej anody, wystawienie na Portb wartości kolejnego znaku i włączenie odpowiadającej mu anody. Wyjątkiem jest tutaj znak W(2) gdzie dodatkowa operacja (And &B11011111) zapewnia dodanie kropki dziesiętnej po drugim znaku. Dla wartości Mux=3 wywoływana jest procedura pomiaru temperatury, a stan Mux=4 jest fazą oczekiwania na spokojne zakończenie pomiaru temperatury. Procedura pomiaru temperatury widoczna jest poniżej: Temp: If F1s = 1 Then Reset F1s 1wreset Pind , Kanal 1wwrite &HCC , 1 , Pind , Kanal 1wwrite &HBE , 1 , Pind , Kanal T = 1wread(2 , Pind , Kanal): Minus = T.15 T = Abs(t) T = T * 10 T = T / 16 1wreset Pind , Kanal 1wwrite &HCC , 1 , Pind , Kanal 1wwrite &H44 , 1 , Pind , Kanal End If Return Procedura ta wywoływana jest co okoł0 20ms, jednak wykonywanie pomiaru odbywa się co 1s dzięki sprawdzaniu stanu flagi F1s. Występuje tutaj typowa obsługa magistrali 1-Wire dla przypadku obecności tylko jednego układu na magistrali. Wszystkie rozkazy 1-Wire wywoływane są z parametrem Kanal, który odpowiada za to z której magistrali temperatura ma być odczytana (pind.0 czy pind.1). Po wykonaniu resetu następuje wysłanie rozkazu pominięcia sprawdzania ROM oraz wysłanie rozkazu odczytu rejestru DS18B20. Następnie odczytywane są dwa bajty temperatury do zmiennej T (integer), określany jest znak temperatury i wykonywane są proste przeliczenia. W efekcie zmienna T przyjmuje postać temperatury w stopniach pomnożonej przez 10 (np. 13 to 1.3 stopnia). Na samym końcu wysyłany jest rozkaz konwersji temperatury aby w kolejnym odczycie uzyskać aktualną jej wartość. Fusebity mikrokontrolera powinny być ustawione na pracę z wewnętrznym oscylatorem RC o częstotliwości 8MHz, co w praktyce sprowadzi się do wyłączenia jedynie dzielnika sprzętowego (Bit CKDIV). Ustawienia fusebitów, zrzut z programu burn-o-mat znajduje się poniżej: Układ da się przerobić na termostat niewielkim nakładem pracy. Rezygnujemy wtedy z dwukanałowego pomiaru temperatury oraz ujemnych temperatur na koszt sterowania wyjściem. Do wyjścia sterowania (Portd.3) można dołączyć optotriaka i triaka sterującego dowolnym odbiornikiem prądu przemiennego lub można dołączyć tranzystor MOSFET sterujący odbiornikiem prądu stałego. W pętli głównej trzeba będzie wprowadzić modyfikacje widoczne poniżej: If F4ms = 1 Then Reset F4ms If Ust = 0 Then Wysw = T Else Wysw = Tu Gosub Wyswietl_zmierz End If If F100ms = 1 Then Reset F100ms If Pind.2 = 0 Then Incr Tu Autoret = 20 End If If Pina.0 = 0 Then Decr Tu Autoret = 20 End If If Autoret > 0 Then Ust = 1 Decr Autoret Else Ust = 0 End If H = Tu + 10 L = Tu - 10 If T > H Then Set Portd.3 If T < L Then Reset Portd.3 End If Taki kod wymaga zadeklarowania zmiennych Tu, H oraz L jako Integer oraz Ust jako Bit i Autoret jako Byte, na początku programu. Dodatkowo zmienna Tu powinna mieć wartość początkową, gdyż stanowi wartość temperatury ustawianej. W procedurze wyświetlania i mierzenia należy usunąć linijkę odpowiedzialna za sygnalizację ujemnych temperatur, gdyż portd.3 służy teraz jako wyjście sterowania. Przedstawione rozwiązanie nie jest idealne, nie ma żadnego ograniczenia na ustawiane wartości ani nie potrafi zapisywać ustawień do pamięci EEPROM ale w wielu sytuacjach znakomicie się sprawdzi. Może działać z powodzeniem jako termostat do trawiarki po ustawieniu domyślnej wartości Tu na 40 stopni. Zdjęcia Projektu:
|
|||||||||||||||||||||||||||||||||||
Ustawiłem. Teraz wlutowałem
Ustawiłem. Teraz wlutowałem 20su i nadal bez zmian :(
iu
Ustawiłem. Teraz mam wlutowane 20su i na wyświetlaczu mruga U.U
Re: Miganie 0
dobra.... co to znaczy że 0 miga. Tak jakby częstotliwość odświeżania była za wolna i widać szybkie miganie czy miga np z częstotliwością 1Hz czy coś podobnego.
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.
Poprostu niezależnie do tego
Poprostu niezależnie do tego co zrobię na wyświetlaczu migota napis U.U Tak jakby zaświecać i gasić go z pewną częstotliwością
Re: Czujnik
Rozumiem żeby było 0.0 jak nie ma czujnika ale U.U świadczy o błędnym montażu. Może nie ma przewodzenia między prockiem a jednym z segmentów. Podłącz tez czujnik i zobacz czy wskazanie się nie zmieni
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 zmienić program by
Jak zmienić program by działał poprawnie z DS1820 bez B. Po podpieciu pokazuje mi 3 stopnie w temp pokojowej. Udało mi sie zdobyć 6 szt. I szkoda by było mi ich nie wykorzystać.
Re: ds
Zamień T = T / 16 na T = T / 2 i powinno być dobrze
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.
Podłączyłem czujnik i na
Podłączyłem czujnik i na wyświetlaczu nadal świeci 0.0
O co w tym chodzi?
Przepraszam że tak długo nie odpisywałem ale byłem na wczasach.
Re: Minitermometr
A na pewno dobrze podłączyłeś czujnik? rezystory 4,7k są wlutowane?
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.
Rezystory oczywiście
Rezystory oczywiście wlutowane.
Najbardziej zastanawia mnie
Najbardziej zastanawia mnie to, że ten napis 0.0 nie świeci ciągle, tylko miga.
Re: fusy
Jak dla mnie to na pewno fusy w dalszym ciągu są źle... może klikasz read fuses zamiast write fuses jak już ustawisz?
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.
Działa!!!! Ale ja głupi...
Działa!!!! Ale ja głupi... Myślałem że fusy zapisują się do procka jak wgrywam program... Teraz dopiero to zauważyłem ;)
Witam mam problem z wiodoncym
Witam mam problem z wiodoncym zerem. Gdy temperatura jest 100 do 110 oC to wyświetla bez tego środkowego zera np " 1 2 "
jak pisałem wyżej musiałem usunąć end if bo program się nie kompilował.
Re: Termometr
Nie możesz usuwać tego end if. Ten fragment programu jest dobry.... gdzieś indziej masz namieszane i masz a dużo end if, temu się nie kompiluje. Fragment od wygaszenia masz mieć dokładnie taki jak wkleiłeś wyżej. Wklej całą procedurę wyświetlania dla 4 wyświetlaczy
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
jasne ze sie nie kompilowało..... bo masz złe zagniezdzenie if:
wywal ten end if, nie powinno się z nim kompilowac. Zamiast:
wstaw to co napisałem wczesniej. Kombinując z end ifami zmieniłeś logikę instrukcji warunkowych i temu nie działa tak jak miało
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.
Ustawienia "Tu"
Cześć - dlaczego ustawienia Tu są tylko do 53 - w kodzie nie takich ustawień maksymalnych
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS
Re: Tu
A gdzie napisałem że 53 ? napisz dokładniej o co chodzi
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 7-segmentowe
Witam mam kilka wyświetlaczy 7-segmentowych po kilka cyfr np 4 , 3, 2 i szukałem schematów gdzie na nich znajdują się piny a,b,c,d,e,f,g,h aby nimi sterować lecz nigdzie nie mogę znaleźć takich informacji, wyświetlacze pochodzą z demontażu i pytanie jak nimi sterować.
Numery to
"LTC 561 G-RC
106THAILAND J"- wyświetlacz 3-cyfrowy z kropkami
"HGC4033HRK-1"-także 3-cyfrowy z kropkami
Jeśli ma pan lub userzy jakieś dane o tych wyświetlaczach lub wskazówki jak sprawdzić piny to proszę o ich udostępnienie/podanie w tym temacie lub wysłanie na maila do mnie.
Jeszcze jedno programuje w C i czytałem kody do Bascoma ale nic nie rozumiem z nich.
Pozdrawiam.
Do postu powyżej
Pierwszy wyświetlacz :
http://www.datasheetdir.com/LTC-561G-RC+download
RE: Wyświetlacze
Jak masz problem z wyświetlaczami to zawsze pozostaje identyfikacja wyprowadzeń za pomocą rezystora np 330R i zasilacza 5V. %minut roboty i wyprowadzenia spisane.
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.
Dzięki za wskazówki i jeszcze
Dzięki za wskazówki i jeszcze jedno są tam piny a,b,c,d...
Wyświetlacze mają razem spięte aa, b, c,d więc wydaje mi się ,że jeśli podam mu aby podświetlił on 2 na 3 wyświetlaczu to podświetli na wszystkich 2. Jak sterować takim czymś w C czytałem kilka programów lecz nic nie rozumiem. Jeśli jest ktoś kto umiałby mi to wytłumaczyć lub zna link do tagiego poradnika proszę o odpowiedź. Jeszcze jedno jestem początkujący i nie rozumiem zbytnio niektórych pojęć.
Pozdrawiam
Re: Wyswietlacz
U mnie na stronie jest artykuł o multipleksowaniu wyświetlacza LED.... poczytaj (w kodach źródłowych). Mimo tego że segmenty są wspólne to każdy wyświetlacz ma inną wspólną anodę (lub katodę). Np co 4ms zaświecasz inny wyświetlacz. Oko i tak nie widzi różnicy
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.
multipleksacja
Skorzystałem z tego zdania
CYTAT
Więc napisałem obsługę w c oto kod
Wszystko działa jak ustawie mu zmienne tak pokazuje lecz problem zaczyna się przy obsłudze klawiatury:
Problemy : np. klikam cyfra przełącza się od zera do i znów zero, to pomyślałem o drganiach styków wiec ustawiłem mu 80ms aż drgania zgasną to gdy naciskam znika 0 i znów się pojawia, jednym słowem robi co chce.
Jak temu zaradzić?
Re: LED
Nie masz prawa dawać żadnych opóźnień w programie za pomocą delay, wait czy czegokolwiek innego co zatrzymuje program w miejscu. CO prawda nie piszę programów w C na mikrokontrolery ale zasada jest taka sama. Uzyj timera do odliczania 4ms i ustawiaj co 4ms flagę. W pętli głównej sprawdzaj czy jest flaga ustawiona i jeśli tak to wykonuj odczyt klawiatury. Styki obsługuje się poprzez liczenie np 20 cykli po 4ms i jeśli stan się nie zmienił i za każdym razem co 4ms jest taki sam to znaczy że to nie jest drganie styku a przyciśnięcie.
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.
zamiennik bc857
Czy tranzystor bc557 może być zamiennikiem tranzystora bc857? Nie mam komponentów smd, a chcę zbudować termostat. Drugie pytanie. Zaprogramowałem at2313, podłączyłem tylko czujnik DS, ale na wszystkich nogach uC mam stan wysoki (nie licząc GND) niezależnie, czy jest czujnik, czy go nie ma. Czy to jest poprawnie? Fusebity mam ustawione dobrze, zaprogramować się zaprogramował. Na początek wrzuciłem program zwykłego termometru.
Re: Termometr
Tak bc557 możesz bez kłopotu zastosować do sterowania anod wyświetlaczy... Czym zmierzyłeś stan wysoki na wszystkich nóżkach? masz oscyloskop? miernikiem DC nic nie zmierzysz bo przebiegi wychodzące z procka w tym projekcie są przebiegami prostokątnymi o częstotliwości rzędu 100Hz. Podłącz układ według schematu wyżej i wtedy zobaczysz czy 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.
Re: termometr
Dzięki za szybką odpowiedź. Dopiero później doszedłem do tego, że nie zmierzę tego miernikiem. Znalazłem fajny kod programu na Twojej stronie (napisany w poście przez marekszy) z obsługą przycisków na bazie schematu termometru uniwersalnego. Zbudowałem wczoraj prototyp i wszystko działa. Dzisiaj biorę się za robienie płytki.
Ps. Bardzo fajna i przydatna strona.
Takie pytanie, jak zwolnic
Takie pytanie, jak zwolnic multipleksowanie tak, aby wysietlacze załączały się co np 1s? Chcę to zrobić aby coś sprawdzić, a nie na stałe:-).
termometr i termostat
To mój pierwszy post więc Wszystkich pozdrawiam. Moja wiedza na temat programowania to ?tabula rasa, terra incognita". Pewno za kilka miesięcy,napisze samodzielnie jakiś prosty program. Póki co skorzystam z gotowców. Bardzo mi się spodobał projekt mini termometru a zwłaszcza jego wersja z termostatem. Ponieważ na już, potrzebne mi są dwa termostaty z pomiarem temperatury i histerezą, jeden do lodówki ,(uszkodzony termostat mechaniczny, marchewka zamarza) a drugi do bojlera CWU do załączenia pompy. Pozwoliłem sobie na zastosowanie zmian w kodzie źródłowym, przedstawionych w tym wątku przez kilku kolegów. Kompilację przeprowadziłem ustawiając w opcjach ?optymalizację? kodu. Zostało tylko 15% może da się coś poprawić. Program wypróbowany i działa. W zasadzie w tej postaci, by mi wystarczył. Pomyślałem jednak że warto by było bardziej ten projekt zuniwersalizować. Prosił bym kolegów o poprawki oraz jeśli to możliwe dopisanie ustawiania histerezy za pomocą przycisku z zapisem do eeprom. Brakuje też możliwości zapisu w eeprom temperatur Tu ujemnych (pokazuje 53,5 stopni C). Schemat w Eaglu na razie jako PDF. Starałem się w miarę poznawania bascoma wpisać jak najwięcej komentarzy w kodzie. Jeśli ktoś z kolegów mógłby co nieco dopisać pewno szybciej bym zrozumiał ja i pewno wielu początkujących. Temperaturę jako termometr pokazuje prawidłowo w zakresie dodatnim jak i ujemnym.
oldname
usunięto
usunięto
oldname
termometr
Witam. mam problem z tym termometrem. Wgrałem program fuse bity ustawiłem i migoczą mi na zmianę cyfry. czy rezystory na tranzystorach mogą być 3.9k czy muszą być 3.3k? czy to od tego jet migotanie?
pozdr
To wina złych ustawień fuse
To wina złych ustawień fuse bitów. już działa.
termometr i termostat
Korzystając z kodów źródłowych z tej strony trochę posklejałem i w termostacie można ustawić temperaturę od 0 do 99 stopni C oraz histerezę w zakresie temperatur dodatnich. Ustawienia te są zapisywane do pamięci eeprom przez co nie tracimy ich po zaniku zasilania. Termometr mierzy od -53 do 99(sprawdzone od -22 do +60 stopni). Na płytce stykowej wszystkie te funkcje działały. Zostało 7% kodu do zagospodarowania, przy wyłączonych wartościach początkowych oraz braku mignięć wyświetlacza podczas zapisu do eeprom.
Proszę o sprawdzenie kodu . Mam jeszcze pytanie dlaczego przy próbie ustawienia Tu lub Th poniżej ?0? wyskakuje cyfra 53,5 oraz jak utworzyć trzecie menu aby można było włączać drugi czujnik.
oldname
Re: Temperatura ujemna
Nie ma temperatur ujemnych bo po pierwsze wpisujesz wartość Tu integer do Wysw który jest Word.... Po drugie procedura przeliczania nie uwzględnia ujemnego wyniku:
Temperatury zrób zawsze + w momencie gdy wpisujesz do wysw i ustaw poprostu flagę minus która powie Ci potem na potrzeby wyświetlania że jest to -
Co do menu to poprostu trzeba zrobić większy zakres zmiennej Menu i zamiast klikać jednym przyciskiem na wejście do Tu a drugim na wejście do histerezy, trzeba dodać kolejny przycisk, który robi incr Menu. Wtedy we fragmencie:
Dopiszesz case 3: który wpisze do Wysw kolejny ustawiany parametr itd. Tak samo trzeba potem dopisać case do obsługi przyciskó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.
Pytanie
czy da się tak przerobić program aby wyświetlacz wygaszał się po np. 15s a po naciśnięciu klawisza włączał się zpowrotem?? Jeśli tak to co jaki fragment ?
termometr i termostat
Wpisałem incrementację, dorobiłem dodatkowy przycisk podając GND przez diody. Menu działa ale przestał zapisywać w eepromie.Co do ustawiania wartości Tu i Th by przedstawiały wartości bezwzględne temperatury ujemnej to nie bardzo rozumiem, bo to dla mnie jeszcze za wysokie progi. Czy można bardziej łopatologicznie? Poniżej kod z menu
oldname
Re: termostat
Osobiście zrobił bym cały zapis parametrów w momencie jak pojawia się case 3 od menu, wtedy jest zapis i powrót do menu = 0.... program będzie prostszy. Teraz jak przełączysz menu z 1 na 2 to parametry które miały się zapisać w autoret nie zapiszą się bo case jest już 2
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.
termometr i termostat
Zrezygnowałem z automatycznego powrotu z menu 1 i 2 (na razie), dopisałem korzystając z porad w dziale pytania, funkcję dowolnie długiego trzymania wciśniętego przycisku menu i dla mnie jest super. Podsumowując minitermometr uniwersalny mierzy dwoma czujnikami temperatury oraz spełnia funkcję termostatu z możliwością ustawienia histerezy oraz temperatury załączenia lub wyłączenia dowolnego urządzenia. Wartości ustawiane zapisuje do pamięci eeprom. Dobrze by było aby dało się przypisać tylko jeden czujnik do termostatu albo mieć wybór. Zostało 8% kodu.
oldname
Blokada ustawienia
Wpisałem taki warunek:
Działa ale pewno można lepiej? Myślałem o wprowadzeniu menu 4 ale narazie dopuki problem ustawiania poniżej zera nierozwiazany , poczekam.
Zostało 6% kodu. Przeorałem google i na temat sposobu ustawiania w termostatach temperatur z zakresu poniżej zera znalazłem zero.Kolega Mirley naprowadza ale dla mnie to zbyt trudne (mam nadzięję że nie na zawsze). Mam problem ze zrozumieniem wszystkich instrukcji i procedur.
oldname
Re: Temperatura
Można na wiele sposobów obsłużyć ujemne temperatury.... W procedurze odczytu temperatury od razu zmieniam odczytaną wartość zawsze na + i ustawiam zmienną Minus jeśli temp jest < 0.
Można zostawić tu tylko pierwszą linię a zamieniać temperaturę na + tylko na potrzeby wyświetlania. Wtedy bezpośrednio odczytana zmienna T jest typu integer i przyjmuje wartości + i - Ustawianie wartości też musisz zrobić na integerach i 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.
Ustawianie poniżej zera
Jak skasowałem te dwie linie to jak minie zero wyskakuje 53,5 i zmniejsza się w miare spadku temperatury. Tu i Th są zadeklarowane jako integer a po wejściu w menu także po przejściu poniżej zera wyskakuje 53,5 a następnie zmniejsza się. Zmienna T = Abs(t) zostaje zamieniona na wartość bezwzględną wtedy gdy 16 Bit starszego Bajtu równy jest 1 ale jak to wstawic do wyświetlania?
oldname
Re: Termostat
Tam gdzie masz wpisywanie wartości do zmiennej Wysw wstaw Wysw = ABS(T) i tak dla reszty temperatur które wyświetlasz
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.
Ujemne temperatury
Dopisałem i działa. Przy okazji dotarło do mnie że zmienna Integer zapisywana jest przez Baskom w kodzie U2. Dopisałem dodatkowo zmienną Minus w wyświetlaniu zmiennej Tu przez co w czasie ustawiania temperatur ujemnych wyświetla się dioda minus. Teraz pętla główna wygląda tak:
Nie wiem jak do tego napisać zabezpieczenie od drgań styków. Czy do każdego Case? A z kolei ten fragment, wiem co wykonuje ale potrzebuję łopatologicznego komentarza.
Zaobserwowałem ciekawą właściwość Baskoma co do optymalizacji kodu. Caly kod tego termometru z termostatem, Bascom 1.11.9.5 skompilował na 100% bez włączonej optymalizacji, zaś z włączoną optymalizacją 93% pamięci . Po kompilacji w Bascom 2.07.1 (najnowszy) skompilował na 88% pamięci z włączoną jak i z wyłączoną optymalizacją.
oldname
Re: Minitermometr
Czym nowszy bascom tym zakłądam że lepiej zostały przemyślane niektóre polecenia i zajmują mniej rozkazów asemblera.
Odnośnie styków, to przeważnie robię to za pomocą licznika:
Wartości licznika zależą od tego jak często wywołuje się procedura powyżej. Teraz ustawiłęm różnicę 102 -100 = 2 czyli po 2 wywołaiach nastąpi reakcja i po 102 wywołaniach w przypadku trzymania cały czas
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.
Ustawialna Histereza
Witam
Czy ktoś z kolegów dopisał może ustawialną za pomocą przycisków Histerezę
Wciśnięcie jednocześnie dwóch przycisków - zwolnienie i ustawiamy Histerezę
Mile widziany Gotowy dodatek do kodu
pozdrawiam
Grzesiek
Grzesiek - miasto Ostróda
GG 12372371 dom
tel 502812675 SMS
Histereza
Popatrz post #38 #42i #45 i usuń
oldname
Eliminacja drgań styków
usunięto
oldname
Pomyłka !
Przepraszam ale źle skopiowalem .Ta część kodu miala być taka
oldname