(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:
|
|||||||||||||||||||||||||||||||||||
Niezły projekcik;d A mam
Niezły projekcik;d A mam pytanko, posiadam programator AVRPROG STK500 i pracuje w trybie HID (gdyż pracuje na lapku wind. 7 x64 i nie posiadam coma, a trybu com nie idzie u mnie włączyć dlatego nie mogę programować przez BASCOM AVR Studio itd.) Programuje na AVRDude zakładce GUI. Ściągłem AVRBurn i próbowałęm ustawić fusebity tak jak pokazywałeś, ale niestety nie mogę się połączyć z tym programem, poprostu coś nie gra z portami (mam ustawione usb). W zakładce gui 1.0.5 też mogę ustawić fusebity h,l i efuse tylko nie wiem jakie wartości wpisać. Chciałbym np. wywołaś rezonator 8Mhz lub inny, a nie mogę tego zrobić. Czy wiesz, może jak to zrobić?
Re: Fuses
Skoro działa ci avrdude to nie ma szans żeby burn-o-mat nie działał. Musisz najpierw po włączeniu programu ustawić w konfiguracji ścieżkę do avrdude.exe i conf, potem zapisać ustawienia i wyłączyć program. Włączyć jeszcze raz i ustawić typ programatora i port, powinno działać.
Mogę Ci podać ustawienia w formie liczb szesnastkowych ale na dłuższą metę to nie ma sensu.
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 ustawione stk500 v2 i
Mam ustawione stk500 v2 i port usb, avrdude. exe i conf. tak jak mówisz. Gdy wgrywam pamięć flash do attiny 2313 to mi wyskakuje "Error veryfing flash" avrdude.exe: usbdev_open(): did not find any USB device "usb"
Byłbym bardzo wdzięczny za
Byłbym bardzo wdzięczny za forme szesnastkową. Wbije sobie chociaż przez gui. Interesowałaby mnie Attiny 2313 oraz Atmega8. Z góry dzięki. A z tym Burnem to mam wszystko ustawione tak jak mówisz, port usb, stk500v2 i mi wyskakuje błąd "Error veryfing flash" avrdude.exe: usbdev_open(): did not find any USB device "usb". Mam także problem z gui 1.0.5 z wgraniem pamięci eeprom gdyż też jakiś błąd mi wyskakuje.
Re: Minitermometr
Na rysunku z fusebitami powyżej masz wartości szesnastkowe Hfuse=DF i Lfuse=E4
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.
Sygnalizacja temperatur
Witam !
Czy jest możliwość dołożenia diody [ diod ] sygnalizującej, który termometr w danej chwili pokazuje. Dwie diody fajna rzecz, tylko pytanie czy się da i kto to zrobi. Na mnie nie liczcie :-).
Re: Minitermometr
Można dołożyć jedną diodę na porcie PA.1, tylko trzeba go wczesniej przestawić w konfiguracji na poczatku programu na wyjście.
Zaraz po linijce Portd.3 = Not Minus dopisać trzeba:
Można do tego portu w sumie dać dwie diody.....tak żeby jedna świeciła jak jest stan wysoki a druga jak jest stan niski. trzeba podłączyć w szeregu od 5V rezystor szeregowo z diodą led do portu i od portu drugi rezystor szeregowo z diodą do masy. 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.
Wpisałem kod taki jaki jest
Wpisałem kod taki jaki jest wpisany w kodzie hexa z twojej stronki i tak jakby się procek zablokował. Nie może się połączyć z programatorem? Co zrobić w takiej sytuacji?
Re: fusebity
Wgrywałaś fusebity? Bo jeśli nie to nic się nie powinno stać
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.
Zrobiłem najpierw read żeby
Zrobiłem najpierw read żeby zobaczeć jaki mam i zmieniłem w systemie hex tak jak podałeś dla attiny 2313 dla 3-8Mhz przy rezonatorze właśnie 8 Mhz i wgrałem to i nie chce się teraz się wogóle połączyć z tym prockiem. Nie mogę nic zrobić. Czy go zablokowałem jakoś czy jak? Ale wpisałem takie fusy jak podałeś dla 2313
Re: Fusebity
Jak wgrałeś takie wartości jak wyżej na rysunku z burn-o-mata to nie mogłeś zablokować .... może ustawiłeś na kwarc 3-8MHz, to wtedy bez kwarcu i kondensatorów nie pójdzie
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.
Ustawiłem na kwarc 3-8Mhz, u
Ustawiłem na kwarc 3-8Mhz, u siebie w układzie mam 8Mhz i teraz nic nie mogę zmienić. Nie mogę się połączyć. Wgrywałem wartości z Burna przez Gui 1.0.5
Re: Termometr
Nie powinieneś ustawiać na kwarc bo kwarca w układzie nie ma. Piny XTAL wykorzystywane są jako wejścia i wyjścia. Nie wiem czy po przestawieniu na kwarc procesor będzie dobrze działał. Masz coś podpięte do pinów 4 i 5 procka? Jak ustawiłeś na kwarc to musisz mieć podłączony żeby procek 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.
diody
Nie bardzo chce mi działać. Po podłączeniu jednej diody tj. anody do nożki nr 4 a katody przez rezystor do masy działa, ale dioda ledwo swieci (na nozce 4 jest 1,5v). Natomiast podpiecie drugiej diody tj katody do nozki nr 4 a anody przez rezystor do 5v swiecą obie diody zawsze. Zapewne zle podpinam. Prosze o podpowiedz.
WOW
Bardzo udana konstrukcja.
Witam, mógłbym prosić o
Witam, mógłbym prosić o podanie źródła gdzie kupie taki wyświetlacz??
Re: wyświetlacz
Można dostać w sklepie AVT lub na allegro.
----
co do diod to jakie rezystory dałeś? Dobrze by było 470R. Jak wygląda twoja linijka z konfiguracją portów? masz coś takiego:
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:
Rezystory dałem 470ohm. Jedyne co zmieniłem w Twoim kodzie to po linijce "Portd.3 = Not Minus" dopisałem
"If Kanal = 0 then porta.1 = 0 else porta.1 = 1". Nic więcej nie zmieniałem, ale wnioskuję , że jednak trzeba coś jeszcze coś zmienić??? Mam tak jak w Twoim kodzie tj. Config Porta = &B00000000 : Porta = &B11111111 .
Re: Port
No to źle masz.... linijka ma wyglądać tak jak napisałem wyżej. Pin a.1 ma być wyjściem
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
Bardzo dziękuję za odpowiedz. Przetestuje dopiero w weekend i dam znać jak w praktyce działa.
termostat
Mam pytanie odnośnie zmiennych H i L nie są modyfikowane co 100ms gdyż każde spełnienie warunku If F100ms = 1 Then powoduje wykonanie operacji?
Re: H i L
Nie są modyfikowane dopóki nie zmieni się Tu, przypisywane jest to samo co cykle. W sumie mogło by to być przy ustawianiu od razu zrobione ale wtedy musiało by byc dwa razy w kodzie. W takim programie to bez znaczenia
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.
Termostat.
Projekt godny uwagi i zamierzam go wykonać. Mam takie pytanie, czy jest możliwośc zachowania pomiaru dwóch temperatur oraz temperatur ujemnych i dodanie do tego termostatu na jednym z ds-ów? Na schemacie widzę, że jest wolna jeszcze jedna noga z procka. Czy będzie to spore utrudnienie? Taki zestaw byłby bardzo przydatny np. do auta - pomiar temp zewnętrznej oraz wewnętrznej i do tego sterowanie załączaniem klimatyzacji poprzez termostat. Jestem bardzo zainteresowany połaczeniem dwóch termometrów (ze wskazaniami ujemnymi) oraz termostatu.
Re: Program
No to wklej obsługę termostatu do programu z dwoma ds'ami.... wydaje mi się że będzie problem z miejscem w procesorze
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.
eeprom
Jak zamieścić prawidłowo zapis ustawionej wartości do eeprom, mam z tym problem gdy umieściłem do tu
wyświetlacze zaczęły migać
Re: eeprom
To nie dziwne.... dałeś wykonywac zapis co każdy cykl i temu tak miga. daj tak:
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.
eeprom
Migają jeszcze gorzej.
Re: Termometr
A jak wywalisz ten fragment kodu to tez miga czy przestaje?
co dokładnie napisałeś w miejsce writeeeprom?
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 nie ma zapisu to nie
Jak nie ma zapisu to nie miga. writeeeprom Tu, 20
re: diody
Diody led wskazujące czujnik działaja doskonale po wprowadzeniu modyfikacji kodu podanej przez mirleya!
eeprom
Problem migania i zapisu rozwiązany tak:
If Autoret > 0 Then
Ust = 1
Decr Autoret
If Autoret = 0 Then
Gosub Zapis
End If
Else
Ust = 0
End If
Zapis:
Disable Interrupts
Writeeeprom Tu , 35
Portd = &B11111111
Waitms 200
Enable Interrupts
Return
Natomiast jak zrobić aby przy pierwszym uruchomieniu Tu przyjęła jakąś domyślną wartość a przy kolejnych uruchomieniach odczytywała ja z eepromu.
Re: Termometr
TO co mówisz wygląda co najmniej dziwnie, czemu miał by być problem z działanie jak polecenia są bezpośrednio a jak są pod etykietą i skaczesz do nich.... przecież i tak się to nie wykonuje cały czas tylko jednorazowo
To z odczytem na starcie już wygląda prościej.... napisz po prostu readeeprom odpowiedniej zmiennej zanim program wskoczy do pętli do loop. Potem sprawdź ifami czy zmienna oczytana jest w odpowiednim zakresie a jak nie to zapisz domyślne wartości
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.
eeprom
Skakać do podprogramu pewnie nie trzeba kluczowe było wyłączenie globalnych przerwań.
Odczyt zrobiony i działa jak
Odczyt zrobiony i działa jak należy.
Dzięki za pomoc
Programowanie
A jak zaprogramować attiny? To jest smd? a programator mam tylko na dip...:(
Pozdrawiam
Re: Programowanie
Wlutuj procesor na płytkę. Dolutuj kabelki do odpowiednich pinów procesora i podłącz do programatora. Wszystkie procesorki AVR tak samo się programuje, trzeba podłączyć MISO, MOSI, SCK, RST i GND do programatora i włączyć zasilanie
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: Programowanie
Tak tak wiem jakie sygnały ale właśnie pozostałe tak myślałem żeby zrobić ale zastanawiałem się nad reset bo tam nie ma żadnej ścieżki więc trzeba bezpośrednio do nóżki. Ale ok spróbuję i dam znać.
Pozdrawiam Piotrek
Re: Termometr
Ja lutowałem reset bezpośrednio do nóżki
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.
nogi attiny
witam,
naginales moze nogi od attiny bo orginalnie ugiete mi nie pasuja, wystaja o jedna nozke...:(
re: odczyt zapis eeprom
morswin możesz wkleić albo przesłać na pw cały kod z zapisem i odczytem eepropm?
Re: Tiny
Jak procek nie pasuje do obudowy na płytce to znaczy że wykonałeś ją nie w skali. Ma pasowac idealnie, w tym rozstawie co procesor. Sprawdź czy po wydruku odcinek 3cm ma tyle co trzeba. Po to on jest
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.
no to jest błąd w pdf bo jak
no to jest błąd w pdf bo jak drukuje bezposrednio sciezki w 100% to mam za male
eeprom
Tu jest odczyt a zapis jest dokładnie taki jak podałem wyżej
Ten fragment powoduje ze cały wyświetlacz mignie po zapisie.
re:zapis odczyt eeprom
Dzięki! Po której linii należy dodac te wpisy?
Odczyt dajesz zaraz przed
Odczyt dajesz zaraz przed główna pętla, zapis w warunku który widać w oryginalnym kodzie.
Re: pdf płytka
Pdf jest dobry, właśnie z niego teraz wydrukowałem, oba odcinki oznaczone jako 3cm mają dokładnie po 3cm. Pewnie używasz foxit reader do otwierania pdf a on się do niczego nie nadaje. Wydruk w adobe reader pod windowsem albo okular pod linuxem. Foxit reader nie zachowuje skali. W adobe reader jest opcja po kliknięciu drukuj żeby wybrać bez dopasowania do strony
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.
korekta odczytu
Można jakoś korygować odczyt temperatury? Termometr zawyża u mnie o 2 st. (sprawdzałem z precyzyjnymi termometrami rtęciowymi).
Wyczytałem też , że zbyt częsty pomiar powoduje grzanie się DSów i przekłamywanie temperatur. Możesz mirley piowiedzieć , która zmienna odpowiada za częstotliwosć pomiaru?
Re: Miniterm
To tak... zmień na początek If Mux = 5 Then Mux = 0 na jakąś większą wartość w mux... zwiększenie za bardzo spowoduje miganie wyświetlacza gdyż procedura odczytu temperatury jest w procedurze wyświetlania żeby jedna drugą nie zakłócały. Druga metoda to zmiana częstotliwości timera a co za tym idzie zmiana częstości ustawień flago F4ms
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 korekta
Na 100 proc problemem jest grznie się przy odczycie. Zrobilem dwa termometry i obydwa zaraz po włączeniu pokazują prawidłową temp. ale po kilku minutach potrafia zawyżyć odczyt nawet o 4 st. (jeden zawyża o 3 drugi o 4 st pomimo, że na początku pokazują niemal identyczną temp.)
Nie moge sobie poradzić z tym. Zmiana Mux konczy się migotaniem wyświetlacza albo w ogóle brakiem wyswietlania. pomiar co ok 1-2 min byłby wystarczający.
Czy inni nie ma problemu z zawyżonymi odczytami (przy pracy w warunkach temp. pokojowej)? Bo na moje oko to raczej problem programu, ale dziwne że nikt wczesniej nie zgłaszał tego problemu???
Przejrzałem inne Twoje termometry i jednak kilka innych osób zgłaszało problem z zawyżoną temperaturą (zarówno przy termomrtrze domowy, jak i uniwersalnym). MOże zastanowisz się nad mniejszą częstotliwością pomiarów w swoich projektach bo najpewniej to jest problemem wystepującym wspólnie przy wszystkich projektach termometrów. Zauważyłem też, że przy temperaturach otoczenia powyżej 27 stopni problem nie ma znaczacego wpływu na dokładność pomiaru (widocznie samoczynne grzanie się nie przekracza tego progu i dlatego przy mierzonych wyższych temperaturach pozostaje to bez znaczenia)
Re: Termometr
Spróbuj tak:
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.