Berechnung der Spannung von ADC Messung Ausgabe auf LCD

Gast #1555483
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
>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
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
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

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.