Um keine Nachkommastellen zu bekommen, die der Controller wegschmeisst, ist es sinnvoll erst mal alle Multiplikationen auszuführen.
Ich würde auch nicht mit 5 sondern mit 50 Multiplizieren und somit eine Stelle nach dem Komma kriegen.
Bei 8 Bit machen mehr Nachkommastellen auch nicht wirklich Sinn.
Das Ergebnis ist dann das 10 Fache des eigentlichen Messwertes, das kann man dann in der Ausgaberoutine ausgleichen.
Eine Beschreibung der Möglichkeiten zur Division gibts hier: http://www.avr-projekte.de/rechnen.htm
Noch was:
Der A/D Wandler und die Referenzspannung sind niemals genau.
Ich Bastel dann immer einen Wert in die Formel mit rein der Variabel ist.
Das wäre z.B. die 5. Wenn man hier stattdessen 500 verwendet kann man diesen über ein Abgleichprogramm neu berechnen lassen und im EEPROM abspeichern.
Also bekannte Spannung anlegen und an dem Wert ( z.B. 500 ) so lange rum drehen, bis der auf dem Display angezeigte Wert mit dem mit dem Multimeter gemessenen übereinstimmt. Das Ganze noch mal mit anderen Spannungswerten wiederholen ( Nichlinearitäten ).
Die Reste kannst Du auch verwenden um die ASCII Zeichen von hinten nach Vorne zu berechnen.
Also Zahl / 10 Rest x ; x + Fix Wert für ASCII ergibt dann den ASCII Code.
Das Spielchen dann so weiter, bis die komplette Zahl zu ASCII verarbeitet ist.
Nochmal Nochmal was:
Wenn der Controller höhere Lasten treiben muss z.B. mehrere LED's schwanken die A/D Wandlerwerte je nach Belastung.
Anscheinend wird dabei die Controllerinterne GND Schiene belastet und verfälscht den A/D Wert - ( War bei mir auf jeden Fall bei einem ATMEGA 8 so ) .
Lesezeichen