Elektroda.pl
Elektroda.pl
X

Search our partners

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

Jak atmega może mierzyć napięcie z LM35?

14 Apr 2007 12:32 34614 39
  • User removed account  
    [30.03.2021, darmowy webinar] Nowoczesna diagnostyka maszyn, monitorowanie i przewidywanie awarii. Zarejestruj się
  • Level 27  
    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.
  • Level 32  
    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.
  • User removed account  
  • Helpful post
    Admin of Audio group
    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
  • User removed account  
  • Helpful post
    Level 32  
    dokladnie wszystkie te piny to wejscia analogowe , teraz tylko zczytac z nich dane , poustawiac bajty-starszy/mlodszy, wyskalowac i przeniesc na display lub UART :)
  • User removed account  
  • Level 32  
    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.
  • User removed account  
  • Level 32  
    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
  • User removed account  
  • Level 25  
    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.
  • User removed account  
  • Level 27  
    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.
  • Level 32  
    nie nic nie musisz dawac ew jakis szeregowy opornik we atmegi z wyjsciem lm , np 1k w przypadku uszkodzenia ktoregos scalaka nie poleci drugi.
  • User removed account  
  • Level 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).
  • User removed account  
  • Level 23  
    Quote:


    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
  • User removed account  
  • Level 25  
    submariner wrote:
    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]:

    Quote:
    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.

    Code:

    .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]
  • User removed account  
  • Level 25  
    Projekt chcesz zrobic Ty, czy zeby Tobie zrobil ktos projekt?
  • User removed account  
  • Level 25  
    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?
  • User removed account  
pcbway logo