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 macirk

Czy przy podłączaniu na 2

Czy przy podłączaniu na 2 przewodach muszę coś zmieniać w kodzie programu? Dalej nie wiem co z tym wyświetlaczem.. Tak jak mówiłem, połączyłem wszystkie segmenty od a do a itd aż do df-df, zostały mi po 2 nogi na wyświetlaczach położone naprzeciw siebie, złączyłem je też razem i potraktowałem jako anode 1 anode 2 i anodę 3, czy przy takim podłączeniu powinno to działać? Bo mi niestety to nie działa, tak jak pisałem wcześniej - każdy segment wyświetla pionową kreskę. Programowanie i fusebity są ok. Nie wiem co może byc źle.. Wyświetlacza potrójnego nie ma w moim mieście, a wysyłka z Allegro do Lublina droga..

Portret użytkownika Gregorius

.

wyjmij z podstawki procesor, podłącz zasilanie i przetestuj wyświetlacz. http://mirley.firlej.org/budowa_ukladow_elektronicznych patrz punkt 7.

Portret użytkownika maciek

Ok, wlutowałem przewody od

Ok, wlutowałem przewody od wyświetlacza od nowa i wydaje się spoko, tzn każdy segment i każdy wyświetlacz działa na odpowiednim pinie w podstawce. Teraz mam taki problem - wyświetlanie jest po mocnym dociśnięciu procesora, czy to jakieś zimne luty na podstawce? A może gdzieś mam zwarcie czy coś?
Drugi problem, że jak już docisnę, to wyświetla mi '' - - - '', z tego co wyczytałem to wina rezystora 4.7 lub podłączenia czujnika. Czujnik mam podpięty (na 3 nogach) i rezystor też mam, co zatem jest nie tak, że wyświetla mi te 3 poziome kreski na środku wyświetlacza? Pzdr

Portret użytkownika maciek

Sprawdziłem, czujnik i

Sprawdziłem, czujnik i rezystor 4.7 mam dobrze wpięty, przypominam,układ na attiny 2313, c3 zastąpiony kolejnym rezystorem 4.7. Proszę o pomoc..

Portret użytkownika Gregorius

.

Mam dokładnie ten sam problem. Wygiąłem troche nóżki procesora do wewnątrz żeby się lepiej stykały z podstawką i działa. Wina jest zimnych lutów lub podstawki, albo tego i tego. Proponuje posprawdzać napięcia na każdym pinie podstawki, dodatkowo testerem czy wszystko styka ze ścieżkami.

Poza tym na odległość nikt nie powie co może być nie tak, musisz sam do tego dojść. To na pewno jest wina lutowania/podstawki. Lupa, miernik do łapy i sprawdzamy.

Portret użytkownika maciek

Ok, jak rezystor od strony

Ok, jak rezystor od strony płytki dotyka lutów to jest ok, a czujnik miałem jednak źle zamontowany, odwrotnie ;) Temperaturę wyświetla jednak błędnie.. W pokoju 3 termometry wskazały 21stopni a mój termometr pokazuje 24stopnie i to nie jest stała różnica o te 3 stopnie, czasami mniej lub wiecej.. Coś źle spiąłem, czy może tak to już musi być? Pzdr

Portret użytkownika mirley

Re: Czujnik

Jak miałeś czujnik na odwrót zapięty to mógł się spalić, chociaż wcale nie musi tak być. Jedne termometr różni się na + drugi na - i już 3 stopnie różnicy gotowe

-

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 maciek

Generalnie jest tak, że mam

Generalnie jest tak, że mam bardzo dokładny termometr elektroniczny, który jest pożyczony od kumpla, on pokazuje mi stałą temperaturę 18.5 stopnia w pokoju. Ten który zrobiłem zaczyna od 18, rośnie sobie powoli do 20stu i czasami aż na 22staje, gdzie tamten kupny ma wahnięcia o 0.3 stopnia.. To znaczy, że mój czujnik może być uszkodzony? Nie kosztuje on 10groszy, więc trochę szkoda mi go kupować niepotrzebnie, czy opis wskazuje na uszkodzenie?
O, teraz np na elektronicznym jest 17.7stopnia, a na tym z attiny mam 19.5... Muszę mieć bardzo dokładny termometr, bo używam go w browarze domowym.

Portret użytkownika mirley

Re: DS18B20

