Forum: Mikrocontroller und Digitale Elektronik Zabex Ohmmeter mit Atmega 88 Funktion ?


von Klaus (Gast)


Angehängte Dateien:

Lesenswert?

Morgen
In diesem Beitrag wurde der Aufbau bereits beschrieben:
Beitrag "Ohmmeter nach Zabex"

Habe das ori auch noch mal reingestellt.
Dabei wird der Atmega 88 und die Pins PB0 bis PB7 verwendet.
Was ich daran nicht verstehe ist das Messprinzip. Die ADC Eingänge 
werden nicht verwendet.
Kann mir jemand kurz erkläten wie das Funktioniert.
LG Klaus

von Stefan F. (Gast)


Lesenswert?

Leider ist der Schaltplan kaum lesbar. Ich sehe an Port B aber einige 
gelbe Markierungen, deren Labels offenbar mit gleichnamigen Labels an 
ADC Eingängen entsprechen.

von Alexander S. (alesi)


Angehängte Dateien:

Lesenswert?

Hallo,

unter http://www.zabex.de/site/ohmmeter.html gibt es ein .zip mit dem 
Schaltplan als pdf (siehe Anhang). Den kann man besser lesen.

Stefan F. schrieb:
> Ich sehe an Port B aber einige
> gelbe Markierungen, deren Labels offenbar mit gleichnamigen Labels an
> ADC Eingängen entsprechen.

Genau. Ux -> ADC0, U125 -> ADC1, U150 -> ADC2, usw.

von Frank G. (frank_g53)


Lesenswert?

Klaus schrieb:
> Dabei wird der Atmega 88 und die Pins PB0 bis PB7 verwendet.
> Was ich daran nicht verstehe ist das Messprinzip. Die ADC Eingänge
> werden nicht verwendet.

So wie ich das im Schaltplan verstehe:
Über die Port-Pins B werden die Spannungsteiler "ativiert" und die ADC 
von Port.C fragen die Spannungsteiler ab.

von Klaus (Gast)


Lesenswert?

Soweit gut, mit den ADC erfolgt die Abfrage der ADC Werte. Dann schalten 
die anderen die Bereiche. Woraus besteht denn dann der Spannungsteiler? 
Wozu ist Ux? Ist die Bezugsspannung (Uref) die 5V?

von Stefan F. (Gast)


Lesenswert?

Klaus schrieb:
> Woraus besteht denn dann der Spannungsteiler?

Aus den Widerständen an Port B und dem Probanden.

> Wozu ist Ux?

Ux ist die Spannung am Probanden. Wenn man die Widerstandwerte kennt, 
kann Rx ausrechnen.

> Ist die Bezugsspannung (Uref) die 5V?

Muss wohl, weil die Ausgänge von Port B ja auf 5V schalten. Ansonsten 
würden Abweichungen der Versorgungsspannung versus Referenz die Messung 
verfälschen. Stichwort: ratiometrische Messung

von Axel S. (a-za-z0-9)


Lesenswert?

Im Beitrag "Ohmmeter nach Zabex" befindet sich ein 
besserer Schaltplan.

Zum Meßprinzip:

Es wird der Reihe nach jeweils ein Pin von PB0 .. PB6 auf H gesetzt (der 
Rest ist hochhohmig). Der jeweilige Widerstand bildet mit dem Testobjekt 
einen Spannungteiler. Das Teilerverhältnis wird mit dem ADC an Pin PC0 
erfaßt. Es wird eine ratiometrische Messung gemacht (Vcc speist den 
Spannungsteiler und ist gleichzeitig Referenz).

Für die 5 niederohmigsten Widerstände (wo der Einfluß des Port- 
Ausgangswiderstands nicht mehr vernachlässigbar ist) wird außerdem die 
Spannung am Pin direkt über PC1 .. PC5 gemessen.

Genommen wird die Messung, bei der das ADC-Ergebnis am nähesten an Vcc/2 
ist. Sprich, wo Testobjekt und Vergleichwiderstand am besten überein 
stimmen. Bei dieser Messung ist der Fehler durch die endliche 
ADC-Auflösung am kleinsten.

von Klaus (Gast)


Lesenswert?

Wenn Vcc einer Schwankung unterliegt, liegt doch der Fehler in der 
Berechnung mit drin?
Wenn ich mir die Vorwiderstände so ansehe komme ich rechnisch eigentlich 
nicht auf eine Ergebnis. Um den gesamte Bereich der Messung abzudecken 
muss doch jeder Berech extra berechnet werden.
Wenn ein Ausgang auf H geschaltet wird kann doch eine unterschiedliche 
Spannung anliegen. Wie kommt dann eine exakte Wert zustande?

von Stefan F. (Gast)


Lesenswert?

Klaus schrieb:
> Wenn Vcc einer Schwankung unterliegt, liegt doch der Fehler in der
> Berechnung mit drin?

Ja, wenn der ADC ebenfalls VCC als Referenz verwendet.

Klaus schrieb:
> Wenn ich mir die Vorwiderstände so ansehe komme ich rechnisch eigentlich
> nicht auf eine Ergebnis. Um den gesamte Bereich der Messung abzudecken
> muss doch jeder Berech extra berechnet werden.

Na und? Das ist doch problemlos machbar.

Klaus schrieb:
> Wenn ein Ausgang auf H geschaltet wird kann doch eine unterschiedliche
> Spannung anliegen. Wie kommt dann eine exakte Wert zustande?

Weil die Referenz des ADC die gleiche Spannung ist. Hast du dich zum 
Thema "ratiometrische Messung" wie empfohlen eingelesen?

Stelle dir vor, der Spannungteiler ergibt gerade 1/3. Dann ist dem ADC 
egal, ob das 1/3 von 5 Volt oder 1/3 von 4 Volt sind. Es ist so oder so 
1/3 der Spannung, genau diese Info liefert der ADC bei der 
ratiometrischen Messung.

Genauer gesagt liefert er den Anteil der Spannung (egal wie hoch sie 
ist) in 1024 Schritten.

von Klaus (Gast)


Angehängte Dateien:

Lesenswert?

Morgen
Habe die Messung angeschaut. Habe dazu einen guten Artikel im Netz 
gefunden.
Bei dieser Methode ist die Messung relativ einfach. Wichtig dabei ist 
ein genauer Widerstand. In der Formel wird die Berechnung durchgeführt.
Was ich nicht verstanden habe ist die Vcc/Vref. Wenn ich zur Messung die 
selbe Spannung nehme stimmt die Messung z.B. bei 5V oder 3,3V. Wenn also 
die Spannung für Vcc/Vref schwankt z.B. zwischen 3,2.. bis 3,3.. hat das 
keinen Einfluss?

von Stefan F. (Gast)


Lesenswert?

Das hat wie gesagt keinen Einfluss.

Wenn der Eingang des ADC auf 1/3 der maximal messbaren Spannung liegt, 
dann ist das immer 1/3, ganz egal wie hoch diese nun konkret ist. Das 
numerische Ergebnis wird immer 341 sein (= 1/3 von 1024).

Wenn die maximale Spannung des Spannungsteilers (VCC) nicht mit der 
Referenz des ADC identisch wäre, dann würde jede Schwankung der 
Versorgungsspannung zu anderen numerischen Ergebnissen führen.

von Dieter W. (dds5)


Lesenswert?

Labels sind eine feine Sache um Verbindungen zu Schaltungsteilen auf 
einem anderen Blatt dazustellen.
Für Verbindungen innerhalb des Blattes sind sie einfach nur Schwachsinn 
weil man erst alle Vorkommen suchen muss um den Plan zu verstehen.

von Stefan F. (Gast)


Lesenswert?

