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 mirley

Re: Wyświetlacze

Jaki masz te wyświetlacze..... nie ma czegoś takiego jak wyświetlacz na 9V. Poza pewnymi wyjątkami gdzie duży wyświetlacz w jednym segmencie ma kilka diod w szeregu. Wtedy napięcie na diodach musi byc wieksze niż kilka V.

Chyba że twój wyświetlacz na 9V ma wbudowane rezystory szeregowe do ograniczenia prądu dla napięcia 9V ale nie spotkałem czegoś 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.

Portret użytkownika xojciectadeuszx

Wyświetlacze

Wydaje mi się że najprostszym rozwiązaniem zasilania wyświetlaczy będzie zastosowanie jakiegoś ULN'a. Np. ULN2004 jak pamiętam ma zakres działania od 6-15v. Obciążenie 600mA max.

Panowie mam dwie sztuki DS'a i każda zawyża mi temperaturę o 2 stopnie. Podpowie mi jakaś mądra głowa w której linijce dopisać coś co odejmie 2 stopnie?

-

Sebastian

Portret użytkownika mirley

Re: temperatura

A skąd wiesz że zawyża temperaturę o 2 stopnie?

-

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 xojciectadeuszx

Re: temperatura

Bo pozostałe termometry sztuk 3 i stary rtęciowy pokazują prawidłowo.

-

Sebastian

Portret użytkownika mirley

Re: termometr

po tej linijce:

Tempa = Tempa / 16

dopisz sobie:

Tempa = Tempa - 20

Ale wydaje mi się że cos jest nie tak z pomiarem. DS mierzy temperaturę bezwzględną i zawsze od niego kalibruję wszysko inne. Może wszystkie termometry nie mają jednej temperatury

-

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 gavron04

Witam. Jakie będzie

Witam. Jakie będzie odpowiednie zasilanie do tego układu?

Pozdrawiam

Portret użytkownika mirley

Re: Termometr- zasilacz

Zasilacz 5V stabilizowany, może być konstrukcja na 7805

-

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 jajen

Zbudowałem ten termometr.

Zbudowałem ten termometr. Działa ale zawyża temperaturę o 2,5 st. Sprawdziłem w porównaniu z innym termometrem na ds i rtęciowym. Jest to dziwne, bo myślałem ze układ z takim czujnikiem musi być dokładny. Ale fakt jest faktem. W tej sytuacji chciałbym go wykorzystac jako termostat. Gdzie należy podłączyć przekaźnik? Dzieki za pomoc.

Portret użytkownika jajen

Czy moze ktos udostepnic kod

Czy moze ktos udostepnic kod termostatu do attiny 2313? Ten udostepniony przez kolege Konrada w dziale kody zrodlowe zawiera bledy (zawyzanie temperatury, migotanie wyswietlacza, odwrotny stan gp). Bylbym wdzieczny.

Portret użytkownika mirley

Re: Termostat

A ten kod z termostatem w załączniku jest zły? Nie rozumiem też czemu zawyża temperaturę... z elektronicznego punktu widzenia nie jest to możliwe, chyba że ds się uszkodził. To jest czujnik cyfrowy

-

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 jajen

Wydawalo mi sie , ze w

Wydawalo mi sie , ze w zalaczniku jest kod termostatu do 89C2051. Mozna go uzyc rowniez do attiny 2313? Moze to lamerskie pytanie, ale dopiero zaczynam zabawe z mikrokontrolerami. Z tym zawyzaniem to troche dziwna sprawa, bo z dwoma czujnikami wystepuje ten sam problem. Mowie o problemoie przy wczytanym kodzie kolegi konrada. Zaraz po uruchomieniu temperatura jest prawidlowa, ale po kilku cyklach wlaczenia i wylaczenia termostau , temparatura wariuje i pokazuje o 4 stopnie wiecej. Wylaczenie zasilania na kilka minut i ponowne uruchomienie daje poprawny odczyt, ale tylko na pocztku, potem sytuacja sie powtarza. Jak z tym kodem z zalacznika kolego Mirley? Bedzie działał z attiny2312? Dzieki za zainteresowanie tematem.

Portret użytkownika mirley

Re: termostat

Dodałem termostat pod tiny2313, sprawdź czy działa poprawnie. Ds'a włóż do wody z lodem i zostaw na jakiś czas, co pokaże. Uruchom pierwsze program z jednym czujnikiem

-

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 kaban

re:termostat

ale teraz to się nie miesci do 2313-
112% pamięci

