Forum: Mikrocontroller und Digitale Elektronik Analogwert auslesen - wieviele Messwerte nehmen?


von P. K. (knauer)


Lesenswert?

Hallo,

ich möchte mit einem EPS8266 am ADC-Eingang (0 V ... 1 V) einen 
Widerstand 5 Ω ... 95 Ω messen. Damit der Messtrom durch den Widerstand 
nicht dauernd fließt, möchte ich diesen durch einen der GPOs 
einschalten, und zwar direkt, ohne Transistorstufe. Die GPOs können 12 
mA liefern. Also habe ich einen Spannungsteiler mit 270 Ω und dem zu 
messenden Widerstand gemacht, damit komme ich auf 3,3 V / 275 Ω = 12 mA. 
Geht also.

Meine Fragen beziehen sich nun auf die Steuerung des Messstroms:
- Sollte ich ihn schon vor der Messung einschalten, oder kann 
Einschalten und Messung so schnell hintereinander passieren, wie es der 
Code zulässt?
- Wenn vorher: Wie lange? Also, wie lange nach Einschalten warten, ehe 
ich die Messwerte nehme?
- Dann würde ich vielleicht mehrere Loopdurchgänge lang messen und den 
Median nehmen, oder? Wie viele wären etwa angeraten? Oder meint Ihr, es 
reicht eine Einzelmessung?

Vielen Dank schonmal und viele Grüße!

: Bearbeitet durch User
von Nop (Gast)


Lesenswert?

Ich würde schon 1ms warten, bis die Werte gültig sind. Setzt aber auch 
voraus, daß Dein Meßwiderstand nicht nennenswert kapazitiv ist.

Über 4-8 Werte mitteln (z.B. im Systemtimer mit 1ms), wenn Dein 
Widerstand sich sich über ein paar Millisekunden nicht groß ändern wird. 
Dann hast Du nach etwa 10ms ein brauchbares Ergebnis.

von Tilo (Gast)


Lesenswert?

Hi

So einfach wird deine Rechnung nicht. Der Schalter im uC hat auch 
Verluste.
Ich treibe ungern eine Last direkt mit einem uC. Ein kleiner Mosfet 
kostet nicht die Welt Und schützt den Controller.

Der Einschaltvorgang ist weniger dein Problem. Das bekommt man mit ein 
wenig Software hin. Problematischer ist, dass du den Gesamtwiderstand 
nicht exakt kennst. Auch deine 3,3V sind nicht exakt.

Du müsstest erst deine notwendige Genauigkeit spezifizieren und Prüfen, 
ob du mit deinem Ansatz hinkommst.

Was ganz gut klappt: Die 270R als Präzisionswiderstand ausführen und die 
Spannung über den messen. Dann kennst du den Strom. Über die Spannung am 
unteren Ende kannst du dann den Widerstand berechnen.

Das notwendige Timing steht im Datenblatt des uC. In den ADC steht ein 
kleiner Kondensator, der bei jedem Sample aufgeladen wird. Je nach 
Impedanz deiner Quelle kann das Fehler machen.

Man könnte Versuchen, das System zu modellieren. Einfacher wird es 
vermutlich sein nachzumessen, wie lange dein System braucht, bis es 
eingeschwungen ist. Dann noch ein wenig Reserve drauf und gut.

Dann einschalten, warten und Sampeln. Was du dann noch in Software 
machen musste, hängt von den Ansprüchen und der Qualität des Systems ab.

von P. K. (knauer)


Lesenswert?

> Der Schalter im uC hat auch Verluste.

Wenn da weitere Verluste irgendwo sind, dann wird mein Strom ja KLEINER, 
nicht größer. Wo ist dann die Gefahr für den Output? Wenn das Datenblatt 
sagt, der Ausgang kann 12 mA, dann kann er das doch auch. Und wenn ich 
auf meine 270 Ω 3,3 V gebe (wo sollten mehr herkommen?), dann fließen da 
auch nur die 12 mA.
Und mein zu messender Widerstand ist auch nur in den allerseltensten 
Fällen wirklich 5 Ω, fast immer größer. Also ich sehe hier keine ernste 
Gefahr.
Leitungswiderstände kommen auch noch dazu, sind ebenfalls nicht 
eingerechnet...