Sehen sie bald auf microcontroller.net: Schaltpläne als Excel Tabelle. 
Kein mühsames Zeichnen mehr, keine ausschweifende Prosa. Einfach nur 
alle Verbindungen aufgelistet. Da schlägt das Herz des Schachspielers 
schneller.

von Bernhard S. (b_spitzer)


Lesenswert?

Stefan F. schrieb:
> Schaltpläne als Excel Tabelle.
> Kein mühsames Zeichnen mehr, keine ausschweifende Prosa.

mein früherer Chef (r.i.p.) hat Netzlisten als .TXT zum Layouter 
gegeben. PSpice lässt grüßen...

von Klaus (Gast)


Lesenswert?

Habe die Berechnung mal durchgeführt, zwar erst mal auf dem Papier, sie 
stimmt. Es steht auch drin: Rx < Rf. Wenn ich also einen Rf von 10k 
nehme ist der max. Messbereich bis 10K. Das kann man dann ohne Probleme 
auf 1M oder 100 Ohm ausweiten.
Bleibt noch die Frage nach der Formel. Wie kann ich das am besten in C 
machen?

von Stefan F. (Gast)


Lesenswert?

Klaus schrieb:
> Bleibt noch die Frage nach der Formel. Wie kann ich das am besten in C
> machen?

Eigentlich brauchst du dafür nur das Ohmsche Gesetz anzuwenden.

Der Spannungsteiler liefert abhängig von den Widerständen einen 
Bruchteil der Versorgungsspannung. Und der ADC sagt, wie hoch dieser 
Anteil ist (in 1024 Schritten).

Zu beidem gibt es reichlich Webseiten, die es im epischer Breite 
erklären. Man muss das nur noch miteinander kombinieren.

von Axel S. (a-za-z0-9)


Lesenswert?

Klaus schrieb im Beitrag #7331571

> Habe die Messung angeschaut. Habe dazu einen guten Artikel im Netz
> gefunden.

Wahrscheinlich nicht. Der Schaltplan sieht schonmal viel komplizierter 
aus, als er eigentlich sein müßte. Da sind lediglich 2 Widerstände von 
Vcc = Vref nach GND und ein ADC-Eingang am Teilerpunkt.

Welcher hochgeheime Artikel ist es denn?

> Wichtig dabei ist ein genauer Widerstand.

Nicht genauer als nötig. 1% Toleranz reicht für diese Anwendung (als 
Ohmmeter zur schnellen Sortierung) vollkommen aus.

> Was ich nicht verstanden habe ist die Vcc/Vref.  Wenn also
> die Spannung für Vcc/Vref schwankt z.B. zwischen 3,2.. bis 3,3..
> hat das keinen Einfluss?

Nein. Sie muß natürlich für die Dauer einer Messung (bzw. mehrerer, wenn 
mehrere zusammengehörige Messungen gemacht werden) stabil sein. Mehr 
aber nicht.


Klaus schrieb:
> Es steht auch drin: Rx < Rf. Wenn ich also einen Rf von 10k
> nehme ist der max. Messbereich bis 10K.

Wo "steht das drin"? Für das Ohmmeter nach Zabex stimmt das schon mal 
nicht. Der Vergleichswiderstand kann sowohl größer als auch kleiner als 
Rx sein. Nur wird für eine größeres Widerstandsverhältnis der Einfluß 
der endlichen ADC-Auflösung immer größer.

Nimm einfach an, der Vergleichswiderstand wäre 1K. Dann kann der 10-Bit 
ADC eines ATMega Widerstände Rx im Bereich 1Ω bis 1MΩ prinzipiell 
erfassen. Denn einmal ergibt sich ein Spannungteiler 1000:1 und das 
andere Mal 1:1000. Der ADC liefert einmal den Wert 1 und das andere Mal 
1023. Problem dabei: die Auflösung im Widerstandbereich wird an den 
Grenzen des Meßbereichs immer schlechter, weil die ADC-Ergebnisse ganze 
Zahlen sind. Ein "Klappern" des ADC um ±1 bedeutet vor allem am oberen 
Ende des Meßbereichs eine sehr große Änderung des berechneten 
Widerstandswertes.

Und deswegen verwendet Zabex mehrere Vergleichswiderstände in der 
Abstufung von ~ 1:6. Es läßt sich dann innerhalb der absoluten Grenzen 
immer ein Vergleichswiderstand finden, der nicht mehr als die 2.5-fache 
Größe von Rx hat oder der um Faktor 2.5 kleiner ist (weil 2.5² ~= 6).

Der von einem 10-Bit ADC gelieferte Wert liegt dann zwischen 293 (2.5 : 
1) und 731 (1 : 2.5). Ein "Zappeln" des ADC um ±1 entspricht dann einem 
Fehler unter 0.5%. Genauer müssen die Vergleichswiderstände dann auch 
nicht sein.

Im Detail ist das Meßverfahren noch etwas trickreicher, vor allem am 
unteren Ende des Meßbereichs. Wenn du es genauer wissen willst, lies den 
Quellcode. Der ist recht verständlich geschrieben.

von Klaus (Gast)


Lesenswert?

Meine diesen Stelle:
https://www.electronicdeveloper.de/ADCRatiometrisch.aspx
Nach deiner Aussage bin ich etwas verwirrt. Wenn der RF=10k ist, kann 
der Rx grüsser 10k sein?
Wenn ich mir die Formel anschaue und es nachrechne dürfte es nicht sein.

von Klaus (Gast)


Lesenswert?

Du sprichst von einem ADC von 10 Bit. Welche Auswirkung hat den 
zusätzlicher AD Wandler von 12Bit oder 16 Bit? Wird daurch die Messung 
genauer oder lohnt sich der Aufwand nicht?

von Stefan F. (Gast)


Lesenswert?

Klaus schrieb:
> Welche Auswirkung hat den zusätzlicher AD Wandler von 12Bit
> oder 16 Bit? Wird dadurch die Messung genauer oder lohnt sich der Aufwand nicht?

Die Messung wird höher aufgelöst. Das ist wie bei einem Thermometer, 
dass dir die Zimmertemperatur als 20.523 °C anzeigt. Stellst du zehn 
Stück davon nebeneinander, zeigt jedes etwas anderes an. In Wirklichkeit 
hat der Raum vielleicht 19°C. Hohe Auflösung heißt nicht zwingend, dass 
es genau ist.

Die Genauigkeit hängt der Messung hängt ab vom:

- Rauschen der Versorgungsspannung
- Rauschen des ADC
- Linearität des ADC
- Präzision der Vergleichswiderstände
- Rauschen der Widerstände
- Innenwiderstand des Mikrocontrollers (die sich zu den 
Vergleichswiderständen addiert)
- Rauschen der Ausgänge des Mikrocontrollers
- Elektromagnetische Einflüsse

Bis 10 Bit ist es noch relativ einfach hin zu bekommen, dass nur das 
unterste Bit rauscht. Du wärst nicht der erste, der einen 16 Bit ADC 
einsetzt aber trotzdem nur 10 nutzbare Bits erreicht, wie die anderen 
nur Rauschen.

Bei der Schaltung aus dem Eröffnungsbeitrag wäre ein ADC mit mehr als 10 
Bits wie Perlen vor die Säue geworfen. Damit gewinnst du nur scheinbare 
Genauigkeit, wie im obigen Beispiel mit dem Thermometer.

von Axel S. (a-za-z0-9)


Lesenswert?

Klaus schrieb:
> https://www.electronicdeveloper.de/ADCRatiometrisch.aspx

Keine Ahnung, was da gerechnet wird. Aber zum Zabex-Ohmmeter paßt es 
nicht.

> Wenn ich mir die Formel anschaue und es nachrechne dürfte es nicht sein.

Klar, weil die Formel nicht zur Schaltung paßt.

So sieht die Schaltung aus:
1
 .-------- U_ref ------->|
2
 |
3
 |           .--- U_x -->|
4
 v           v
5
 o--[R_ref]--*--[ R_x ]--| 
6
             |
7
8
Vcc         ADC         GND

von Axel S. (a-za-z0-9)


Lesenswert?

1
 .-------- U_ref ------->|
2
 |
3
 |           .--- U_x -->|
4
 v           v
5
 o--[R_ref]--*--[ R_x ]--| 
6
             |
7
8
Vcc         ADC         GND

Und weil beim Zabex-Ohmmeter R_ref umgeschaltet werden kann, liegt das 
Teilerverhältnis immer innerhalb 2.5 : 1 und 1 : 2.5. Außer an den 
Meßbereichsgrenzen, da wird es dann etwas ungenauer.

Im Prinzip wäre mit einen 10-Bit ADC auch 4:1 bis 1:4 noch mit 0.5% 
Meßfehler machbar. Rechen wir vereinfachend mit 1000 counts fullscale, 
dann entspricht 4:1 ^= 200 counts und 1:4 ^= (1000 - 200) = 800 counts. 
Ein Wackler um ±1 entspricht dann gerade 0.5% Fehler.

Wenn man 1% Fehler zuläßt, kommt man sogar auf 9:1 bis 1:9. Dann dürfte 
R_x also von 1/9 bis zum 9-fachen von R_ref haben.

Das beantwortet auch deine Frage. Mit einem breiteren ADC (vulgo: 
höherer ADC-Auflösung) kann man mit weniger Werten für R_ref auskommen 
oder wahlweise einen größeren Meßbereich abdecken oder genauer messen.

von Klaus (Gast)


Lesenswert?

Hallo
Habe mir das Programm Zabex angeschaut. Berücksichtige jetz die Teile 
nicht mit Autorange und Mittelwertbildung (64). Durch das Autorange 
werden die Messbereiche umgeschaltet. (0-1k, 1k-10k, 10k-100k, 
100k-9890k)
Bei einem Messbereich von 1k bis 10k mit einem Rv von 10k ergibt sich
1
Zaehler = ADC_Wert * 10
Bei 10 Bit:
1
Nenner  = 1024 - ADC_Wert
Zur Berechnung:
1
Rx = Zaehler / Nenner
Im untersten Bereich verwendet er das:
1
Zaehler = ADC_Wert * 1000 / 973
973 zut Kompensation?
Ux ist der Messwert über Rx nch eurem Bild. Wo wird hierbei aber Uref 
verwendet?
Leider komme ich mit der Berechnung nicht klar.

von Axel S. (a-za-z0-9)


Lesenswert?

Klaus schrieb:
> Ux ist der Messwert über Rx nch eurem Bild.
> Wo wird hierbei aber Uref verwendet?

Gar nicht. U_ref kürzt sich raus. Das ist ja das geniale an der 
ratiometrischen Messung.
1
 .-------- U_ref ------->|
2
 |
3
 |           .--- U_x -->|
4
 v           v
5
6
 o--[R_ref]--*--[ R_x ]--| 
7
             |
8
9
Vcc         ADC         GND

U_ref verhält sich zu (R_ref + R_x) wie U_x zu R_x, oder der Kehrwert
1
R_ref + R_x   R_x
2
----------- = ---
3
    U_ref     U_x

U_ref entspricht immer 1024 counts, U_x entspricht dem Wert von ADC. Mit 
ein bißchen Umformen kommen wir auf:
1
  R_ref    R_x
2
-------- = ---
3
1024-ADC   ADC

und nochmal umgestellt auf
1
                 ADC
2
R_x = R_ref · --------
3
              1024-ADC

Das ist im Prinzip genau das, was Zabex rechnet.

von Klaus (Gast)


Lesenswert?

