Zurück   (C) Christof Ermer, Regensburg Gästebuch (public. sonst besser Email)


Gratis Counter 24.04.2013


Signal Aufbereitung für den bestmöglichen Nutzungsgrad des Auflösungsbreichs von Analog Digital Konvertern  ( ADC )
am Beispiel eines PTC Temperatur-Sensors PT100

Das  Problem: 
  --  Messsignale  sind meist sehr klein..
  --  Oft gibt es einen Spannungsoffset relativ zum Bezugspunkt wie GND
  -- Die Messsignale dürfen/sollen nicht durch unspezifische Belastungen verfälscht werden.
        ( das heißt, dass in der Regel ein Impedanzwandler nachgeschaltet werden muss )

Analog-Digital Konverter haben meist ihre Auflösung von X-Bit zwischen dem Eingangsspannungsbereich  zwischen
0V=GND  und der Referenzspannung  ( AVcc )
 z.B. 2.56V Band Gap Spannung oder einer im Handbuch angegebenen Spannung . z.B. +5V.
Nehmen wir mal an die ADC Maximalspannung = 5V. Das hängt vom verwendenden ADC ab.
Ein 12 BIT ADC liefert also  2^12 = 4096 Werte zwischen 0..4095

Dieses Messsignal muss nun so aufbereitet werden, dass es in das Eingangsspanungsfenster passt.
Lästig, aber sinnvoll.
Folgende Grafik verdeutlicht diese Verhältnisse:



Es führen immer mehrere Wege zum Ziel.
Das Mittel der Wahl, um die geforderte Präzision zu erreichen sind Operationsverstärker.

Ein 'mögliches' Lösungsprinzip ist die im Funktionszusammenhang quasi "lineare" Signalbehandlung:


Leider wird der Aufwand nun doch schon beträchtlich.  Elektroniker nennen das "Gefrickl"
Operationsverstärker = OPs wollen gerne mit Dualen Betriebsspannungen versorgt werden.. also +10V -10V etc..
Und solche Netzteile darf man sich zumeist selber schnitzen. Aufwändig eben...
Abhilfe ist ein möglicher Einsatz von sogenannten Rail-to-Rail Operationsverstärker
.....und so sieht die Realisierung in der Praxis aus:

Das ganze will nun noch einmal kalibriert werden!
Und die Parameter sollen „gut“ dokumentiert sein, sonst ist der ganze Aufwand wertlos.
Denn diese Parameter spielen für die anschließende Interpretation in Form der Auswertesoftware eine große Rolle.
Später weiß sonst niemand mehr was es bedeutet.



Ein völlig anderes Konzept.. evtl mit "Nur einem" RailToRail OP realisierbar :
Sieht aus wie eine abgeglichene  Brücke: Aber ! erfordert  eine, gut verstandene, Wirkung der Schaltung mit Offsett-Vorspannung und Verstärkung.
Der OP stellt immer einen Abgleich der Brücke her. so dass die "R1/R2 = R4/R5" Bedingung erfüllt ist..

Welche Konsequenz das jedoch auf die Ausgangsspannung hat ist nicht ganz so leicht zu verstehen.
Und es ist schwer beherrschbar...
siehe auch den Artikel auf :
http://www.mikrocontroller.net/articles/Operationsverst%C3%A4rker-Grundschaltungen

In dieser Dimensionierung ist die Ausgangsspannung tatsächlich 0V bei 0 Grad, da hier die Brücke Bei OP=0V  abgelichen ist


im Detail:
Eine Abwandlung des nichtinvertierenden Verstärkers erlaubt es, einen konstanten Offset vorzugeben. D.h. von der zu verstärkenden Eingangsspannung U(e) wird eine konstante Spannung U(o) abgezogen und die Differenz verstärkt. Auf der Ausgangsspannung U(a) findet sich die oOffsetspannung ((o) allerdings wieder:
Der Vorteil dieser Schaltung ist, daß nur die Differenz verstärkt wird. Damit kann eine größere Verstärkung gewählt werden. Zu berücksichtigen ist dabei, daß die Ausgangsspannung U(a) um die Offsetspannung U(o) überlagert ist.

Es gilt: 
Offsetspannung:

mit U(V) = Versorgungsspannung an R1

Verstärkung:

Ausgangsspannung:

und so verhält die Schaltung sich in einer Simulation:   Poti = 200Ohm  ( OP kann Offsetfehler haben ~50mV )
-->kräftige Verstärkung der Differenz...

und so mit POTI = 100Ohm = 1:1 Brückensituation...fehler ist OP Offsett.  OP-Ausgang zeigt immer noch 53mV statt 0V
Offset vom Poti ist gleich dem Ofsett des Spannungsteilers


ADC Pegelanpassung, trickreich und effektiv.
So kann man mit einem ADC der nur z.B. 0..5 V Eingänge hat sehr genau auch negative Spannungen messen.. 

Vorteil
: Gut gegen Zerstörung durch Überspannungen von aussen geschütz.
Überspannung wird einfach abgeleitet.. Hohe Vorwiderstände vorhanden
Gut eignen sich  Widerstandverhältnisse im normalen 10K Bereich

Nachteil
: Leider bühst man 1 Bit Auflösung ein.
Es ist eine
 Rückspannung am "Eingang" messbar.
Das kann unerfahrene Verwirren.!!
Es ist immer eine Kalibrierung notwendig.Schritte:
1. Eingang auf Masse (0V) legen..  ADC lesen und Lese-Wert speichern als ZeroRead = OffsetValue  
   
Vorgehensweise: ermittelten Wert entweder fest Einprogrammieren und
ablegen oder
Varibale im EEPROM abspeichern

2. Eingang auf  ReferenzSpannung im Mittelbereich  ( ~2.5V)  legen.. 
ADC lesen und Lese-Wert speichern als RefRead.


3. Berechnen des Kalibrignusfaktors und des Offsets

/*

1. Schritt, Eingang auf Masse Legen

2. Messen des ADC Wertes bei 0V
                            -->  ADC_ZeroValue
3. Schritt, Eingang auf Reference legen.
                            --> ReferenceVoltage

4. Messen des ADC Wertes mit Referenzspannung
                            --> ADC_ReferenceValue
Berechnen Volt/Bit -> >>  ReferenceVoltage/(ADC_ReferenceValue - ADC_ZeroValue )
*/




//Diese Funktion ist 1* auszuführen, "nachdem" die Kalibrierung Vorgenommen wurde.
// ************************************************
void ADC_CalculateFaktor( ADC_CALCULATE_TYPE * psADC )
// ************************************************
{
// Referezspannung / (Messwert -ZeroOffset)    Berechnen Volt/Bit -> ReferenceVoltage/(ADC_ReferenceValue - ADC_ZeroValue )
psADC->fVoltProBit = psADC->fReferenceVoltage / (psADC->ui16Calib_Reference_Val - psADC->ui16Calib_Zero_Val);
};

// ************************************************
float CalcLVolt_LTC1298( uint16_t u16ReadedVal )
// ************************************************
{return (u16ReadedVal * gsLTC1298.fVoltProBit);};