> Problematischer ist, dass du den Gesamtwiderstand
> nicht exakt kennst. Auch deine 3,3V sind nicht exakt.

Macht ja nichts, muss ja nicht exakt sein. Am Ende wird (wie jedes 
Messgerät) natürlich noch kalibriert. Der zu messende Widerstand steht 
eh für eine ganz andere Messgröße...

> Du müsstest erst deine notwendige Genauigkeit spezifizieren und Prüfen,
> ob du mit deinem Ansatz hinkommst.

Und was sagt Dir, dass ich das nicht getan habe?
Wir schweifen ab... das war ja alles nicht die Frage.

Ich weiß auch, dass ich die Einschwingzeit messen kann. Aber wenn hier 
jemand Dauemenwerte nennen kann, ist doch super.
Danke Nop.

von Manfred (Gast)


Lesenswert?

Tilo schrieb:
> Auch deine 3,3V sind nicht exakt.

Ich kenne den ESP nicht, aber die Beschreibung
P. K. schrieb:
> ADC-Eingang (0 V ... 1 V)
interpretiere ich so, dass der eine interne Referenzspannung hat.

5..95 Ohm an 3V3 mit 270R davor ergibt einen Bereich von 60..900mV, das 
würde passen.

Natürlich kann man sich auf die 3V3 nicht verlassen, damit hast Du 
recht. Es wäre aber kein Hexenwerk, den Teiler einzuschalten und mit 
einem zweiten Analogport per Teiler die tatsächlich anliegende Spannung 
zu messen.

Eine andere Variante wäre, den Vorwiderstand anders auszulegen und mit 
3V3 als Refernz zu arbeiten - dann würden sich Abweichungen der 
Betriebsspannung von selbst rausrechnen, Stichwort "ratiometrisch". 
Kommt auf die benötigte Auflösung an, die bei 3V3-Referenz natürlich 
deutlich schlechter wäre.

Der ESP-32 steht in dem Ruf, analog ziemlich ungenau zu sein, ist der 
ESP-8266 besser?

Wird der ESP benötigt oder könnte es auch ein AT328 werden?

von Wolle G. (wolleg)


Lesenswert?

P. K. schrieb:
> Ich weiß auch, dass ich die Einschwingzeit messen kann. Aber wenn hier
> jemand Dauemenwerte nennen kann, ist doch super.
Gibt es einen besonderen Grund, diese Zeit zu wissen?
Miss z. B nach 1s und Du bist vermutlich auf der sicheren Seite.

von Tilo (Gast)


Lesenswert?

>> Problematischer ist, dass du den Gesamtwiderstand
>> nicht exakt kennst. Auch deine 3,3V sind nicht exakt.
>
> Macht ja nichts, muss ja nicht exakt sein. Am Ende wird (wie jedes
> Messgerät) natürlich noch kalibriert. Der zu messende Widerstand steht
> eh für eine ganz andere Messgröße...
Das Problem ist nicht der Offset. Das Problem sind die Störungen, die 
voll in dein Messergebnis eingehen. Sowas bekommt man nicht 
wegkalibriert.

>> Du müsstest erst deine notwendige Genauigkeit spezifizieren und Prüfen,
>> ob du mit deinem Ansatz hinkommst.
>
> Und was sagt Dir, dass ich das nicht getan habe?
> Wir schweifen ab... das war ja alles nicht die Frage.

Die Art deiner Frage, die Art wie du hier gerade antwortest.
Hättest du es getan, wären deine Fragen beantwortet.

> Ich weiß auch, dass ich die Einschwingzeit messen kann. Aber wenn hier
> jemand Dauemenwerte nennen kann, ist doch super.

Da keiner deine Schaltung Und Anforderung kennt, wird das schwer.

Ich wünsche dir viel Glück, du wirst es brauchen.

von Dieter R. (drei)


Lesenswert?

P. K. schrieb:
>
> Damit der Messstrom durch den Widerstand
> nicht dauernd fließt, möchte ich diesen durch einen der GPIOs
> einschalten, und zwar direkt, ohne Transistorstufe. Die GPIOs können 12
> mA liefern.

Mit Voh min = 0,8 x Vcc, also bei 3,3 V irgendwas zwischen 2,64 V und 
3,3 V. Nicht sehr genau.

von Stefan F. (Gast)


Lesenswert?

Der ADC des ESP ist ziemlich nicht-linear. Einige Leute haben berichtet, 
dass man geringe Spannungen unter 0,1V gar nicht messen kann. Andere 
konnten es. Scheint vom Glück abzuhängen.

von Jetzt weg mit dem Troll (Gast)


Lesenswert?

Der Strom sollte stabil sein. Probier's doch einfach. Ein paar 
mikrosekunden wuerde ich schon geben. Mitteln, nur wenn es etwas bringt. 
Probier's aus. Vielleicht 2, 4, 8, 16 Stueck.

von P. K. (knauer)


Lesenswert?

Werd ich mal machen. Hab ja jetzt zwischen der ganzen 
Off-Topic-Abschweifung auch paar Anhaltswerte bekommen, vielen Dank!

: Bearbeitet durch User
von P. K. (knauer)


Lesenswert?

Wolle G. schrieb:
> P. K. schrieb:
>> Ich weiß auch, dass ich die Einschwingzeit messen kann. Aber wenn hier
>> jemand Dauemenwerte nennen kann, ist doch super.
> Gibt es einen besonderen Grund, diese Zeit zu wissen?

Meinerseits nicht, frag Thilo, er scheint ja meine "extrem hohen" 
Genauigkeitsanforderungen bestens zu kennen. ;-)

> Miss z. B nach 1s und Du bist vermutlich auf der sicheren Seite.

1 s finde ich schon recht lang, das verbraucht vielleicht unnötig viel 
Strom. Ich werde erstmal weniger probieren...

von P. K. (knauer)


Lesenswert?

> Die Art deiner Frage, die Art wie du hier gerade antwortest.

Du bist gerade sehr polemisch. Das bringt nichts.

> Hättest du es getan, wären deine Fragen beantwortet.

Moment, Deine Aussage lautet also, hätte ich meine Genauigkeit 
spezifiziert, wüsste ich, welche Wartezeit ich benötige? Dann komm 
doch mal von Deinem hohen Ross herab und lass uns alle wissen, wie ich 
die Wartezeit aus meiner Genaugikeitsanforderung ermitteln kann. DAS 
wäre eine Antwort auf die Frage.

Vielleicht solltest Du es einfach lassen. Dir scheint die Erfahrung mit 
dem ESP8266 zu fehlen, um pragmatische Wartezeitenwerte nennen zu 
können, mit denen man ganz gut arbeiten kann.

Dass ich Einschwingzeiten messen kann oder ein Systemmodell machen kann, 
weiß ich auch, dafür brauchst Du hier keinen Applaus erwarten.
Hilfst Du damit mehr, als jemand, der sowas schonmal gemacht hat und 
Werte nennen kann? Nein.

von Nop (Gast)


Lesenswert?

Du könntest zusätzlich zu dem Vorwiderstand von 270 Ohm auf der anderen 
Seite auch noch einen Serienwiderstand einbauen, insbesondere damit Du 
für kleine Meßwerte aus dem ungünstigen ADC-Bereich ganz unten 
rauskommst.

Dieser Widerstand sollte sich an Deinem minimalen Meßwiderstand 
orientieren, bei 5 Ohm also vielleicht so 10 Ohm. Dann wäre der 
Spannungsteiler am ADC-Eingang bei minimal 5 Ohm Meßwiderstand also 15 
Ohm, was 174 mV entspräche.

von Stefan F. (Gast)


Lesenswert?

Achtung: Wenn man den ADC des ESP8266 zu oft ohne Pausen hintereinander 
abfragt, stürzt das Ding ab. Was genau "zu oft" ist, weiß ich nicht. Ich 
bin da zufällig drauf gestoßen und fand dann zahlreiche Bestätigungen 
des Effekts im Internet.

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


Lesenswert?

P. K. schrieb:
> Und wenn ich auf meine 270 Ω 3,3 V gebe (wo sollten mehr herkommen?),
> dann fließen da auch nur die 12 mA.
Es geht nicht um "mehr", sondern bei 12mA kommen deutlich weniger als 
3,3V aus dem Pin. Denn der Mosfet, der im IO-Treiber +3,3V zum Pin 
durchdschaltet, hat im eingeschalteten Zustand schon locker 50..100 Ohm.

> Wenn das Datenblatt sagt, der Ausgang kann 12 mA, dann kann er das doch
> auch.
Seltsame Logik.
Und was sagt dann das Datenblatt, was dann bei einem Laststrom von 12mA 
für eine Spannung am Pin ist? Und meinst du, diese Spannung wäre dann in 
irgeneiner Weise "konstant"? Oder könnte es sein, dass sich der 
Bahnwiderstand des Mosfets wie üblich mit der Chiptemperatur ändert.

P. K. schrieb:
> wie ich die Wartezeit aus meiner Genaugikeitsanforderung ermitteln kann.
Wenn die Schaltung so dermaßen niederohmig ist, dann kannst du ein paar 
µs nach dem Einschalten des Pins messen.

P. K. schrieb:
> - Sollte ich ihn schon vor der Messung einschalten, oder kann
> Einschalten und Messung so schnell hintereinander passieren, wie es der
> Code zulässt?
Probiers aus.
Schlimmstenfalls musst du deinen Code ein wenig anpassen, dass er nach 
dem Einschalten des Pins noch kurz was anderes tut und dann erst misst.

: Bearbeitet durch Moderator
von P. K. (knauer)


Lesenswert?

Lothar M. schrieb:
> P. K. schrieb:
>> Und wenn ich auf meine 270 Ω 3,3 V gebe (wo sollten mehr herkommen?),
>> dann fließen da auch nur die 12 mA.
> Es geht nicht um "mehr", sondern bei 12mA kommen deutlich weniger als
> 3,3V aus dem Pin. Denn der Mosfet, der im IO-Treiber +3,3V zum Pin
> durchdschaltet, hat im eingeschalteten Zustand schon locker 50..100 Ohm.

Verstehe, geht also auch um die Messgenauigkeit. Der Beitrag, auf den 
ich mich bezog, war im Kontext "[externer MOSFET] schützt den 
Controller".

Der Effekt des Widerstands des Ausgangsmosfets auf meine Messung würde 
sich ja im Rahmen der Kalibrierung dann auch im Wesentlichen auflösen. 
Wenn der Messbereich dann zu klein wird, werde ich es sehen.
Temperaturabhängigkeiten werde ich dann noch sehen - hab auch einen 
Temoperatursensor in Petto, um das zu beobachten. Aber ich denke, dass 
dies meine Genauigkeitsanforderungen nicht bricht.

Ich wollte nur sichergehen, dass ich einerseits nicht zu lange warte und 
unnötig viel Strom verbrauche (1 s), andererseits, nicht die ersten 
Mikrosekunden (?) Quatsch messe, ehe mein Aufbau sich eingepegelt hat.

Danke auch für den Hinweis der Dauermessung. Wenn wir hier aber von 
vielleicht 8 ... 10 Messungen hintereinander reden (dann vielleicht 10 
Minuten Pause), sollte das noch nicht den Rahmen sprengen, oder?

Danke Euch sehr, einiges hat sehr geholfen, anderes war wiederum 
unnötige Klugscheißerei (https://de.wikipedia.org/wiki/Besserwisser)... 
Wem die Jacke passt, der zieht sie sich an. ;-)

von Stefan F. (Gast)


Lesenswert?

P. K. schrieb:
> Der Effekt des Widerstands des Ausgangsmosfets auf meine Messung würde
> sich ja im Rahmen der Kalibrierung dann auch im Wesentlichen auflösen.

Nur, wenn du für eine konstante Versorgungsspannung und Konstante 
Chip-Temperatur sorgst und außerdem die Stromaufnahme konstant ist. 
Jeder andere Pin, den du belastest, zieht intern die Versorgungsspannung 
ein bisschen herunter.

Du müsstest auf jeden Fall den WLAN Teil während der Messung 
deaktivieren, damit dabei etwas halbwegs reproduzierbares heraus kommt. 
Dazu wiederum musst du jeweils zweimal rebooten. Das macht keinen Spaß.

von Tilo (Gast)


Lesenswert?

Schon witzig, schreibt vom hohem Ross, weiss aber alles besser.

Vielleicht merkst du so langsam, das der Einschwingvorgang nicht dein 
Problem ist.

Daher auch die Frage nach der Spezifikation. Wenn dir 5 Bit reichen kann 
man die Sache ganz anders angehen, als wenn man die 10 Bit auch nutzen 
will (Wobei bei gemeinsamer Versorgung von analog und digital und ohne 
echte Referenz vermutlich nur noch 8Bit übrig bleiben).

Durch Kalibrieren lassen sich nur statische Fehler sicher kompensieren, 
z.B. Die Toleranz deines Messwiderstands. Alles andere wird schwer, da 
gabs schon genug Hinweise.

Daher schreibe doch kurz Zusammen, was du braucht, z.B. eine Auflösung 
von 0,1Ohm, zeitliche Vorgaben und eine Skizze der Schaltung.
Die Schaltung geht man dann durch und überlegt sich, welchen Einfluss 
jede Komponente haben kann.

von P. K. (knauer)


Lesenswert?

Dazu benötige ich aber nicht die Hilfe. Einfach beim Thema bleiben...

von Peter D. (peda)


Lesenswert?

P. K. schrieb:
> Meine Fragen beziehen sich nun auf die Steuerung des Messstroms:
> - Sollte ich ihn schon vor der Messung einschalten, oder kann
> Einschalten und Messung so schnell hintereinander passieren, wie es der
> Code zulässt?
> - Wenn vorher: Wie lange? Also, wie lange nach Einschalten warten, ehe
> ich die Messwerte nehme?
> - Dann würde ich vielleicht mehrere Loopdurchgänge lang messen und den
> Median nehmen, oder? Wie viele wären etwa angeraten? Oder meint Ihr, es
> reicht eine Einzelmessung?

Welchen Aufwand man bei der Messung treibt, hängt davon ab, welche 
Genauigkeit gefordert ist und wie das Signal gestört ist.
Deine Fragen lassen sich also ohne Informationen nicht beantworten.

von Anja (Gast)


Lesenswert?

P. K. schrieb:
> einen Widerstand 5 Ω ... 95 Ω

riecht nach Tankgeber.

P. K. schrieb:
> - Wenn vorher: Wie lange?

so 3-5 Tau Einschwingzeit wirst Du schon brauchen. Ich gehe mal davon 
aus daß noch ein Tiefpaßfilter am Analogeingang sitzt um sporadische 
Störungen zu unterdrücken.

Ansonsten: Ich würde mir Gedanken machen wann ich überhaupt sinnvolle 
Werte messen kann. Also nicht bei starker Beschleunigung/Verzögerung bei 
Querbeschleunigung in der Kurve oder steiler Bergab/Bergauffahrt.
Also eher zu passenden Zeitpunkten messen und dann über einen längeren 
Zeitraum mitteln.

Tilo schrieb:
> Wenn dir 5 Bit reichen
Wohl eher 2 Bit: Tank voll, halbvoll, Reserve oder leer.

P. K. schrieb:
> meine 270 Ω 3,3 V gebe (wo sollten mehr herkommen?)

ich würde mir Gedanken machen was passiert wenn auf dem Eingang statt 
des Tankgebers Batteriespannung aus versehen angeklemmt wird.

Gruß Anja

von Wolle G. (wolleg)


Lesenswert?

Anja schrieb:
> riecht nach Tankgeber.

riechen ist gut.
Wie oben schon mal angedeutet, wäre es für die Helfenden einfacher, wenn 
sie wüssten, was das Ganze werden soll.
„Geheimniskrämerei“ ist oftmals leider das Grundübel, warum man nicht 
zum Erfolg kommt

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.