Soweit klar. Deshalb hat er auch die Mittelwert berechnung drin um die 
Anzeige ruhiger zu bekommen.
Wenn ich die Rechnung verstanden habe, sind die 1024 die 10 Bit. Wenn 
ich mit 12 Bit rechne müsste dort 4096 stehen.
Werde mal eine Schaltung auf meinem Grett aufbauen, mal sehen ob ich auf 
die Werte komme.

von Klaus (Gast)


Lesenswert?

Hatte gerade einen 16 ADC zu liegen. Bin Neugierig ob das funktioniert.
Habe diese kleine Programm dazu geschrieben:
1
ADC_Wert_2 = ADC(2) # mit Messung R
2
while True:
3
    MWert = 0 # Mittelwertbildung
4
    for i in range(50): # Summe aus 50 Messungen
5
        MWert = MWert + ADC_Wert_2.read_u16() # ADC einbinden
6
        GMWert = MWert / 50 # Teilung der Summe durch 50
7
    Nenner = 65536 - GMWert 
8
    Zaehler = GMWert * 10
9
    Rx = Zaehler / Nenner
10
    print('Nenner: ', Nenner)
11
    print('Zaehler ', Zaehler)
12
    print('Rx:     ', Rx)
13
    print()
Habe mir zur Kontrolle die Berechnung anzeigen lasse. Dabei kommen diese 
Ergebnisse:

Rx (angelegt):   1,494 kOhm       8,195 kOhm
Nenner:          57269            39982
Zaehler:         82661            255380
Rx (berechnet):  1,4433 kOhm      6,387

Der Rf beträgt 9,98 kOhm
Der berechnete Wert für 1,5 kOhm sind vielleicht ein Abweichungen bei 
der Messung. Der berechnete Wert für 8,2 kOhm ist zu gross.
Wodurch kommt diese Abweichung?

von Axel S. (a-za-z0-9)


Lesenswert?

Klaus schrieb:
1
> ADC_Wert_2 = ADC(2) # mit Messung R
2
> while True:
3
>     MWert = 0 # Mittelwertbildung
4
>     for i in range(50): # Summe aus 50 Messungen
5
>         MWert = MWert + ADC_Wert_2.read_u16() # ADC einbinden
6
>         GMWert = MWert / 50 # Teilung der Summe durch 50
7
>     Nenner = 65536 - GMWert
8
>     Zaehler = GMWert * 10
9
>     Rx = Zaehler / Nenner
10
>     print('Nenner: ', Nenner)
11
>     print('Zaehler ', Zaehler)
12
>     print('Rx:     ', Rx)
13
>     print()

Ist das BASIC? Wo endet die Schleife? Mit der Einrückung? Muß die 
Division durch 50 nicht außerhalb der Schleife stehen? Mach das doch 
einfach mal nur mit einer Messung. Für den Test genügt das.

von Klaus (Gast)


Lesenswert?

Habe jetzt alles rausgenommen was nicht notwendig ist:
1
ADC_Wert_2 = ADC(2) # mit Messung R
2
while True:
3
    Nenner = 65536 - ADC_Wert_2.read_u16() # 16 Bit
4
    Zaehler = ADC_Wert_2.read_u16() * 10 # Referenz R 10K
5
    Rx = Zaehler / Nenner
6
    print('ADC2:', ADC_Wert_2.read_u16())
7
    print('Nenner: ', Nenner)
8
    print('Zaehler ', Zaehler)
9
    print('Rx:     ', Rx)
Damit bekomme ich diese Werte angezeigt:
bei Rf      8,2 kOhm
ADC2:       25580
Nenner:     40026
Zaehler:    255580
R berechnet 6,385 kOhm

von Klaus (Gast)


Lesenswert?

bei Rf      8,2 kOhm
muss natürlich R angelegt 8,2 kOhm sein

von Klaus (Gast)


Lesenswert?

