Pomiar napięcia Atmega8535

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
mariusz256
Użytkownik
Posty: 144
Rejestracja: 28 wrz 2005, 17:16
Lokalizacja: Stobierna k/Rzeszowa
Kontakt:

Pomiar napięcia Atmega8535

Post autor: mariusz256 » 30 cze 2007, 19:22

Witam, mam problem taki ze mam procek Atmega8535, i wiem ze on posiada chyba 8 przetworników analogowo- cyfrowych. i nie wiem jak ich wykorzystać w działaniu ponieważ kolega mi mówił ze trzeba podłączyć napięcie odniesienia 2.25V, a ja bym chciał podłączyć 5V, czy to jest mozliwe?. i jeszcze jak podłączyc mierzony analogowy sygnał, do których koncówek, i co oprucz tego trzeba zrobić. To ma być ikład który bedzie mierzył natęzenie swiatła, włączał i wyłączał oswietlenie w akwarium.

mariusz256

pozdrawiam

ZbeeGin

Post autor: ZbeeGin » 30 cze 2007, 20:34

mariusz256 pisze: i wiem ze on posiada chyba 8 przetworników analogowo- cyfrowych.
Dokładnie jest to jeden przetwornik ADC który posiada przełącznik (multiplekser) pozwalający na skorzystanie z możliwości pomiaru w 8 niezależnych kanałach przetwornika. Nie działają one jednak jednoczenie, przed pomiarem trzeba wybrać odpowiedni kanał, który trafi na wejście przetwornika.
mariusz256 pisze:i nie wiem jak ich wykorzystać w działaniu ponieważ kolega mi mówił ze trzeba podłączyć napięcie odniesienia 2.25V, a ja bym chciał podłączyć 5V, czy to jest mozliwe?
Można podłączyć jak i nie trzeba. Mega8535 posiada wewnętrzny układ napięcia odniesienia, który dostarcza napięcia 2,56V. Można też skorzystać z dwóch pozostałych możliwości:
- podłączyć zewnętrzne napięcie odniesienia do końcówki AREF (Nie może to być napięcie wyższe niż AVCC, a AVCC nie może różnić się od napięcia VCC o więcej niż ±0,3V). Zatem możesz podłączyć zewnętrzne napięcie odniesienia 5V bez większych przeszkód o ile procesor będzie zasilany także napięciem minimum 5V.
- połączyć wewnętrznie AREF z AVCC przez ustawienie odpowiednich bitów i dodać na końcówce AREF kondensator do masy (co poprawi stabilność). Wtedy napięcie odniesienia będzie równe napięciu zasilania części analogowej. Zastrzeżenia jak wyżej.
mariusz256 pisze:i jeszcze jak podłączyc mierzony analogowy sygnał, do których koncówek, i co oprucz tego trzeba zrobić.
Analogowy sygnał powinieneś dostarczyć do końcówek ADC0(PA0)...ACD7(PA7). Można skorzystać z dwóch opcji wejścia:
- SINGLE ENDED - przetwornik mierzy napięcie dodatnie z zakresu 0...AVCC,
- DIFFERENTIAL - przetwornik mierzy napięcie różnicowe (doskonałe do porównywania napięć) pomiędzy dwoma końcówkami.
Jeśli napięcia mają poziom wykraczający poza zakres 0...VCC+0,3V to należy je przepuścić przez dzielniki (np. w postaci 2 rezystorów).

Po skonstruowaniu części wejściowej powineneś odpowiednio wykonać część zasilającą samego przetwornika (AVCC). W danych katalogowych jest wskazówka jak to powinno być zrobione. I co najważniejsze dostarczyć stabilnego napięcia odniesienia.

Teraz wystarczy skonfigurować pracę przetwornika: ustawić jego taktowanie, sposób przetwarzania (pojednyncza czy ciągła konwersja) i ewentualnie przerwania (jeśli będą wykorzystane). Potem już tylko pozostaje przełączać multiplekser i dokonywać pomiarów.
Uwaga! Liczba odzwierciedlająca poziom przetworzonego napięciach będzie w granicach 0...1024 więc należy korzystając z zawartych w dokumentacji wzorów przeliczać dane.

Awatar użytkownika
mariusz256
Użytkownik
Posty: 144
Rejestracja: 28 wrz 2005, 17:16
Lokalizacja: Stobierna k/Rzeszowa
Kontakt:

Post autor: mariusz256 » 30 cze 2007, 22:03

no prosze, az takiej odpowiedzi się nie spodziewałem. Bardzo dziękuje za tak wyczerpujacą wypowiedz , w razie problemów zapytam jeszcze.

mariusz256

pozdrawiam

ZbeeGin

Post autor: ZbeeGin » 01 lip 2007, 8:47

mariusz256 pisze:Bardzo dziękuje za tak wyczerpujacą wypowiedz
Oczywiście nie zwalnia Cię to od przeczytania noty katalogowej Mega8535.

Jeśli program będziesz pisał w BASCOM Basic to parę rzeczy się znacznie uprości. W asemblerze też to tak fatalnie nie wygląda. Przykład zaczerpnięty z książki "Mikrokontrolery AVR ATMega w praktyce" Rafała Baranowskiego:

Kod: Zaznacz cały

        ...                          ; zakładamy, że częstotliwość systemowa wynosi 4MHz
        ldi  r16, (1 << ADEN)|(1 << ADPS2)|(1 << ADPS0)
        out  ADCSRA, r16             ; włącz moduł i ustaw cz. zegara ADC na 125kHZ
                                     ; maksymalna cz. próbkowania wynosi 9,62kHz
        ldi  r16, (1 << REFS0)|(1 << MUX0)
        out  ADMUX, r16              ; napięciem odniesienia niech jest napięcie AVCC
                                     ; podłącz do ADC sygnał z kanału ADC1
        sbi  ADCSRA, ADSC            ; rozpocznij konwersję

czekaj:
        sbis ADCSRA, ADIF            ; pętla oczekująca na zakończenie konwersji (na ADIF = 1)
        rjmp czekaj
                                     ; dalsza cześć programu jest wykonywana po zakończeniu
                                     ; pierwszej konwersji (po czasie 25/125ms)
        sbi  ACDSRA, ADIF            ; zeruj znacznik zakończenia konwersji - ADIF

        in   r16, ADCL               ; ładuj rejestr R16 młodszą częścią wyniku (LSB)
        in   r17, ACDH               ; ładuj rejestr R17 starszą częścią wyniku (MSB)
                                     ; (kolejność jest istotna!)
        ...

Awatar użytkownika
mariusz256
Użytkownik
Posty: 144
Rejestracja: 28 wrz 2005, 17:16
Lokalizacja: Stobierna k/Rzeszowa
Kontakt:

Post autor: mariusz256 » 01 lip 2007, 11:42

wiem ze projektując układ elektroniczny wymagana jest estetyka, nie wszyscy sie tego trzymają ale puzniej są lepsze efekty wizualne jak i lepsze techniczne. dlatego musze jeszcze raz zapytać czy dobrze to rozplanowałem, bo ciągłe wykonywanie nowych płytek nie miało by sensu. więc prosze jeszcze raz o pomoc.
Chce wykorzystać wewnetrzne napięcie odniesienia:
w bascomie napisałem to tak:

Kod: Zaznacz cały

Config Adc = Single , Prescaler = Auto, Reference = Internal
Start Adc
Dim W As Word , kanal As Byte
kanal = 0

W = Getadc(kanal)
W = Getadc(kanal)
cls
lcd "Kanał " ; kanal; " wartość " ; W
End
Bardzo prosze o podpowiedz czy to bedzie działać, a jesli nie bedzie działać to prosze o jakies wskazówki.

mariusz256

pozdrawiam
Ostatnio zmieniony 01 sty 1970, 1:00 przez mariusz256, łącznie zmieniany 1 raz.

ZbeeGin

Post autor: ZbeeGin » 01 lip 2007, 12:04

Wszystko w sumie OK. Tylko na początek proponuje dodać jeszcze:

Kod: Zaznacz cały

$regfile = "m8535.dat"
$crystal = (tu określ taktowanie np. 8000000 = 8MHz)
Najprawdopodobniej błąd ze złym wybieraniem kanału został już całkowicie wyeliminowany, zatem nie potrzebne są 2 odczyty. Aczkolwiek jeśli nie będzie układ działał poprawnie to wina może leżeć właśnie w błędnym wybieraniu kanałów.

Awatar użytkownika
mariusz256
Użytkownik
Posty: 144
Rejestracja: 28 wrz 2005, 17:16
Lokalizacja: Stobierna k/Rzeszowa
Kontakt:

Post autor: mariusz256 » 01 lip 2007, 18:49

a dobrze narysowałem ten schemat??
Załączniki
pomiar napiecia.JPG

Guzer
Użytkownik
Posty: 167
Rejestracja: 08 lis 2006, 18:36
Lokalizacja: Szczecin
Kontakt:

Post autor: Guzer » 01 lip 2007, 21:10

AVCC też musisz podłączyć do zasilania, najlepiej przez jakiś filtr tłumiący zakłócenia. Nawet jeżeli nie korzystasz z przetworników ADC to musisz podłączyć ten pin do zasilania, chociaż wtedy filtr nie jest już potrzebny. Poza tym wszystkie piny oznaczone GND muszą być zewnętrznie połączone ze sobą.

Awatar użytkownika
mariusz256
Użytkownik
Posty: 144
Rejestracja: 28 wrz 2005, 17:16
Lokalizacja: Stobierna k/Rzeszowa
Kontakt:

Post autor: mariusz256 » 01 lip 2007, 21:55

nie rozumie za bardzo ale to tak ma być jak na foto?? czy inaczej??.
Załączniki
pomiar napiecia.JPG

ZbeeGin

Post autor: ZbeeGin » 01 lip 2007, 22:00

Nie. Tak być nie powinno. Powinieneś dodać filtr w postaci cewki i kondensatora do masy.

Na wejściach przetwornika też powinieneś dodać rezystory do masy (1MΩ lub 10MΩ) by przetwornik nie szalał.

Awatar użytkownika
mariusz256
Użytkownik
Posty: 144
Rejestracja: 28 wrz 2005, 17:16
Lokalizacja: Stobierna k/Rzeszowa
Kontakt:

Post autor: mariusz256 » 01 lip 2007, 22:19

a czy tak juz lepiej??, czy to juz będzie działać czy o czymś zapomniałem, może się pomyliłem i trzeba go od nowa narysować. bardzo dziękuje za pomoc.

mariusz256

pozdrawiam
Załączniki
pomiar napiecia.JPG

rozrabiak
-
Posty: 18
Rejestracja: 06 lip 2007, 20:13

Post autor: rozrabiak » 15 lip 2007, 18:19

ZbeeGin pisze:Nie. Tak być nie powinno. Powinieneś dodać filtr w postaci cewki i kondensatora do masy.
A ja chciałem zapytać czy wartość tej cewki dobieramy metodą na chybił-trafił, czy jakoś wyliczamy?

ZbeeGin

Post autor: ZbeeGin » 15 lip 2007, 21:24

Atmel z góry zaleca 10uH i kondensator 100nF. I w zasadzie wystarcza.

ODPOWIEDZ