Hallo Micro5,Zitat von Micro5
ich glaube, Du hast hier ein klassisches C-Problem. Dein Compiler rechnet in unsigned int mit 16 bit. 2,56 ist in uint16 nunmal 2 und nicht 2,56. Daraus ergibt sich ein Rechenfehler von 28%. D.h. Dein Ergebnis liegt grundsätzlich 28% niedriger als das erwartetet Ergebnis. Das wären dann bei 1,4V etwa 0,392V Fehler und ergibt eine Spannung von 1,008 V.
Es gibt drei Möglichkeiten:
1. verwende Float zum berechnen, was allerdings ein Speicheroverkill ist, oder
2. Berechne im integer Wertebereich
result = readADC(0) / 4;
3. berechen im 32 bit Wertebereich
result = (unsigned int) ((unsigned long)readADC(0) * 256/102400);
Grüsse,
Schimmi
Lesezeichen