Axel S. schrieb:
> .-------- U_ref ------->|
>  |
>  |           .--- U_x -->|
>  v           v
>  o--[R_ref]--*--[ R_x ]--|
>              |
> Vcc         ADC         GND

Habe mal die Werte gemessen_
Vcc = 3,296 V
ADC = 1,268 V
beide Werte zu GND

von Klaus (Gast)


Lesenswert?

Habe noch mal aööes gemessen und versteh noch weniger

Rf  = 9,98 kOhm (mit Ohmmeter ermittelt)
Rx  = 8,196 kOhm (mit Ohmmeter ermittelt)
Vcc = 3,260 V
I berechnet = 0.000181 A
damit ergibt sich für ADC ein berechneter Wert von 1,48 V (gerundet)

Annahme zu den berechneten Werten aus dem Programm:
Rf  = 9,98 kOhm
Rx  = 6,4 kOhm (angenommener Wert aus Berechnung des Programmes)
Vcc  = 3,260 V
I berechnet daraus 0.0001987 A
damit ergibt sich ein ADC ein berechneter Wert von 1,268 V

Gemessener Wert für ADC 1,263V über Rx von 8,2 kOhm ????
(Unterschiede durch Rundung oder Schwankungen möglich)
Alles nach dem Ohmschen Gesetz. Leider stimmt da was nicht. Entweder bin 
ich zu doof oder sollte doch anfangen mit Stricken ???

von Klaus (Gast)


Lesenswert?

Glaube das Problem gefunden zu haben.
Nach DB hat der ADc des Prozessors ca. 100k Eingangs R. Wenn ich diese 
ca. 100k parralle zum 8,2k Rx setze bekomme ich so was bei 7,4 k.
ärgerlich, mal sehn wie ich das Problem löse,

von Stefan F. (Gast)


Lesenswert?

Klaus schrieb:
> Wenn ich diese ca. 100k parralle zum 8,2k Rx setze bekomme ich so was bei 7,4 k.

Wie rechnest du das?

1÷((1÷100000Ω)+(1÷8200Ω)) = 7578,56Ω

Aber auch das ist Quatsch, denn die ADC Eingänge sind sehr viel 
hochohmiger. Sie haben allerdings eine gewisse Kapazität die umgeladen 
werden muss. Dass ist im Timing zu berücksichtigen.

von Axel S. (a-za-z0-9)


Lesenswert?

Klaus schrieb:
> Rf  = 9,98 kOhm (mit Ohmmeter ermittelt)
> Rx  = 8,196 kOhm (mit Ohmmeter ermittelt)
> Vcc = 3,260 V
> I berechnet = 0.000181 A
> damit ergibt sich für ADC ein berechneter Wert von 1,48 V (gerundet)

Ja. Aber den Strom braucht man dafür nicht. Spannungsteiler reicht.

> Gemessener Wert für ADC 1,263V über Rx von 8,2 kOhm ????

Dein ADC mißt falsch. Warum können wir dir nicht sagen. Wir wissen ja 
noch nicht mal, was das für ein ADC ist. Oder welcher µC.


Stefan F. schrieb:
> Aber auch das ist Quatsch, denn die ADC Eingänge sind sehr viel
> hochohmiger

Das stimmt für Zabex' Schaltung und den internen ADC des ATMega88. 
Verallgemeinern kann man das nicht.


PS:

>> Werde mal eine Schaltung auf meinem Grett aufbauen

Ich weiß ja nicht was "ein Grett" ist. Solltest du ein Steckbrett meinen 
- das ist für gewöhnlich nicht geeignet für einen 16-Bit ADC.

: Bearbeitet durch User
von Klaus (Gast)


Lesenswert?

Soll natürlich Brett sein. Hat sich aber auch schon wieder erledigt.
Als Prozessor verwende ich ein Pico mit dem 2040 und einer Spannung von 
3,3V. Meine damit keinen Raspi und co., sondern den Raspberry Pi Pico. 
Die verwendeten Widerstände habe ich jetzt direkt an die Kontakte 
gelötet und das selbe Ergebnis. Der Pico hat 3 x ADC.
Die Widerstände im Vergleich zum Zabex sind anders. Er verwendet 5V und 
ich 3,3V.

von Klaus (Gast)


Lesenswert?

Axel S. schrieb:
> .-------- U_ref ------->|
>  |
>  |           .--- U_x -->|
>  v           v
>  o--[R_ref]--*--[ R_x ]--|
>              |
> Vcc         ADC         GND

Habe mir die Hardware von Zabex noch mal vorgenommen. Er verwendet im 
Bereich 1-10kOhm einen Rf von 5,6kOhm. Habe mal ein bischen gemessen und 
getestet.
Bei einem Rf = 7.5 kOhm und einem Rx von 10 kOhm bekomme ich eine 
Anzeige von 10 kOhm. Dabei beträgt die Spannung ADC 1,668V. Das könnte 
schon stimmen. Wenn ich dabei einen R von 1,5k als Rx einsetze bekomme 
ich 1,9k angezeigt. Wieso???
Habe in das Programm eine Pause von 1mS eingebaut, leider mit dem 
gleichen Ergebniss.

von Axel S. (a-za-z0-9)


Lesenswert?

Klaus schrieb:
>
> Habe mir die Hardware von Zabex noch mal vorgenommen. Er verwendet im
> Bereich 1-10kOhm einen Rf von 5,6kOhm.

Das Zabex Ohmmeter hat keinen "Bereich 1-10kOhm"

> Bei einem Rf = 7.5 kOhm und einem Rx von 10 kOhm bekomme ich eine
> Anzeige von 10 kOhm. Dabei beträgt die Spannung ADC 1,668V. Das könnte
> schon stimmen.

Nein, das stimmt nicht. Nach Spannungteiler-Rechnung sind es

U_x = 3.3V × 10K ÷ (7.5K + 10K) = 1.886V

> Wenn ich dabei einen R von 1,5k als Rx einsetze bekomme
> ich 1,9k angezeigt. Wieso???

Weil dein ADC falsch mißt.

Warum? Keine Ahnung. Weder kenne ich die Spezifikation des ADC im 
Raspberry Pi Pico noch habe ich Muße, sie nachzusehen. Es kann sein, 
daß der ADC des Pico schlicht höhere Eingangsströme (Leckströme) hat, 
schließlich sind die Strukturen auf den Chip viel kleiner als für den im 
Vergleich dazu steinalten ATMega.

Es kann aber auch jeder andere Fehler sein. Schon beim AVR gab es die 
Möglichkeit, den µC-Core für die Dauer der Messung anzuhalten, damit es 
keine Beeinflussung des ADC gibt. Das Problem ist mit 16 statt 10 Bit 
sicher nicht kleiner geworden.

Aber auch Sample&Hold und die Arbeitfrequenz des ADC (vorausgesetzt es 
ist ein kapazitiver SA ADC!) spielen da rein.

Bevor du den Grund für die Fehlmessungen des ADC nicht kennst, brauchst 
du die Ohmmeter-Funktion gar nicht anzusehen. Möglichkeiten dazu hast du 
jede Menge:

- du kannst mehrere Messungen machen und dir anzeigen lassen. Gibt es 
einen Trend der Meßwerte?

- du kannst einen OPV als Impedanzwandler zwischen Spannungsteiler und 
ADC schalten. Wird das besser?

- und vor allem: du kannst das Manual zu deinem µC + ADC lesen. Was sagt 
das zu genauen Messungen an hochohmigen Quellen?

von Klaus (Gast)


Lesenswert?

Steht so in der Software:
// 1 kOhm .. 10 kOhm    Format: XX.YY ko

DDRD = 0b00000010;    // nächst höherer Messbereich
PORTD= 0b00000010;    // Rv = 10 kOhm

Das mit einem OPV ist eine gute Idee. werde ich mal testen.

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.