www.mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik Spannung am ADC messen "Formel für CV"


Autor: Andre (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hay Leute

Ich möchte gerne die Spannung lesen die am ADC anliegen.

Zumessen sind max. 14V, Spannungteiler und sowas habe ich schon.
Mir fehlt die formel dafür das ich den AD Wert 0-1023 Umwandeln kann in 
Volt.

Kann mir jemand helfen oder hat einer diese formel wie ich das umrechnen 
kann.?

Ich nutze einen Mega128 Am AVCC liegen 5V an und der AREF ist noch frei.


MFG Andre

Autor: Fred S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Andre,

Du musst Dich für eine der drei möglichen Referenzspannungsquellen 
(Aref, AVcc oder interne Referenz -- in ADMUX setzen) entscheiden. Falls 
Du Aref wählst, muss dieser Pin natürlich außen beschaltet sein und die 
Spannung an Aref darf nicht größer als AVcc sein (noch einmal im 
Datenblatt verifizieren!). Dein Spannungsteiler sollte ein 
Maximalspannung abgeben, die kleiner als die gewählte Referenzspannung 
ist.

Im Datenblatt http://www.atmel.com/atmel/acrobat/doc2467.pdf findest Du 
auf den Seiten 241 und 242, wie sich die 10-Bits des ADC-Ausgangs zur zu 
messenden Spannung und zur Referenzspannung verhalten.

Gruß

Fred

Autor: Andre (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hay  Fred S.

Das alles habe ich doch schon der AVCC ist schon belegt und der 
spannungsteiler ist auf 14V ausgelegt da ich einwenig diferenz haben 
möchte.

Es geht mir eigentlich nur um die formel vom ADC wert zum spannungswert.


MFG: Andre

Autor: Reiner S. (chickstermi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ADC_Value = (U_Mess/(R1+R2) * R2) * 1024/Aref

Hoffe da ist kein Fehler drin...

Wie man daraus U_Mess ermittelt sollte durch Umstellen rauszufinden 
sein...

mfg reiner

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andre wrote:
> Hay  Fred S.
>
> Das alles habe ich doch schon der AVCC ist schon belegt und der
> spannungsteiler ist auf 14V ausgelegt da ich einwenig diferenz haben
> möchte.
>
> Es geht mir eigentlich nur um die formel vom ADC wert zum spannungswert.
>

d.h wenn du 14V anlegst, kriegst du vom ADC einen Wert von 1024.
Legst du 7V an, dann kriegst du 512
Legst du 1.4V an, kommt 102 raus.

Wie war das?
1024 Äpfel kosten 14 Euro
Wieviel kosten x Äpfel?

       1024     .....   14
          x     .....    ?
       -------------------
              x * 14
       ? = -----------
              1024

Autor: Fred S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andre,

> Es geht mir eigentlich nur um die formel vom ADC wert zum spannungswert.
Die Formel steht auf S. 241 des Datenblatts, wie ich im obigen Post 
schon einmal geschrieben habe. Leider erklären die Autoren dort die 
Formel nicht so schön mit Obst wie Karl Heinz!

Gruß

Fred

Autor: Andre (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich habs so schwer war es garnicht wenn ich recht überlege.


Die Formel sieht so aus

unsigned int wert;
float b;
char text[16];

wert=ADC_wert;
wert=wert*14/4.38*5;
b= wert/1023.0;
ftoa(b,2,text);


MFG: Andre

Autor: Thilo M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Karl Heinz:

schöne Erklärung des Dreisatzes ;)
habe dabei Hunger gekriegt!

Erschreckend dass den so wenige beherrschen. :(

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andre wrote:
> Also ich habs so schwer war es garnicht wenn ich recht überlege.
>
>
> Die Formel sieht so aus
>
> unsigned int wert;
> float b;
> char text[16];
>
> wert=ADC_wert;
> wert=wert*14/4.38*5;
> b= wert/1023.0;
> ftoa(b,2,text);
Festkommaarithmetik...

Und das "/1023.0" halte ich auch für ein Gerücht. Müsste 
wahrscheinlich ne 1024 sein...

Autor: Rooney Bob (rooney)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den Wert 1024 gibt es nicht. Eine 10Bit Variable deckt einen 
Wertebereich von 0x00 bis 0x3FF (1023) ab. Du kannst zwar 1024 Werte 
darstellen, aber 0 entspricht hierbei auch schon einem Wert, d.h. 14V 
entspricht dem Dezimalwert 1023.

Autor: Der Schelm (derschelm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Durch 1024 teilen kann man sehr schön durch bit-shiften realisieren, 
aber vielleicht ein bisschen viel:

Dreisatz und Shiften in einer Woche

durckundwech

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist hier schon hundertmal durchdiskutiert worden, steht so in den 
Tutorials, den AVR-Datenblättern und Appnotes, und ist mit ein bischen 
überlegen auch selbst leicht herzuleiten:

Den 10Bit ADC-Wert durch 1024 teilen, 1023 ist FALSCH.

Autor: Fred S. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

mit meiner Mantra "Datenblatt S. 241, ommmm; Datenblatt S. 241, ommmm" 
(s.o.!) habe ich mich inzwischen in den Schlaf gelullt.

Gruß

Fred

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.