mikrocontroller.net

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


Autor: Olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.