Forum: Mikrocontroller und Digitale Elektronik Berechnung der Spannung von ADC Messung Ausgabe auf LCD


von Olli (Gast)


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

von Michael (Gast)


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.

von Olli (Gast)


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

von Michael (Gast)


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.

von Falk B. (falk)


Lesenswert?


von Olli (Gast)


Lesenswert?

Hallo

Vielen Dank @ Falk Brunner!

Die Festkommaarithmetik hat mir soweit geholfen das ich nur noch ca 10% 
des Speichers vom Mega8 brauche!

MFG Olli

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.