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
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
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
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
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
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
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
@ Karl Heinz: schöne Erklärung des Dreisatzes ;) habe dabei Hunger gekriegt! Erschreckend dass den so wenige beherrschen. :(
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...
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.
Durch 1024 teilen kann man sehr schön durch bit-shiften realisieren, aber vielleicht ein bisschen viel: Dreisatz und Shiften in einer Woche durckundwech
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.
Hallo, mit meiner Mantra "Datenblatt S. 241, ommmm; Datenblatt S. 241, ommmm" (s.o.!) habe ich mich inzwischen in den Schlaf gelullt. Gruß Fred
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.