Dein ADC liefert 4.88/255 V pro Inkrement. Die Spannung für den ADC-Wert adcwert ist also 4.88/255*adcwert. Der Faktor 4.88/255 ist kleiner als 1, was einem 2 Möglichkeiten lässe
-1- Man nimm float-Arithmetik. Das funktioniert, ist aber teuer.
-2- Man macht eine Fixpunkt-Rechnung mit int-Arithmetik.
Für -2- erweitert man die entstehenden Ausdrücke mit 10000 (oben hatte ist 32768, ist aber nicht so toll wen man Dezimaldarstellung braucht).
4.88/255*10000*adcwert ist dann die Gemessene Spannung in Einheiten von 1e-5V = 100µV = 0.1mV
Da faktor = 191 und adcval < 256 passt das in 16 Bit rein.Code:const uint16_t faktor = (double) 4.88/255 * 10000L; uint16_t spann_100uV = faktor*adcval;
Die Vorkommastelle deiner Spannung ist dann spann_100uV / 10000, die Nachkommastellen sind spann_100uV % 10000.
Beachte, daß du für die Ausgabe der Nachkommastellen eine 1 als "0001" ausgeben musst, eine 33 als "0033", etc.
Lesezeichen