Spannungen am Atmega. Wenn Spannung anliegt, geht es auch wunderbar.
Wenn nicht, zeigt er mir jedoch statt Null Volt die geteilte Spannung
von den 5V an, sprich ca. 2.5V. Woran liegt das? Ist es ein
Softwareproblem? Programmiert wird in Bascom:
Hi,
ich bin leider nicht bascom bewandert. Aber du hast einen
Spannungsteiler durch die beiden 100kohm Widerstände:
U_adc_offset: 5V* 100k/(100k+100k)= 2,5V...
Sobald also keine Spannung anliegt, misst dein ADC die 2,5V.
In deinem Programm weißt du also:
U_adc = (5V*ADC_value-512) / 1024
die 512 entsprechen 2.5V. Die Rerferenzspannung deines ADCs ist auch 5V
ja?
Gruß,
Nico B. schrieb:> Die Rerferenzspannung deines ADCs ist auch 5V> ja?
Genau. Nur, wenn 0V anliegen, mißt er effektiv ja auch 2,5V(wegen dem
Pullup), zeigt aber wegen der Software 0V an. Es sollte doch keinen
Unterschied für den ADC-Wert machen, ob keine ,oder 0V angeschlossen
sind.
Hi,
Ja deshalb siehe oben mein Pseudocode. Du wolltest doch erreichen, dass
wenn keine Spannung an In anliegt die Anzeige 0V ausgibt oder?
In Basecom müsstest du auch 512 von deinem ADC Wert subtrahieren.
Die Frage bezüglich der Referenz war eher, das wenn dein ADC mit einer
Referenz von beispielsweise 3,3V arbeitet du garkeine 5V messen kannst
und somit die Auflösung auch nicht stimmt.
Gruß,
EDIT:
die Zeile:
Vp1 = Vp1-10 verstehe ich nicht. Was wolltest du damit erreichen? du
ziehst von deiner Spannung 10V ab...
Nochmal EDIT:
in meiner Rechnung fehlt ne Klammer:
U_adc = 5V*(ADC_value-512) / 1024
So wie es aussieht, willst du ja eine Mittelwertbildung machen. Rechne
zuerst mit der Formel die Werte in eine Spannung um und dann bilde den
Mittelwert. Du Summierst grad alle ADC Werte auf.
Nico B. schrieb:> So wie es aussieht, willst du ja eine Mittelwertbildung machen. Rechne> zuerst mit der Formel die Werte in eine Spannung um und dann bilde den> Mittelwert. Du Summierst grad alle ADC Werte auf.
Genau, die Mittelwertbildung passiert aber vorher, beim Umrechnen des
ADC in einen Voltwert zwischen 0 und 5V. Durch das shiften wird auch
wieder geteilt.
Die Umrechnung durch den Spannungsteiler erfolgt in diesen Zeilen:
Vp1 = Vp1 * 5.05 (wegen des Verhätnisses der Widerstände)
Vp1 = Vp1 - 10 (wegen des Quasi-Offsets von -10 als unterster Wert).
Die Voltwerte von -10 bis +10 werden auch alle sauber angezeigt. Das
Problem tritt erst auf, wenn der Eingang nicht angeschlossen ist.
Der 470 kΩ Widerstand und der 100 kΩ Widerstand sind parallel, haben
also zusammen nur 82,5 kΩ. Das ergibt eine Spannung von 2,26 Volt am
Eingang.
Bei offenem Eingang:
Gaunzast schrieb:> Vx1 = Vcc_sum1 * 5.12> 'get volts> Vp1 = Vx1 / 1024
Ok ich habe den Code mal nachvollzogen. Die 5,12V sind wahrscheinlich
deine gemessene Referenz oder?
Ok betrachten wir mal deine Rechnung. Für die Rechnung lasse ich die
470k mal weg.
Angenommen Vcc_sum1 = 340 (nach Mittelwertbildung)
dann ist Vx1 = 340* 5,12V = 1740,8
-->
Vp1= 1740,8 / 1024 = 1,7V
-->
Vp1 = Vp1*5,05 = 1,7V *5,05 = 8,585 V
-->
Vp1 = Vp1-10 = -1,415V --> Das wäre dein Ergebnis!
Rechnen wir aus was 340 ohne Spannungsteiler ist :
U_adc = (5,12V *340) / 1024 = 1,7V
Durch den Spannungsteiler liegt an deinem ADC bei offenem Eingang 2,5V
an.
Die Differenz zwischen Spannungsteiler (2,5V) und gemessener Spannung
(1,7V) ist deine Spannung an In:
1,7V = 2,5V + U_in
--> U_in = -0,8V
Deine Formel zur Berechnung stimmt also nicht.
Da du durch deine 470k und den 100k gegen Masse einen weiteren
Spannungsteiler hast beträgt U_In eigentlich -5,81V.
Eine bessere und gebräuchlichere Schaltung wäre diese:
5V
|
|
R
|
+--------ADC
|
R
|
|
+-------- Messeingang
Alexander S. schrieb:> Der 470 kΩ Widerstand und der 100 kΩ Widerstand sind parallel, haben> also zusammen nur 82,5 kΩ. Das ergibt eine Spannung von 2,26 Volt am> Eingang.
Das scheint der Grund zu sein. Ich war davon ausgegangen, das offener
Eingang und 0V den gleichen ADC-Wert liefern müßten.
Nico B. schrieb:> Deine Formel zur Berechnung stimmt also nicht.> Da du durch deine 470k und den 100k gegen Masse einen weiteren> Spannungsteiler hast beträgt U_In eigentlich -5,81V.>> Eine bessere und gebräuchlichere Schaltung wäre diese:
Ob die Formel stimmt oder nicht ist mir fast Wurst, solange stets der
richtige Wert angezeigt wird.:) Die Schaltung läßt sich nicht mehr
ändern. Jedenfalls danke für die Hilfe.
Gaunzast schrieb:> Die Schaltung läßt sich nicht mehr> ändern.
Du kannst also nicht ein Widerstand auslöten und einen zweiten durch
einen anderen Wert ersetzen? Dann hast du Pech gehabt.
Gaunzast schrieb:> Das scheint der Grund zu sein. Ich war davon ausgegangen, das offener> Eingang und 0V den gleichen ADC-Wert liefern müßten.Gaunzast schrieb:> Ob die Formel stimmt oder nicht ist mir fast Wurst,
Keine Wurst, sondern Käse, wenn man sich die Formel nicht aus der
gewählten Schaltung herleitet, sondern "davon ausgeht" oder "denkt" oder
"meint".
Oder sich einfacher auf etwas bewährtes verlässt.
Siehe:
https://www.mikrocontroller.net/articles/Spannungsteiler
Gaunzast schrieb:
>zeigt er mir jedoch statt Null Volt die geteilte Spannung>von den 5V an, sprich ca. 2.5V. Woran liegt das?
Das ist doch normal, deshalb heißt ja auch ein Spannungsteiler
"Spannungsteiler", weil er die Spannung teilt.
Wenn Beide Widerstände gleich sind also genau 5V / 2.
Gaunzast schrieb:> Ob die Formel stimmt oder nicht ist mir fast Wurst, *solange stets der> richtige Wert* angezeigt wird.:) Die Schaltung läßt sich nicht mehr> ändern. Jedenfalls danke für die Hilfe.
Nicht nur Wurst oder Käse, sondern technische Fehlleistung.
Die gezeigte Schaltung aus der Eröffnugspost eignet sich nicht zum
Messen!
Ich kann nicht feststellen, ob der Eingang offen ist.
Ich kann feststellen ob die Spannung am Eingang größer als 2,5 Volt ist.
Ich kann feststellen ob die Spannung am Eingang kleiner als 2,5 Volt
ist.
Aus den ADC-Werten kann ich aus diesen Abweichungen nach oben oder unten
einen ungefähren Wert der Eingangsspannung errechnen. Ungefähr deshalb,
weil durch den digitalen Restfehler ein Bit nicht immer der gleichen
Spannungsstufe in Millivolt entspricht.
Der Fehler ist umso größer, je dichter meine Eingangsspannung an den 2,5
Volt dran ist.
Route 6. schrieb:> Aus den ADC-Werten kann ich aus diesen Abweichungen nach oben oder unten> einen ungefähren Wert der Eingangsspannung errechnen. Ungefähr deshalb,> weil durch den digitalen Restfehler ein Bit nicht immer der gleichen> Spannungsstufe in Millivolt entspricht.> Der Fehler ist umso größer, je dichter meine Eingangsspannung an den 2,5> Volt dran ist.
Kannst du das genauer erläutern? (ernst gemeinte Frage! Das interessiert
mich)
Die ADCs eines ATmega haben natürlich max. 2 LSB Ungenauigkeit, aber ob
er so genau "messen" muss? Er kann ja laut seiner Aussage die Spannungen
messen. Und durch die Schaltung kann man sich auch den Wert am Eingang
im uC zurückrechnen. Er kann jedoch eigentlich 0V nicht von -2,5V
unterscheiden (bei Ihm scheint es zu funktionieren (wie auch immer).
Die Hinweise hier scheinen Ihm aber relativ egal zu sein, da er
anscheinend das misst, was er gerne messen will.
Gruß,