Każdy DS będzie trochę zawyżał temperaturę ze względu na samopodgrzewanie.... ale nie powinno to być 2 stopnie. Mogłeś uszkodzić czujnik przez odwrotne jego podłączenie. Spaliło się coś w strukturze i pobiera większy prąd = większe grzanie. Można próbować obniżyć zasilanie np do 3-4V dla samego czujnika, próbować zwiększac trochę rezystor pull-up. Mozna sprawdzić na innym DS bo w sumie to 5zł albo mniej teraz kosztuje. Można tez czujnik włozyć do metalowej obudowy aby się mniej podgrzewał samoczynnie

-

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 plejek

Tranzystory

Rezystory przy tranzystorach mają być pomiędzy kolektorem i bazą czy pomiędzy emiterem i bazą ? Na schemacie mirleya kierunek prądu na tranzystorach jest z góry do dołu a w datasheet jest odwrotnie dlatego mam wątpliwości. http://www.datasheetcatalog.org/datasheet/stmicroelectronics/8883.pdf

Portret użytkownika plejek

Tranzystory

Chodzi mi o rezystory R2 R4 R6

Portret użytkownika demsy1

Tranzystor

Kolego plejek jaka jest różnica między tymi dwoma tranzystorami co na rysunku?

Odp: Taka sama co między schematem, a datasheetcatalog

Portret użytkownika raz/dwa

Panowie mam problem z

Panowie mam problem z prawidlowym dzialaniem termometru. Mianowicie po zmontowaniu wszystkiego na plytce i po zasileniu ukladu, jedyne co wyswietla mi sie na wyswietlaczu to zapalony na wszystkich segment b:
http://zapodaj.net/images/61550d601ead8.jpg

Po wyjeciu mikroprocesora z podstawki i zwieraniu pinow do masy (tak jak to podal mirley na 4 stronie komentarz #14) wszystkie segmenty sie zapalaja. Plytke robilem od nowa sam, ale wedlug tego co jest na stronie, wersja z dioda sygnalizujaca ujemna temperature i attiny2313 (tu schemat):

http://zapodaj.net/03da90768e114.png.html

Jaka moze byc przyczyna ze to nie chce hulac? Zle zaprogramowany mikroprocesor?

Portret użytkownika demsy1

Fusebity dobrze ustawione?

Fusebity dobrze ustawione? zaprogramuj jeszcze raz uC

Portret użytkownika raz/dwa

Wlasnie cholera nie mam teraz

Wlasnie cholera nie mam teraz jak zaprogramowac tego procka jeszcze raz dopiero w poniedzialek. Myslisz ze to cos z procesorem? Mam nadzieje ze nic z plytka nie jest skopane, ale skoro sie te segmenty swieca to chyba jest ona ok.

Portret użytkownika maciek

Udało się! wszystko działa

Udało się! wszystko działa jak należy, użyłem też minizasilacza Twojego autorstwa, cały przebieg budowy opisałem na moim blogu ;) Zapraszam http://otwieraczdopiwa.blogspot.com/2013/04/roboczy.html

Portret użytkownika raz/dwa

Zaprogramowalem ponownie

Zaprogramowalem ponownie hexem dla attiny2313, ustawilem fusebity i nadal nic caly czas swieci sie tylko jeden segment na wyswietlaczach. Wyswietlacz sprawdzony, kolejne segmenty sie swieca jak sprawdzam. Co moze byc zle?

Portret użytkownika mirley

Re: Termometr

Masz podłączony czujnik temperatury poprawnie? Mam podejrzenie że masz jednocześnie dwie rzeczy. Źle podłączony czujnik i wyświetlacz z innymi wyprowadzeniami. Przez to świecą ci się segmenty inne a nie 3 kreski w środku przy braku czujnika

-

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 raz/dwa

Uzylem wyswietlacza

Uzylem wyswietlacza LTD056BSR-10 taki:
http://rutronic.eu/opisy/ldd/LTD056.pdf
Czujnik podlaczony jest raczej poprawnie (masa do masy, vcc do vcc).

Portret użytkownika mirley

Re: uC

Płytkę projektowałeś sam - wykluczasz pomyłki w zasilaniu procesora? .....niestety nie mam innego pomysłu. Sprawdź jakie napięcie jest na pinie 20 względem masy pin 10 procesora? Popatrz czy nie ma zwarć przy kwarcu bo uniemozliwi to 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 raz/dwa

Podlaczylem teraz odwrotnie

Podlaczylem teraz odwrotnie czujnik i cos sie dzieje, tzn. wyswietla jakies glupoty, ale ewidentnie cos sie dzieje pod wplywem zmiany temperatury. W linku filmik jak to teraz funkcjonuje:

http://hostuje.net/file.php?id=c518ccf3eb94e16314ca33e88c7d32ec

Jest jeszcze jakis ratunek zeby to normalnie funkcjonowalo? :)

Portret użytkownika raz/dwa

Napiecie sprawdzilem miedzy

Napiecie sprawdzilem miedzy punktami ktore podales i jest na nich 5V

Portret użytkownika mirley

RE: Wyświetlacz

Myślę że na bank wyświetlacz, który masz nie ma związku z tym pdf który jest rzekomo do niego i piny segmentów są zamienione. Wyjmij procka z podstawki jeszcze raz i wykonaj sprawdzenie czy wszystkie segmenty swieca na poprawnych pinach. Na pinie 0 ma świecić segment a czyli poziomy na samej górze, na pinie 1 ma świecić b czyli pionowy na górze po prawej itd. Jesli to jest prawidłowe i świecenie segmentów zgadza się z pinami procka to się normalnie poddaje :)

-

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 raz/dwa

Dzieki zaraz bede probowal to

Dzieki zaraz bede probowal to sprawdzac, bo faktycznie ciekawe czy ten pdf sie nie zgadza z rzeczywistoscia:)

Portret użytkownika demsy1

Wyświetlacz

Co masz napisane na wyświetlaczu?

Portret użytkownika raz/dwa

Jesli chodzi ci o to co sie

Jesli chodzi ci o to co sie na wyswietlaczu pojawia to podalem 4 posty wyzej. Natomiast na obudowie wyswietlacza znajduje sie jedynie jego nazwa LTD056BSR-10.

Portret użytkownika demsy1

Wyświetlacz

Tak jak kolega Mirek pisał sprawdź raz jeszcze wyprowadzenia wyświetlacza

Portret użytkownika Doctore

Termostat

Witam, zrobiłem schemat i płytkę, proszę o sprawdzenie bo jest to moja druga PCB.
Termostat ma mieć ustawianą temperaturę za pomocą tych dwóch przycisków, histereza najlepiej 1stC(a może też ustawiana?).
Jeden termostat ma być do grzałki a drugi do chłodzenia.
Mi się to widzi np. tak:
-przytrzymujemy pierwszy przycisk i następnie za pomocą obu ustawiamy temp. co 0,1stC
-przytrzymujemy drugi przycisk i ustawiamy histerezę za pomocą obu też co 0,1stC
-przytrzymujemy oba i wybieramy tryb grzania lub chłodzenia za pomocą obu lub któregoś z przycisków, wyświetla się np. HE(od heating) i CO(od cooling)
Czy takie funkcje ma wsad w załączniku?
Jeśli nie to czy mogę prosić kogoś by przerobił ten programik termostatu i podał na tacy w hexie?(tak wiem leń jestem i dużo wymagam ale dopiero zaczynam czytać teorię nt. programowania w C a aktualnie nic nie umiem, jak się nauczę programować to też będę w tym pomagać innym leniom).
Aha, jeszcze jedno pytanko, czy ten uC można zaprogramować zwykłym usbavr z ebay'a?
Z góry dzięki :)

Link do schematu i PCB http://speedy.sh/Dn5xQ/termo.rar

-

Co cie nie zabije to cie wzmocni(nie dotyczy kondensatora 400V w zasilaczu impulsowym).

Portret użytkownika raz/dwa

Dzieki za pomoc termometr juz

Dzieki za pomoc termometr juz dziala :) Mam pytanie odnosnie zasilania czy jest jakis w miare tani zasilacz ktory moglbym uzyc do zasilania tego termometru? Musze oddac caly projekt, a zasilacz ktory obecnie wykorzystuje kosztowal mnie jakies 20zl i szkoda mi oddawac. Moze jakis zasilacz do starej nokii, albo jakis uklad ktory moglbym sam zlozyc sie nada?

Portret użytkownika Doctore

Zasilacz

Możesz użyć ładowarki(zasilacza) po jakimś telefonie, na pewno ci się jakaś wala po chałupie(praktycznie każda jest na 5V)

-

Co cie nie zabije to cie wzmocni(nie dotyczy kondensatora 400V w zasilaczu impulsowym).

Portret użytkownika raz/dwa

No wlasnie chyba

No wlasnie chyba niekoniecznie kazda bedzie odpowiadac. Pytanie do Mirleya mozna zstosowac typowy zaislacz di telefonu komorkowego?

Portret użytkownika mirley

Re: Ładowarka

