Termometr Uniwersalny


9.28571
Ocena: None Średnia: 9.3 (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
6x 3,3k

2x 33pF
1x 1uF
1x 220uF

1x Rezonator Kwarcowy 12MHz
1x AT89C2051 (lub ATTiny2313)
3x BC557B
1x DS18B20
1x AT5636BG-B Pb-free (TOT-5362BG-B) Wyświetlacz potrójny

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:

ZałącznikWielkość
Schemat87.5 KB
Płytka11.03 KB
Płytka (odbicie lustrzane)11.01 KB
Płytka (6 na stronie)61.72 KB
Montowanie15.44 KB
Kod źródłowy (wersja podstawowa)4.46 KB
Program po kompilacji (BIN) (wersja podstawowa)1.03 KB
Program po kompilacji (HEX) (wersja podstawowa)2.96 KB
Kod źródłowy (obsługuje temperatury powyżej 100 stopni)4.91 KB
Kod Źrodłowy (wersja z termostatem) (jeszcze nie testowana)7.57 KB
Program po kompilacji (wersja z termostatem) (BIN)1.72 KB
Program po kompilacji (wersja z termostatem) (HEX)4.85 KB
Kod Źródłowy (dla ATTiny2313, Bascom AVR)4.43 KB
Kod Źrodłowy (wersja z termostatem, dla ATTiny2313, Bascom AVR) (jeszcze nie testowana)7.28 KB
Program po kompilacji (BIN) (dla ATTiny2313, Bascom AVR)1.59 KB
Program po kompilacji (HEX) (dla ATTiny2313, Bascom AVR)4.49 KB
Kod źródłowy (dla ATMega8, Bascom AVR)4.6 KB
Nadruk na obudowę64.22 KB



Portret użytkownika esc

Termostat

Sterowanie:
 If P3.7 = 0 Then                                             'jezeli jest wlaczony przekaznik
   If Tempa >= Tempu Then P3.7 = 1                            'jezeli tempa dochodzi do ustawionej to wyl przekaznik
 Else                                                         'jezeli wyl przekaznik
   Tempp = Tempu - Histereza                                  'punkt wylaczenia
   If Tempa < Tempp Then P3.7 = 0                             'jezeli tempa mniejsza niz ustawiona temp. - histereza to wlacz przek.
 End If
Return

Mam pytanie co zmienić, żeby termostat działał jak powinien, bo na razie to jak temperatura ustawiona jest niższa niż mierzona to port P3.7 jest wyłączony, dopiero jak podgrzeję DS do temperatury powyżej ustawionej to włącza port, czyli teraz działa jako chłodzenie. A mi chodzi o grzanie, jak zamieniłem stany portu w kodzie to port jest włączony na stałe.
Czy wystarczy zamienić znak > na <

Portret użytkownika mirley

Re: Termometr

To zależy co rozumiesz prze włączony port. Przekaźnik jest odpalany stanem niskim gdyż obwody wyjściowe 2051 narzucają taki system sterowania. Przekaźnik jest wyłączony gdy stan na porcie jest 1. Możesz sobie zamienić to poprzez:

Sterowanie:
 If P3.7 = 1 Then                                             'jezeli jest wlaczony przekaznik
   If Tempa >= Tempu Then P3.7 = 0                            'jezeli tempa dochodzi do ustawionej to wyl przekaznik
 Else                                                         'jezeli wyl przekaznik
   Tempp = Tempu - Histereza                                  'punkt wylaczenia
   If Tempa < Tempp Then P3.7 = 1                             'jezeli tempa mniejsza niz ustawiona temp. - histereza to wlacz przek.
 End If
Return

na początku programu trzeba będzie zerować port bo jest domyślnie na 1, a poza tym w momencie resetu ustawi się stan wysoki na portach i grzałka ci się włączy na chwilkę

-

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.

Portret użytkownika esc

Miganie

Jeszcze jedno pytanie, czy można zmniejszyć częstotliwość migania podczas ustawiania temperatury.

Portret użytkownika mirley

Re: Miganie

W obsłudze przerwania jest linijka:

Miganie = Not Miganie 

trzeba ją stamtąd skasować a dodać następujący fragment zaraz nad obsługą przycisków:

.....
If Zezw_przyciski = 1 Then
  Reset Zezw_przyciski                                        'co 100ms
 
   incr dmig
   if dmig = 2 then     'to dzieli przez 2 więc miganie będzie się zmieniać dwa razy wolniej
     dmig = 0
     Miganie = Not Miganie 
   end if
 
   If P3.3 = 0 And P3.4 = 1 Then                               'plus
    Incr Sw_licz(1)
      If Sw_licz(1) = 10 Then
 
.......

Na początku programu trzeba zadeklarować zmienną dmig jako byte

-

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.

Portret użytkownika esc

Tak zrobiłem ale wywala blad

Tak zrobiłem ale wywala blad podczas kompilacji
Error 188 : END IF expected In File : C:\USERS\TOMEK\DESKTOP\TERMOSTAT\TRERMOSTAT1.BAS , line : 314

Wstawiłem w tym miejscu

     Set Zezw_przyciski                                       'zezwolenie obslugi przyciskow
     'Miganie = Not Miganie
     If Zezw_przyciski = 1 Then
  Reset Zezw_przyciski                                        'co 100ms
 
   incr dmig
   if dmig = 2 then     'to dzieli przez 2 więc miganie będzie się zmieniać dwa razy wolniej
     dmig = 0
     Miganie = Not Miganie
   end if
 
   If P3.3 = 0 And P3.4 = 1 Then                               'plus
    Incr Sw_licz(1)
      If Sw_licz(1) = 10 Then
                                                        'umozliwia miganie cyfr podczas wyswietlania menu
     Incr Co1s
     If Co1s = 7 Then
       Co1s = 0

Portret użytkownika mirley

Re: Program

nie dziwne że wywala błąd....... gdzie to wstawiłeś? nie mówiłem żebyś władował to w przerwanie. Napisałem wyraźnie usuń linijkę Miganie = Not Miganie (ustawia sie to w przerwaniu) i zamiast tego dodaj fragment zaraz nad obsługą przycisków a nie w przerwaniu!

......                                'wczesniej są jakieś instrukcje w pętli głównej
If Zezw_przyciski = 1 Then            'to juz istnieje w programie        
  Reset Zezw_przyciski                'to juz istnieje w programie                   
 
   incr dmig                          'to masz dodać
   if dmig = 2 then                   'to masz dodać
     dmig = 0                         'to masz dodać
     Miganie = Not Miganie            'to masz dodać
   end if                             'to masz dodać
 
   If P3.3 = 0 And P3.4 = 1 Then      'to juz istnieje w programie, to jest początek obsługi pierwszego przycisku                   
    Incr Sw_licz(1)
      If Sw_licz(1) = 10 Then
                                      'tam dalej cos jest ale to mało ważne
.......

czyli masz wkleić dokładnie linijki:

   incr dmig                          
   if dmig = 2 then                   
     dmig = 0                         
     Miganie = Not Miganie            
   end if    


zaraz po poleceniu:

Reset Zezw_przyciski

które znajduje się już w programie w pętli głównej.

-

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.

Portret użytkownika esc

Ok. dzięki źle Cię

Ok. dzięki źle Cię zrozumiałem myślałem że też tam trzeba wstawić, teraz już wszystko działa.
Zaraz wrzucam do procka.

Już sprawdzone i wszystko ok.
Jeszcze raz dzięki.

Portret użytkownika KakaoRozpuszczalne

Fuse Bity

Witam.

Chciałem się spytać, czy takie ustawienie fusów będzie dobre pod ATtiny2313.

Portret użytkownika rafliczek22

Jeśli chodzi o program

Jeśli chodzi o program napisany do tego termometru to ustaw frequenzyna na inna wartość najlepiej podaj jakie są, niestety nie mam obecnie wolngo tiny2313 tylko m16 i m32

Portret użytkownika mirley

Re: Fusy

W linijce KLA987 na końcu wpisu w nawiasie [] masz wartości CKSEL i SUT, mają one być takie same jak w moim zrzucie z programu burn o mat. Poszukaj takiej opcji gdzie jest [CKSEL=1111 SUT=10], powinno być w opisie wtedy external crystal resonator(oscylator) itp bardzo podobnie jak masz teraz

Reszta ustawień wygląda poprawnie

-

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.

Portret użytkownika KakaoRozpuszczalne

Fusy

Uruchomiłem tak jak jest w screenie, działa, tylko lekko przygasają cyferki co chwilę, ale pewnie z powodu transformatora tylko 9V 0,15A i stabilizatora 78l05, może jak odczytje temperaturę to pobór prądu rośnie?

Portret użytkownika mirley

Re: Termometr

To normalne że przygasa trochę wyświetlacz podczas pomiaru.... jest to wina ds18b20 i sposobu jego odczytu

-

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.

Portret użytkownika KakaoRozpuszczalne

A czy to normalne

A czy to normalne, że zawyża temperaturę o około 2 st.C ?

Portret użytkownika esc

To może być wina ds, zmień ds

To może być wina ds, zmień ds i sprawdź czy pokazuje to samo. A swoją drogą co masz za punkt odniesienia, wcale nie jest powiedziane, że pokazuje prawidłową temperaturę.

Portret użytkownika KakaoRozpuszczalne

Zmieniłem scalaki

Zmieniłem scalaki, dałem nówki sztuki DS i ATtiny, ale nadal pokazuje więcej niż być powinno. Jak zbliżę rękę do układu(całści, nie tylko DS18B20) to temperatura rośnie. To zakłucam to przez przypadek, czy scalak wykrywa ciepło mojej ręki z 5 cm?

Portret użytkownika esc

A dużo rośnie, czy tylko parę

A dużo rośnie, czy tylko parę dziesiątych, mam przy komputerze taki termometr pod RS i czujnik jest nieosłonięty w koszulce, wystarczy przejść obok i też temperatura rośnie. DS jest dość czuły. Ja mam na Atmedze i wszystko jest ok.

Portret użytkownika mirley

Re: Ds18B20

Ds nie może zawyżać lub zaniżać temperatury, chyba że program odczytujący jest źle napisany ale ten co jest tu zaprezentowany sprawdzałem i wydaje się dobry.

-

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.

Portret użytkownika KakaoRozpuszczalne

Ale jak to jest

Ale jak to jest, że po włączeniu pokazuje np. 25,4 st.C i po minucie wzrasta już do 27 st.C? Cały czas leży w tym samym miejscu, układu nie dotykam... Czy może tak się stać przez złe wlutowanie rezystora podciągającego?

Portret użytkownika mirley

Re: Termometr

Nie może się tak dziać no chyba że coś się nagrzewa w okolicach czujnika i jego temperatura rośnie. Może rezystor podciągający masz o złej wartości lub kombinując z układem uszkodziłeś dsa. Dodaj mu długi kabel rzędu 2m i oddal czujnik od układu, komputera i wszystkich innych urządzeń. Po włączeniu może się pojawic na chwile 85 stopni lub 0 ale po następnym odczycie temperatura musi byc juz poprawna. Czujnik jest bardzo czuły więc trzymanie nawet reki w jego okolicy może podnieść temperaturę

-

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.

Portret użytkownika Grzegorz

Termostat

Witam
Przerobiłem termostat na Atmega8 jestem poczatkującym potrzebuję zmodyfikowac program aby zapisywał
ustawienie temperatury i Histerezy po wyłączeniu zasilania
(writeeprom , readeeeprom)

Portret użytkownika rafliczek22

Trzeba dać jakąś baterię i w

Trzeba dać jakąś baterię i w pętli napisać if'a jeżeli na danym porcie zapanuje jakiś stan (zakładam że z elektroniką sobie poradzisz (jeden tranzystor i dioda)) to procek zapisze aktualne nastawy i przejdzie do powerdown albo standby, do tego jakiś guzik na int0-1 i budzenie z standby czy powerdown i w sub'ie inta odczytywać nastawy.

Portret użytkownika Chester

Termostat

Witam!
Przeczytałem cały opis termometru oraz posty umieszczone pod nim i nasuneły mnie sie takie pytania:
Czy jest to możliwe aby z użyciem procesora Attiny2313 napisać program który spełniałby nastepujące zadania: po włączeniu zasilania sprawdzałby jaka jest temperatura na DS18B20 i jeżeli temepratura była by poniżej 43 stopni C podawałby stan wysoki na jedną z nóżek procesora. Po osiągnięciu oczekiwanej temperatury wyłączałby grzałke a histereza wynosiłaby 2 stopnie czyli po spadku temperatury do 41 stopni C załączałby grzałke ponownie.
Drugą opcją to po osiągnięciu 40 stopni podawałby na inną nóżkę stan wysoki i w ten załączałby napowietrzacz.
Czy to wszystko się zmieści w jednym procesorze??
Stworzyłem sobie schemat i nie wiem czy mogę go tu umieścić czy założyc nowy temat na forum!

Z góry dziękuję za odpowiedź!
Pozdrawiam!

Portret użytkownika mirley

Re: Termostat

Termostat juz pisałem wielokrotnie, kod jest w załącznikach dla mikrokontrolera 2051. Na forum wielokrotnie ten temat był poruszany i znajdziesz tam kody dla tiny2313. Dodatkowe wyjście na napowietrzacz to kilka linijek w programie.. ale nie wiem czy się zmieści. Poszukaj na forum i ewentualnie załóż swój temat...tutaj nic nie wklejaj

-

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.

Portret użytkownika Heniek

Testowałem wersję z

Testowałem wersję z termostatem, działa super. Dobrze by było, aby układ pamiętał zaprogramowaną temperaturę po wyłączeniu zasilania, czyli najlepiej aby można było przerobić program na ATTiny 2313 i wprowadzanie temperatury do pamięci EEPROM nastepowało np. po wyłączeniu zasilania. Są to tylko moje sugestie jak mozna by jeszcze ulepszyć ten termometr, a raczej dobry termostat. Nie mogę natomiast podpowiedzieć jak to zrobić gdyż w dziedzinie programowania jestem "cienki"

Portret użytkownika mirley

Re: Termostat

Termostat ten trzeba trochę ulepszyć, pewnie jak sie do kodu spojrzy to da się coś zoptymalizować i wtedy wejdzie zapis do eeprom... w pierwszej wersji z tego co pamiętam to jest problem z tym bo brak miejsca na program

-

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.

Portret użytkownika gość

Witam! Właśnie robię sobie

Witam!
Właśnie robię sobie ten termometr i mam w związku z tym parę pytań:
1. Co to jest złącze GP1.
2. Aby układ działał potrzebne są te przyciski czy zamiast nich trzeba wlutować coś innego.
3. Jak zasilić ten termometr
4. Aby zaprogramować procka AT89C2051 to którą pozycję mam ściągnąć
5. Gdzie wlutować ten rezystor 4,7k
Prosił bym o odpowiedz bo dopiero zaczynam przygodę związaną z elektrotechniką i trochę się gubie.

Portret użytkownika mirley

Re: termometr

Rozumiem że jesteś początkujący ale czytałeś w ogóle tekst?

1. ...Złącze GP1 w wersji podstawowej służy do podłączenia diody sygnalizującej ujemną temperaturę (katodą do portu procesora, anodą do VCC) .....
2. nie są potrzebne jeśli chcesz termometr
3. 5V stabilizowane na VCC, względem masy GND. W praktyce z USB jak jest blisko kompa, jak nie jest to układ 7805 + 2 kondensatory, patrz opis minizasilaczy w dziale miniprojekty
4. Niewątpliwie wersję podstawową.... masz programator dla at89C2051? jeśli nie to zrób dla pewności wersję z attiny2313
5. jest w tekście ....Od strony druku należy wlutować rezystor 4,7k podciągający magistralę 1-Wire (nóźka 9 układu U2) do plusa zasilania.....

-

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.

Portret użytkownika piotruuch

Blad przy programowaniu...

Cześć.
Wykonałem Twój termometr i niestety nie działa. Programowałem procka (Attiny2313) programem do Attiny, programatorem STK200+ i PonyProg. Na początku wszystko jest ok. Wgrywam program i poszedł, kiedy ustanawiam FuseBity i chce je wgrać wyskakuje mi błąd "Device missing or unknown device (-24)" Czyli że brakuje procka lub nieznany. Kiedy chciałem najpierw zaprogramować FuseBity potem program to stało się identycznie. Po tym komunikacie już nic nie da się zrobić z procesorem. Cały czas wyskakuje ten bład. Jak wsadzę nowy procesor to mogę zaprogramoć znów do tego samego miejsca. Co robię źle? To już mój 3 procesor.

Portret użytkownika matrix

Re: Blad przy programowaniu...

a zmieniłeś tą linijkę softu

$regfile = "89C2051.DAT"

na
$regfile = "2313DEF.DAT"

Portret użytkownika piotruuch

Re: Blad przy programowaniu...

W programie tym co sciagnelem do attiny odrazu hex nie wiem co jest ale w BIN jest attiny2313.dat

A czy jak progamuje attiny to musze miec jakis kwarc dolaczony? Czy moge odrazu z prgramatora wejsc na procka przewodami? Bo szczeze to jedna attiny tak zaprogramowalem do tego termometru i ruszyl ale zapomnialem ze nie wlutowalem sobie stabilizatora i podlaczylem do 12 i juz nie ruszyl. i Teraz chce wymienic i nie moge zaprogramowac

Portret użytkownika piotruuch

Re: Blad przy programowaniu...

Wiesz co ja sciagnelem ta wersje przygotowana do attiny juz i tam jest troche inaczej bo pisze attiny2313.DAT

Portret użytkownika Piotr

U mnie było tak samo

Witam !!!

U mnie było tak samo [ pisałem o tym wcześniej ]. Po wgraniu softu i ustawieniu fasebitów attiny przestał się komunikować. Całe szczęście , że wszystko wgrało się dobrze i termometr chodzi super do dzisiaj. Też tej zagadki nie udało się rozwiązać.

Portret użytkownika mirley

Re: Programowanie termometr

jakiej zagadki? Jak programujecie procesory i wszystko jest ok to znaczy że tak ma być. Potem po ustawieniu fusebitów procesor potrzebuje już kwarca, więc zaprogramują się fusebity, po czym od razu wywali się błąd z komunikacją bo kwarca nie ma. podczas programowania kwarc ma być podłaczony, albo procesor ma być włożony w płytkę termometru gdzie kwarc już jest, a programator dołączony kablami do płytki.

Pliki hex są dobre bo sam programowałem z nich swój projekt. W kodzie źródłowym jak była by podana zła definicja procka (literówka, itp) to program się nie skompiluje

-

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.

Portret użytkownika Piotr

Oczywiście że zagadka

Oczywiście że zagadka. Pisałem że używam podstawki programującej z Waszej strony http://mirley.firlej.org/podstawka_programujaca a tam jak widać kwarc jest podłączony do atmegi i 2313. Przy programowaniu atmegi po zmianie fusebitów nic się nie dzieje a przy 2313 przestaje gadać . Nie ma także przerwy pomiędzy 2313 a kwarcem i stąd ta zagadka.

Portret użytkownika kacper

Attiny 2313 i pomiar > 100stopni

Witam,
Mam pytanie, czy wersja programu na Attiny obsługuje temperatury powyżej 100 stopni Celsjusza ?

Portret użytkownika mirley

Re: Termometr

Program na attiny to podstawowa wersja, trzeba dopisać tak samo jak w kodzie dla 2051

-

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.

Portret użytkownika oldboy

Termostat - zapis nastaw

Zrobiłem termostat na 89C2051 i DS1820 na podstawie kodu Mirleya i jest OK ale chciałbym zapisywać nastawy Tl i Th do pamięci EEPROM DS-a, bo podobno jest taka możliwość. Znalazłem parę przykładów ale nie jestem pewien, w którym miejscu programu wprowadzić to zapisywanie. Myślę, że najlepiej gdyby odbywało się to po celowym zostawieniu w trybie nastaw (miganie) i autopowrocie do wyświetlania temperatury. Nie wiem tylko czy nie będzie problemów, bo zapis wymaga trochę czasu.

Portret użytkownika mirley

Re: Termostat

Ten fragment kodu:

'*************************************** 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
       '***************************************

Odpowiedzialny za pomiar temperatury trzeba zamknąć w if'ie, który sprawdza czy jest coś do zapisania do pamięci lub odczytania. Wtedy w "else" tego if'a zamiast odczytywać temperaturę zostanie zapisane lub odczytane coś z pamięci. Nie powinno zmienić to czasu potrzebnego na odczyt

-

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.

Portret użytkownika osto

hmmm

Złożyłem ten termometr na płytce stykowej na attiny2313 i mam problem mianowicie na wyświetlaczach są zapalone wszystkie segmenty tzn nie zawsze bo raz się zmienia z 88 na 98, 89, 68, 49 i 08 tu mam zasilanie pociągnięte pod linie danych poprzez rezystor 4k7 a gdy dam tak jak jest w schemacie to mruga tylko segment G. Proszę o pomoc w rozwiązaniu problemu.

Pozdrawiam

Portret użytkownika mirley

Re: termometr

Tak to napisałeś że nie jestem w stanie załapać jak to podłączyłeś. Zrób tak jak u mnie czyli podłącz Ds za pomocą trzech przewodów (GND, DQ, +5V) i daj rezystor 4,7k między DQ a +5V. Wyświetlacz masz ze wspólną Anodą? Segmenty podłączone są napewno dobrze? Zasilanie jest prawidłowe (5V +/-10%)?

-

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.

Portret użytkownika osto

Zrobione jak w schemacie,

Zrobione jak w schemacie, rezystor dany, wyświetlacz: są to 2 wyświetlacze o symbolu SA56-11YWA ze wspólna anodą, segment A podłączony do PB.1, B do PB.2 itd... czujnik sprawny w 100%, dodaje zdjęcie z tym co jest na wyświetlaczach

tyle że w pokoju nie mam takiej temperatury ...czy to może być wina tego że pominąłem rezystory na bazie tranzystorów?

Portret użytkownika mirley

Re: Termometr

Pominąłeś R1, R3, R5 czy te odciągające do +5V?, no bo jak szeregowe to nie wiadomo jak duży prąd chce płynąć teraz do rocka i trudno przewidzieć działanie? Po to jest schemat żeby robić według niego

-

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.

Portret użytkownika blackwolf

chciałbym ten termometr

chciałbym ten termometr zamontować do motora i mam takie pytanie czy ten czujnik temperatury moge dać na 1,5m przewodzie?

Portret użytkownika mirley

Re: Termometr

Testowałem na około 20m, ale nie wiem jak z zakłóceniami z cewki w motorze, więc musisz sam sprawdzić. Co do kabla to 1.5m jest napewno ok

-

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.

Portret użytkownika blackwolf

dziękuje za odpowiedź. jak

dziękuje za odpowiedź. jak tylko zrobie ten termometr to go sprawdze jak się zachowuje przy cewce WN

Portret użytkownika Początkujący

Witam! Zrobiłem układ jak na

Witam!
Zrobiłem układ jak na schemacie. Zamontowany jest w nim procesor Attiny2313. Układ jest sprawny bo wrzuciłem na niego program termometru i śmiga. Ale mnie interesyje, aby to był 'termostat'. Z programowaniem mam spory problem. Niech to będzie termostat bez sterowania przyciskami i menu. Aby zmieścił się na attiny2313 Wystarczy, że będzie miał z góry zaprogramowaną temperatyrę włączania pompy, którą podłączę do złącza GP1 przez przekaźnik. Tzn. Temperatuta powyżej np. 40 st. pompa działa. Temperatura poniżej 40 st. pompa nie działą. I aby stale wyświetlał temperaturę z czujnika. Wiem, że to było już wałkowane na forum. Ja bym prosił o gotowy kod takiego programy ze wskazaniem gdzie ewentualnie mogę zmieniać temperaturę załączanie i wyłączania pompy w kodzie przed programowaniem. Narazie domyślnie niech to będzie 40 st. Proszę o wrzucenie kodu na forum lub na maila:

Dziękuję i pozdrawiam!

Portret użytkownika mirley

Re: Termostat

Po pierwsze to nie wrzucaj 5 razy swojego pytania.... "Zachowaj" klika się tylko raz, nie zależnie od tego jak mieli w przeglądarce. Nie chce mi się za każdym razem tego kasować jak ktoś tak zrobi:

Programdo termostatu możesz sobie sam ulepszyc na podstawie termometru na tiny2313. Poniżej masz fragment programu z wstawką termostatu: Z procedury wyświetl na końcu usuń jeszcze linijkę " Portd.6 = Not Minus
"

.......
If Zezw_wysw = 1 Then
  Reset Zezw_wysw                                           'co 4ms
  Wysw = Tempa
 
  If Ur = 1 Then Gosub Przelicz
  Gosub Wyswietl
End If
 
If Flaga_s = 1 Then                         '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< dodać
  Reset Flaga_s                                           'co 100ms
 
  if Tempa > TH then
    portd.6 = 0
  else
    if Tempa < TL then portd.6 = 1
  end if
 
End If
 
 
Loop
End
'****************************
      'Przerwanie timer0
'****************************
Przerwanie0:
Timer0 = 5
Incr Co4ms
 If Co4ms = 3 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
       Set Flaga_s                                           '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< dodać
       Pomiar_odczyt = Not Pomiar_odczyt
 
........

na początku programu tam gdzie zmienne dodajesz jeszcze:

Dim Flaga_s as bit
Dim TH as word, TL as word
 
TH = 400    'temperatura włączenia *10, 400 oznacza 40 stopni 500 to 50 stopni
TL = 380    ' temperatura wyłaczenia, pozwala to zrobic histerezę

Dodaj odpowiednie fragmenty do programu termometru i sprawdź jak działa. Stan aktywny to 0 na porcie.

-

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.

Portret użytkownika Początkujący

tranzystory

Zrobiłem drugi układ, który ma być termostatem. Wszystko jest tak samo tylko nie mogłem tym razem dostać tranzystorów bc557b i zastosowałem bc560c do sterowania wyświatlaczem. Podobno mają takie same parametry. A wyświetlacz nie działa. I o co chodzi??

Portret użytkownika mirley

Re: Termometr

Po pierwsze to nie pisz kilku postów jeden pod drugim bo jest to nielegalne, regulamin obowiązuje nie tylko zalogowanych użytkowników, jak muszę usuwać błędne wpisy to nie mam czasu odpowiadać.

Na początek zobacz czy tranzystory przewodzą, zwierając piny w podstawce kawałkiem drutu. Zobaczysz tym sposobem czy wyświetlacz i tranzystory działają. Potem włóż do nowego układu procesor z działającej wersji

-

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.

Portret użytkownika Początkujący

Sory bardzo za te wpisy.

Sory bardzo za te wpisy. Właśnie o to chodzi, że one nie chcą przewodzić. Daje +5 na PD0 i minus na pb0 - pb7 i nic się nie dzieje. układ zasilany bez procesora. Aha układ zrobiony pod attiny2313. Nie podłączałem jescze procka bo narazie chciałem zobaczyć jak działa wyświetlacz ręcznie. I nie działa.