A/D Wandler des MC80515 / 80535

 

 

 

 

 

Was ist ein A/D-Wandler

 

 

Einführung 8 Bit A/D Wandlung

 

 

           Das SFR-Register ADCON = D8h

 

 

           Das SFR-Register DAPR = DAh

 

 

Einführung 10 Bit A/D Wandlung

 

 

Programmbeispiel 8 Bit Wandlung

 

 

Programmbeispiel 10 Bit Wandlung

 

 

 

 

 7.1 Was ist ein A/D-Wandler
Als analoge Spannung bezeichnet man eine sich stetig verändernde Abfolge von Spannungspotentialen, zwischen denen auch bei kleinsten Zeiteinheiten, keine Sprünge oder Unterbrechungen auftreten.
Im Gegensatz hierzu geht man bei digitalen Signalen davon aus, dass sich der Wechsel zwischen zwei Spannungspotentialen so abrupt abspielt, dass kein Übergang zwischen ihnen besteht.
Dieser Zustand ist technisch zwar nicht zu erreichen, doch soll hier davon ausgegangen werden, dass die Änderungsgeschwindigkeit der digitalen Spannungen um ein Vielfaches höher ist, als die der analogen Spannungen.

Der Begriff A/D-Wandler steht nun für eine elektrische Schaltung, die aus einem Spannungspotential, eine Abfolge von digitalen Spannungspegeln macht. Man könnte auch sagen, einem Spannungswert, wird eine Binäzahl zugeordnet.

Tut man dies in kurzen Abständen, so kann eine, sich ohne Sprünge verändernde Spannung, in Form einer Liste von Zahlen protokolliert werden. Je schneller ein A/D-Wandler arbeitet, desto dichter liegen die protokollierten Werte und umso genauer wird die Änderung der analogen Spannung abgebildet.

 

 

 

 

 

 7.2 Einführung 8 Bit - A/D-Wandlung:
Die MC80515/80535 Mikrocontroller besitzen 8 Eingänge denen analoge Signale im Bereich zwischen 0V und 5V zugeführt werden können. Diese Eingänge besitzen die Bezeichnungen AN0 bis AN7. Über einen Analog/Digital-Wandler kann der Mikrocontroller das analoge Eingangssignal je eines Einganges zu einem 8-Bit Digitalwert umwandeln. Die Wandlungszeit beträgt 15µs.

A/D-Wandler benötigen eine Referenzspannung, mit der sie das zu digitalisierende Eingangssignal vergleichen können. Diese wird bei den MC80515/80535 Controllern von aussen an den Pins VAGND und VAREF zugeführt. Sie ist mit 5V festgelegt. Dabei darf das Bezugspotential VAGND der Referenzspannung nur um ±0,2V von dem Bezugspotential GND der Versorgungsspannung des Mikrocontrollers abweichen. Die Abweichung von VAREF gegenüber der 5V Versorgungsspannung Vcc des Controllers darf 5% nicht überschreiten. Die Versorgungsspannung des Mikrocontrollers eignet sich als Referenzspannung des A/D-Wandlers nicht sonderlich gut, da Versorgungsspannungen digitaler Baugruppen viele Oberwellen besitzen. Die Wandlungsergebnisse werden dadurch ungenau.

Bevor eine A/D-Wandlung durchgeführt werden kann, muss der A/D-Wandler des MC80515/80535 eingestellt werden. Insbesondere muss ihm der Eingang mitgeteilt werden, an dem die Wandlung stattfinden soll. Ausserdem muss eingestellt werden, ob eine einzelne Wandlung stattfinden soll oder fortlaufende Wandlungen. Diese Einstellungen werden im SFR-Register ADCON = D8h (A/D-Wandler-Control) vorgenommen. Nach einer Wandlung befindet sich der digitale Wert der Analogspannung im Register ADDAT = D9h (A/D-Wandler-Daten).

Der Start einer Wandlung wird durch einen Schreibvorgang in das Register DAPR ~ DAh ausgelöst. Dieses Register besitzt die Besonderheit, dass der eingeschriebene Wert den Spannungsbereich der Wandlung einschränken kann. Dies ist von Vorteil, wenn ein Sensor grundsätzlich nur kleinere Spannungen liefert, als die maximalen 0-5V. Liegen z.B. alle Spannungen des Sensors zwischen 1,25V und 2,5V, dann kann der Wandlungsbereich des A/D-Wandlers auf dieses Spannungsfenster eingestellt werden und er löst nun diesen kleinen Bereich mit 8 Bit Genauigkeit auf. Dies führt zu einer wesentlich feineren Wertabstufung. Der maximale Spannungsbereich 0-5V wird eingestellt, wenn dieses Register mit dem Wert 0 beschrieben wird.

Wann eine Wandlung beendet ist, kann an dem Busyflag des AD-Wandlers festgestellt werden. Es trägt die Bezeichnung BSY = DCh und ist das 4. Bit des Registers ADCON (ADCON ist bitadressierbar). Besitzt BSY den Wert 1 dann läuft gerade eine Wandlung. Ist BSY= 0, dann befindet sich in ADDAT das Ergebnis einer zuvor abgelaufenen Wandlung.

 

 

 

 

 

 7.2.1 Zusammenfassung:
Soll der A/D-Wandler des MC80515/80535 benutzt werden, müssen also folgende Schritte ausführt werden ..

HARDWARE:
  • Anlegen einer 'sauberen' externen Referenzspannung von 5V an VAGND und VAREF
  • Anlegen eines Analogsignals an einen der Eingänge AN0-AN7

SOFTWARE:
  • Auswahl des gewählten Analogeinganges AN0 - AN7. (Bits MX0, MX1,MX2 in..) ADCON
  • Auswahl ob eine Einzelmessung oder wiederholte Messungen stattfinden sollen (Bit ADM in..) ADCON
  • Start der A/D-Wandlung durch Schreiben der gewünschten internen Referenzspannung nach DAPR
  • Warten bis die Wandlung durchgeführt wurde. (Busy-Flag BSY erst 1.. dann 0 in..) ADCON
  • 8Bit-Digitalergebnis aus dem Register ADDAT lesen ADDAT

 

 

 

 

 

 7.2.2 Das SFR-Register ADCON = D8h
Das Register befindet sich im oberen, internen, direkt adressierbaren RAM des Mikroconrollers. Es ist bitadressierbar. Von den 8 Bits dieses Registers ist eines nicht belegt. Zwei Bits haben mit dem A/D-Wandler nichts zu tun, sondern bestimmen die Baudrate der seriellen Schnittstelle, bzw. die Taktausgabe an Tor P1.6. Achtung diese Bits dürfen bei der Arbeit mit dem A/D-Wandler nicht unbeabsichtigt verändert werden.

 

 

 

 

BitName

BD

CLK

-

BSY

ADM

MX2

MX1

MX0

BitNr

7

6

5

4

3

2

1

0

BitAdresse

DFh

DEh

DDh

DCh

DBh

DAh

D9h

D8h

 

ADCON, Adresse D8h

 

 

 

 

BitName

RegisterBit

Funktion

MX0 

ADCON.0

Auswahl des Analogkanals 0 1 0 1 0 1 0 1

MX1 

ADCON.1

Auswahl des Analogkanals 0 0 1 1 0 0 1 1

MX2 

ADCON.2

Auswahl des Analogkanals 0 0 0 0 1 1 1 1

 

 

Eingang AN0 AN1 AN2 AN3 AN4 AN5 AN6 AN7

ADM 

ADCON.3

A/D-Modus: 0= Stop nach jeder Wandlung, 1= Fortlaufende Wandlung

BSY 

ADCON.4

BusyFlag: 0 =es läuft keine Wandlung, 1= Wandlung läuft

ADCON.5

nicht benutzt im MC 80515

CLK 

ADCON.6

Taktausgabe an Tor P1.6: 0 = keine Taktausgabe, 1 = Taktausgabe an CLKOUT/P1.6

BD 

ADCON.7

Baudrate bei 12MHz: 0 = 4800 Baud, 1 = 9600 Baud

 

Wirkung der Bits im Register ADCON

 

 

 

 

 

 7.2.3 Das SFR-Register DAPR = DAh
Das Register befindet sich im oberen, internen, direkt adressierbaren RAM des Mikrocontrollers. Ein Schreibvorgang zu diesem Register bewirkt zwei Dinge. Zum einen wird die interne Referenzspannung in das Register geschrieben und zum anderen wird die A/D-Wandlung gestartet.

 

 

 

 

Stufe

Nibble binär

Nibble hex

IVAGND in V

DAPR 0-3

IVAREF in V

DAPR 4-7

0

0000

0

0,0000

5,000

1

0001

1

0,3125

-

2

0010

2

0,6250

-

3

0011

3

0,9375

-

4

0100

4

1,2500

1,2500

5

0101

5

1,5625

1,5625

6

0110

6

1,8750

1,8750

7

0111

7

2,1875

2,1875

8

1000

8

2,5000

2,5000

9

1001

9

2,8125

2,8125

10

1010

A

3,1250

3,1250

11

1011

B

3,4375

3,4375

12

1100

C

3,7500

3,7500

13

1101

D

-

4,0625

14

1110

E

-

4,3750

15

1111

F

-

4,6875

 

Programmierbare Referenzspannungen im Register DAPR, Adresse DAh

 

 

Zur Programmierung der internen Referenzspannung denkt man sich das Register DAPR in zwei Nibbles geteilt. Das Nibble mit den Bits 0-3 bestimmt die Höhe des internen Bezugspotentials IVAGND, die Bits 4-7 die Höhe der internen Referenzspannung IVAREF. Wird beispielsweise der Wert E8h in dieses Register geschrieben, besitzt die interne Referenzspannung einen Wert zwischen 2,5V und 4,37V. Dieser Spannungsbereich wird von dem A/D-Wandler in ein 8-Bit Digitalbyte gewandelt. Natürlich muss die Spannung am Analogeingang ebenfalls in diesem Bereich liegen. Andernfalls erhält man als Ergebnis der Wandlung den Minimal- bzw. Maximalwert 00h oder FFh. Die Tabelle zeigt die einstellbaren Spannungen für IVAGND und IVAREF, wenn die externe Referenzspannung an den Pins VAGND und VAREF 5V beträgt. Für die Tabellenwerte ist weiterhin zu beachten, dass IVAGND immer um mindestens 4 Stufen kleiner sein muss als IVAREF, denn die kleinste interne Referenzspannung mit der dieser A/D-Wandler noch richtig arbeitet ist 1V. (4 Stufen entsprechen 1,25V)

Die Einstellgenauigkeit der internen Referenzspannung ist 5mV. Dementsprechend wird bei kleinen Referenzspannungen der Messfehler grösser. Andererseits steigt die Auflösung der Messung und diese ist in den meisten Anwendungen wichtiger ist, als der Messfehler.

 

 

 

 

 

 7.3 Einführung 10 Bit – A/D-Wandlung:
Durch die Möglichkeit, die interne Referenzspannung des A/D-Wandlers am MC80515/80535 einzuschränken, ist es möglich, im Bereich zwischen 0-5V eine Auflösung von 10 Bit zu erreichen. Hierzu werden zwei Wandlungen vorgenommen. Die erste Wandlung ermittelt mit 8 Bit Auflösung die Höhe der analogen Eingangsspannung. Aufgrund dieses Wertes, wird die interne Referenzspannung auf die nächste untere Stufe für IVAGND eingestellt. IVAREF erhält einen 4 Stufen höheren Wert (Mindestabstand). Nun erfolgt eine zweite Messung, die den eingeschränkten Bereich von IVAGND + 1,25V mit ebenfalls 8 Bit Auflösung digitalisiert. Dieser Wert wird zu der Voreinstellung von IVAGND addiert. Der nun erhaltene Wert entspricht mit seiner 4mal grösseren Auflösung der Auflösung eines 10 Bit A/D-Wandlers.

 

 

 

 

Stufe

dez

Stufe

hex

Spannung in V

digitales Ergebnis

dez

hex

0

0

0,0000

0

00

1

1

0,3125

16

10

2

2

0,6250

32

20

3

3

0,9375

48

30

4

4

1,2500

64

40

5

5

1,5625

80

50

6

6

1,8750

96

60

7

7

2,1875

112

70

8

8

2,5000

128

80

9

9

2,8125

144

90

10

A

3,1250

160

A0

11

B

3,4375

176

B0

12

C

3,7500

192

C0

13

D

4,0625

208

D0

14

E

4,3750

224

E0

15

F

4,6875

240

F0

 

Spannungswerte von DAPR und deren digitale Ergebnisse

 

 

 7.3.1 Im Einzelnen
Der vorliegende A/D-Wandler des Controllers 80515/80535 löst seine 5V Referenzspannung mit 8-Bit, also in 256 Schritte auf. Das entspricht 5V : 256 = 0,0195313V pro Schritt. Die Spannungs-Tabellenwerte des Registers DAPR sind das 16, 32, 48, 64 usw. -fache dieses Wertes. Gleichzeitig stellen die Vielfachen 16, 32, 48, 64 usw. die Ergebnisse der digitalen Wandlung von den zugeordneten Spannungen dar. Läge also am Eingang AN.x die Spannung 0,9375V an, so würde als digitales Ergebnis 48 = 30h = 00110000b im Register ADDAT stehen. Die obige Tabelle verdeutlicht dies.
An der hexadezimalen Darstellung der digitalen Ergebnisse kann man weiterhin sehen, dass Spannungen, die zwischen zwei in der Tabelle genannten Spannungen liegen, nur Auswirkungen auf das untere Nibble haben können. Das obere Nibble der digitalen Ergebnisse stellt also ausschliesslich Spannungen der Tabelle dar, während das untere Nibble die Werte zwischen zwei Tabellenspannungen repräsentiert. (Überdies entspricht die Stufennummerierung des Registers DAPR diesem oberen Nibble)
Eine Messung im 0-5V Wandlungsbereich, die als Ergebnis A3h ergibt, repräsentiert also eine Spannung, die grösser ist als 3,125V, denn nach der Tabelle würden 3,125V dem digitalen Wert A0h entsprechen. (Die zugehörige Stufe zur Programmierung IVAGND bzw. IVAREF in DAPR lautet Ah.)

Wie im einleitenden Text besprochen, soll nach einer ersten Messung, eine zweite, mit einegeschränkter innerer Referenzspannung folgen. Nimmt man das obige Beispiel, so wäre es sinnvoll, den Wert von IVAGND auf 3,125V zu setzen. Dies geschieht, indem man im unteren Nibble des Registers DAPR den Stufenwert Ah einträgt. (Durch viermaliges Schieben nach rechts des oberen Nibbles der 1. Messung erhält man diesen Stufenwert.) Im oberen Nibble des Registers DAPR könnte theoretisch der nächste Stufenwert Bh eingetragen werden denn die vorliegende, gesuchte Spannung kann nur zwischen zwei, Stufen der Tabelle liegen. Dies geht nicht, da der vorliegende A/D-Wandler eine interne Referenzspannung von mindestens 1V benötigt, zwei Stufen aber nur 0,3125V voneinander entfernt sind. Es müssen vier Stufen zwischen dem Wert von IVAGND und IVAREF liegen. Im Beispiel muss im oberen Nibble des Registers DAPR die Stufe Ah+4h = Eh eingetragen werden.

 

www.GoBlack.de