Analog-Digital-Converter

Analog-Digital-Converter Funktionsprinzip ADC bei ATmega128 Beispiel in C Funktionsprinzip 1 Analog-Digital-Wandlung  Wandelt analoge Spannung / ...
Author: Frauke Heidrich
35 downloads 6 Views 236KB Size
Analog-Digital-Converter Funktionsprinzip ADC bei ATmega128 Beispiel in C

Funktionsprinzip

1

Analog-Digital-Wandlung  Wandelt analoge Spannung / analogen Strom (Messgröße) in einen binären Wert um, der der Amplitude der Messgröße zur Messzeit entspricht  versetzt t t den d C C iin die di Lage, L Messwerte M t von analogen l Quellen einzulesen und diese dann digital zu verarbeiten Amplitude (zugeordneter Binärwert)

abgetastete Messgröße analoge Messgröße

0111 0010

0100 1010

0

t

Ts 2Ts 3Ts

ADC im ATmega128

Data Bus

ADC Control and Status Register(ADCSR)

ADC data register (ADCH/ADCL)

Successive approximation logic 10-bit DAC

8Channel Mux

Analog inputs A

ADC multiplexer select(ADMUX)

2

Successive Approximation (Prinzip) Successive A Approximation i ti Register (SAR)

Digital-AnalogWandler

Ue

analoge Messgröße

Komparator

zugeordneter Binärwert

Successive Approximation (Komparator) Successive A Approximation i ti Register (SAR)

Digital-AnalogWandler

Ue Messgröße

Komparator zugeordneter Binärwert

3

Komparator UB

Ua

Ue

Uref

UB für Ue  Uref Ua   UB für Ue  Uref

UB Ue

Ua

Uref t

Successive Approximation (Digital-Analog-Wandler) Successive A Approximation i i Register (SAR)

Digital-AnalogWandler

Ue Messgröße

Komparator

zugeordneter Binärwert

4

DAC: Digital-Analog-Wandler (Prinzip) U2

I2

invertierender Summierer

I2  I1  I0

U1 U0

I1

1 1   Ua    U2  U1  U0  2 4  

I0

 Beispiel für: UH  5V 1 1   Ua    b2  UH  b1  UH  b0  UH  2 4  

binary Input b1 b0 b2 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1

analog Output Ua / V 0,00 , -1,25 -2,50 -3,75 -5,00 -6,25 -7,50 -8,75

Successive Approximation (Wandlungsvorgang) MSB

Successive A Approximation i ti Register (SAR)

Digital-AnalogWandler

Uref

Ue Messgröße

Komparator

zugeordneter Binärwert

5

Wandlungsvorgang 1011

1010

1100

1000

0101 0

0110 0

1.

0100 0

Wert in SAR 1000

Beginnend bei MSB: 1. Bit in SAR auf 1 (alle niederwertigeren Bits=0) 2 DAC erzeugt aus Wert in SAR 2. Referenz-Spannung Uref für Komparator U 3. ref  Ue Bit in SAR wird auf 0 gesetzt Uref  Ue Bit in SAR bleibt 1 4. nächstes Bit und mit 1. ... 4. weiter it bis bi alle ll n Bit-Werte Bit W t bestimmt sind 5. binären Wert in Register SRG speichern und nächste Wandlung beginnen

U 3.

Uref  Ue

Uref  Ue Ue Uref

2.

0 1 0 0 Ergebnis 1. Wandlung

1 0 1 1 Ergebnis 2. Wandlung

Beispiel für 4 Bit

Free Running Modus (Timing-Diagramm)

ab hier wird Ue über die gesamte Messzeit konstant gehalten

neue Einstellungen für die Wahl der Referenzspannung und der analogen Eingänge übernehmen

6

Single Conversion Modus (Timing-Diagramm)

ADC im ATmega128 Datenblatt S. 230-245 Eigenschaften Prescaler Steuer-Register Daten-Register

7

Analog-Digital-Wandlung  Wandelt analoge Spannung / analogen Strom (Messgröße) in einen binären Wert um, der der Amplitude der Messgröße zur Messzeit entspricht  versetzt t t den d C C iin die di Lage, L Messwerte M t von analogen l Quellen einzulesen und diese dann digital zu verarbeiten Amplitude (zugeordneter Binärwert)

abgetastete Messgröße analoge Messgröße

0111 0010

fs  0100 1010

0

Ts 2Ts 3Ts

1 Ts

t

Eigenschaften (unvollständig)  AD-Wandler auf Basis des Successive Approximation Verfahrens  Messgenauigkeit: 10 Bit bzw. 8 Bit  Art der Messung: - programmgesteuerter p g g Start jeder j einzelnen Messung g (single ( g conversion) - automatischer Start der nächsten Messung sobald eine Messung fertig ist (free running)

 Messmodi: - Messung gegen 0V (single ended) - gegen 2. Messkanal (differential)

 Anschluss der Messobjekte an PortF (ADC ist alternative Funktion von PortF))  Betriebsart: Polling- oder Interrupt-Betrieb - Ereignis wird jeweils ausgelöst, wenn eine Wandlung fertig ist

 Abtastfrequenz: fs durch Prescaler einstellbar - für 10 Bit Genauigkeit fs=50 ... 200kHz - für geringere Genauigkeit fs> 200kHz möglich

8

Blockschaltbild (vereinfacht)

Data Bus

ADC Control and Status Register(ADCSR)

ADC data register (ADCH/ADCL)

Successive approximation logic 10-bit DAC

Analog inputs A

ADC multiplexer select(ADMUX)

8Channel Mux

PORT F ADC7 ... ADC0

ADC Multiplexer Selection Register (ADMUX) Wahl der Spannungsreferenz

Wahl der analogen Eingänge ä Left Adjust Result: 1 ... linksbündig 0 ... rechtsbündig

9

Wahl der Spannungsreferenz

 legt den Bereich der Spannung an den Eingängen des ADC fest - wenn Ue >= Uref*, dann erhält man ein Wandlungsergebnis von 0x3ff (alle 10 Wandlerbits auf 1)

 als Referenzspannung kann verwendet werden: - eine externe Spannungsquelle (AREF) - die Versorgungsspannung des ADC (AVCC) - eine interne Referenzspannung von 2,56V

 ein externer Kondensator kann zur Verbesserung des Schutzes gegen Rauschen angeschlossen werden *Uref ist nicht zu verwechseln mit der Referenzspannung des Komparators (Folien zum Wandlungsvorgang)

ADC Multiplexer Selection Register (ADMUX) Wahl der Spannungsreferenz

Wahl der analogen Eingänge ä Left Adjust Result: 1 ... linksbündig 0 ... rechtsbündig

10

Wahl der analogen Eingänge

Single g ended: Messung Input-Pin gegen 0V Wandlungsergebnis: ADC 

Ue  1024 Uref

Differential: Messung positives iti IInput-Pin t Pi gegen negatives Input-Pin Wandlungsergebnis: ADC 

(Upos  Uneg )  Gain  512 Uref

Ausschnitt: vollständige Tabelle siehe Datenblatt

ADC Control und Status-Register A (ADCSRA)

Prescaler ADC Interrupt Enable: 1 ... löst Interrupt aus, wenn eine Wandlung fertig ist (ADIF wird automatisch gelöscht) ADC Interrupt Flag: wird auf 1 gesetzt, wenn eine Wandlung fertig ist (kann gepollt werden, in diesem Fall Löschen ö h durch d h Schreiben S h ib einer i 1 (!) auff das d Flag) Fl ) free running Modus: 1 ... ADC wird automatisch neu gestartet, sobald eine Wandlung beendet ist AD Start Conversion: Einmaliges Starten einer Wandlung ADC Enable: 1 ... Einschalten des ADC

11

ADC Prescaler

Controllertakt fosc

ADC-Takt fADC

ADPS2

ADPS1 ADPS0 NPrescaler

0

0

0

1

0

0

1

2

0

1

0

4

0

1

1

8

1

0

0

16

1

0

1

32

1

1

0

64

1

1

1

128

Abtastfrequenz

 1 Cycle (Taktzyklus) entspricht TADC  f

1

ADC

 erste Messung nach Einschalten des ADC (ADEN=1) dauert länger, da ADC initialisiert werden muss  die Abtastfrequenz, mit der das Eingangssignal digitalisiert wird, errechnet sich aus der Dauer einer kompletten normalen Wandlung fs 

1 1 fADC

 13



fOSC fADC  13 NPr escaler  13

12

ADC Multiplexer Selection Register (ADMUX) Wahl der Spannungsreferenz

Wahl der analogen Eingänge ä Left Adjust Result: 1 ... linksbündig 0 ... rechtsbündig

ADC Datenregister (Wandlungsergebnis) ADLAR=0 rechtsbündig

ADLAR=1 linksbündig

 reicht 8 Bit Genauigkeit aus: - ADLAR (ADMUX-Register) auf 1 setzen und Ergebnis aus ADCH lesen (zwei niederwertigsten Bits gehen verloren)

 sonst immer zuerst ADCL und dann ADCH lesen! (in C kann auch der 10-Bit-Wert in eine 16-Bit Variable gelesen werden)

13

ADC Control und Status-Register A (ADCSRA)

Prescaler ADC Interrupt Enable: 1 ... löst Interrupt aus, wenn eine Wandlung fertig ist (ADIF wird automatisch gelöscht) ADC Interrupt Flag: wird auf 1 gesetzt, wenn eine Wandlung fertig ist (kann gepollt werden, in diesem Fall Löschen ö h durch d h Schreiben S h ib einer i 1 (!) auff das d Flag) Fl ) free running Modus: 1 ... ADC wird automatisch neu gestartet, sobald eine Wandlung beendet ist AD Start Conversion: Einmaliges Starten einer Wandlung ADC Enable: 1 ... Einschalten des ADC

Beispiel in C Geschwindigkeit der Musterausgabe mit Potentiometer verändern

14

Beschreibung

 an PortF wird ein Potentiometer angeschlossen, dessen aktuelle Spannung mit Hilfe des ADC gemessen wird  der Wert, den der ADC liefert, wird als Delay in ms für die Musterausgabe mit der Funktion putSelPattern verwendet  mit dem Potentiometer kann man nun die Geschwindigkeit der Musterausgabe verändern

Konfiguration ADC Register

Bit

Wert Bemerkung (binär)

ADMUX

REFS1:REFS0

01

Spannungsreferenz Uref intern Vcc

ADLAR

0

Wandler-Ergebnis rechtsbündig

x

MUX4 ... MUX0

00000

Kanal ADC0, single ended

x

ADEN

1

ADC einschalten

ADSC

1

Start Conversion

ADFR

1

free running

ADPS2 ... ADPS0

111

NPrescaler=128

ADCSRA

Abtastfrequenz:

fs 

Default

fCPU fADC 106 Hz    600Hz 13 N Pr escaler  13 128  13

15