Finde leider im Datasheet keine Angaben zum Eingangswiderstand der
ADC-Kanäle des AT85. Im Internet gibt es da verschiedene Aussagen,
beginnend bei 20 kOhm bis zu mehreren MOhm, ebenso sollte der PIN als
Input generiert werden.
Kennt jemand eine Größenordnung. Meine Signalquelle hat einen
Innenwiderstand von ca. 5 MOhm, so dass ich vermute, ich benötige noch
einen OPV um ihren Innenwiderstand zu reduzieren.
Fragen ist halt leichter als löten.
Danke.
M.
RAin sind typ. 100 MOhm, Tabelle zu finden unter 'ADC Electrical
Characteristics'. In meinem Datenblatt ist das unter Punkt 21-8 zu
finden.
Empfohlen wird eine Quellimpedanz von <10kOhm, weil ja der S&H
Kondensator geladen werden muss. Das gilt aber nicht, wenn man den
internen OpAmp mit Gain oder für Bipolaren Betrieb benutzt.
Michael schrieb:> Kennt jemand eine Größenordnung. Meine Signalquelle hat einen> Innenwiderstand von ca. 5 MOhm, so dass ich vermute, ich benötige noch> einen OPV um ihren Innenwiderstand zu reduzieren.
Irgendwo im Datenblatt ist vermerkt, dass der Quellwiderstand 10k nicht
überschreiten soll.
Der Leckstrom ist typisch <50nA, kann aber bei 85°C bis zu 1µA betragen.
Ich nehme einen Pufferkondensator 100nF am Eingang zum Laden des
internen S&H Kondensators. Man kann aber auch nach dem Umschalten des
MUX eine Wartezeit einfügen. Z.B. zum Messen der internen Referenz ist
das nötig.
Wie oft mußt Du denn messen?
Zur Frage, ob OPV nötig, ein ganz klares jain.
Arduino F. schrieb:> Augen auf!> 1 bis 100k> Figure 17-8. Analog Input Circuitry
Das ist nicht der Eingangswiderstand!
Wichtiger ist der darauffolgenden Absatz:
"The ADC is optimized for analog signals with an output impedance of
approximately 10 kΩ or less. If such a source is used, the sampling time
will be negligible. If a source with higher impedance is used, the
sampling time will depend on how long time the source needs to charge
the S/H capacitor, with can vary widely. The user is recommended to only
use low impedant sources with slowly varying signals, since this
minimizes the required charge transfer to the S/H capacitor."
Klaus H. schrieb:> Das ist nicht der Eingangswiderstand!
Ich weiß nicht in welcher Welt du lebst, aber in meiner Welt sieht die
Definition eher so aus:
Der Eingangswiderstand .... ist eine Eigenschaft von Eingängen
elektrischer Geräte. Er belastet das Gerät, das an diesen Eingang eine
Spannung anlegt.
Klaus H. schrieb:> Wichtiger ist der darauffolgenden Absatz:
Keine Frage, dass der Absatz wichtig ist!
Aber er ändert nicht die Semantik von "Eingangswiderstand"
Arduino F. schrieb:> Der Eingangswiderstand .... ist eine Eigenschaft von Eingängen> elektrischer Geräte. Er belastet das Gerät, das an diesen Eingang eine> Spannung anlegt.
Ja, aber dann ist er nicht R = 1...100k sondern 1...100k + 1/(jω·14pF).
Arduino F. schrieb:> Aber er ändert nicht die Semantik von "Eingangswiderstand"
In dem zitierten Text steht nichts von einem Eingangs**widerstand**,
sondern konkret von einer Eingangs**impedanz**.
Und jetzt kommt der Knackpunkt: diese Impedanz ist ein "komplexer
Widerstand", der sich auch mit einem Kondensator verringern lässt.
Also: wenn ich möglichst belastungsfrei und "hochohmig" eine Spannung
wandeln will dann nehme ich 2 sehr hochohmige Widerstände und schalte
einen Kondensator mit 10nF paralell.
Der 10nF Kondensator ist 100x größer als der Sampling-Kondensator, womit
der Fehler beim Samplen maximal 1 LSB ist. Er sorgt also für die
benötigte niedrige Impedanz zum Aufladen des Samplingkondensators. Der
10nF der wird dann langsam über den hochohmigen Spannungsteiler
nachgeladen.
Passt.
Man muss nur aufpassen, dass man den 10nF nicht zu oft entlädt, denn
sonst wird er ggfs. nicht schnell genug über den Spannungsteiler
nachgeladen.
Da spielen aber noch ganz andere lustige Effekte mit rein.
Dort im Beitrag "Re: Bessere Poti Schaltung für Arduino?" haben wir
das mal andiskutiert.
Lothar M. schrieb:> Also: wenn ich möglichst belastungsfrei und "hochohmig" eine Spannung> wandeln will dann nehme ich 2 sehr hochohmige Widerstände und schalte> einen Kondensator mit 10nF paralell.
Ohne Kenntnis der erforderlichen Bandbreite lässt sich trefflich
fabulieren.
Rainer W. schrieb:> Ohne Kenntnis der erforderlichen Bandbreite lässt sich trefflich> fabulieren.
Du bellst den falschen Baum an. Mangels genauerer Informationen kann ich
nichts Genaueres sagen. Oder ist eine meiner Aussagen falsch?
Denn da kommen wieder die beiden Aspekte zum Tragen:
1. die Grenzfrequenz aus 5M Ohm und 10nF kann sich jeder selber
herrechnen
2. wenn der ADC Mux nicht auf einen anderen Pin mit anderer Spannung
umgeschaltet wird, dann wird auch der Sample-Kondensator nicht entladen
Wenn der Mux umgeschaltet wird und der Sampling-Kondensator durch (zu)
häufige Wandlungen zusätzlich entladen wird, dann wird es spannender,
denn dann kommt ein kapazitiver Spannungsteiler mit ins Spiel.
Wenn er nicht umgeschaltet wird braucht er ca 300µs zum Entladen, was
grob 10M Ohm macht. Die besagten 10nF dazu und nur zum Messen kurz
umschalten sollte eine höhere Genauigkeit ergeben als ein Op davor.
Matthias S. schrieb:> Das gilt aber nicht, wenn man den internen OpAmp mit Gain..
Ist das ertestet/bestätigt? Wie hoch wäre dann der Eingangswiderstand
>100M Ohm unabhängig vom Mux? Das erspart dem TE einen externen OP.
Peter D. schrieb:> Der Leckstrom ist typisch <50nA, kann aber bei 85°C bis zu 1µA betragen.> Zur Frage, ob OPV nötig, ein ganz klares jain.
Wie passt denn das zusammen? Bei 5MΩ Innenwiderstand brauchst du einen
guten OP. Außer, du willst garnicht messen und kannst mit typisch
250mV Offset bei Zimmertemperatur leben.
Achim H. schrieb:>> Das gilt aber nicht, wenn man den internen OpAmp mit Gain..> Ist das ertestet/bestätigt? Wie hoch wäre dann der Eingangswiderstand>>100M Ohm unabhängig vom Mux? Das erspart dem TE einen externen OP.
Der Eingangs*widerstand* bleibt mit und ohne OpAmp bei 100 MOHm. Es geht
nur im die Quellimpedanz, die bei Benutzung des internen OpAmps nicht
unbedingt <10 kOhm sein muss, da der interne OpAmp das in jedem Fall
erfüllt. Siehe Blockdiagramm des ADC im Datenblatt.
Sie muß ja nicht unbedingt <10kOhm sein . Sie leidet nur bei dem
Umschalten. Da sehe ich keine Vorteil bei Verwendung des internen OP.
Sein Eingang hängt an der selben Leitung. Denkbar das sein -Eingang
etwas im Vorteil ist.
Da bleibt wohl doch nur Ausprobieren um verbindliche Aussagen treffen zu
können.
an Michael:
> Fragen ist halt leichter als löten.
Löten?
Auf dem Steckbrett: Uref = Ucc = 4.992 V, U_ADC2 = 3.235 V: ergibt
direkt 662, mit 4.7 MOhm zwischengeschaltet etwas schwankend 662..664.
S. L. schrieb:> Auf dem Steckbrett: Uref = Ucc = 4.992 V, U_ADC2 = 3.235 V: ergibt> direkt 662, mit 4.7 MOhm zwischengeschaltet etwas schwankend 662..664.
Wandle mal zwischendurch einen anderen Kanal, der einmal an GND und
das andere mal an Vcc hängt (oder eben an einem Poti, das du zwischen
Vcc nach GND hin- und herdrehen kannst).
Was passiert?
Nicht viel: jetzt in allen Fällen 664 (nicht mehr 662, warum auch
immer), auf ADC3 0 bzw. 1023 (geschaltet GND bzw. Ucc), jeweils 2 s
gewartet.
Aber allgemein: Michael hatte nur nach dem Eingangswiderstand gefragt,
kein Umschalten, und vor allem auch keine zeitliche Abhängigkeit. Wenn
ihm diese Problematik nicht klar war, so hatte er sechs Stunden Zeit
nachzufragen, denn dieser Aspekt wurde ja gleich in der allerersten
Antwort angesprochen.
Michael schrieb:> Kennt jemand eine Größenordnung. Meine Signalquelle hat einen> Innenwiderstand von ca. 5 MOhm
Da sollte man ja schon bei nem Multimeter und Co sowas wie nen TIA
einsetzen. Nur mal so zum vergegenwärtigen: Der Standard-Tastkopf eines
Oszis hat 10 MOhm || 10 pF. Ne Signalquelle mit 5 MOhm
Ausgangswiderstand würde man damit ja signifikant beeinflussen.
S. L. (sldt)
>Nicht viel: jetzt in allen Fällen 664 (nicht mehr 662, warum auch>immer), auf ADC3 0 bzw. 1023 (geschaltet GND bzw. Ucc), jeweils 2 s>gewartet.
Da stellt sich allerdings die Frage, wie schnell du zwischen den Kanälen
hin- und her schaltest und ob der Wert über mehrere Samples geglättet
ist.
S. L. schrieb:> Auf dem Steckbrett: Uref = Ucc = 4.992 V, U_ADC2 = 3.235 V: ergibt> direkt 662, mit 4.7 MOhm zwischengeschaltet etwas schwankend 662..664.
Was machst du derweil auf den anderen Kanälen?
Die Fehler entstehen, wenn der Multiplexer aktiv wird und zügig zwischen
Kanälen umschaltet.
S. L. schrieb:> ... jeweils 2 s gewartet.
Das bringt nichts, um das Kanalübersprechen durch den Multiplexer zu
testen.
Klaus H. schrieb:> Arduino F. schrieb:>> Augen auf!>> 1 bis 100k>> Figure 17-8. Analog Input Circuitry> Das ist nicht der Eingangswiderstand!>> Wichtiger ist der darauffolgenden Absatz:> "The ADC is optimized for analog signals with an output impedance of> approximately 10 kΩ or less. If such a source is used, the sampling time> will be negligible. If a source with higher impedance is used, the> sampling time will depend on how long time the source needs to charge> the S/H capacitor, with can vary widely. The user is recommended to only> use low impedant sources with slowly varying signals, since this> minimizes the required charge transfer to the S/H capacitor."
Danke allen für die Anmtworten. Zur Ergänzung: Sind 2 ADC-Kanäle, die
Gleichspannung messen als "single shot". Vor der 2. Messung gibst es
eine 100 ms Warteschleife.
Das Datenblatt Punkt 17.8 hatte ich gelesen und meine Schlussfolgerung
war an Hand Figure 17.8. Re ist theoretisch unendlich (weiß schon, das
das nur theoretisch ist). Da ich bei angeschlossenem uC eine
Verminderung der Eingangsspannung messe, war meine Schlußfolgerung, dass
die Ursache der Re ist. So war meine Frage nicht präzise. Ich hätte nach
dem Gleichstromeingangswiderstand des uC fragen müssen.
Komme erst heute zum Antworten. Habe gestern in geselliger Runde
Handball geguckt.
Schönes WE und viel Sonne.
M.
Lothar M. schrieb:> Was passiert?S. L. schrieb:> Nicht viel: ...
Gut, dann muss ich das mal selber machen, wenn ganz offenbar nicht klar
ist, was ich meine.
Meine **Schaltung** ist ein Arduino mit einem 10k-Poti am A4 und einem
hochohmigen Spannungsteiler mit 5M Ersatzwiderstand (10M||10M) am A0:
1
5V --------o----------------------o-----------
2
| |
3
| -
4
| R2 | |
5
| 10M | |
6
P1 - -
7
10k | | |
8
| |<----- A4 o-----o--- A0
9
| | | |
10
- R1 - | C1 (optional)
11
| 10M | | === 10n
12
| | | |
13
| - |
14
| | |
15
GND -------o----------------------o-----o-------
Im späteren Verlauf kommt beim Test 5 dann noch der C1 dazu.
Mein sehr überschaubares **Programm** dazu:
1
voidsetup(){
2
// initialize digital pin LED_BUILTIN as an output.
3
pinMode(LED_BUILTIN,OUTPUT);
4
5
Serial.begin(9600);
6
}
7
8
voidloop(){
9
uint16_tan0,an4=9999;
10
11
digitalWrite(LED_BUILTIN,HIGH);delay(50);
12
digitalWrite(LED_BUILTIN,LOW);delay(950);
13
14
// :
15
// hier kommen die Codezeilen aus den unteren Tests hinein
**Test 1:**
es wird nur der Spannungsteiler (ohne C2) an A0 gewandelt.
1
:
2
// an4 = analogRead(A4); // Poti
3
an0=analogRead(A0);// Spannungsteiler
4
:
Terminal:
1
:
2
Spannungsteiler: 502 - Poti: 9999
3
Spannungsteiler: 502 - Poti: 9999
4
Spannungsteiler: 502 - Poti: 9999
5
Spannungsteiler: 502 - Poti: 9999
6
Spannungsteiler: 502 - Poti: 9999
7
Spannungsteiler: 502 - Poti: 9999
8
Spannungsteiler: 502 - Poti: 9999
9
Spannungsteiler: 502 - Poti: 9999
10
:
Fazit:
wenn nur der Spannungsteiler gewandelt wird, kommt immer der gleiche
Wert heraus. Und zwar völlig unabhängig von der Stellung des Potis (das
war ja zu erwarten).
**Test 2:**
direkt vor dem Spannungsteiler an A0 wird das Poti an A4 eingelesen.
1
:
2
an4=analogRead(A4);// Poti
3
an0=analogRead(A0);// Spannungsteiler
4
:
Terminal:
1
:
2
Spannungsteiler: 504 - Poti: 511
3
Spannungsteiler: 504 - Poti: 511
4
Spannungsteiler: 504 - Poti: 511
5
Spannungsteiler: 484 - Poti: 458
6
Spannungsteiler: 451 - Poti: 370
7
Spannungsteiler: 386 - Poti: 203
8
Spannungsteiler: 324 - Poti: 43
9
Spannungsteiler: 302 - Poti: 0
10
Spannungsteiler: 303 - Poti: 0
11
Spannungsteiler: 304 - Poti: 0
12
Spannungsteiler: 423 - Poti: 295
13
Spannungsteiler: 473 - Poti: 430
14
Spannungsteiler: 527 - Poti: 573
15
Spannungsteiler: 548 - Poti: 630
16
Spannungsteiler: 610 - Poti: 790
17
Spannungsteiler: 647 - Poti: 906
18
Spannungsteiler: 688 - Poti: 1023
19
Spannungsteiler: 689 - Poti: 1023
20
Spannungsteiler: 690 - Poti: 1023
21
Spannungsteiler: 565 - Poti: 682
22
Spannungsteiler: 499 - Poti: 498
23
Spannungsteiler: 498 - Poti: 498
24
Spannungsteiler: 498 - Poti: 498
25
Spannungsteiler: 499 - Poti: 498
26
:
Fazit:
der ADC-Wert vom Spannungsteiler ist nicht mehr stabil bei 502, sondern
er hängt sehr stark von der Potistellung ab. Wenn die Potispannung an A4
bei Vcc ist, hommt mit 690 ein viel zu hoher Wert am A0 heraus, wenn die
Potispannung 0V ist, kommt mit 303 ein viel zu geringer Wert heraus.
**Test 3:**
zuerst wird das Poti eingelesen, danach der Spanunngsteiler und gleich
danach nochmal der Spannungsteiler.
1
:
2
an4=analogRead(A4);// Poti
3
an0=analogRead(A0);// Spannungsteiler
4
an0=analogRead(A0);// Spannungsteiler
5
:
Terminal:
1
:
2
Spannungsteiler: 501 - Poti: 498
3
Spannungsteiler: 502 - Poti: 498
4
Spannungsteiler: 501 - Poti: 498
5
Spannungsteiler: 535 - Poti: 704
6
Spannungsteiler: 588 - Poti: 1023
7
Spannungsteiler: 587 - Poti: 1023
8
Spannungsteiler: 571 - Poti: 919
9
Spannungsteiler: 489 - Poti: 370
10
Spannungsteiler: 412 - Poti: 0
11
Spannungsteiler: 421 - Poti: 0
12
Spannungsteiler: 445 - Poti: 205
13
Spannungsteiler: 493 - Poti: 457
14
Spannungsteiler: 493 - Poti: 457
15
Spannungsteiler: 503 - Poti: 457
16
:
Fazit:
der ADC-Wert beim 2. Einlesen des Spannungsteilers hängt wesentlich
weniger stark von der Potistellung ab. Klar, denn so langsam lädt sich
der Sample-Kondensator auf. Dann gleich nochmal, mit 5 Wandlungen:
1
:
2
an4=analogRead(A4);
3
an0=analogRead(A0);
4
an0=analogRead(A0);
5
an0=analogRead(A0);
6
an0=analogRead(A0);
7
an0=analogRead(A0);
8
9
:
Terminal:
1
:
2
Spannungsteiler: 501 - Poti: 510
3
Spannungsteiler: 501 - Poti: 510
4
Spannungsteiler: 501 - Poti: 511
5
Spannungsteiler: 495 - Poti: 154
6
Spannungsteiler: 492 - Poti: 0
7
Spannungsteiler: 496 - Poti: 232
8
Spannungsteiler: 507 - Poti: 881
9
Spannungsteiler: 509 - Poti: 1023
10
Spannungsteiler: 509 - Poti: 1023
11
Spannungsteiler: 502 - Poti: 552
12
Spannungsteiler: 501 - Poti: 495
13
Spannungsteiler: 501 - Poti: 495
14
Spannungsteiler: 501 - Poti: 495
15
:
Fazit:
mit jeder Messung am Spannungsteiler lädt sich der Samplekondensator ein
bisschen mehr auf, bis nach 5 Wandlungen nur noch 1% Abweichung bleibt.
**Test 4:**
bringt es was, einfach vor der Wandlung des Spannungsteilers zu warten?
Also wird jetzt das Poti gewandelt, dann wird 1 Sekunde gewartet, dann
wird der Spannungsteiler gewandelt:
1
:
2
an4=analogRead(A4);// Poti
3
delay(1000);
4
an0=analogRead(A0);// Spannungsteiler
5
:
Terminal:
1
:
2
Spannungsteiler: 497 - Poti: 495
3
Spannungsteiler: 498 - Poti: 495
4
Spannungsteiler: 377 - Poti: 225
5
Spannungsteiler: 298 - Poti: 0
6
Spannungsteiler: 359 - Poti: 0
7
Spannungsteiler: 434 - Poti: 336
8
Spannungsteiler: 546 - Poti: 590
9
Spannungsteiler: 653 - Poti: 790
10
Spannungsteiler: 697 - Poti: 1023
11
Spannungsteiler: 697 - Poti: 1023
12
Spannungsteiler: 484 - Poti: 461
13
Spannungsteiler: 484 - Poti: 461
14
Spannungsteiler: 484 - Poti: 461
15
:
Fazit:
nein, es reicht nicht aus, vor der Wandlung einer hochimpedanten Quelle
länger zu warten. Mit ein wenig Nachdenken ist das klar, denn während
der Wartezeit passiert mit dem Samplekondensator nichts, was der
nachfolgenden Messung helfen würde.
**Test 5:**
jetz kommt der C1 mit 10nF ins Spiel. Gleiches Programm wie beim Test 2,
hilft uns der Kondensator?
1
:
2
an4=analogRead(A4);// Poti
3
an0=analogRead(A0);// Spannungsteiler
4
:
Terminal:
1
:
2
Spannungsteiler: 501 - Poti: 461
3
Spannungsteiler: 501 - Poti: 462
4
Spannungsteiler: 501 - Poti: 599
5
Spannungsteiler: 502 - Poti: 737
6
Spannungsteiler: 502 - Poti: 1023
7
Spannungsteiler: 502 - Poti: 1023
8
Spannungsteiler: 502 - Poti: 924
9
Spannungsteiler: 501 - Poti: 656
10
Spannungsteiler: 501 - Poti: 433
11
Spannungsteiler: 501 - Poti: 247
12
Spannungsteiler: 501 - Poti: 86
13
Spannungsteiler: 501 - Poti: 0
14
Spannungsteiler: 501 - Poti: 0
15
Spannungsteiler: 501 - Poti: 0
16
Spannungsteiler: 501 - Poti: 149
17
Spannungsteiler: 502 - Poti: 521
18
Spannungsteiler: 501 - Poti: 521
19
:
Fazit:
durch den 10nF Kondensator wird die Impedanz des hochohmigen
Spannungsteilers so weit reduziert, dass der der Messfehler nicht mehr
bemerkbar ist.
Michael schrieb:> Sind 2 ADC-Kanäle, die Gleichspannung messen als "single shot".> war meine Schlußfolgerung, dass die Ursache der Re ist.
Diese Schlussfolgerung ist falsch: du hast da meinen Testfall 2
aufgebaut und "verschleppst" die Messung des anderen Kanals auf deinen
hochohmigen Eingangskanal.
> Vor der 2. Messung gibst es eine 100 ms Warteschleife.
Die Wartezeit ist irrelevant, siehe Test 4.
S. L. schrieb:> Aber allgemein: Michael hatte nur nach dem Eingangswiderstand gefragt,> kein Umschalten, und vor allem auch keine zeitliche Abhängigkeit.
Nenn mich Hellseher, dass ich geahnt habe, was da passiert.
Und lerne daraus: es ist egal, wonach Leute fragen, das Problem liegt
oft ganz woanders.
Lothar M. schrieb:> Die Wartezeit ist irrelevant
Sie ist ja auch nicht existent wenn der mux vorher nicht geschaltet wird
;-)
Richtig wäre den mux auf den Kanal stellen und dann Wartezeit.
Andererseits ist Deine Lösung mit den 10nF viel besser als sich
überlegen zu müssen wann darf ich wie messen. Und das auch noch bei
jeder Änderung (nach Monaten/Jahren) in Erinnerung zu haben.
Achim H. schrieb:> Andererseits ist Deine Lösung mit den 10nF viel besser als sich> überlegen zu müssen wann darf ich wie messen. Und das auch noch bei> jeder Änderung (nach Monaten/Jahren) in Erinnerung zu haben.
Da würde mich doch glatt interessieren wie die Ergebnisse aussehen, wenn
man kontinuierlich mit höchster Sample-Frequenz abwechselnd die Eingänge
(bei Poti 0 oder Vref) einliest.
Kann der Spannungsteiler den 10nF schneller nachladen als der Sample-C
ihn entlädt? Fragen über Fragen… ;-)
Lothar M. schrieb:> nein, es reicht nicht aus, vor der Wandlung einer hochimpedanten Quelle> länger zu warten.
Du mußt natürlich vor dem Warten erst den MUX umschalten.
Achim H. schrieb:> Richtig wäre den mux auf den Kanal stellen und dann Wartezeit.
Wenn ich den ADC richtig kenne, dann wird der S&H Kondensator nur über
ca 1,5 ADC Takte umgeladen.
Ein vorheriges umschalten ist von daher recht sinnfrei.
Aber wenn es dem Wohlbefinden dienlich ist, warum nicht?
Lothar M. schrieb:>> void loop() {> uint16_t an0, an4=9999;>> digitalWrite(LED_BUILTIN, HIGH); delay(50);> digitalWrite(LED_BUILTIN, LOW); delay(950);>> an4 = analogRead(A4); // Poti> an0 = analogRead(A0); // Spannungsteiler>> Serial.println("Spannungsteiler: " + String(an0) + " - Poti: " +> String(an4));> }> [/c]>>>> Michael schrieb:>> Sind 2 ADC-Kanäle, die Gleichspannung messen als "single shot".>> war meine Schlußfolgerung, dass die Ursache der Re ist.> Diese Schlussfolgerung ist falsch: du hast da meinen Testfall 2> aufgebaut und "verschleppst" die Messung des anderen Kanals auf deinen> hochohmigen Eingangskanal.>>> Vor der 2. Messung gibst es eine 100 ms Warteschleife.> Die Wartezeit ist irrelevant, siehe Test 4.>
wenn ich das richtig sehe entspricht deine loop einem polling betrieb.
Damit beeinflusst natürlich der C, da frequenzabhängig, den
Eingangswiderstand. So habe ich den ADC ja nicht betrieben. Die 100 ms
habe ich gewählt, weil ich zu faul war nachzusehen, wieviel zeit die
Umschaltung der MUX braucht und ich genug Zeit habe.
Was mir nicht klar ist, ob der interne C des ADC zum Zeitpunkt des
Schreibens des ADC-Wertes in das Register 100%ig aufgeladen ist. Das
hatte ich vorausgesetzt, da sich m.E. daraus die maximale Samplingrate
des ADC ergibt.
Das Löten war nur symbolisch gemeint.
> S. L. schrieb:>> Aber allgemein: Michael hatte nur nach dem Eingangswiderstand gefragt,>> kein Umschalten, und vor allem auch keine zeitliche Abhängigkeit.> Nenn mich Hellseher, dass ich geahnt habe, was da passiert.
So meinte ich das, den Widerstand und nicht die Impedanz.
C zu % aufgeladen ist der Eingangswiderstand theoretisch unendlich.
M.
Lothar M. schrieb:> Gut, dann muss ich das mal selber machen, wenn ganz offenbar nicht klar> ist, was ich meine.
TOP. Thematik sehr anschaulich dargestellt.
Peter D. schrieb:> Du mußt natürlich vor dem Warten erst den MUX umschalten.
Das tut natürlich der TO Michael aber mit hoher Wahrscheinlichkeit auch
nicht.
Aber natürlich hast du Recht:
1
:
2
an4=analogRead(A4);// Poti
3
an0=analogRead(A0);// Mux umschalten
4
delay(1);
5
an0=analogRead(A0);// Spannungsteiler einlesen
6
:
Mit diesem Code reichen dann schon 1 ms locker aus für stabile
Ergebnisse auf dem nackten Spannungsteiler ohne C1:
1
:
2
Spannungsteiler: 502 - Poti: 445
3
Spannungsteiler: 502 - Poti: 578
4
Spannungsteiler: 502 - Poti: 930
5
Spannungsteiler: 502 - Poti: 1023
6
Spannungsteiler: 502 - Poti: 845
7
Spannungsteiler: 502 - Poti: 470
8
Spannungsteiler: 502 - Poti: 316
9
Spannungsteiler: 502 - Poti: 31
10
Spannungsteiler: 502 - Poti: 72
11
Spannungsteiler: 502 - Poti: 394
12
Spannungsteiler: 502 - Poti: 525
13
Spannungsteiler: 502 - Poti: 533
14
Spannungsteiler: 502 - Poti: 533
15
:
Klar, denn tau = RC = 15pF*5MOhm = 75µs, und 5 tau sind dann 375µs.
Michael schrieb:> Die 100 ms habe ich gewählt, weil ich zu faul war nachzusehen, wieviel> zeit die Umschaltung der MUX braucht und ich genug Zeit habe.
Du hast das Problem nicht erfasst: der Mux wird mit dem Start der
Wandlung umgeschaltet. Du musst also
1. eine Wandlung auf dem hochohmigen Eingang machen
2. dann warten
3. dann nochmal wandeln und
4. die zweite Wandlung als Ergebnis nehmen.
Kalli L. schrieb:> TOP. Thematik sehr anschaulich dargestellt.
Danke. Es ist den meisten nicht bewusst, wenn sie in diese Falle tappen.
Denn dieser Effekt tritt natürlich auch auf, wenn das nicht eine Quelle
mit 5 MOhm Innenwiderstand ist, sondern wenn die z.B. 100 kOhm hat. Dann
sind die Auswirkungen eben nicht ganz so offensichtlich.
Norbert schrieb:> wenn man kontinuierlich mit höchster Sample-Frequenz abwechselnd die> Eingänge (bei Poti 0 oder Vref) einliest.
Muss noch warten, muss jetzt weg... ;-)
Lothar Miller schrieb:
> der Mux wird mit dem Start der Wandlung umgeschaltet
Liegt das an Arduino? Denn sonst verstehe ich den Satz aus dem
Datenblatt 'MUX[3:0] ... If these bits are changed during a conversion,
the change will not go into effect until this conversion is complete' -
nach meinem Verständnis wird der Multiplexer frühestmöglich
umgeschaltet. Und womit arbeitet Michael eigentlich?
S. L. schrieb:> nach meinem Verständnis wird der Multiplexer frühestmöglich umgeschaltet.
Genau. Wenn beim Umschalten des Multiplexer gerade keine Messung
stattfindet, wird er sofort umgeschaltet.
Wenn gerade eine Messung stattfindet, schaltet der Multiplexer erst
danach den Kanal um.
Christoph M. schrieb:> Der Multiplexer wird bei jedem analogRead() gesetzt.
Man kann den Multiplexer auch per Hand setzen. Hier für den ATmega4809
auf dem Arduino Every, der hat kein ADMUX-Register mehr, das heißt jetzt
MUXPOS:
1
an4=analogRead(A4);// Poti
2
ADC0.MUXPOS=3;// Mux auf A0 schalten (= PD3 = AIN3 bei Ard. Every)
3
delay(1);
4
an0=analogRead(A0);// Spannungsteiler einlesen
Im Terminal sieht das dann gleich aus wie mit dem "unnötigen"
analogRead():
1
:
2
Spannungsteiler: 502 - Poti: 445
3
Spannungsteiler: 502 - Poti: 445
4
Spannungsteiler: 502 - Poti: 422
5
Spannungsteiler: 502 - Poti: 64
6
Spannungsteiler: 502 - Poti: 0
7
Spannungsteiler: 502 - Poti: 0
8
Spannungsteiler: 502 - Poti: 708
9
Spannungsteiler: 502 - Poti: 1023
10
Spannungsteiler: 502 - Poti: 1023
11
Spannungsteiler: 502 - Poti: 723
12
Spannungsteiler: 502 - Poti: 483
13
Spannungsteiler: 502 - Poti: 483
14
:
Auch ohne Kondensator C1 lädt sich der Sampling-Kondensator am
Spannungsteiler schnell genug auf für ein stabiles Messergebnis.
Lothar M. schrieb:> Auch ohne Kondensator C1 lädt sich der Sampling-Kondensator am> Spannungsteiler schnell genug auf für ein stabiles Messergebnis.
Ja, aber nur wenn man die Sampling-Rate
mit einem Abreiß-Kalender misst. ;-)
Das sollte vielleicht noch einmal klar heraus gestellt werden.
Norbert schrieb:> Ja, aber nur wenn man die Sampling-Rate mit einem Abreiß-Kalender misst.
Ja, das ist nunmal so bei hochimpedanten Quellen: die können nicht
schnell gewandelt werden, weil sie den Kondesator nicht schnell genug
nachladen können.
Mir war allerdings neu, **dass** es mit nur 1ms Wartezeit überhaupt
schon so gut funktioniert. Wenn man den Mux dann z.B. vor einer
Displayausgabe umschaltet, muss man gar nicht warten, weil die sowieso
schon länger braucht.
Bei 500µs wirkt sich die Ladezeit des Sample-Kondensators so langsam
aus:
1
an4=analogRead(A4);// Poti
2
ADC0.MUXPOS=3;// Mux auf A0 umschalten (PD3 auf Arduino Every)
Das Problem ist mir früher mal beim Messen der internen Bandgap
aufgefallen, z.B. zum reziproken Messen der eigenen VCC. Die Bandgap ist
sehr hochohmig angeschlossen, so daß ein Delay notwendig ist.
In AVR-Freaks gabs dazu mal eine Diskussion.
Norbert schrieb:> Da würde mich doch glatt interessieren wie die Ergebnisse aussehen, wenn> man kontinuierlich mit höchster Sample-Frequenz abwechselnd die Eingänge> (bei Poti 0 oder Vref) einliest.
Dazu habe ich das Programm umgeschrieben. Jetzt werden dauernd
abwechselnd der Spannungsteiler (gepuffert mit C1) und das Poti
eingelesen. Und nach jeweils 4600 solcher Wandlungen (= ca. 1s) wird das
Ergebnis ausgegeben:
> Kann der Spannungsteiler den 10nF schneller nachladen als der Sample-C> ihn entlädt?
Nein, das klappt nicht, das ist das Ergebnis:
1
:
2
Spannungsteiler: 501 - Poti: 503
3
Spannungsteiler: 501 - Poti: 501
4
Spannungsteiler: 501 - Poti: 501
5
Spannungsteiler: 557 - Poti: 821
6
Spannungsteiler: 593 - Poti: 1023
7
Spannungsteiler: 594 - Poti: 1023
8
Spannungsteiler: 575 - Poti: 900
9
Spannungsteiler: 547 - Poti: 749
10
Spannungsteiler: 499 - Poti: 486
11
Spannungsteiler: 485 - Poti: 413
12
Spannungsteiler: 454 - Poti: 247
13
Spannungsteiler: 416 - Poti: 38
14
Spannungsteiler: 405 - Poti: 0
15
Spannungsteiler: 405 - Poti: 0
16
Spannungsteiler: 455 - Poti: 263
17
Spannungsteiler: 503 - Poti: 520
18
Spannungsteiler: 509 - Poti: 545
19
Spannungsteiler: 509 - Poti: 545
Der Spannungsteilerwert zappelt vom "Normalwert" 502 ausgehend um +-100
in Richtung Poti.
Dann habe ich die Abtastrate noch ein wenig höher geschraubt, indem ich
nur den MUX zwischen Spannungsteiler und Poti umschalte:
Das erhöht die "Umschaltrate" und damit die "Umladungsrate" um fast den
Faktor 100 auf 390000 pro Sekunde und ergibt dann dieses Bild:
1
voidloop(){
2
uint16_tan0,an4=9999;
3
staticuint32_ti=390000;
4
5
ADC0.MUXPOS=12;// MUX auf A4 Poti (= PF2 = AIN12 auf Arduino Every)
6
ADC0.MUXPOS=3;// Mux auf A0 Spannungsteiler (= PD3 = AIN3 auf Arduino Every)
Lothar M. schrieb:> Michael schrieb:>> Die 100 ms habe ich gewählt, weil ich zu faul war nachzusehen, wieviel>> zeit die Umschaltung der MUX braucht und ich genug Zeit habe.> Du hast das Problem nicht erfasst: der Mux wird mit dem Start der> Wandlung umgeschaltet. Du musst also> 1. eine Wandlung auf dem hochohmigen Eingang machen> 2. dann warten> 3. dann nochmal wandeln und> 4. die zweite Wandlung als Ergebnis nehmen.
das wusste ich nicht, dass der MUX erst mit dem Start der Wandlung
umgeschaltet wird. Das heißt doch, dass die erste Messung prinzipiell
für die Tonne ist. Wenn ich das richtig verstehe, ist das immer so. Kann
ich das noch irgendwo nachlesen, wie lange das dauert.
Habe auch noch in keinem Beispiel gesehen, dass bei Mittelwertmessungen
der erste Wert nicht berücksichtigt wird. Das ist blöd, da insbesondere
bei kleinen n-Zahlen das ins Gewicht fallen kann.
M.
Michael schrieb:> das wusste ich nicht, dass der MUX erst mit dem Start der Wandlung> umgeschaltet wird. Das heißt doch, dass die erste Messung prinzipiell> für die Tonne ist.
Wenn die Quellimpedanz so niedrig ist, wie das Datenblatt es verlangt
(10kOhm), dann reicht selbst beim schnellsten ADC-Timing die Zeit aus,
um den 15pF-Kondensator für hinreichende Genauigkeit (= mit den
Fehlergrenzen, die das Datenblatt verspricht) aufzuladen.
> Kann ich das noch irgendwo nachlesen, wie lange das dauert.
Ja, im Datenblatt des verwendeten µC. Es lohnt sich generell, das
Datenblatt des verwendeten ICs zu kennen und Informationen daraus
herleiten zu können.
> Habe auch noch in keinem Beispiel gesehen, dass bei Mittelwertmessungen> der erste Wert nicht berücksichtigt wird.
Ja, warum auch? Und ganz viele verwenden "Mittelwertmessungen" dann auch
dafür, irgendwelche andere Designschwächen zu übertünchen.
Übrigens: der Medianwert ist bei Sensoren oft besser als der übliche
arithmetische Mittelwert.
-
https://support.zendesk.com/hc/de/articles/4408839402906-Mittelwert-vs-Median> das wusste ich nicht, dass der MUX erst mit dem Start der Wandlung> umgeschaltet wird.
Du kannst dank Google und Internet den Sourcecode der Routinen ganz
einfach näher anschauen. Probiers aus und du siehst: die Ausrede "das
wusste ich nicht", die gilt nicht. Nicht mal sich selber gegenüber.
Mein Prinzip ist da ganz einfach: traue keiner Funktion, die du nicht
selber geschrieben oder von der du den Code nicht verstanden hast.
Lothar M. schrieb:>> Kann ich das noch irgendwo nachlesen, wie lange das dauert.> Ja, im Datenblatt des verwendeten µC. Es lohnt sich generell, das> Datenblatt des verwendeten ICs zu kennen und Informationen daraus> herleiten zu können.
LOL.
Aber wie lange es dauert, einen 15pF Kondensator bei gegebener
Quellimpedanz aufzuladen, wird nicht im Datenblatt stehen - das muss man
schon rechnen ...
@Lothar M.
Du hast die Problematik schön aufgezeigt.
Aber nicht alles. Es ist ja nicht gesagt, dass a) der MUX umgeschaltet
wird und b) dass die zu messende Spannung am ADC-Eingang konstant ist
(dann muss ich sie doch gar nicht messen - nur einmal mit meinem
Spannungsmesser, oder? 😀).
Ich will nur damit sagen, dass die Problematik mit hochohmigen Quellen
und zu hoher Abtastrate schon vorhanden ist, wenn sich die zu messende
Spannung ändert.
Lothar M. schrieb:> Michael schrieb:>> das wusste ich nicht, dass der MUX erst mit dem Start der Wandlung>> umgeschaltet wird. Das heißt doch, dass die erste Messung prinzipiell>> für die Tonne ist.> Wenn die Quellimpedanz so niedrig ist, wie das Datenblatt es verlangt> (10kOhm), dann reicht selbst beim schnellsten ADC-Timing die Zeit aus,> um den 15pF-Kondensator für hinreichende Genauigkeit (= mit den> Fehlergrenzen, die das Datenblatt verspricht) aufzuladen.
Da hätte der Hinweis gereicht, du brauchst einen Impedanzwandler, wie
ich beim ersten Post befürchtet hatte.
>> Kann ich das noch irgendwo nachlesen, wie lange das dauert.> Ja, im Datenblatt des verwendeten µC. Es lohnt sich generell, das> Datenblatt des verwendeten ICs zu kennen und Informationen daraus> herleiten zu können.
Da stimme ich 100% zu aber 200 Seiten sind halt nicht so schnell zu
lesen, geschweige denn alle Fakten intus zu haben.
Vermute mal Du hast auch länger als 3 Tage beim ersten Mal dazu
gebraucht.
>> Habe auch noch in keinem Beispiel gesehen, dass bei Mittelwertmessungen>> der erste Wert nicht berücksichtigt wird.> Ja, warum auch? Und ganz viele verwenden "Mittelwertmessungen" dann auch> dafür, irgendwelche andere Designschwächen zu übertünchen.>> Übrigens: der Medianwert ist bei Sensoren oft besser als der übliche> arithmetische Mittelwert.> -> https://support.zendesk.com/hc/de/articles/4408839402906-Mittelwert-vs-Median>
So pauschal kann man das nicht sagen, denn das hängt von der Verteilung
ab (lässt sich mit einem CHI-Quadrat-Anpassungstest ermitteln. Bei einer
Normalverteilung ist das eh egal, da Modal, Median und ar. Mittelwert
identisch sind. Für sehr kleine Stichproben stimme ich Deiner Aussage
zu, dass man mit dem Median auf der sichereren Seite liegt.
>> das wusste ich nicht, dass der MUX erst mit dem Start der Wandlung>> umgeschaltet wird.> Du kannst dank Google und Internet den Sourcecode der Routinen ganz> einfach näher anschauen. Probiers aus und du siehst: die Ausrede "das> wusste ich nicht", die gilt nicht. Nicht mal sich selber gegenüber.>> Mein Prinzip ist da ganz einfach: traue keiner Funktion, die du nicht> selber geschrieben oder von der du den Code nicht verstanden hast.
Das wusste ich nicht, das die Aussage ich wusste es nicht eine Ausrede
ist. Ich halte diese Aussage für ein Faktum. Du scheinst zu den
Glücklichen zu gehören, die entweder alles wissen oder alles verstehen.
Da beneide ich Dich, auch darum, dass Du Dir die Mühe machst alles zu
verstehen.
Hut ab.
Thread kann geschlossen werden werden. Habe gennug Hinweise bekommen.
Leider keine Antwort wie hoch nun der Eingangswiderstand wirklich ist.
> Lothar M. schrieb:
Kann ich das noch irgendwo nachlesen, wie lange das dauert.
>> Ja, im Datenblatt des verwendeten µC. Es lohnt sich generell, das>> Datenblatt des verwendeten ICs zu kennen und Informationen daraus>> herleiten zu können.> Da stimme ich 100% zu aber 200 Seiten sind halt nicht so schnell zu> lesen, geschweige denn alle Fakten intus zu haben.> Vermute mal Du hast auch länger als 3 Tage beim ersten Mal dazu> gebraucht.
Konnte meine Antwort leider nicht mehr ergänzen, deshalb neuer Post.
Aus dem Ersatzschaltbild Fig 17-8 auf Seite 129 ergibts sich bei 100k
eine Zeitkonstante t = 1,4 us, d.h. der C ist nach 10us (7*t) fast
vollständig aufgeladen, so dass der Eingangswiderstand nahezu unendlich
ist (entspricht einer Abtastrate von 50kHz. Vielleicht verstehe ich das
Ersatzschaltbild aber auch nicht.
Nur so aus Interesse: was sind eigentlich die Voraussetzungen? Also
offenbar zwei Eingangsspannungen, jede mit Ri= 5 MOhm.
a) in welchem Spannungsbereich liegen diese
b) wie schnell ändern sie sich
c) sollen die beiden Kanäle gleich behandelt werden
d) welche Referenz wird verwendet
e) welche Genauigkeit wird verlangt
f) welche Programmierumgebung
g) was funktioniert am anscheinend bereits vorhandenen Programm nicht
Michael schrieb:> Für sehr kleine Stichproben stimme ich Deiner Aussage zu, dass man mit> dem Median auf der sichereren Seite liegt.
Du selber hast eine "kleine" Stichprobe in Form von "kleinen n-Zahlen"
ins Rennen geführt.
Michael schrieb:> Da hätte der Hinweis gereicht, du brauchst einen Impedanzwandler, wie> ich beim ersten Post befürchtet hatte.
Weil du die Nebenbedingungen (Abtasthäufigkeit, Signalfrequenz,
Signalform) nicht mitgeteilt hast, kann diese Aussage so pauschal nicht
stimmen. Wenn du wie gesagt "100 ms Wartezeit" hast (z.B. hochohmiger
Spannungsteiler an einem Akku), dann musst du nichts puffern, das habe
ich in meinen Tests oben klar gezeigt.
Und ein Impedanzwandler an einer Quelle mit 5M Innenwiderstand ist auch
eine nicht ganz triviale Aufgabe.
Klaus H. schrieb:> Es ist ja nicht gesagt, dass a) der MUX umgeschaltet wird
Ja, das ist mein Beispiel "Test 1". Aber Michael schaltet den Mux
tatsächlich um, er hat "2 Eingänge mit Gleichspanung" zu wandeln.
> b) dass die zu messende Spannung am ADC-Eingang konstant ist
Die Spannung muss nur für die Wandlungszeit so "konstant" sein, dass sie
sich weniger als 1 LSB ändert. Sonst kommt eben ein Ergebnis heraus, das
irgendwo zwischen dem Minimal- und dem Maximalwert liegt. Aber auch das
ist hier dank der zu messenden Gleichspannung kein Problem.
Michael schrieb:> sich bei 100k eine Zeitkonstante t = 1,4 us, d.h. der C ist nach 10us> (7*t) fast vollständig aufgeladen
Richtig, er ist in diesem Fall bis auf 1 LSB des Endwerts aufgeladen.
Und das bei einer Quellimpedanz von annähernd 0 Ohm.
Michael schrieb:> das die Aussage ich wusste es nicht eine Ausrede ist.
Es ist natürlich zuallererst einfach die Wahrheit. Korrekt hättest du
aber sagen müssen: "Ich habe nicht nachgeschaut, was der Sourcecode
macht."
Michael schrieb:> Du scheinst zu den Glücklichen zu gehören, die entweder alles wissen> oder alles verstehen.
Ich will es wissen. Auch ich habe in diesem Thread was gelernt.
Irgendwann brauche ich das wieder. Deshalb habe ich mir den Thread in
die Bookmarks genommen.
> Da beneide ich Dich, auch darum, dass Du Dir die Mühe machst alles zu> verstehen
...bzw. es wenigstens zu wollen. ;-)
Ich habe aus Erfahrung gelernt: es gibt nichts Schlimmeres als eine
voreilige "Zufriedenheit" mit einer naheliegenden Erklärung. Das fällt
einem irgendwann wieder auf den Kopf.
Michael schrieb:> Das heißt doch, dass die erste Messung prinzipiell> für die Tonne ist.
Nur wenn du die Referenz umgeschaltet hast, sonst nicht (vor allem nicht
beim Wechsel des Channels).
Zitat aus dem dem Datenblatt zum ATmega328-328P, Kapitel 28.5.2 ADC
Voltage Reference:
>> The first ADC conversion result after switching reference voltage source may>> be inaccurate, and the user is advised to discard this result.
Lothar M. schrieb:> Uwe B. schrieb:>> Bei den STM32 gibt es in den Datenblaettern eine Tablelle Table "Maximum>> ADC RAIN". Gibt es das nicht bei Atmel/Microchip?> Nur vereinzelt. Allerdings ist der Leckstrom bei fast allen AVR auf typ.> 5nA spezifiziert. Da muss man sich bei weiten nicht so viele Gedanken> machen, wie wenn der wie beim STM32 gut 200x größer bei +-1µA ist.
Naja, so groß ist der Unterschied nicht, bei beiden (ATtiny85,
STM32F103) steht 1µA Max im Datenblatt. Der typische Wert ist
natürlich bei beiden kleiner, das erklärt die Messergebnisse hier. Aber
wenn ein grenzwertiger Chip warm wird, darf er eben auch 1µA fließen
lassen. Und nein, das ist dann keine Fälschung ;)
> In der Tabelle fain -> RAIN erscheint mir angesichts des typischen> Leckstroms ein Widerstand um 1 MOhm bei niedrigen Abtastraten aber als> sehr sportlich...
Unterschreib; aber siehe oben...
Edit: nebenbei: STM32L051xxx3 z.B. sind mit ±50nA max. bei 125°C
spezifiziert
S. L. schrieb:> Nur so aus Interesse: was sind eigentlich die Voraussetzungen? Also> offenbar zwei Eingangsspannungen, jede mit Ri= 5 MOhm.
nein, nur 1 Eingang (Fotowiderstand als Dämmerungssensor:
Spannungsteiler Vcc-R1-Rfoto-GND).
Der andere Spannungsteiler zur Vcc-Überwachung: Vcc-100k-100k-GND).
> a) in welchem Spannungsbereich liegen diese
Referenzspannung wurde zu 2,56V gewählt, Widerstände berechnet dass
Vcc>Ue>Uref/2
> b) wie schnell ändern sie sich
näherungsweise im Minutenbereich.
> c) sollen die beiden Kanäle gleich behandelt werden
nicht wichtig, Vcc_Messung erfolgt einmal täglich beim Übergang
Hell-Dunkel, bestimmt vom Dunkelwiderstand des Rfoto.
> d) welche Referenz wird verwendet
2,56V
> e) welche Genauigkeit wird verlangt
10% sind ausreichend, also nicht so wichtig.
> f) welche Programmierumgebung
Atmel Studio 7.0
> g) was funktioniert am anscheinend bereits vorhandenen Programm nicht
Programm läuft fehlerfrei, musste den Vorwiderstand des Rfoto deutlich
anpassen. Rfoto gemessen bei der gewünschten Dämmerung 5.217 k. R1
errechnet zu 5M. Für den definierten Vcc-Breich (4,2V>Vcc>3,5V) lieferte
der Spannungsteiler Vi>Uref/2.
Nach dem Anschließen dieses Spannungsteilers musste ich experimentell
einem Widerstand von 1,1 M wählen, um in den geforderten Uref-Bereich zu
kommen.
Deshalb meine Frage nach dem Innenwiderstand (gemeint Gleichstrom, aber
nicht beschrieben) ob den jemand kennt. Daraus hatte ich
geschlussfolgert, dass er ca. 1M beträgt. Hatte aber im Datenblatt
nichts gefunden.
Gruß M.
Lothar M. schrieb:> Michael schrieb:>> Für sehr kleine Stichproben stimme ich Deiner Aussage zu, dass man mit>> dem Median auf der sichereren Seite liegt.> Du selber hast eine "kleine" Stichprobe in Form von "kleinen n-Zahlen"> ins Rennen geführt.
richtig, um zu verdeutliche, dass man so pauschal Deine Aussage nicht
zutrifft.
> Michael schrieb:>> Da hätte der Hinweis gereicht, du brauchst einen Impedanzwandler, wie>> ich beim ersten Post befürchtet hatte.> Weil du die Nebenbedingungen (Abtasthäufigkeit, Signalfrequenz,> Signalform) nicht mitgeteilt hast, kann diese Aussage so pauschal nicht> stimmen. Wenn du wie gesagt "100 ms Wartezeit" hast (z.B. hochohmiger> Spannungsteiler an einem Akku), dann musst du nichts puffern, das habe> ich in meinen Tests oben klar gezeigt.
Da gebe ich Dir unumwunden recht, dass meine Frage nicht präzise
untermauert war. Das war meine "Betriebsblindheit", denn für mich und
nur für mich war es klar, dass ich den Gleichstromeingangswiderstand
meinte.
Für mich war das eben völlig klar, sonst hätte ich von Eingangsimpedanz
gesprochen und dass die frequenzabhängig ist, weiß ich sehr wohl.
Insofern wäre die Frage ohne Kenntnis weiterer Schaltungsparameter nicht
zu beantworten.
> Und ein Impedanzwandler an einer Quelle mit 5M Innenwiderstand ist auch> eine nicht ganz triviale Aufgabe.
Das weiß ich, habe früher diese Problem öfter gehabt, nämlich bei der
Ableitung von intrazelluren Potentialen (Neuronen).
>> Klaus H. schrieb:>> Es ist ja nicht gesagt, dass a) der MUX umgeschaltet wird> Ja, das ist mein Beispiel "Test 1". Aber Michael schaltet den Mux> tatsächlich um, er hat "2 Eingänge mit Gleichspanung" zu wandeln.
Ja der MUX wird umgeschaltet. Beim Eintreten der Dämmerung und bis zum
Eintreten des Tageslichtes nicht mehr.
>> b) dass die zu messende Spannung am ADC-Eingang konstant ist> Die Spannung muss nur für die Wandlungszeit so "konstant" sein, dass sie> sich weniger als 1 LSB ändert. Sonst kommt eben ein Ergebnis heraus, das> irgendwo zwischen dem Minimal- und dem Maximalwert liegt. Aber auch das> ist hier dank der zu messenden Gleichspannung kein Problem.
Ja die Spannung ist konstant und die Genauigkeit 1LSB ist nicht
erforderlich.
> Michael schrieb:>> sich bei 100k eine Zeitkonstante t = 1,4 us, d.h. der C ist nach 10us>> (7*t) fast vollständig aufgeladen> Richtig, er ist in diesem Fall bis auf 1 LSB des Endwerts aufgeladen.> Und das bei einer Quellimpedanz von annähernd 0 Ohm.
Wie Du auf 0 Ohm kommst verstehe ich nicht. Meines Wissens genügt es,
dass Rquelle << Re ist un Re wird von der geforderten Genauigkeit
bestimmt. Glaube Du hast Dich mit der Aussage 0 Ohm wieder weit aus dem
Fenster gelehnt.
> Michael schrieb:>> das die Aussage ich wusste es nicht eine Ausrede ist.> Es ist natürlich zuallererst einfach die Wahrheit. Korrekt hättest du> aber sagen müssen: "Ich habe nicht nachgeschaut, was der Sourcecode> macht."
Meinen Sourcecode kenne ich schon und manch andere Sourcecode verstehe
ich halt nicht ohne deutlich viel Zeit zu investieren.
> Michael schrieb:>> Du scheinst zu den Glücklichen zu gehören, die entweder alles wissen>> oder alles verstehen.> Ich will es wissen. Auch ich habe in diesem Thread was gelernt.> Irgendwann brauche ich das wieder. Deshalb habe ich mir den Thread in> die Bookmarks genommen.
Das ist gut, ich auch.
>> Da beneide ich Dich, auch darum, dass Du Dir die Mühe machst alles zu>> verstehen> ...bzw. es wenigstens zu wollen. ;-)
Das versuche ich auch, aber manchmal ist halt der Aufwand sehr groß und
der "Schweinehund" gewinnt.
> Ich habe aus Erfahrung gelernt: es gibt nichts Schlimmeres als eine> voreilige "Zufriedenheit" mit einer naheliegenden Erklärung. Das fällt> einem irgendwann wieder auf den Kopf.
uneingeschränkte Zustimmung. Hinzu kommt man sollte nicht auf einem
Podest stehen und meinen immer Recht zu haben. Auch das habe ich lernen
müssen und Du wirst es auch noch.
Und wie der Teufel es will finde ich heute auf Seite 167 des Datenblatts
Punkt 21.7 ADC Characteristiks die Aussage
Rain - Analog Input Resistance - 100 MOhm.
Da frage ich mich nun um so mehr, warum meine Eingangsspannung
(Vcc-5MOhm-Rfoto(5,1MOhm)-GND zusammenbricht. Dasa dürfte ja nicht sein.
M.
an Michael:
Danke für die ausführliche Antwort.
Die Anforderungen sind völlig unproblematisch - theoretisch. Praktisch
aber bleibt die Frage, die Sie sich eben auch stellten. Also ich hatte
das Problem nicht (siehe irgendwo ganz oben), folglich ist Ihr Aufbau
nicht in Ordnung, oder der ATtiny85; wenn vorhanden, es mit einem
zweiten probieren, oder zumindest mal die beiden Eingänge tauschen.
Vielleicht war auch die Messung des Dämmerungswertes (die 5,217 MOhm)
falsch.
Der ADC-Programmteil wäre noch von Interesse.
PS:
Vielleicht irgendetwas mit ADLAR ...
Michael schrieb:> Und wie der Teufel es will finde ich heute auf Seite 167 des Datenblatts> Punkt 21.7 ADC Characteristiks die Aussage> Rain - Analog Input Resistance - 100 MOhm.
So ziemlich das Gleiche stand schon im ersten Post nach deiner Frage.
Und da steht im DB sicher auch, dass das ein typischer Wert ist, der bei
typischer Versorgung und Zimmertemperatur gilt.
> warum meine Eingangsspannung (Vcc-5MOhm-Rfoto(5,1MOhm)-GND> zusammenbricht. Dasa dürfte ja nicht sein.
Das ist die zäheste Salami, die seit langem hier in hauchdünnsten
Scheibchen geschnitten und serviert wurde.
Wie wärs, wenn du einfach mal deine Schaltung, den Aufbau und das
zugehörige Programm postest. Und dann auch noch beschreibst, was damit
passiert und was du stattdessen erwartet hättest.
> Das ist die zäheste Salami ...
Für mich allerdings sieht es eher so aus, als hätten sich einige in
Mutmaßungen und Hellsehereien verrannt und den Thread aufgeblasen, um
schließlich sogar noch beim STM32 zu enden.
1. Ich glaube es ist genug nun.
2. Die Hardware tut was sie soll.
3. Der Code tut was er soll.
4. Vorwiderstand für den Dämmerungssensor so gewählt, dass es passt.
5. Vcc 3,7V. Umgebungstemperatur 18-23grd.
6. Für S.L. Code in der Anlage und für die, die interessiert, ist ja
keine Hexerei.
7. Für S.L.
meine Antwort zu c) stimmt nicht (sollen die beiden Kanäle gleich
behandelt werden nicht wichtig, Vcc_Messung erfolgt einmal täglich beim
Übergang
Hell-Dunkel, bestimmt vom Dunkelwiderstand des Rfoto.)
Das wollte ich so tun, war mir aber zu aufwendig, Deshalb in der while
Schleife. Denke aber, dass das zeitunkritisch ist.
Drückt mal alle für unsere Handballer heute die Daumen.
M.
S. L. schrieb:> Der ADC-Programmteil wäre noch von Interesse.>> PS:> Vielleicht irgendetwas mit ADLAR ...
s. mein Post 24.01.2024 18:24
danke Dir und Gruß
M.
Lothar M. schrieb:> Lass mich nochmal kurz mutmaßen und hellsehen: Michael will, dass> endlich Schluss ist und seine Ruhe haben.
Du schriebst Lasst mich NOCHMAL, ich hatte Deinen Posts nicht entnommen,
dass Du mutmaßt und hellsiehst. Du musst es besser wissen.
Wenn Du anderer Meinung bist, es gäbe noch etwas substanzielles zu
sagen, refistrierre ich das ja, denn der Post ist gebookmarkt bei mir.
Vielleicht ist Dir auch mein Beitrag vom 24.01.2024 15:53 entgangen.
"Und wie der Teufel es will finde ich heute auf Seite 167 des
Datenblatts
Punkt 21.7 ADC Characteristiks die Aussage Rain - Analog Input
Resistance - 100 MOhm." Damit ist meine Frage ja beantwortet. Vielleich
sollte das jetzt aber nur eine kleine Spitze gegen mich sein.
Gruß M.
Das Fragezeichen bezog sich darauf, dass ich keinen "Code in der Anlage"
finden kann.
Noch eine Anmerkung: bei den Photowiderständen, mit denen ich zu tun
hatte, ist der Helligkeitsunterschied zwischen z.B. 5 und 2 MOhm recht
gering, vielleicht haben Sie sich da täuschen lassen.
S. L. schrieb:> Das Fragezeichen bezog sich darauf, dass ich keinen "Code in der Anlage"> finden kann.>> Noch eine Anmerkung: bei den Photowiderständen, mit denen ich zu tun> hatte, ist der Helligkeitsunterschied zwischen z.B. 5 und 2 MOhm recht> gering, vielleicht haben Sie sich da täuschen lassen.
Datei in der Anlage. muss ich wohl etwas versemmelt haben.
meine Hilfsmessungen
Lux n R KOhm Bedingung
1.554 1 4 am Fenster bewölkt
30 2 11 Stube bewölkt
0 3 387 vorhänge zu dämmerung bewölkt
0 4 550 vorhänge zu dämmerung fernseher aus
0 5 1.156 Jalousien runter/fernseher an/laptop bildschirm an
0 6 11.790 Jalousien runter/fernseher aus/laptop BS an
0 7 100.000 Jalousien runter/fernseher aus/laptop BS aus
die 0 Lux konnte ich nicht genauer auflösen, habe mich für die Auswahl
des Referenzwertes auf meine visuelle Einschätzung verlassen (Bei
welcher Dämmerung soll LED einschalten).
M.
Michael schrieb:> S. L. schrieb:>> Noch eine Anmerkung: bei den Photowiderständen, mit denen ich zu tun>> hatte, ist der Helligkeitsunterschied zwischen z.B. 5 und 2 MOhm recht>> gering, vielleicht haben Sie sich da täuschen lassen.>
im Anhang Kennlinie
Mit diesem reduzierten Programm habe ich, bei Ucc= 4.0 V und R1= 4,7
MOhm, für Rph eine Schaltschwelle von ca. 4 MOhm.
PS:
Und, wie immer, der generelle Hinweis: eine Test-Software so
einfach&kurz wie nur irgend möglich halten, besonders aber bei Verdacht
auf Chip- oder sonstige Hardwareprobleme - Letztere sind für sich
genommen schon unangenehm genug.
S. L. schrieb:> 'Init_IO_Ports ... PORTB |= (1 << ADC3_Pin2) ... pull up'>> Ein interner Pullup an einem ADC-Eingang?
habe ich irgendwo gelesen als Empfehlung. Das könnte ja die Ursache
sein. da der PullUp im Ersatzschaltbild parallel zu Rain liegt.
S. L. schrieb:> Mit diesem reduzierten Programm habe ich, bei Ucc= 4.0 V und R1=> 4,7> MOhm, für Rph eine Schaltschwelle von ca. 4 MOhm.>> PS:>> Und, wie immer, der generelle Hinweis: eine Test-Software so> einfach&kurz wie nur irgend möglich halten, besonders aber bei Verdacht> auf Chip- oder sonstige Hardwareprobleme - Letztere sind für sich> genommen schon unangenehm genug.
Das ist ja keine Testsoftware. Fürf den Hinweis danke ich, das wäre ein
Leichtes gewesen. Den Rain hatte ich nicht getestet, nur die
Funktionsweise der ADCs.
Michael schrieb:> habe ich irgendwo gelesen als Empfehlung.
Habe ich gleich mit heraus geschnitten, erklärte der Chirurg, habe ich
irgendwo gelesen als Empfehlung.
Norbert schrieb:> Michael schrieb:>> habe ich irgendwo gelesen als Empfehlung.>> Habe ich gleich mit heraus geschnitten, erklärte der Chirurg, habe ich> irgendwo gelesen als Empfehlung.
Freue mich dass Du keine Empfehlungen befolgst. Da kannst Du ja
überhaupt nichts falschmachen.
Michael schrieb:> Freue mich dass Du keine Empfehlungen befolgst. Da kannst Du ja> überhaupt nichts falschmachen.
Ein typischer Fehlschluss, wie er im Forum immer wieder gerne (und viel
zu oft) auftaucht. ;-)
an Michael:
> Das könnte ja die Ursache sein. da der PullUp> im Ersatzschaltbild parallel zu Rain liegt.
Kaum - der Effekt geht ja genau in die andere Richtung: dass Sie R1
verkleinern mussten (1.1 MOhm statt 5), wäre nur durch einen Pulldown zu
erklären.
PS:
... so, wie es auch durch einen zu kleinen Rain verursacht würde.
Aber mit dem Testprogramm können Sie jetzt ja recht schnell einen
Chipfehler ausschließen und einen Softwarefehler bestätigen (oder eben
umgekehrt).
S. L. schrieb:> an Michael:>> Das könnte ja die Ursache sein. da der PullUp>> im Ersatzschaltbild parallel zu Rain liegt.>> Kaum - der Effekt geht ja genau in die andere Richtung: dass Sie R1> verkleinern mussten (1.1 MOhm statt 5), wäre nur durch einen Pulldown zu> erklären.>
Hier irrte ich. Meine Aussage gilt nur für Wechselstromersatzschild,
also für diesen Fall nicht.
> ... so, wie es auch durch einen zu kleinen Rain verursacht würde.>> Aber mit dem Testprogramm können Sie jetzt ja recht schnell einen> Chipfehler ausschließen und einen Softwarefehler bestätigen (oder eben> umgekehrt).
Nun habe ich alle 10 Attinys getestet, 7 davon mit zu kleinem Rain. Sind
nun gekennzeichnet.
Für alle die es interessiert die main nochmals im anhang.
Gruß M und danke für die Mühe.
Michael schrieb:> Nun habe ich alle 10 Attinys getestet, 7 davon mit zu kleinem Rain.
Weil es gar nicht so arg einfach ist, in ICs "eingebaute" Widerstände im
100 MOhm-Bereich zuverlässig zu messen: mit welchem Messaufbau und unter
welchen Testbedingungen hast du den Rain gemessen?
Und welche Werte für Rain hast du dabei bei deinen 10 Prüflingen
erhalten?
> die main nochmals im anhang.
In diesem Kommentar taucht immer noch zweimal "PB2" und zweimal "0010"
auf:
Lothar M. schrieb:> Michael schrieb:>> Nun habe ich alle 10 Attinys getestet, 7 davon mit zu kleinem Rain.> Weil es gar nicht so arg einfach ist, in ICs "eingebaute" Widerstände im> 100 MOhm-Bereich zuverlässig zu messen: mit welchem Messaufbau und unter> welchen Testbedingungen hast du den Rain gemessen?>> Und welche Werte für Rain hast du dabei bei deinen 10 Prüflingen> erhalten?>
zwischen 800k und 1,2M
>> die main nochmals im anhang.> In diesem Kommentar taucht immer noch zweimal "PB2" und zweimal "0010"> auf:>
danke, habe ich korrigiert, kommt von copy and paste, wenn nicht alles
intus ist.
> Mein Motto dazu: besser kein Kommentar als ein mehrfach Falscher.
Da ich nicht ständig mit den uC arbeite, meist nur von Dezember bis
Februar (haben eine kleine Hobbyimkerei fast 200 km vom Wohnort, so dass
der Rest des Jahres ausgefüllt ist, brauche ich die Kommentare, um mich
später bei Bedarf wieder reinzufitzen bzw, nachzuschlagen, wie war denn
das.
So wie ich mich auch immer erstmal wieder in die IDE, KICAD, FREECAD und
ein Flussdiagrammprogramm wieder einarbeiten muss.
Früher brauchte ich das auch nicht.
Gruß M.
Michael schrieb:>> Mein Motto dazu: besser kein Kommentar als ein mehrfach Falscher.> Da ich nicht ständig mit den uC arbeite, meist nur von Dezember bis> Februar (haben eine kleine Hobbyimkerei fast 200 km vom Wohnort, so dass> der Rest des Jahres ausgefüllt ist, brauche ich die Kommentare, um mich> später bei Bedarf wieder reinzufitzen bzw, nachzuschlagen, wie war denn> das.
Falsche Sicht!
Deine Bienen haben damit nichts zu tun.
Mein Rat:
Der Code sagt, WAS getan wird.
Der Kommentar erklärt das WARUM
Beherzigt man das, kann es keine solchen (selbst/fremd)Verwirrungen
geben.
Und wie schon gesagt: Die Schuld auf die Bienen zu schieben, ist absurd.
Arduino F. schrieb:> Falsche Sicht!> Deine Bienen haben damit nichts zu tun.>> Mein Rat:> Der Code sagt, WAS getan wird.> Der Kommentar erklärt das WARUM>> Beherzigt man das, kann es keine solchen (selbst/fremd)Verwirrungen> geben.>> Und wie schon gesagt: Die Schuld auf die Bienen zu schieben, ist absurd.
nur kein Neid