Zurück



05.1212

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.. Hoh eVorwiderstände vorhanden
Gut eignen sich  Widerstandverhältnisse im normalen 10K Bereich
Nachteil: Leider büst 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 im "main.h" als #define ADC_CHAN(X)_ZEROREAD 123 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
Beispiel in softwaremodule: LTC1298.c   & LTC1298.h.
/*
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);
};