Można zastosować zasilacz od telefonu ale trzeba najpierw zmierzyc co on ma na wyjściu. Przeciętna tania ładowarka za 5zł a aalegro daje np 11V bez obciążenia po podłączeniu do tel spada do np 4.7V. Trzeba sprawdzić napięcie bez obciążenia i np z rezystorem jako obciażenie dla 100mA lub 50mA jak sie to zachowuje

-

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 Doctore

...

Ponawiam pytania bo jutro przyjdą elementy i chciałbym to wszystko złożyć.

-

Co cie nie zabije to cie wzmocni(nie dotyczy kondensatora 400V w zasilaczu impulsowym).

Portret użytkownika raz/dwa

Mirley dzieki w takim razie

Mirley dzieki w takim razie bede to sprawdzal :)

Portret użytkownika Manianassss

jakie piny

witam
które piny są do podłączenia leda jak mam atiny2313 bo nie wiem pod które podpiąć dany segment

Portret użytkownika demsy1

Przecież na schemacie

Przecież na schemacie wszystko jest uC AT89C2051 pokrywa się z attiny 2313

Portret użytkownika Manianassss

jakie piny

jak się dobrze popatrzyłem to jednak sa te same czyli
od PB0 do PB7 wyświetlanie
A PD0, PD1 i PD2 sterowanie poszczególnym segmentem :)
Dzięki.

Portret użytkownika Doctore

problem

Witam, mam problem, podczas próby przetestowania wyświetlacza zwierając co trzeba w podstawce uC nic się nie wyświetla.
Nie ma żadnych zwarć ani przerwań, sprawdzalem multimetrem.
Natomiast sam wyświetlacz działa bo sprawdziłem go multimetrem na funkcji <200Ohm i swiecą wszystkie segmenty.
Więc co jest nie tak? Schemat i PCB wyżej.

-

Co cie nie zabije to cie wzmocni(nie dotyczy kondensatora 400V w zasilaczu impulsowym).

Portret użytkownika demsy1

Problem

a jaki wyświetlacz?

Portret użytkownika Doctore

Taki jak Mirek(wsp. anoda),

-

Co cie nie zabije to cie wzmocni(nie dotyczy kondensatora 400V w zasilaczu impulsowym).

Portret użytkownika raz/dwa

Pytanie mam czy w ten projekt

Pytanie mam czy w ten projekt bedzie dzialal na dowolnym czujniku temperatury 1-wire? Czy to dziala tylko na DS18B20?

Portret użytkownika mirley

Re: Termometr

Moze działać jeszcze z Ds1820 po zmianie jednej linijki

-

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 Doctore

Jak nie wpisze tytułu to czego wkleja się początek wiadomości??

Ehh, ignorujecie mnie, znów...

-

Co cie nie zabije to cie wzmocni(nie dotyczy kondensatora 400V w zasilaczu impulsowym).

Portret użytkownika mirley

Re: Termometr

To że wyświetlacz jest ze wspólną anodą nie znaczy że wyprowadzenia są te same. Porównaj.... Patrząc na płytkę obecność pól wypełniających może spowodować mnóstwo zwarć.... Najpierw sprawdź czy wspólne anody są na odpowiednich pinach i czy układ z tranzystorami T1-T3 działa popranie i napięcie na kolektorach tranzystorów pojawia się po podaniu sygnałów niskich na odpowiednie piny procka sterujące bazami tych tranzystoró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 beginner

2 czujniki na odrębnych pinach

Zrobiłem ten termometr na 89C2051 i działa to bez zarzutu ale chciałbym dodać drugi czujnik na odrębnym pinie (aby uniknąć problemów z numerami seryjnymi w razie wymiany), wybierany przyciskiem. Jak przerobić program dla 2051, by oba DS-y były odczytywane naprzemiennie? Z góry proszę o wyrozumiałość, bo nie jestem za mocny w programowaniu. Pozdrawiam

Portret użytkownika mirley

Re: DS

Trzeba w kazdym poleceniu 1wire wstawic pin na którym ma sie odbywac komunikacja według szablonu z helpa:

Quote:
1WRESET pin
1WWRITE var1 [ , bytes] pin
var2 = 1WREAD( [ bytes] [, pin])
var2 = 1WREAD( [pin])

W praktyce dodajesz poprostu P3.n gdzie n jest zmienną byte okreslająca numer pinu. W innym miejscu programu przypisujesz zmiennje n odpowiednią wartość 5 dla p3.5 i 7 dla p3.7 itp.

-

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 beginner

2 DS-y na odrębnych pinach

Zrobiłem tak, jak poradził Mirley - dodałem zmienną kanal typu Bit, ponieważ czujniki mam na pinach P3.0 i P3.1 i przerobiłem kod:

Quote:

1wreset P3.kanal

If Pomiar = 1 Then
1wwrite &HCC P3.kanal
1wwrite &H44 P3.kanal
Else
1wwrite &HCC P3.kanal
1wwrite &HBE P3.kanal

Niestety, choć syntaktycznie jest OK, to kompilator Bascoma (używam wersji 2.0.14.0 Demo) wyrzuca takie błędy:

Quote:

Error 108 : BIT variable not found or Dimensioned [P3.KANAL] In File : D:\BAS\2X18B20.BAS , line : 210
Error 131 : Illegal asm-command : Setb [P3.KANAL] In File :
D:\BAS\2X18B20P.BAS , line : 210
Error 105 : Internal Assembler error In File :
D:\BAS\2X18B20.BAS , line : 210
Error 117 : Illegal asm-command : Jb [P3.KANAL] In File :
D:\BAS\2X18B20.BAS , line : 210
Error 105 : Internal Assembler error In File :
D:\BAS\2X18B20.BAS , line : 210
Error 108 : BIT variable not found or Dimensioned [P3.KANAL] In File : D:\BAS\2X18B20.BAS , line : 210
Error 124 : Illegal asm-command : Mov [P3.KANAL] In File :
D:\BAS\2X18B20.BAS , line : 210
Error 131 : Illegal asm-command : Setb [P3.KANAL] In File :
D:\BAS\2X18B20.BAS , line : 210
Error 105 : Internal Assembler error In File :
D:\BAS\2X18B20.BAS , line : 210
Error 120 : Label not found [.PRZERWANIE] In File :
, line : 210

i co ciekawe, wszystkie są w ostatniej (210) linii programu. Ma ktoś jakiś pomysł?

Portret użytkownika Chester

2 Ds'y

Według mnie źle napisałeś sobie program. Poniżej masz przykład, który stworzyłem z pomocą kolegi kaktus aby dokonać pomiaru dwóch niezależnych pomiarów temperatury gdzie DS'y 18B20 znajdują się na osobnych pinach. Porównaj sobie i popraw ewentualne błędy :) Pozdrawiam.

Dim Lsb As Byte
Dim Msb As Byte
Dim Lsb1 As Byte
Dim Msb1 As Byte
Dim T1 As Single
Dim T2 As Single
Dim Tekst1 As String * 4
Dim Tekst2 As String * 4
 
Config 1wire = Portb.0
Config 1wire = Portd.7
 
1wreset Pinb , 0
   1wwrite &HCC , 1 , Pinb , 0
   1wwrite &H44 , 1 , Pinb , 0
   Waitms 750
 
   1wreset Pinb , 0
   1wwrite &HCC , 1 , Pinb , 0
   1wwrite &HBE , 1 , Pinb , 0
 
   Lsb = 1wread(1 , Pinb , 0)
   Msb = 1wread(1 , Pinb , 0)
 
   T1 = Msb
   Shift T1 , Left , 8
   T1 = T1 + Lsb
   Shift T1 , Right , 4
 
   Tekst1 = Fusing(t1 , "#.#")
 
'-------------------------------------------------------------------------------
 
   1wreset Pind , 7
   1wwrite &HCC , 1 , Pind , 7
   1wwrite &H44 , 1 , Pind , 7
   Waitms 750
 
   1wreset Pind , 7
   1wwrite &HCC , 1 , Pind , 7
   1wwrite &HBE , 1 , Pind , 7
 
   Lsb1 = 1wread(1 , Pind , 7)
   Msb1 = 1wread(1 , Pind , 7)
 
   T2 = Msb1
   Shift T2 , Left , 8
   T2 = T2 + Lsb1
   Shift T2 , Right , 4
 
   Tekst2 = Fusing(t2 , "#.#")

Portret użytkownika beginner

2 DS-y

Czy powyższy program jest na pewno dla Bascoma 8051, bo kompilator nie trawi zapisów typu: "Pinb , 0" czy "Pind , 7"

Portret użytkownika mirley

Re: DS

Powyższy program jest dla AVR a nie dla 8051.... trzemaj sie tego co help mówi.... sprawdź zatem jak to działa jeśli pominesz tą zmienną kanal i dasz poprostu na sztywno np p3.1 jako port. Może coś z tą zmienną jest nie 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.