XMega – ADC ogólnie — część 1

XMega – ADC ogólnie — część 1
Razem głosów: 14 co stanowi: 91.43% całości.


obr986_1

 

Jakiś czas temu prezentowałem płytkę ATMEL z serii eXplained, a mianowicie XMega A3BU.  Wprawdzie cały czas odczuwam niedosyt w kwestii rodziny Xmega i trochę to taki odgrzewany kotlet, ale w przerwie dręczenia C#  można się pobawić :)

Tu chciałbym nieco przybliżyć ADC w rodzinie Xmega gdyż oferuje ono całkiem sporo za w sumie niewiele …  Nie będę się opierał na A3BU a nawiązanie do niego jedynie tylko przybliża część wspólną czyli mikrokontroler XMega … bo akurat jest pod ręką. I ostatecznie kto wie co z tego wyjdzie. Tymczasem będzie ogólnie gdyż bardziej zależy mi na przybliżeniu pojęcia ADC w Xmegach  niż opieranie się na tendencyjnych przykładach…

 

Informacje ogólne o ADC


 

Rodzina mikrokontrolerów XMEGA  zawiera jeden lub dwa 12 bitowe moduły SAR (Successive Approximation Result)  ADC . Podłączone do Portu A i/lub Portu B.  Moduły te posiadają spory zasób opcji konfiguracyjnych umożliwiających dopasowanie działania do naszych potrzeb miedzy innymi możemy ustawić dla ADC parametry:

  • Tryb konwersji
  • Tryb wejścia (pojedynczy lub różnicowy)
  • Rozdzielczość  (8 lub 12Bit)
  • Częstotliwość (poprzez podzielenie zegara)
  • Napięcie odniesienia
  • Front End Gain Stage (umożliwia wzmocnienie sygnałów różnicowych)

ADC w rodzinie XMEGA może rozpoczynać konwersję na wiele sposobów w tym również na żądanie DMA, zależnie od  poziomów progowych komparatorów analogowych, zdarzeń systemowych  jak np. przepełnienie licznika, czy też na podstawie jednoznacznych wniosków wynikających z naszego programu. Może też być skonfigurowane w tryb  „FreeRun” , w którym nowy pomiar zaczyna się natychmiast po zakończeniu poprzedniego.

Każdy pomiar czy to single czy multi rozpoczyna skanowanie w trakcie cyklu zegara „N”  (opóźnienie propagacji), a wynik konwersji ADC jest przechowywany w 2 oddzielnych rejestrach 8 bitowych CHRESH i CHRESL. Oczywiście każdy kanał ADC posiada swoje dedykowane rejestry do przechowywania wyniku konwersji np: ADCA jest  wyprowadzony na PORT A  co powoduje że wynik konwersji będzie zapisany w rejestrze ADCA.CH0RES.

Dodatkowo poza przechowywaniem wyników pomiaru w odpowiednich rejestrach, zakończenie pomiaru może wywołać transmisję poprzez DMA w celu przeniesienia wyniku ADC do określonej lokalizacji w pamięci lub wywołać przerwanie.

12-bitowe ADC potrafi przetworzyć do 300 000 próbek/sec a to jest już coś, i pozwala na uzyskanie całkiem niezłych rezultatów. Poznajmy więc lepiej ten twór  w przykładowych zastosowaniach:

Pomiar różnicowy.


PomiarRóż

Widzimy tu dostępne opcje dostępne dla pomiaru różnicowego. W tym wypadku wzmocnienie (gain) ma domyślną wartość = 1, ale może zawierać się w zakresie 0,5 – 64.  Jak więc widać Gain, a  możemy zastosować dla pomiaru sygnału wejściowego – single-ended przy zastosowaniu trybu różnicowego stosując określone wzmocnienie przy podłączeniu bieguna ujemnego ADC do GND (wewnętrznie lub zewnętrznie). Oczywiście to rozwiązanie ma swoje wady, mianowicie ADC dla pomiaru różnicowego musi być w trybie signed co powoduje zmniejszenie rozdzielczości z 12 bitów do 11 (MSB jest użyte jako bit znaku (sign).

 

Pomiar Single-Ended.


 

W tym trybie ADC może byż używane w trybie ze znakiem (signed) i bez znaku (unsigned)  dlatego też możemy używać 12 bitowej rozdzielczoćci w trybie Single-Ended.

unsigned

singleEnd

 

W trybie unsigned single-ended  widocznym powyżej, Wejście ujemne ADC zostaje wewnętrznie podłączone do poziomu napięcia równego w  przybliżeniu  połowę  napięcia między VREF a GND. Wynika z tego wyliczenia przesunięcie równe 5% dla wybranego napięcia odniesienia.  Dzięki takiemu rozwiązaniu łatwo możemy wykryć przejście przez zero. 

signed

SE-signed

 

Tu widzimy przykładowe podłączenie signed (ze znakiem) gdzie wejście ujemne ADC zostaje podłączone do GND.

 

Wybór napięcia odniesienia (VREF)


 

ADC może używać jako źródła napięcia odniesienia:

  • Wewnętrzne źródło 1.00V
  • Wewnętrzny podział napięcia VCC:

–  VCC/1.6  lub   VCC/2

  • Zewnętrzne napięcie odniesienia dołączone do pinu AREF  odrębne dla:

–  PORTA i PORTB  (jeśli jest dostępne w mikrokontrolerze)

Maksymalne napięcie odniesienia jakie moęe być używane  mieści się w zakresie      VCC-0,6V, co oznacza że Vcc nie może być stosowane jako VRef dla przetworników ADC bezpośrednio. Jako że uC działa w zakresie napięć 1.8 – 3,6V  limit dla ADC jak już wiecie to 3.0V dla wejść pomiarowych.

Resztę szczegółów znajdziecie w nocie dostępnej dla waszego mikrokontrolera XMEGA oraz w dokumencie Xmega-B,  który powinniście również posiadać i przeglądnąć.

http://www.atmel.com/Images/Atmel-8291-8-and-16-bit-AVR-Microcontrollers-XMEGA-B_Manual.pdf

To na tyle. W następnej części wywodu zajmiemy się przykładami  konfiguracji  i innymi zagadnieniami.

Podziel się na:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay