Hallo Reinhard,
wo kommt der 2. Faktor 3 her?
Ciao,
Werner
Hallo,
ich messe über einen Spannungsteiler von 1500 und 750 Ohm am
ADC(0)-Port des M128 einen Wert von 510. Es wird die interne
Ref-Spannung von 2,56V verwendet.
Welcher Gesamtspannung entspricht das nun?
Wenn ich rechne:
510 * (2,56/1023) * (1500+750)/750 komme ich auf 3,825 Volt am
ADC-Port. Mal Faktor 3 entspricht das also 11,475 Volt bei gemessenen
12 Volt. Also knapp 0,6 Volt zu wenig.
Bei gemessenen 15 Volt habe ich jedoch einen ADC-Wert von 518,
bzw. bei 9 Volt von 498. Und das kann nicht stimmen ... <grübel>
Danke: - Reinhard -
Hallo Reinhard,
wo kommt der 2. Faktor 3 her?
Ciao,
Werner
Hallo Werner,
gute FrageZitat von Werner_Just
.
Lt. meiner Meinung (die muss nicht korrekt sein): (1500+750)/750 = 3
Ich hab gestern das "ganze" Internet danach abgesucht, aber kein
einziges Berechnungsbeispiel gefunden, welches aus einem ADC-Wert
auf die Gesamtspannung schliesst und den Weg dorthin genau erklärt.
Danke für Deine Mühe: - Reinhard -
Hallo Reinhard,
Du schließt aus dem Messwert und der Reference-Spg auf Deinen ADC-Eingangsspannungswert und rechnest zurück, welche Spannung an Deinem Schaltungseingang anliegt.
Bei 2.56V Reference, Messwert 510 und einem vorgeschalteten Spannungsteiler 15k/750R, komm ich auf 3,82 V am Schaltungseingang.
Das das fast 12V ist, wenn man den Wert mit 3 multiplizert stimmt zwar, aber das ist wohl eher Zufall, weil der ADC bei 12 V Eingangspannung völlig
übersteuert und evt. dabei auch abgeraucht ist.
Mit 2.56V Ref und dem Spannungsteiler kannst Du nur Spannungen von 0.- 7,18V messen.
Ciao,
Werner
Hallo Werner,
ich rechne mal ein wenig:
Der Spannungsteiler besteht aus 1,5K (nicht 15k) und 750R
(bestehend aus 2x 1,5k parallel).
Bei einer Spannung von 12V: -> I=U/R -> 12/(1500+750) = 0,005333A
für ADC fallen ab -> U=R*I -> 0,005333A * 750 = 3,99975 Volt
Bei einer Spannung von 15V: -> I=U/R -> 15/(1500+750) = 0,006666A
für ADC fallen ab -> U=R*I -> 0,006666A * 750 = 4,9995 Volt
Ich könnte also max. 15 Volt messen ...
x. Teil am ADC: (1500+750)/750 = 3 -> Gesamtspannung ist also 3x
so hoch.
Gesamtspannung: 3 * 3,99975V = 11,99925 Volt (wäre ja richtig)
Mein Problem ist jetzt der ADC-Wert. Bei 15 Volt müsste ich 1023 haben,
bei 12 Volt entsprechend weniger.
ADC-Wert * Ref: 510 * (2,56/1023) = 1,2762
Und wie gehts dann weiter ...?
Gruß: - Reinhard -
Hallo Reinhard,
> Ich könnte also max. 15 Volt messen ...
nur wenn Deine ReferenceSpannung 5V beträge.
Du kannst aber nur von Gnd bis Aref (am ADC Pin) messen. Also entweder eine externe 5V Referencespannung verwenden oder den Spannungsteiler anpassen.
> Mein Problem ist jetzt der ADC-Wert. Bei 15 Volt müsste ich 1023 haben,
> bei 12 Volt entsprechend weniger.
> ADC-Wert * Ref: 510 * (2,56/1023) = 1,2762
> Und wie gehts dann weiter ...?
... den Spannungsteiler rausrechnen
1.2762 / (750/2250) = 3,829 V
Das Stimmt aber nur, solange Dein Messwert korrekt ist und das ist nicht der Fall, da Deine Spannung am ADC Pin größer als Aref ist. Eigentlich sollte Dein Messwert also 1023 betragen sobald die Spannung größer als 7,68 V wird. Vorrausgesetzt Du betreibst den ADC im 10 bit Modus.
Warum Du einen kleineren Wert misst kann ich nur vermuten. Die wahrscheinlichste Variante ist imo, Du hast den ADC inzwischen geschossen.
Es kann aber noch andere Gründe haben.
- Uref nicht mit einem Kondensator am Aref-Anschluß stabilisiert.
- Du liest im Programm den ADC zu schnell aus.
- Du liest ihn nur einmal aus. (Der erste ADC Wert nach dem Start einem Messung war früher häufig falsch. Der M128 ist aber so neu, da sollte der Bug inzwischen ausgemerzt sein. )
Ciao,
Werner
Hallo Werner,
kurz noch zu diesen Punkten:Zitat von Werner_Just
Punkt 1 muss ich prüfen (Hardware ist fertig, ich schreib nur die Soft).
Den ADC habe ich ausgelesen und danach diverse andere Aktionen
ausgeführt. Ca. alle 2 Sekunden wird der ADC ausgelesen. Ist das
zu schnell? Ist nur ein Testprogramm, könnte die Zeit also noch
strecken ...
Was mir dabei aufgefallen ist: 10-maliges Auslesen bringt meist
verschiedene Werte: 515, 514, 513 ... 510.
Und wie ist eigentlich die richtige Reihenfolge:
oderCode:Start Adc Do Print Adc(0) Wait 2 Loop Stop Adc
Code:Do Start Adc Print Adc(0) Stop Adc Wait 2 Loop
Gruß: - Reinhard -
Hallo Reinhard,
2 sec sind mit Sicherheit nicht zu schnell.
Zur Reihenfolge, das hängt davon ab wie Du den ADC konfiguriert hast, und ob Du Strom sparen willst oder nicht.
Wie hast Du den ADC konfiguriert?
'Start ADC' schaltet erstmal nur die Hardware im AVR ein.
'Stop ADC' schaltet sie aus.
Einen Messwert holt man normalerweise mit 'GetADC' und legt das Ergebnis in einer Wordvariable ab.
Ob das direkte Auslesen mit 'Print ADC(0)' korrekt funktioniert kann ich nicht sagen, habs nie ausprobiert. Wenn, dann geht das nur wenn der ADC als 'Free' konfiguriert ist.
Ciao,
Werner
Hallo Werner,
die Konfiguration des ADC ist so, wie in der Bascom-Hilfe
beschrieben (Config Adc = Single , Prescaler = Auto,
Reference = Internal)
Mein Hardware-Spezi sagt mir gerade, das wenn URef intern
zugeschaltet wird, lt. Atmel kein externer CRef nötig wäre.
Und, man könnte per Software 5 oder 2,56 Volt als Ref
wählen (muss ich noch nachlesen). Der Spannungsteiler
wäre so ausgelegt, das bei einer Spannung von 15 Volt am
ADC 5 Volt anliegen würde.
Ob ich nun mit Print Word-Variable oder direkt mit Print arbeite,
dürfte doch keinen Unterschied machen. Zumindest hatte ich
das gestern noch gemacht und die Werte waren identisch (falsch).
Gruß: - Reinhard -
@Werner,
Mit Config Adc=Single, Prescaler = Auto, Reference = AVCC
kann ich bei meiner Hardware 5V als Ref wählen.
Die Werte sind aber immer noch nicht korrekt.
Fazit: der ADC ist Schrott.
Gruß: - Reinhard -
Lesezeichen