Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Jaki czujnik do pomiaru temperatury Atmega32 LCD język C

CBR-MAR 04 Jul 2007 21:52 2894 9
e-mierniki
  • #1
    CBR-MAR
    Level 9  
    Witam.
    Chciałbym zrobic termometr na atmega32. Mikrokontroler ten posiada w swej strukturze przetworniki A/C , takze myślę o jakichś rezystancyjnych czujnikach. W jaki sposób należy podłączyć czujnik do mikrokontrolera?? Prosiłbym o jakis schemacik:)
    Termometr ten programować chce w języku C i chciałbym aby wyswietlana temperatura była na LCD.
    Moze robił ktos jakis termometr w C i moglby udostepnic kodzik i schemacik podlaczenia czujnika??
    Z góry badzo dziekuje
    Pozdrawiam
    Mariusz
  • e-mierniki
  • #2
    redart
    Level 23  
    A jaki zakres temperatur chcesz mierzyć?
    Jeśli temperaturę na dworze lub w domu to zamiast kombinować z ADC nie prościej zastosować DS1820 (DS18B20)? Zakres -55° ÷ +125°C.
    Temat odczytu danych z DS'a był wielokrotnie klepany na elce, chyba w każdej konfiguracji języka i typu procka...
    Pzdr.

    PS:
    np to:
    https://www.elektroda.pl/rtvforum/topic714937.html
  • #3
    CBR-MAR
    Level 9  
    Witam
    Chodzi mi o mierzenie temperatur z zakresu od -10 do 110 st. C .
    Myslałem o zastosowaniu DS'a lecz nie wiem jednej rzeczy: Chciałbym aby dla danej temperatury zalaczał mi dane urządzenie przez mikrokontroler. Nie wiem jak to sie robi takze przy rezystancyjnych czujnikach, ale chyba dużo prościej niż przy DS'e(chodzi mi o kod programu).
    Jesli można to prosiłbym o jakis kod w C ktory zczytywałby i pokazywal na LCD temperature.

    Dziękuje uprzejmie za wszeską pomoc

    Pozdrawiam

    Mariusz

    Dodano po 6 [minuty]:

    jesli chodzi o ten link na kod DS to wielokrotnie go przegladalem, lecz mam pytanie. W jaki sposob został podlaczony DS do mikrokontrolera(pod ktory PORT i PIN).
    Mam zamiar kupic DS i sprawdzic czy kod dziala.
    Chciałbym zastosowac kilka czujnikow temperatury i z kazdego z nich pobierac i wyswietlac temperature a na podstawie pomiarow sterowac konkretnymi urzadzeniami na wyjściu mikrokontrolera. Tylko w jaki sposob to sie robi dla DS??? bo jesli chodzi o rezystancyjne to chyba chodzi o pomiar napiecia w danym zakresie,a z zakresu takiego juz nie problem ustalic sobie wartosci na zalaczenie urzadzenia.

    Pozdrawiam
    Mariusz
  • e-mierniki
  • #5
    Ch.M.
    Level 27  
    Witam
    Rezystancyjny to pomyłka: skomplikowany układ do pomiaru rezystancji. Jesli nie lubisz czujników z wyjściami cyfrowymi to zawsze możesz podłączyć np. LM35 do ADC
    Pozdrawiam
  • #6
    redart
    Level 23  
    CBR-MAR wrote:

    Chciałbym aby dla danej temperatury zalaczał mi dane urządzenie przez mikrokontroler. Nie wiem jak to sie robi takze przy rezystancyjnych czujnikach, ale chyba dużo prościej niż przy DS'e(chodzi mi o kod programu).

    Obsługa DS'a jest prosta, skoro decydujesz się na C i szukasz gotowca to rozumiem, że coś kumasz z tego języka - ja tak średnio...

    Quote:
    jesli chodzi o ten link na kod DS to wielokrotnie go przegladalem, lecz mam pytanie. W jaki sposob został podlaczony DS do mikrokontrolera(pod ktory PORT i PIN).

    Wystarczy więc przeanalizować kod i odnaleźć pin z którego gotowy program odczytuje dane DS'a. We wskazanym przeze mnie linku jest to PortA.0. Nie znam C, ale takie rzeczy można łatwo zidentyfikować.

    Quote:
    Chciałbym zastosowac kilka czujnikow temperatury i z kazdego z nich pobierac i wyswietlac temperature a na podstawie pomiarow sterowac konkretnymi urzadzeniami na wyjściu mikrokontrolera. Tylko w jaki sposob to sie robi dla DS???

    Dzięki magistrali 1Wire możesz podpiąć wszystkie czujniki na jedną linię portu i identyfikując je po numerze odczytywać temp, lub podpiąć każdy oddzielnie do innego pinu i indywidualnie je adresować używając właśnie numeru pinu procka. Nie interesuje cię wtedy odczyt ID, tylko sama temperatura. Co zrobisz z odczytanymi wartościami temp to już wyłącznie sprawa programu, nie czujników.

    Quote:
    bo jesli chodzi o rezystancyjne to chyba chodzi o pomiar napiecia w danym zakresie,a z zakresu takiego juz nie problem ustalic sobie wartosci na zalaczenie urzadzenia.

    Nie ma znaczenia w jaki sposób "zdobędziesz" wartość interesującej cię temperatury w danym punkcie przestrzeni, może to być wartość cyfrowa z DS'a, napięcie z LM35 lub nawet rezystancja (czyli docelowo także napięcie) z termistora... Ważne jak wykorzystasz zdobyte dane. Mikrokontroler ma to do siebie, że cała logika zaszyta jest w programie, a nie w dołączonych gratach. Należy odpowiednio napisać program. Funkcja termostatu to raptem 2 warunki (pętle if): jeśli temp>x to załącz cośtam (ustaw portx.x w stan wysoki lub niski- jak tam pasuje) i adekwatnie dla temp<x (ustaw portx.x w stan przeciwny).
    Ja piszę przede wszystkim w bascomie, więc gotowców w C nie posiadam, ale w necie ich nie brak.
    Pzdr.

    Pozdrawiam
  • #7
    CBR-MAR
    Level 9  
    Zakupilem czujnik DS18B20 podlączylem go: Vdd = 5V, GND - masa, DQ - PORT B, Pin 0. Wgralem program obslugujący od ukladu "EVBavr05" i niestety nie dziala:( nie wiem co moze byc tego przyczyną... Moze mi ktoś poda gotowy kod pod dallasa, bo te co sa na elektrodzie to wyskakuje mi bląd!

    AllocationBase 0x0, BaseAddress 0x71590000, RegionSize 0x170000, State 0x10000
    C:\WinAVR\utils\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 487
    rm -rf TEMP.o 1T.o TEMP.elf dep/* TEMP.hex TEMP.eep
    AllocationBase 0x0, BaseAddress 0x71590000, RegionSize 0x170000, State 0x10000
    C:\WinAVR\utils\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 487
    make: [clean] Error 1 (ignored)
    Build succeeded with 0 Warnings...
    AllocationBase 0x0, BaseAddress 0x71590000, RegionSize 0x170000, State 0x10000
    C:\WinAVR\utils\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 487
    avr-gcc.exe -mmcu=atmega32 -Wall -gdwarf-2 -O0 -MD -MP -MT mar-temp.o -MF dep/mar-temp.o.d -c ../mar-temp.c
    ../mar-temp.c:384: fatal error: opening dependency file dep/mar-temp.o.d: No such file or directory
    compilation terminated.
    make: *** [mar-temp.o] Error 1
    Build failed with 1 errors and 0 warnings
    ...[/i]

    nie wiem takze czy zwykle podlaczenie pod pin kontrolera jest ok??

    Prosze o pomoc...
    dziekuje .
    Pozdrawiam...
  • #8
    LichyiChydy
    Level 12  
    Pamiętaj że linę DQ czyli sygnałową trzeba podciągnąć przez rezystor do plus. Wartość tego rezystora to naj częściej 4,7 K
  • #9
    CBR-MAR
    Level 9  
    Moze ktos podac sposob podlaczenia DS18B20, bo kazdy cos dodaje i robi sie w tym maly bałagan, tak od poczatku do końca???
    Bardzo prosze...

    Pozdrawiam
    Mariusz
  • #10
    slomek83
    Level 12  
    Vcc do Vcc
    Gnd do Gnd
    magistrale dancyh do jednego z pinow portu mikrokontrolera i do tego rezystor(4,7kOhma) ktory jest polaczony z Vcc

    Na zdjeciu masz przyklad polaczenia innego urzadzenia 1wire, ktory obrazuja jak polaczyc rezytor podciagajacy do zasilania