Gast
#464806
Liebe Forumsteilnehmer! Ich habe folgendes Problem: Von einem A/D-Wandler bekomme ich ein Datenwort. Dieses ist ein 16bit signed integer, welches die analoge Ausgabe eines Präzisions-Temperaturfühlers repräsentiert. Da ich gerne die Hardware so simpel wie möglich und insbesondere ohne Abgleichpunkte realisieren möchte, dachte ich an eine Software-Korrektur der zwangsläufig auftretenden Offset- und Scale-Fehler. Wie realisiert man das am besten, wenn man ohne floating-point-operationen auskommen möchte? Der erwartete "Soll"-Wertebereich (darauf ist der instrumentation amplifier dimensioniert) liegt bei 0..30.000 LSB; der Offset kann etwa +/-200 LSB betragen, der Skalierungsfehler würde bei einem Offset von 0 zu einem Endwert von 29.000 bis 31.000 LSB führen. Kurz mit anderen Worten: Ausgangssituation: Ist-Wertebereich: -200 - 31.200 (16 bit signed int) Soll-Wertebereich: 0 - 30.000 (16 bit signed int) Korrektur nach Kalibrierung über im EEPROM abgelegte Koeffizienten: Offset: -200..200 (16 bit signed int) Scale: ??? Implementation in AVR-ASM oder AVR-GCC ohne Floating-Point-Lib -> ??? Der allein durch die Software-Korrektur erzeugte Fehler sollte natürlich möglichst kleiner 1 LSB sein. Wer kennt sich aus? Vielen Dank schonmal!