Berechnung der Spannung von ADC Messung Ausgabe auf LCD

Gast #1555483
Lesenswert?

Hallo

Ich möchte eine Spannung mittles des ADC eines Mega8 messen und als 
Spannungswert mit 2 Nachkommastelle auf einem LCD anzeigen lassen.

Dazu habe ich mir folgende Formel überlegt:

Referenzspannung: 3 Volt
Spannungsteiler am ADC 1 Eingang: 27,1 kOhm zu 5,1 kOhm
10 Bit ADC = 1024 Werte

Formel: ADCwert*3*27,1/(1024*5,1)

Nun habe ich mir überlegt das es sinnvoll wäre die Spannung in Vor-und 
Nachkommateil aufzuteilen um die Int to ACSII wandlung besser 
durchführen zu können

Also wollte ich die Fol#rmel *100 nehmen und den Vorkommateil mit 
Ergebnis/100 und den Nachkommateil mit Ergebnis%100 zu berechnen.

Aber immer wenn ich beides (Vor-und Nachkommateil) berechnen möchte sagt 
mir der Compiler das der Speicher des AVR voll ist. Bei nur einer 
Berechnung (z.B. nur Vorkommateil) ist der AVR schon zu ca 80% belegt...

Das kann ja nicht richtig sein oder?

Wie kann man diese berechnung geschickt lösen, am besten ohne floats und 
printf Funktion?

Wäre sehr dankbar für Denkanstösse, oder auch beispielprogramme.

Programmiert wird das ganze in C im AVR Studio.

MFG Olli
Gast #1555547
Lesenswert?

>Formel: ADCwert*3*27,1/(1024*5,1)

Was soll das sein, fehlt da nicht was?

Ich vermute mal folgenden Anschluss:

          R1
Signal ---XXXX----+-----ADC
                  |
                  X
               R2 X
                  X
                  |
   GND -----------+-----GND

Dann wäre die Formel dazu:

Mit deiner Referenzspannung und den Widerstände ist so also eine Messung 
von ca. 19V((27.1+5.1)/5.1=18.9V) möglich, ich schätze aber mal du 
wolltest ca. 16V (27.1/5*3=15.9V) messen können, oder? ;)

Zu Berechnung im AVR kann ich leider nichts sagen, habs nur mit PICs zu 
tun.
Gast #1555561
Lesenswert?

Hallo

Ich habe mich im ersten Beitrag leider versehen.
Du hast natürlich vollkommen recht!

Die 2. Möglichkeit ist richtig. Der Wert 27,7 war von mir schon addiert 
worden.

Die Schaltung stimmt auch.

Bei mir:
R1= 22k
R2= 5,1k
Uref= 3V

Maximal sollten ca 15,9V zu messen sein, es liegen aber immer nur ca 12V 
an, also sollte das kein Problem darstellen.

MFG Olli
Gast #1555573
Lesenswert?

Achso, na das erklärt es ja ;)
Was für einen AVR hast du denn? Hat der vielleicht einen 
Hardwaremultiplikator? Vielleicht lässt sich dieser nutzen um den 
Speicher recht leer zu halten. SW braucht halt zum Multiplizieren immer 
ein wenig Speicher, da kanns schonmal zügig eng werden. Vielleicht lässt 
sich eine Routine implementieren, die zunächst den ADC-Wert mit hundert 
multipliziert, diesen Wert speichert und dann den von der Multiplikation 
verwendeten Speicher wieder frei gibt um die Modulo-Operation 
auszuführen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren