Forum: Mikrocontroller und Digitale Elektronik Attiny85 ADC Eingangswiderstand - wie hoch


von Michael (oti)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von Klaus H. (hildek)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Michael schrieb:
> Finde leider im Datasheet keine Angaben zum Eingangswiderstand der
> ADC-Kanäle des AT85.
Augen auf!
1 bis 100k
Figure 17-8. Analog Input Circuitry
https://ww1.microchip.com/downloads/en/devicedoc/atmel-2586-avr-8-bit-microcontroller-attiny25-attiny45-attiny85_datasheet.pdf

von Klaus H. (hildek)


Lesenswert?

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."

: Bearbeitet durch User
von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

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"

: Bearbeitet durch User
von Klaus H. (hildek)


Lesenswert?

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).

: Bearbeitet durch User
von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Klaus H. schrieb:
> Ja, aber

Das nennt man dann wohl "aktiver Rückzug"

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

: Bearbeitet durch Moderator
von Rainer W. (rawi)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

: Bearbeitet durch Moderator
von Achim H. (pluto25)


Lesenswert?

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.

: Bearbeitet durch User
von Bauform B. (bauformb)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Achim H. (pluto25)


Lesenswert?

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.

von S. L. (sldt)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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?

: Bearbeitet durch Moderator
von S. L. (sldt)


Lesenswert?

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.

von M. K. (sylaina)


Lesenswert?

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.

von Christoph M. (mchris)


Lesenswert?

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.

von Rainer W. (rawi)


Lesenswert?

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.

: Bearbeitet durch User
Beitrag #7584723 wurde vom Autor gelöscht.
Beitrag #7584726 wurde vom Autor gelöscht.
von Michael (oti)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

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
void setup() {
2
  // initialize digital pin LED_BUILTIN as an output.
3
  pinMode(LED_BUILTIN, OUTPUT);
4
5
  Serial.begin(9600);
6
}
7
8
void loop() {
9
  uint16_t an0, 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
16
  // :
17
  
18
  Serial.println("Spannungsteiler: " + String(an0) + " - Poti: " + String(an4));
19
}



**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.

: Bearbeitet durch Moderator
von Achim H. (pluto25)


Lesenswert?

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.

von Norbert (der_norbert)


Lesenswert?

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… ;-)

von Peter D. (peda)


Lesenswert?

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.
1
  an4 = analogRead(A4); // Poti
2
  analogRead(A0);       // dummy read to change MUX
3
  delay(1000);   
4
  an0 = analogRead(A0);

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

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?

: Bearbeitet durch User
von Michael (oti)


Lesenswert?

Klaus H. schrieb:

> Ja, aber dann ist er nicht R = 1...100k sondern 1...100k + 1/(jω·14pF).

das nennt man meines Wissens impedanz um genau zu sein

von Michael (oti)


Lesenswert?

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.

: Bearbeitet durch User
von Kalli L. (knl)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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... ;-)

: Bearbeitet durch Moderator
von S. L. (sldt)


Lesenswert?

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?

von Steve van de Grens (roehrmond)


Lesenswert?

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.

Beitrag #7586301 wurde vom Autor gelöscht.
von S. L. (sldt)


Lesenswert?

an Achim H.:

Ich frage, weil ich kein explizites Umschalten des Multiplexers sehe, 
immer nur das implizite per Arduino-'analogRead'.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

S. L. schrieb:
> immer nur das implizite per Arduino-'analogRead'.

Reicht doch.

von Christoph M. (mchris)


Lesenswert?

S.L. (sldt)
>Ich frage, weil ich kein explizites Umschalten des Multiplexers sehe,
>immer nur das implizite per Arduino-'analogRead'.

Da kannst du hier schauen:
https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/wiring_analog.c
Der Multiplexer wird bei jedem analogRead() gesetzt.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

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.

: Bearbeitet durch Moderator
von Norbert (der_norbert)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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)
3
  delayMicroseconds(500);
4
  an0 = analogRead(A0); // Spannungsteiler einlesen

+-2 Digits machen sich dann bemerkbar:
1
:
2
Spannungsteiler: 502 - Poti: 518
3
Spannungsteiler: 502 - Poti: 584
4
Spannungsteiler: 503 - Poti: 1023
5
Spannungsteiler: 503 - Poti: 1023
6
Spannungsteiler: 504 - Poti: 1023
7
Spannungsteiler: 502 - Poti: 531
8
Spannungsteiler: 501 - Poti: 375
9
Spannungsteiler: 501 - Poti: 177
10
Spannungsteiler: 500 - Poti: 0
11
Spannungsteiler: 500 - Poti: 0
12
Spannungsteiler: 501 - Poti: 73
13
Spannungsteiler: 502 - Poti: 421
14
Spannungsteiler: 502 - Poti: 524
15
Spannungsteiler: 502 - Poti: 524
16
:

: Bearbeitet durch Moderator
von Peter D. (peda)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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:
1
void loop() {
2
  uint16_t an0, an4 = 9999;
3
  static uint16_t i = 4600;
4
  
5
  an4 = analogRead(A4); // Poti
6
  an0 = analogRead(A0); // Spannungsteiler einlesen
7
8
  if (!i--)
9
  {
10
     i = 4600;
11
     Serial.println("Spannungsteiler: " + String(an0) + " - Poti: " + String(an4));
12
  }
13
}

> 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
void loop() {
2
  uint16_t an0, an4 = 9999;
3
  static uint32_t i = 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)
7
8
  if (!i--)
9
  {
10
     an0 = analogRead(A0); // Spannungsteiler einlesen
11
     an4 = analogRead(A4); // Poti
12
     i = 390000;
13
     Serial.println("Spannungsteiler: " + String(an0) + " - Poti: " + String(an4));
14
  }
15
}

Das Ergebnis ist erwartbar, die Spannung am Pufferkondensator wird noch 
deutlich mehr vom Poti beeinflusst:
1
:
2
Spannungsteiler: 501 - Poti: 510
3
Spannungsteiler: 501 - Poti: 510
4
Spannungsteiler: 517 - Poti: 528
5
Spannungsteiler: 580 - Poti: 597
6
Spannungsteiler: 729 - Poti: 760
7
Spannungsteiler: 946 - Poti: 995
8
Spannungsteiler: 974 - Poti: 1023
9
Spannungsteiler: 843 - Poti: 882
10
Spannungsteiler: 592 - Poti: 610
11
Spannungsteiler: 451 - Poti: 454
12
Spannungsteiler: 158 - Poti: 135
13
Spannungsteiler: 30 - Poti: 0
14
Spannungsteiler: 30 - Poti: 0
15
Spannungsteiler: 126 - Poti: 103
16
Spannungsteiler: 305 - Poti: 296
17
Spannungsteiler: 466 - Poti: 474
18
Spannungsteiler: 509 - Poti: 519
19
Spannungsteiler: 509 - Poti: 519
20
:

: Bearbeitet durch Moderator
von Michael (oti)


Lesenswert?

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.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

: Bearbeitet durch Moderator
von Klaus H. (hildek)


Lesenswert?

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.

: Bearbeitet durch User
von Michael (oti)


Lesenswert?

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.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Michael schrieb:
> Leider keine Antwort wie hoch nun der Eingangswiderstand wirklich ist.

Aua!

von Michael (oti)


Lesenswert?

> 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.

von S. L. (sldt)


Lesenswert?

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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

: Bearbeitet durch Moderator
von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Bei den STM32 gibt es in den Datenblaettern eine Tablelle Table "Maximum 
ADC RAIN". Gibt es das nicht bei Atmel/Microchip?

von M. K. (sylaina)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

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.

In der Tabelle fain -> RAIN erscheint mir angesichts des typischen 
Leckstroms ein Widerstand um 1 MOhm bei niedrigen Abtastraten aber als 
sehr sportlich...

- 
https://www.st.com/resource/en/application_note/an2834-how-to-optimize-the-adc-accuracy-in-the-stm32-mcus-stmicroelectronics.pdf
- 
https://www.st.com/resource/en/application_note/cd00004444-understanding-and-minimising-adc-conversion-errors-stmicroelectronics.pdf
- 
https://electronics.stackexchange.com/questions/311967/how-to-have-an-accurate-adcstm32

M. K. schrieb:
> 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.

Den Grund hat Peter weiter oben genannt, als

er schrieb:
> Die Bandgap ist sehr hochohmig angeschlossen, so daß ein Delay notwendig
> ist.
Dieses Delay wird durch die zusätzliche, zu verwerfende, Messung 
erzeugt.

: Bearbeitet durch Moderator
von Bauform B. (bauformb)


Lesenswert?

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

: Bearbeitet durch User
von Michael (oti)


Lesenswert?

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.

von Michael (oti)


Lesenswert?

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.

von Michael (oti)


Lesenswert?

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.

: Bearbeitet durch User
von S. L. (sldt)


Lesenswert?

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 ...

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

: Bearbeitet durch Moderator
von S. L. (sldt)


Lesenswert?

> 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.

von Michael (oti)


Lesenswert?

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.

von Michael (oti)


Lesenswert?

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.

von S. L. (sldt)


Lesenswert?

> Code in der Anlage
> s. mein Post  24.01.2024 18:24

?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

S. L. schrieb:
> ?
Lass mich nochmal kurz mutmaßen und hellsehen: Michael will, dass 
endlich Schluss ist und seine Ruhe haben.

: Bearbeitet durch Moderator
von Michael (oti)


Lesenswert?

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.

von Michael (oti)


Lesenswert?

S. L. schrieb:
> ?
Den Attiny werde ich wechseln, an so etwas hatte ich überhaupt nicht 
gedacht und melde mich wieder, voraussichtlich am WE.
M.

von S. L. (sldt)


Lesenswert?

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.

von Georg M. (g_m)


Lesenswert?

S. L. schrieb:
> der Helligkeitsunterschied zwischen z.B. 5 und 2 MOhm recht gering

Subjektiv oder gemessen?

von Michael (oti)


Angehängte Dateien:

Lesenswert?

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.

: Bearbeitet durch User
von Michael (oti)


Angehängte Dateien:

Lesenswert?

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

von Georg M. (g_m)


Lesenswert?

Michael schrieb:
> im Anhang Kennlinie

Was ist das für eine x-Achse?

von Georg M. (g_m)


Lesenswert?

Beispiele Beleuchtungsstärken:
Vollmond: 0,27 lx
Neumond:  0,001 lx

https://de.wikipedia.org/wiki/Beleuchtungsstärke

von S. L. (sldt)


Lesenswert?

an Georg M.: rein subjektiv

an Michael: das kann jetzt eine Weile dauern

von Michael (oti)


Lesenswert?

Georg M. schrieb:
> Michael schrieb:
>> im Anhang Kennlinie
>
> Was ist das für eine x-Achse?

das sind die HelligkeitsBedingungen

von Michael (oti)


Lesenswert?

Georg M. schrieb:
> Beispiele Beleuchtungsstärken:
> Vollmond: 0,27 lx
> Neumond:  0,001 lx
>
> https://de.wikipedia.org/wiki/Beleuchtungsstärke
kenne ich. sind leider mit meinem luxmeter nicht zu messen

von Michael (oti)


Lesenswert?

Michael schrieb:
> Georg M. schrieb:
>> Michael schrieb:
>>> im Anhang Kennlinie
>>
>> Was ist das für eine x-Achse?
>
> das sind die HelligkeitsBedingungen
Jalousine, Fernseher, Laptop Bildscherm

von S. L. (sldt)


Lesenswert?

'Init_IO_Ports ... PORTB |= (1 << ADC3_Pin2) ...  pull up'

Ein interner Pullup an einem ADC-Eingang?

von S. L. (sldt)


Angehängte Dateien:

Lesenswert?

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.

: Bearbeitet durch User
von Michael (oti)


Lesenswert?

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.

von Michael (oti)


Lesenswert?

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.

von Norbert (der_norbert)


Lesenswert?

Michael schrieb:
> habe ich irgendwo gelesen als Empfehlung.

Habe ich gleich mit heraus geschnitten, erklärte der Chirurg, habe ich 
irgendwo gelesen als Empfehlung.

von Michael (oti)


Lesenswert?

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.

Das mit dem PullUp am ADC ist offensichtlich Mist, habe
https://forum.arduino.cc/t/solved-attiny85-adc-read-problem/481840
gefunden. Erklärung 2. Betrag.

von Michael (oti)


Lesenswert?

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.

von Norbert (der_norbert)


Lesenswert?

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. ;-)

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Norbert schrieb:
> typischer Fehlschluss

Manche Annahmen sind so dermaßen falsch, dass noch nicht einmal das 
Gegenteil richtig ist.

von S. L. (sldt)


Lesenswert?

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).

: Bearbeitet durch User
von Michael (oti)


Angehängte Dateien:

Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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:
1
ADC3 for input (PB2) = 0010; ADC2 (PB4) = 0010; ADC1 (PB2) = 0001; ADC0 (PB5) = 0000
Mein Motto dazu: besser kein Kommentar als ein mehrfach Falscher.

: Bearbeitet durch Moderator
von Michael (oti)


Lesenswert?

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:
>
1
> ADC3 for input (PB3) = 0010; ADC2 (PB4) = 0010; ADC1 (PB2) = 0001; ADC0 
2
> (PB5) = 0000
3
>
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.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

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.

von Michael (oti)


Lesenswert?

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

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
Noch kein Account? Hier anmelden.