In diesem Fall würd ich sagen: zu früh gerundet.
3,81V * 1024 / 5V = 780,288
Mein Integerwert wäre also 780
Die Formel steht auch im Datenblatt zum ATmega8: ADC = Vin * 1024 / Vref
Im Datenblatt steht auch, was der ADC macht, wenn Vin = Vref ist und bei der Gleichung dann 1024 rauskommen müßte, die mit 10 Bit ja nicht darstellbar sind: Er gibt 1023 (3FF) aus.
Durch Deinen Rundungsfehler sieht es so aus, als wenn Du mit 1000 statt mit 1024 gerechnet hättest.
Da sich in der Reihenschaltung die Spannungen wie die Widerstände verhalten, bräuchte man den Strom nicht immer auszurechnen.
Rin / Rg = Vin / Vref
oben eingesetzt
ADC = Rin * 1024 / Rg
mit Taster K2 und K4 gedrückt
ADC = 3200 Ohm * 1024 / 4200 Ohm = 780,19047619047619047619047619048 (mehr gab mein WIN Rechner nicht her)
Man müßte jetzt alle Tastenkombinationen durchrechnen und schauen, was die jeweiligen ADC Werte sind.
Im Source könnten sich dann Bereiche finden lassen, anhand derer entschieden wird, welche Taster gedrückt sind.
Bereiche deshalb, weil die realen Widerstände ja nie 100% den angegebenen entsprechen und noch wegen irgendwelcher anderen Toleranzen. Also zB ADC ist zwischen 770 und 790 - Aha, dann ist K2 und K4 gedrückt.
Gruß
Searcher
Lesezeichen