Prosty przetwornik A/D dla ATtiny

Prosty przetwornik A/D dla ATtiny
Niektóre układy AVR nie mają wbudowanego w strukturę przetwornika A/D, natomiast mają zintegrowany w strukturze komparator, który świetnie nadaje się do budowy prostego przetwornika A/D. Dotyczy to np. 8-nóżkowych mikrokontrolerów z serii ATtiny, aczkolwiek zasada działania będzie taka sama dla wszystkich, podobnie wyposażonych, mikrokontrolerów. Schemat niezbędnych do wykonania połączeń pokazano na rysunku 1. Aby uruchomić konwersję należy rozpocząć ładowanie kondensatora z dowolnego źródła prądowego oraz w tym samym momencie uruchomić timer, poczekać aż napięcie na kondensatorze osiągnie tę samą wartość, co napięcie wejściowe, zatrzymać timer i odczytać rezultat. Podczas konwersji A/C należy wyłączyć wszystkie przerwania. W tym prostym przetworniku, kondensator odniesienia ładowany jest prądem płynącym przez wewnętrzny rezystor pull-up. Ma on taką właściwość, że przy napięciu wejściowym niższym od 2V płynie przez niego stały prąd (rysunek 2) i dzięki temu może on udawać źródło prądowe. Charakterystyka prądowa „zagina się” powyżej 2 V i tym zakresie napięć ten prosty przetwornik A/C wykazuje już zbyt duży błąd nieliniowości. Niestety, na prąd płynący przez pull-up ma silny wpływ temperatura otoczenia. W zakresie temperatur 10...40°C błąd pomiaru jest równy aż 5%. Jeśli z jakiegoś powodu wymagania aplikacji odnośnie jakości pomiaru są wyższe, to należy zastosować zewnętrzne źródło prądowe. Stosując je można podnieść zakres napięć wejściowych aż do 0...4V oraz poprawić stabilność temperaturową. Na listingu umieszczono przykładową procedurę konwersji napięcia. Program napisano dla mikrokontrolera ATtiny.
 
Rysunek 1. Schemat połączeń
 

Napięcie Uc [V]
 
Rysunek 2. Charakterystyka ładowanie kondesatora za pomocą "udawanego" źródła prądowego (Uc=f(R pull-up), t=const)
 
 
Listing. Procedura konwersji napięcia w AVR asemblerze
;------------------------
; konwersja napięcia
;------------------------
adc:
 ldi ZL, 0    ;zerowanie licznika
  ldi ZH, 0
  cbi DDRB, 0  ;rozpoczęcie ładowania
  sbi PORTB, 0
  adiw ZL, 1   ;oczekiwanie na Vc=Vi
  sbis ACSR, ACO
  ramp PC-2
  cbi PORTB, 0 ;rozładowanie pojemności
  sbi DDRB, 0
  ret          ;rezultat konwersji w rej. Z
 
 

http://www.tomaszbogusz.blox.pl/

Dodaj nowy komentarz

Zawartość pola nie będzie udostępniana publicznie.