Pomiar napięcia Atmega8535
- mariusz256
- Użytkownik
- Posty: 144
- Rejestracja: 28 wrz 2005, 17:16
- Lokalizacja: Stobierna k/Rzeszowa
- Kontakt:
Pomiar napięcia Atmega8535
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
mariusz256
pozdrawiam
-
ZbeeGin
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 wiem ze on posiada chyba 8 przetworników analogowo- cyfrowych.
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: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?
- 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.
Analogowy sygnał powinieneś dostarczyć do końcówek ADC0(PA0)...ACD7(PA7). Można skorzystać z dwóch opcji wejścia:mariusz256 pisze:i jeszcze jak podłączyc mierzony analogowy sygnał, do których koncówek, i co oprucz tego trzeba zrobić.
- 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.
- mariusz256
- Użytkownik
- Posty: 144
- Rejestracja: 28 wrz 2005, 17:16
- Lokalizacja: Stobierna k/Rzeszowa
- Kontakt:
-
ZbeeGin
Oczywiście nie zwalnia Cię to od przeczytania noty katalogowej Mega8535.mariusz256 pisze:Bardzo dziękuje za tak wyczerpujacą wypowiedz
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!)
...- mariusz256
- Użytkownik
- Posty: 144
- Rejestracja: 28 wrz 2005, 17:16
- Lokalizacja: Stobierna k/Rzeszowa
- Kontakt:
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:
Bardzo prosze o podpowiedz czy to bedzie działać, a jesli nie bedzie działać to prosze o jakies wskazówki.
mariusz256
pozdrawiam
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
mariusz256
pozdrawiam
Ostatnio zmieniony 01 sty 1970, 1:00 przez mariusz256, łącznie zmieniany 1 raz.
-
ZbeeGin
Wszystko w sumie OK. Tylko na początek proponuje dodać jeszcze:
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.
Kod: Zaznacz cały
$regfile = "m8535.dat"
$crystal = (tu określ taktowanie np. 8000000 = 8MHz)
- mariusz256
- Użytkownik
- Posty: 144
- Rejestracja: 28 wrz 2005, 17:16
- Lokalizacja: Stobierna k/Rzeszowa
- Kontakt:
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ą.
- mariusz256
- Użytkownik
- Posty: 144
- Rejestracja: 28 wrz 2005, 17:16
- Lokalizacja: Stobierna k/Rzeszowa
- Kontakt:
-
ZbeeGin
- mariusz256
- Użytkownik
- Posty: 144
- Rejestracja: 28 wrz 2005, 17:16
- Lokalizacja: Stobierna k/Rzeszowa
- Kontakt: