logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak podłączyć LM35 do ATmega, aby mierzyć temperaturę i sterować diodami?

14 Kwi 2007 12:32 35298 39
Najlepsze odpowiedzi LABEL_AI_GENERATED

Jak podłączyć czujnik LM35 do ATmegi, żeby odczytywać temperaturę z ADC i na tej podstawie sterować diodami?

LM35 podłączasz do jednego z wejść ADC ATmegi: wyjście LM35 do pinu analogowego, a zasilanie i masę czujnika do wspólnych VCC i GND z mikrokontrolerem; dokładny pin wejścia A/D sprawdzasz w nocie katalogowej układu. [#3791748] ATmega ma wbudowany przetwornik A/C, więc po odczycie wartości z ADC cała reszta to program: przeliczenie wyniku i podjęcie decyzji, ile diod zapalić. [#3791748][#3794561] W praktyce trzeba odczytać dane z wejścia analogowego, rozdzielić je na bajt starszy i młodszy, przeskalować i dopiero potem wysłać na wyświetlacz, UART albo wyjścia LED. [#3794561]
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
  • #1 3786394
    Konto nie istnieje
    Konto nie istnieje  
  • #2 3786523
    msgow
    Poziom 27  
    Posty: 725
    Pomógł: 115
    Ocena: 88
    Witam
    To jest zwykły czujnik analogowy więc do pracy trzeba zaprzęgnąć przetwornik Adc który to atmega posiada.
    Wiecej informacji w aplikacji danego proca o jego wyposażeniu.
    Pozdrawiam.
  • #3 3787637
    submariner
    Poziom 32  
    Posty: 2319
    Pomógł: 51
    Ocena: 268
    obawiam sie , ze nie masz doswiadczenia z mikrokontrolerami a to znaczy ze bardzo sobie utrudniles zycie , bo zanim uruchomisz ten termometr to muszisz poznac jakis jazyk programowania mikrokontrolerow np bascom i zakupic / skonstruowac programator.
    Ale to dobry poczatek aby wejsc w mikrokontrolery ,zycze sukcesow.
  • #4 3791285
    Konto nie istnieje
    Konto nie istnieje  
  • Pomocny post
    #5 3791748
    Artur k.
    VIP Zasłużony dla elektroda
    Posty: 25889
    Pomógł: 1279
    Ocena: 1702
    Witam

    Nie trzeba żadnego schematu.

    Zerknij do notki katalogowej mikroprocesora i zobacz na której nóżce masz wejście przetwornika A/D i do niego podłącz LM35.
    Cała reszta to kwestia programu, który musisz napisać i wpisać go do mikroprocesora.

    Prawdę mówiąc przekombinowałeś z tym ATmega, prościej byłoby zbudować termometr na LM3914 (linijka diodowa) albo ILC7107 (odczyt cyfrowy).

    Pozdrawiam
  • #6 3791756
    Konto nie istnieje
    Konto nie istnieje  
  • Pomocny post
    #8 3794561
    submariner
    Poziom 32  
    Posty: 2319
    Pomógł: 51
    Ocena: 268
    dokladnie wszystkie te piny to wejscia analogowe , teraz tylko zczytac z nich dane , poustawiac bajty-starszy/mlodszy, wyskalowac i przeniesc na display lub UART :)
  • #9 3794928
    Konto nie istnieje
    Konto nie istnieje  
  • #10 3795237
    submariner
    Poziom 32  
    Posty: 2319
    Pomógł: 51
    Ocena: 268
    wazne jest tez aby napiecie na wejsciu analogowym atmegi nie przekraczalo napiecia referencyjnego jest ono dla atmegi na poziomie 2,5v ale nie moge doszukac sie zaleznosci nap. wyjsciowego dla lm35 jest 6V , ale to dla 35V zasilania nie weim jak bedzie przy 5V zasilania jesli ponad te 2-2,5V to musisz zastosowac dzielnik na wejsciu analogowym.
    Jakim programatorem dysponujesz ? Bedzie obslugiwany przez Bascom?
    Niestety tu musisz troche poczytac w helpach dla bascoma lub innego jezyka programowania , jesli nie jestes informatykiem to polecam wlasnie bascom.
  • #11 3797530
    Konto nie istnieje
    Konto nie istnieje  
  • #12 3797684
    submariner
    Poziom 32  
    Posty: 2319
    Pomógł: 51
    Ocena: 268
    Hm mozesz oczywiscie konstruowac programator ale jak jest to cos nietypowego... ( nie znam tego schematu i z czym to wspolpracuje) moze skorzystaj z czegos standardowego z dostepnymi materialami najtansze na allegro np: http://allegro.pl /item185019190_programator_isp_stk200_300_rohs_avr_atmel_stk200_.html
    jak cos nie bedzie chcialo dzialac to zawsze ich mozesz zapytac.
    przynajmniej odpadna ci kolopoty z uruchaminiem programatora
  • #13 3797852
    Konto nie istnieje
    Konto nie istnieje  
  • #14 3797864
    snnaap
    Poziom 25  
    Posty: 677
    Pomógł: 83
    Ocena: 10
    Witam. Przetwornik mikrokontrolera Atmega jest 10 bitowy. Tak jak ktoś podał posiada on wewnętrzne źródło napięcia odniesienia 2.5 V. Lm35 na wyjściu przy maksymalnej temperaturze 150 C będzie miał napięcie równe 1,5V czyli wykorzystasz tylko połowę zakresu. Radził bym Ci zastosować zewnętrzne źródło napięcia odniesienia 1.5 V, bo raczej temperatur powyżej 100 C nie będziesz mierzył. Zwiększy ci sie w ten sposób dokładność twojego pomiaru.
  • #15 3798056
    Konto nie istnieje
    Konto nie istnieje  
  • #17 3798215
    karel21
    Poziom 28  
    Posty: 1017
    Pomógł: 106
    Ocena: 95
    Zmostkój jeszcze na DB25 3 z 11 będziesz miał odpowiednik STK200/300 mam takiego ,imój z IC-prog. działa.Mam jeszcze dodatkowo niezależne zasilanie.
  • #18 3798383
    submariner
    Poziom 32  
    Posty: 2319
    Pomógł: 51
    Ocena: 268
    nie nic nie musisz dawac ew jakis szeregowy opornik we atmegi z wyjsciem lm , np 1k w przypadku uszkodzenia ktoregos scalaka nie poleci drugi.
  • #19 3798537
    Konto nie istnieje
    Konto nie istnieje  
  • #20 3810531
    Delmor
    Poziom 1  
    Posty: 1
    LM35DZ + ATMega + vystup na serial port COM1 + program v C (nainst. WINAVR+AVRStudio 4.12) programator stk200 (http://robotika.cz/guide/blink/stk200.png). Ja taky samouk.

    Soubory a schema jsou prilozene u zpravy. Prijem z COM1 je prez Hyperterminal (nastaveni: 9600b, bity 8, parita nic, stopbity 1, tok nic).
    Załączniki:
    • Jak podłączyć LM35 do ATmega, aby mierzyć temperaturę i sterować diodami? LM35-ATMEGA8.jpg (58 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • USART1.c (1.29 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #21 3810900
    panmechanik
    Poziom 23  
    Posty: 800
    Pomógł: 50
    Ocena: 116
    Ojj widze że czekasz na gotowca ...poniżej schemat i program
    Załączniki:
    • LCD Thermometer LM35.rar (934 Bajtów) Musisz być zalogowany, aby pobrać ten załącznik.
    • Jak podłączyć LM35 do ATmega, aby mierzyć temperaturę i sterować diodami? LCD_Thermometer_LM35_pic.jpg (150.89 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Jak podłączyć LM35 do ATmega, aby mierzyć temperaturę i sterować diodami? LCD_Thermometer_LM35_sch.jpg (40.12 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #22 3826184
    Konto nie istnieje
    Konto nie istnieje  
  • #23 3826992
    panmechanik
    Poziom 23  
    Posty: 800
    Pomógł: 50
    Ocena: 116
    Cytat:


    ps. Niech mi ktoś nie mówi żebym robił to na innym, bo już kupiłem. A po za tym to jest część całego projektu.


    Chłopie zdecyduj sie! LM35 czy inny?Jeżeli inny wpisz ds1820/ds18b20 i masz kilka stron czytania
  • #24 3845048
    Konto nie istnieje
    Konto nie istnieje  
  • #25 3845345
    r06ert
    Poziom 25  
    Posty: 960
    Pomógł: 31
    Ocena: 452
    submariner napisał:
    wazne jest tez aby napiecie na wejsciu analogowym atmegi nie przekraczalo napiecia referencyjnego


    ...ale chyba nie dlatego, że jest to niebezpieczne dla układu?

    Dodano po 34 [minuty]:

    Cytat:
    Sory PANMACHANIK. Jednak zostanę przy LM35.

    Teraz też mam problem, mianowicie: jak rozbić wartości pomiaru LM35 na dziesiątki, jedności, i części dziesiętne?
    Chodzi o to, że nie mogę wziąć wszystkiego razem, bo muszę w tedy bawić się w pisanie wartości wyświetlenia dla każdej oddzielnie ( 00.0 C, 00.1 C, 00.2 C...).


    Możesz zrobi to np w ten sposób:
    1. Odejmujesz od wartości przetworzonej 100 tak dlugo jak wynik roznicy jest dodatni, zliczasz to ile razy odejmowałeś, liczba zliczonych działań są setkami
    2. odejmujesz od wyniku teraz 10 tak długo jak wynik różnicy jest dodatni, ilość działań jest wartością dziesiętną
    3. robisz to samo dla jedności

    wrzucam fragment mojego kodu jakbyś zachciał pobawić sie w asm. Co gorąco polecam. Sam teraz tworze sobie termometr.

    
    .def temp1, r16
    .def temp3, r18
    .def przetwornik, r8
    
    
    bajt_na_ascii:
    push przetwornik
    
    ldi temp3,0                          //zeruj zmienna temp3
    bajt_na_ascii_1:
    cpi przetwornik, 100             //testuj wartosc po odejmowaniu
    brmi bajt_na_ascii_2		//jesli ujemny to skocz (wyjescie z petli)
    subi przetwornik, 100           //jesli dodatni to odejmij oraz
    inc temp3                            //inkrementuj zmienna temp3
    rjmp bajt_na_ascii_1
    bajt_na_ascii_2:			
    ldi temp1, 48                      
    add temp3, temp1                //zamien liczbe w temp3 na kod ascii
    sts temperatura, temp3	      //zapisz pierwszy znak ascii do ramu
    
    ldi temp3,0
    bajt_na_ascii_3:
    cpi przetwornik, 10
    brmi bajt_na_ascii_4
    subi przetwornik, 10
    inc temp3
    rjmp bajt_na_ascii_3
    bajt_na_ascii_4:
    ldi temp1, 48
    add temp3, temp1
    sts (temperatura+1), temp3
    
    ldi temp3,0
    bajt_na_ascii_5:
    cpi przetwornik, 1
    brmi bajt_na_ascii_6
    subi przetwornik, 1
    inc temp3
    rjmp bajt_na_ascii_5
    bajt_na_ascii_6:
    ldi temp1, 48
    add temp3, temp1
    sts (temperatura+2), temp3
    pop przetwornik
    ret
    
    DSEG
    .org 0x60
    temperatura: .BYTE 3
    


    Podprogram "rozbija" liczbe z rejestru "przetwornik" na setki, dziesiątki, jedności. Zamienia je na kod ascii po czym zapisuje w kolejnych komórkach ramu[/quote][/code]
  • #26 3864990
    Konto nie istnieje
    Konto nie istnieje  
  • #28 3868543
    Konto nie istnieje
    Konto nie istnieje  
  • #29 3874380
    r06ert
    Poziom 25  
    Posty: 960
    Pomógł: 31
    Ocena: 452
    Tu nie chodzi o to czy chce pomagać czy nie, ale gdybym nie chciał to bym w ogóle nie pisał postów w Twoim temacie. Poza tym osobiście nigdy nie programowałem mikroprocesorów w BASCOMIe, mimo że Basica znam bardzo dobrze, jeszcze z czasów jak miałem C64. :)
    Ale chyba nie zaszkodzi jeżeli sam pokombinujesz (nawet podałem algorytm jak mogło by to wyglądać) lub poprzeglądasz projekty które już ktoś stworzył. Wiem ze gotowiec jest wygodniejszy, ale chyba chcesz się czegoś nauczyć prawda?
  • #30 3942679
    Konto nie istnieje
    Konto nie istnieje  

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy podłączenia czujnika temperatury LM35 do mikrokontrolera ATmega w celu pomiaru temperatury i sterowania diodami LED. LM35 jest czujnikiem analogowym, którego sygnał należy podłączyć do wejścia przetwornika ADC w mikrokontrolerze ATmega (np. piny 32-39 w ATmega8515 lub odpowiednie w ATmega128). Wskazano, że ATmega8515 nie posiada przetwornika ADC, co wymaga użycia innego modelu, np. ATmega128 lub ATmega8. Napięcie wyjściowe LM35 przy zasilaniu 5V wynosi do około 1,5V przy 150°C, co jest poniżej napięcia referencyjnego ADC (2,5V), więc nie jest konieczne stosowanie dzielnika napięcia, choć zalecane jest stosowanie rezystora szeregowego (np. 1kΩ) dla ochrony wejścia ADC. Programowanie mikrokontrolera można realizować w Bascom AVR lub w asemblerze, z wykorzystaniem funkcji odczytu ADC i przetwarzania wartości na temperaturę. Podano przykładowe fragmenty kodu w asemblerze i Bascomie, w tym sposób rozbicia wartości pomiaru na dziesiątki, jedności i części dziesiętne oraz wyświetlania na LCD. Poruszono też kwestie programatora ISP (np. STK200/300) oraz problemów z jego budową i zakupem. Dyskusja zawierała także sugestie alternatywnych układów do pomiaru temperatury, takich jak DS18B20, LM3914 czy ICL7107, jednak autor zdecydował się pozostać przy LM35. Wskazano, że do poprawnego działania konieczne jest napisanie odpowiedniego programu, który odczyta wartość ADC, przeliczy ją na temperaturę i w zależności od niej załączy odpowiednią liczbę diod LED.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA