Waage mit Äpfeln
1 Infos ADC
Sample-and-Hold-Schaltkreis

Analog-Digital-Wandler, kurz: ADC (engl. analog digital converter) arbeiten mit einem sogenannten Sample-and-hold-Schaltkreis. Der Vorteil: man hat eine stabile Eingangsspannung.

Mehrere Eingänge lassen sich bequem über ein Auswahlregister selketieren und über Steuerregister lassen sich an der ADC-Logik Einstellungen vornehmen. Der di­gi­talisierte Wert wird in einem Register gespei­chert.

In diesem Abschnitt wird die Funktionsweise des AD-Wandlers mit dem Wägeverfahren (sukzessive Approximation) leicht erklärt. Die Umrechnung des digitalen Wertes in einen anlaogen Wert wird anschaulich hergeleitet. Weiter wird die Anzeige des digitalisierten Wertes am LCD und auch die Inbetriebnahme von analogen Sensoren mit einer Ausgangsspannung von 0 bis 10 V erklärt.

2 Sukzessive Approximation: Wägeverfahren
Waage mit Äpfeln
Vergl.-Wert
    512    
512-256=256
256+128=384
384-64 =320
Digital-Wert
    320    
    320    
    320    
    320    

Mit Hilfe des Wägeverfahrens kann der analoge Wert nun digitalisiert werden. Der ADC des PIC33-Mikrocontrollers hat mit 10 Bit eine Standardauflösung von 210 = 1024 entspricht. Hiermit kann eine analoge Spannung zwischen 0 und 3,3 V in einen digitalen Wert zwischen 0 und 1023 gewandelt werden.

Das Wägeverfahren macht nun folgendes: Als Vergleichswert wird die halbe Auflösung heran­ge­zogen. Ist der Digitalwert kleiner als der Vergleichswert, wird die Hälfte des aktuellen Vergleichs­wertes abgezogen. Somit beträgt der neue Vergleichswert nun nur noch: 512 -256 = 256. Ist der Digitalwert jedoch größer als der Vergleichswert wird die Hälfte addiert. Dadurch hat man nach spätestens 10 Vergleichen den richtigen Wert.

3 Umrechnung des digi­tali­sier­ten Wer­tes in eine Spannung
Dreisatz Prinzip

Schließt man an den analogen Eingang des Mikrocontrollers eine Spannung zwischen 0 und 3,3 V an, verhält sich die analoge Spannung proportional zum Digitalwert der einen Wert zwischen 0 und 1023 aufweist. Aus diesem Grund kann man die analoge Spannung einfach berechnen zu:

$$ spannung=wert\cdot \frac{3300~mV}{1023}$$

Beim Berechnen der Spannung ist auf den Datentyp long zu achten. Der digitale Wert kann mit der Funktion int ADCread( int pin ); ausgelesen werden: wert = ADCread( Poti1 );.
Die Funktion wird in der ADC-Bibliothek bereitgestellt. Hierin befindet sich auch die Funktion void ADCinit( void ); mit deren Aufruf ADCinit( ); der ADC initialisiert werden muss.

4 Spannungsan­zeige am LCD mit dem Modu­lo-Operator
LCD mit Spannungswertanzeige

Der Modulo-Operator % liefert den Divisionrest. Da das LCD nur einzelne Zeichen anzeigen kann muß der Spannungswert mithilfe dieses Operators in einzelne Zeichen "zerlegt" werden.
int ergebnis, a=5,b=2;
ergebnis=a%b; //auf ergebnis ist der Wert 1 gespeichert

Legt man nun ein Array für eine LCD-Zeile an: unsigned char T2[16]={"U = 0,000 V "};, kann man die Spannungszeichen wie folgt überschreiben:
T2[4]=(spannung/1000)+48, T2[6]=(spannung/100)%10+48;
T2[7]=(spannung/10)%10+48, T2[8]=(spannung)%10+0x48;
Der Wert 48, wird dazu addiert, da das 48. Zeichen in der ASCII-Tabelle die 0 ist.

5 Externe analoge Sensoren
Abstandssensor Firma Wenglor
  1. Arbeitsbereich Abstandssensor (Fa. Wenglor): $40 - 160~\text{mm}$
  2. Spannungsbereich Abstandssensor: $0-10~\text{V}$
  3. Spannungsbereich Mikrocontroller: $0-1361~\text{mV}$
    Ein Spannungsteiler am Mikrocontroller, der für 24 V ausgelegt ist, setzt die Spannung auf $U_2=U_1\frac{R_2}{R_1+R_2}$$=10~\text{V} \frac{2~k\Omega}{12.7~k\Omega + 2~k\Omega} $$=1361~\text{mV}$ um.
  4. Digitalbereich Mikrocontroller: $0-422$
    Hinweis: $wert=1361~mV$$\cdot \frac{1023}{3300~mV}$$=422$
  5. Der Meßbereich ($160~mm-40~mm$$=120~mm$) ist proportional zu den Digitalwerten.
    Abstand:    $\text{abstand}=\text{digitalwert}\cdot \frac{120}{422}$$+40$


Aufgabe 1 Wägever­fahren

Apfel auf Waage

Der ADC des dsPIC33 Mikrocontrollers hat eine Auflösung von 10 Bit oder alternativ 12 Bit. Berechne die Anzahl der notwendigen Schritte zur Digitalisierung für folgende Werte:

  1. 1040 für 12 Bit,
  2. 228 für 10 Bit,
  3. 1004 für 10 Bit.
  1. 2048 1024 1536 1280
    1024 512 256 128
    1152 1088 1056 1040
    64 32 16

  2. 512 256 128 192
    256 128 64 32
    224 240 232 228
    16 8 4

  3. 512 768 896 960
    256 128 64 32
    992 1008 1000 1004
    16 8 4


Aufgabe 2 Programmieren

LED Balkenanzeige

Zur Verwendung des ADC wird eine Bibliothek zur Verfügung gestellt. Binde dafür die Datei ADCconfig.h und ADCconfig.c in das Projekt ein.

  1. Erstelle das Projekt 08 ADC und schreiben die Datei 08-ADC-1.c, in der mit Hilfe der LEDs einen Dualzähler realisiert werden soll. Hinweis: Ändere hierzu das Ausgabeformat des ADC in der Datei ADCconfig.c.
  2. Programmiere eine LED-Balkenanzeige in Abhängigkeit des ADC-Wertes in der Datei 08-ADC-2.c. So soll beispielsweise für einen ADC-Wert zwischen 0 und 145 keine LED leuchten, zwischen 146 und 291 die LED L1 und zwischen 292 und 437 LED L1 und L2 leuchten u.s.w. Achte auf eine gleichmäßige Einteilung.

Aufgabe 3 ADC mit LCD

LCD

Programmiere (08-ADC-3.c) die Spannungsanzeige am LCD mit 3  Nachkommastellen für das Poti 1.


Aufgabe 4 ADC mit Abstands­sensor

Der Abstandssendsor OCP162H0180 von Wenglor arbeitet mit hochauflösenden CMOS-Zeile und DSP-Technologie und ermittelt den Abstand über eine Winkelmessung.

Abstandssensor der Firma Wenglor

LIME 1: Schließe an dem externen Eingang EXT1 einen Sensor mit einer analogen Ausgangsspannung zwischen 0 und 10 V an. Die Anzeige des Abstandes am LCD ist zu programmieren.
Hinweis: braunes Kabel: 24 V, grünes Kabel: Masse 0 V, rosa Kabel: Analogwert 0 bis 10 V an EXT1

LIME 2:Die Eingänge sind für maximal 3,3 V ausgelegt. Aus diesem Grund musst du hier einen Spannungsteiler realisieren. Wenn du mit einer höheren Spannung als 3,3 V auf einen Eingang gehst, zerstörst du den Mikrocontroller!

  1. Leite die Formel für die Berechnung des Abstandes für deinen Sensor her.
  2. Programmiere die Anzeige (08-ADC-4.c).

Aufgabe 5 Temperatur­sensor

Temperatursensor der Firma Wenglor

Gegeben ist der Temperatursensor der Firma Wenglor FFXT009 mit einem Arbeitsbereich von 20 bis 140 °C und einer analogen Ausgangsspannung von 0 bis 10 V

  1. Berechne den notwendigen Spannungsteiler für 10 V auf 3,3 V. Hinweis: R1 = 12,7 kΩ
  2. Leite die Formel zur Berechnung der Temperatur her.
  3. Programmiere die Anzeige der Temperatur auf dem LCD.
  4. Wie würde die Temperaturberechnung in einem Arbeitsbereich von 0 bis 140 °C und wie bei -20 bis 140 °C funktionieren?
  1. Widerstand: $R_2=R_1\frac{U_2}{U_1-U_2}=6,25~k\Omega$

  2. 1 Arbeitsbereich Sensor: 20 - 140 °C

    2 Spannungsbereich Sensor: 0 - 10 V

    3 Spannungsbereich MC: $U_2=U_1\frac{R_2}{R_1+R_2}=3300~mV$

    4 Digitalbereich MC: $\text{digitalwert}=3300~mV\frac{1023}{3300~mV}=1023$

    5 Temperaturberechnung: Meßbereich: 140 - 20 = 120 °C
      $temperatur=digitalwert\cdot \frac{120~^\circ C}{1023}+20~^\circ C$

  3. Anzeige am LCD

    digitalwert=ADCread(EX1);

    temperatur=(digitalwert*120)/1023+20;

    T1[5]=temperatur%10+48;

    T1[4]=(temperatur/10)%10+48;

    T1[3]=(temperatur/100)%10+48;

  4. Temperaturberechnung

    0 - 140 °C:  $temperatur=digitalwert\cdot \frac{140~^\circ C}{1023}$

    -20 - 140 °C:  $temperatur=digitalwert\cdot \frac{160~^\circ C}{1023}-20~^\circ C$


© mylime.info