Portret użytkownika jajen

re:termostat

Zaprogramowałem ponyprogiem (bascomem nie dalo rady). Niestety ale wyswietla tylko krzaki.

Portret użytkownika mirley

Re: Program termostat

Sprawdź opcję optymalizacji kodu.

jajen:
sprawdź czy w programie do termostatu są dobre piny do tej płytki wstawione.

-

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 jajen

re:termostat

Dopiero zaczynam zabawe w te klocki i nie czuje sie na siłach do sprawdzania kodu :(. Ale może ktoś bardziej biegły wykryje gdzie tkwi błąd.

Portret użytkownika mirley

Re: Termostat

Sprawdziłem kod i wydaje się doby. Dałem na strone nową wersję bez obsługi przycisków. Zakomentowałem fragment programu z obsługą klawiszy. Faktycznie po skompilowaniu zajmuje więcej niz powinien. Jak zadziała termostat z ustawianymi na sztywno to może potem zajmiemy się klawiaturą. Temperaturę zadziałania i histerezę ustawia sie zmienną na początku programu

-

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 jajen

Sprawdzilem. Bez obslugi

Sprawdzilem. Bez obslugi przycisków działa elegancko!

----------

Z dwoma zastrzezeniami. Stany na GP sa odwrotne (tzn 5v pojawia sie po osiagnieciu temperatury zadanej, a zanika po spadku) i wyswietlacz delikatnie mruga co ok 0,5 sek.

----------

I kolejna sprawa. W miare uplywu czasu odczyt temperatury wzrasta. Po wlaczeniu pokazal 23 st, po 10 min dzialania pokazuje juz 27 st., a wszystko w identycznych warunkach otoczenia. Czyli dokladnie jak przy kodzie kolegi Konrada. Nie jest to sprawa czujnika bo dzieje sie tak również po podpięciu innego dsa. Obydwa czujniki sa nowe i nie mozliwe zeby oba byly walnięte.

Portret użytkownika mirley

Re; Termostat

Stany na GP nie są odwrotne, tak zostało napisane.... stanem aktywnym jest masa, zwiera do masy element podłączony do zasilania.

--------
Spróbuj jeszcze to zmienić, może teraz ds jest za szybko czytany:

If Co1s = 7 Then ' daj tu 10 lub 15 dla testó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.

Portret użytkownika jajen

Zwolnienie odczytu nie

Zwolnienie odczytu nie pomoglo. Spróbowałem obniżyc odczyt przez dodanie wiersza Tempa = Tempa - 20. Zaraz po wlaczeniu zasilania pokazuje temp o 2 st. nizsza od otoczenia (otoczenie 23st, odczyt 21 st) , ale po chwili dzialania (tzn po kilkukrotnym sztucznym ogrzaniu i schlodzeniu) zaczyna pokazywac temp. otoczenia 27 st i tak już zostaje, pomimo ze w otoczeniu jest 23 st. Nic z tego nie rozumiem. Przy wsadzie w wersji termometru tez zawyzal o 2 st. ale wpisanie w/w wiersza wyregulowalo odczyt trwale i temperature juz zawsze byla prawidlowo odczytywana. Nie mam już pomysłu.

Portret użytkownika mirley

Re: Termometr

A kompilowałeś to na najnowszym bascomie? nie wystąpiły żadne błędy? Nie mam innego pomysłu. Zroiłem dużo tych termometrów dla siebie i dobrze działają w przedziale od -15 do 100 stopni. Zawsze dobrze i bez kalibracji. Może procesor coś dziwnie działa. Zamień na innego tiny2313. Masz w wersję z L czy normalną?

-

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 jajen

re:termostat

Kompilowałem bascomem 1.11.9.5. Nie mam akurat tiny pod ręką, ale jak skombinuje to sprawdze.

Portret użytkownika mirley

Re: Programator

do programatora załóż sobie temat na forum, to nie ten temat...

-

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 jajen

re:termometr

OK, sorry za niewłaściwy temat. Co do termometru to na innym attiny zachowuje się identycznie. Odpuszczam chyba, bo lepiej nie będzie. Dzięki za zainteresowanie.

Portret użytkownika rabbit

Quote:Faktycznie po

Quote:
Faktycznie po skompilowaniu zajmuje więcej niz powinien

Moja wersja kodu do termostatu na attiny2313. Mam nieco inny schemat połączeń ale łatwo to przystosować do tytułowego projektu. Attiny chodzi na wew. oscylatorze, do obsługi użyte trzy microswitch'e;menu,więcej,mniej. Całość zajmuje 75% pamięci mikrokontrolera.

$regfile = "attiny2313.dat"
$crystal = 8000000
 
Config Watchdog = 2048
Start Watchdog
 
Config Timer0 = Timer , Prescale = 256                      'timer wyswietlacza
On Timer0 Wyswietlacz
Enable Interrupts
Enable Timer0
Load Timer0 , 125
 
Config 1wire = Portb.5                                      'port 1wire
Config Portb.0 = Output                                     'anody
Config Portb.1 = Output
Config Portb.2 = Output
Config Portb.3 = Output
Reset Portb.0
Reset Portb.1
Reset Portb.2
Reset Portb.3
 
Config Portd = Output                                       'katoda
Set Portd
 
Config Pinb.4 = Input                                       'przyciski
Config Pinb.6 = Input
Config Pina.1 = Input
Config Porta.0 = Output                                     'przekaznik
Set Pinb.4
Set Pinb.6
Set Pina.1
Reset Porta.0
Menu Alias Pinb.4
Mniej Alias Pinb.6
Wiecej Alias Pina.1
 
Declare Sub Pobr_znaku(cyfra As Byte)
Declare Sub Termostat
Declare Sub Czujnik
Declare Sub Przerwa
 
Dim A As Byte , B As Byte
Dim Nr_wys As Byte
Dim T1(2) As Byte
Dim Temp As Byte
Dim T2 As Byte
Dim T3 As Byte
Dim Klik As Byte
Dim Nastawa As Byte
Dim Flaga As Byte
 
'****************************************
Nr_wys = 0                                                  'wartości poczatkowe
Klik = 1
Nastawa = 55
Readeeprom Nastawa , 2
'****************************************
 
'****************************************
Do                                                          'petla glowna
 
Gosub Przerwa
If Klik = 3 Then
Gosub Przerwa
Klik = 1
End If
 
 
Gosub Przerwa
If Klik = 1 Then
Call Czujnik
Gosub Przerwa
Elseif Klik = 2 Then
Call Termostat
End If
 
Loop
End
'****************************************
 
'****************************************
Sub Czujnik:
 
 
If Menu = 0 Then
Bitwait Menu , Set
Klik = Klik + 1
Waitms 100
End If
 
Gosub Przerwa
   1wreset
Gosub Przerwa
   1wwrite &HCC
Gosub Przerwa
   1wwrite &H44
   Waitms 500
Gosub Przerwa
   1wreset
Gosub Przerwa
   1wwrite &HCC
Gosub Przerwa
   1wwrite &HBE
Gosub Przerwa
   T1(1) = 1wread()
Gosub Przerwa
   T1(2) = 1wread()
Gosub Przerwa
   Temp = Makeint(t1(1) , T1(2))
 
T2 = Temp / 2
A = T2 / 10
T3 = Temp / 2
B = T3 Mod 10
 
Waitms 250
 
If Nastawa < Temp Then
Porta.0 = 0
Waitms 250
Else
Porta.0 = 1
Waitms 250
End If
 
End Sub
'*************************************
 
'*************************************
Sub Termostat:
 
 
If Menu = 0 Then
Klik = Klik + 1
Bitwait Menu , Set
Waitms 100
End If
 
If Wiecej = 0 Then
Incr Nastawa
Waitms 250
Writeeeprom Nastawa , 2
 
Elseif Mniej = 0 Then
Decr Nastawa
Waitms 250
Writeeeprom Nastawa , 2
 
Elseif Wiecej = 0 And Mniej = 0 Then
Nastawa = 55
Waitms 250
End If
 
If Nastawa > 99 Then
Nastawa = 0
End If
 
A = Nastawa / 10
 
B = Nastawa Mod 10
 
End Sub
'*************************************
 
'*************************************
 
 Sub Przerwa:                                               'czeka na przerwanie
 Flaga = 0
 While Flaga = 0
 Reset Watchdog
 Wend
 End Sub
'*************************************
 
'*************************************
Sub Pobr_znaku(cyfra As Byte)                               'pobiera znak
 
If Cyfra < 10 Then
Portd = Lookup(cyfra , Liczba)
Else
Portd = 127                                                 'w przeciwnym razie wygas wyswietlacz
End If
 
End Sub
'*************************************
 
 
Wyswietlacz:
Load Timer0 , 125
Reset Portb.0
Reset Portb.1
Reset Portb.2
Reset Portb.3
 
Select Case Nr_wys
   Case 3:
       Call Pobr_znaku(a)
       Set Portb.3                                          'dziesiatki
       Nr_wys = 0
   Case 2:
       Call Pobr_znaku(b)
       Set Portb.2                                          'jednosci
       Nr_wys = 3
   Case 1:
       Portd = 28
       Set Portb.1
       Nr_wys = 2
   Case 0:
       Portd = 70
       Set Portb.0
       Nr_wys = 1
End Select
 
Flaga = 1
Return
 
 
 Liczba:
    Data 64 , 121 , 36 , 48 , 25 , 18 , 2 , 120 , 0 , 16
 
'  znak:  0   1    2    3    4     5     6    7    8     9

Portret użytkownika at89c2051

Świetny projekt, gdyby ktoś

Świetny projekt, gdyby ktoś potrzebował zaprogramowanego at89c2051 moge odsprzedać. kontakt:

Portret użytkownika daniel

Pytanko?

Czy ten wyświetlacz AT5636BG-B Pb-free musi by ze wspólną anodą czy katodą?

-

Daniel92

Portret użytkownika bigt

"Od strony druku należy

"Od strony druku należy wlutować rezystor 4,7k podciągający magistralę 1-Wire (nóźka 9 układu U2) do plusa zasilania."
dlaczego nie uwzględniłeś tego w schemacie ?

Portret użytkownika mirley

Re: Termometr

Wyświetlacz ze wspólną anodą.

Rezystora nie uwzględniłem bo zapomniałem o nim. Jak się zorientowałem to dorzuciłem dodatkowy komentarz a ten temat.

-

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 bigt

Lepiej do rysować bo zaraz

Lepiej do rysować bo zaraz ktoś zacznie pisać że jednak nie dziala ;)
oprócz tego wielu ludzi trafia na schemat z google pics...

Portret użytkownika mirley

Re: Termometr

Sam schemat tak nic nie da bo trzeba jeszcze kod ściągnąć, prędzej czy później trafi do opisu.

-

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 bigt

Rób jak chcesz, ale moje

Rób jak chcesz, ale moje zdanie znasz..
A dostawienie jednego reza to nie jest wielki problem ;]

Portret użytkownika goscccccccc

termostat

a gdzie trzeba podpiąć element sterujący np przekaźnik (2313)

Portret użytkownika mirley

Re: Termostat

Do portu d.6 wychodzący na złącze GP1 na schemacie. Trzeba dac tranzystor PNP od strony zasilania z rezystorem 3,3k na bazie. A przekaźnik od kolektora tego tranzystora do masy. Nie zapomnij o diodzie zabezpieczającej równolegle z przekaźnikiem. Emiter tranzystora oczywiście do +5V. Sprawdź najlepiej na początku czy działa podłączając do wspomnianego portu diodę z szeregowym rezystorem

-

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 wiaderek68

Zawyżona temperatura o 2 stopnie

Temat stary ale chciałem go poruszyć raz jeszcze, bo nie znalazłem na niego odpowiedzi jednoznacznej( przeczytałem wszystko w tym temacie) i nie wiem co dalej zrobić. Mam wskazania wyższe o 2 stopnie od rzeczywistej temperatury. Pomiar robiony za pomocą termometrów laboratoryjnych , więc myślę że pewny. W układzie testowane były 3 nowe ds-y. Wyczytałem tutaj i dopisałem w odpowiednim miejscu linię
"Tempa = Tempa - 20" i temperatura jest ok ale wtedy dla ujemnych wartości wyskakuje "err".Co trzeba zmienić czy dopisać w kodzie żeby też wskazywało minusowe temperatury.

Portret użytkownika mirley

Re: termometr

Jeśli faktycznie termometr wskazuje 2 stopnie więcej to trochę tego nie rozumiem... czujnik jest cyfrowy nie ma kalibracji a zasada jego działania nie pozwala na takie jaja..... spróbuj zmienić sposób odczytu z ds'a z:

 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

na

   1wwrite &HBE
   T = 1wread(2):
   Minus = T.15
   T = Abs(t)
   T = T * 10
   Tempa = T / 16

gdzie nowa zmienna T ma być typu iteger

-

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 wiaderek68

termometr

Jest jeszcze gorzej.Jestem początkującym w tej dziedzinie i może źle coś robię. Dopisałem zmienną T do zmiennych jako Integer. Zastąpiłem część kodu którą podałeś nowym. Ale teraz jak włączam termometr to na wyświetlaczu jest 0.0 i żadnego odczytu z ds-a. Pozdrawiam

Przepraszam za zamieszanie ale trochę poczytałem i chyba doszedłem dlaczego po wpisaniu innego kodu do odczytu z ds-a termometr pokazywał 0.0 . Nie wpisałem przed tym "1wwrite &HCC" . Teraz pokazuje wartość temperatury ale i tak 2 stopnie z dużo. Myślę że moje rozumowanie jest poprawne.

Portret użytkownika mirley

Re: Temperatura

W takim razie odejmij te dwa stopnie i po problemie..... musze jednak jeszcze raz zerknąć do karty katalogowej bo nie podoba mi się takie działanie

-

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 wiaderek68

temperatura

Cześć. Problem został rozwiązany. Wymieniłem przewód łączący ds-a z układem (dałem ekranowany) i wgrałem program z nowym fragmentem kodu.Temperatura ustabilizowała się i jest b.dobrze. Nie ma przekłamań.Dzięki za pomoc.
Chciałem się spytać co robi ta linia "Minus = T.15".
Pozdrawiam

Portret użytkownika mirley

Re: Termometr

Linia ta odczytuje najstarszy bit z liczby reprezentującej temperaturę. Liczba w rejestrze ds'a zapisana jest w kodzie U2 a to znaczy że jak jest wartość ujemna to pierwszy bit oznacza wartość ujemną czyli -2^15 a pozostałe są +. Poczytaj o tym kodzie na wikipedii itp. Odczytując najstarszy bit odczytujemy jednocześnie znak temperatury.

To co zaproponowałem to moja nowsza wersja kodu odczytu temperatury, zajmuje mniej linii

-

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 dax1990

A moje pytanie dotyczy tego

A moje pytanie dotyczy tego jak zabezpieczyles czujnik przed wlozeniem go do akwarium? - o takim jego przeznaczeniu piszesz w temacie.

Portret użytkownika mirley

Re: Termometr

Skorzystałem z koszulki termokurczliwej

-

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 superhiro2

Fusebity do bascoma

czy jest możliwość pokazania fusebitów na obrazku w bascomie.

Portret użytkownika mirley

RE: FUSY

-

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 superhiro2

Re: FUSY

Dzięki za fusebit. Może komuś sie to jeszcze przyda. Dzięki.

Portret użytkownika Virus

Tylko miganie

Z nudów postanowiłem wykonać opisany powyżej termometr. Zanim wykonałem płytkę kilkakrotnie sprawdziłem poprawność wykonania połączeń. Jako, że w sklepie nie mieli już AT89 więc zrobiłem na Attiny2313. Ustawiłem fusebity i wgrałem program. Niestety pokazuje mi tylko na wyświetlaczu środkową kreskę na przemian w każdym segmencie. Niezależnie jaki program bym wgrał i czy jest lub nie ma czujnika temperatury to tylko pływa mi środkowy pasek. Zauważyłem tylko, że chyba sprzedawca w sklepie pomylił mi kondensatory ceramiczne i zamiast 22pF dostałem inne bo na moich napisane jest 220. Czy to może być przyczyną niedziałania układu ? Za info z góry dziękuję.

Portret użytkownika janek

Termometr

Mam ten sam problem, tylko mi środkowe kreski wyświetlaczy świecą ciągle
zaprogramowałem nowy procesor i nic

Portret użytkownika Virus

Oznaczenie kondensatora jest

Oznaczenie kondensatora jest jednak prawidłowe i wynosi 22pF. Jedynie dopatrzyłem się, że mam Attiny2313 z literką V na końcu. Według plików katalogowych wychodzi, że układ pracuje do 10MHz a przecież w termometrze mamy kwarc 12MHz. Dobrze, że mam jeszcze drugą Attiny2313 z literką A na końcu. Zaprogramuję i zobaczymy czy zadziała.

Portret użytkownika Virus

Ciągle tylko miga

Zamieniłem Attiny na drugą. Zaprogramowałem najpierw na termostat później na termometr. Sprawdziłem jeszcze raz połączenia i czy nie ma jakiś zwarć. Niestety jedynie co mi pokazuje na wyświetlaczu to miganie środkowych kresek. Ja już nie mam pomysłów i nie wiem co jest nie tak. Może ktoś ma jakieś propozycje!?

Portret użytkownika mirley

Re: Termometr

Problemem jest napewno brak czujnika lub zły czujnik. Sprawdź dokładnie czy ds18b20 jest dobrze podłączony i czy ma rezystor podciągający 4,7k dolutowany między linię danych a linię 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.