ESP8266 und der interne ADC ... Vorsicht Falle!

  • Servus zusammen,
    ich wollte den internen ADC des ESP8266 nutzen, um die Ladezeit eines Elko zu ermitteln.
    Das Vorgehen war wie auch bei einem Arduino: Messen der Elko-Spannung bis ca. 63% der Ladespannung erreicht sind.
    Ich habe mich allerdings gewundert, dass die obere Schwelle innerhalb von µSekunden erreicht wurde.
    Bevor ich jetzt gänzlich verzweifelte habe ich mal nach Artikeln bezüglich des ADC auf dem ESP gesucht.

    Und siehe da: der ADC des ESP arbeitet im Bereich von 0 bis 1 Volt! ( siehe z.B. -> hier <- ).

    Ganz schön perfide, das Ganze ...

    cu,
    -ds-

  • Nicht nur das. Es kommt auch noch eine "Serienstreuung" hinzu. Manchmal sind 0,97V schon 1023, manchmal aber auch erste 1,05V. Ich ermittle im Briefkastenprojekt die Akkuspannung über einen Spannungsteiler mit 0,1% Präzisionswiderständen und messe vorher den ESP mit vier Stellen hinter dem Komma aus. So habe ich relativ genaue Angaben zum Ladezustand der Akkus. Inwiefern eine Änderung der Umgebungstemperatur den ermittelten ADC Wert verändert habe ich allerdings noch nicht getestet.

  • Wenn ich Euch so lese, dann wundern mich Eure Aussagen eigentlich nicht. Wer eine ADC auf einem Sendemodul fertigt, der muß von digitalen Störungen ausgehen, die in den analogen Teil einstreuen. Da muß man sich dann nicht verkünsteln in großartigen Spannungsreferenzen und hohen Auflösungen. Daher wohl auch nur die 10 Bit Auflösung und die recht hohen Fertigungstoleranzen (was schreibt denn das Datenblatt über Genauigkeit und Liniarität?). Mich würde trotzdem interessieren, ob der Wandler bei konstanter Spannungsquelle auch brav konstante Werte liefert. D.h. was sagt denn das Abtasthistogramm? Schwanken die Werte (mal unanbhängig von deren Genauigkeit) oder liest man bei 1000 Messungen brav 1000mal den gleichen Wert?
    Automatisch zusammengefügt:


    Ich ermittle im Briefkastenprojekt die Akkuspannung über einen Spannungsteiler mit 0,1% Präzisionswiderständen und messe vorher den ESP mit vier Stellen hinter dem Komma aus.


    Wieso bedarf es der Präzisionswiderstände, wenn Du den Wandler eh' kalibrieren mußt?

  • Servus dag ...
    selbst wenn ich den ADC an GND hänge schwanken die Werte ...
    Und Datenblatt ... :s ... Link gelesen?

    Automatisch zusammengefügt:


    ... Und die Development-Boards (NodeMCU-Boards) haben wiederrum einen Spannungsteiler, sodass der analoge Eingang bis 3,3V genutzt werden kann :fies:


    ist das wenigstens vernünftig dokumentiert?
    cu,
    -ds-

  • Hi ds,


    selbst wenn ich den ADC an GND hänge schwanken die Werte ...


    Na dann wird der Digitalteil wohl ordentlich "mitreden" bei der Analogmessung.

    Aber ich hab' irgendwo mal gehört, daß, "Wenn 0 sehr groß wird, sie schon fast wie eine kleine 1 ist.".


    Und Datenblatt ... :s ... Link gelesen?


    Da hast Du mich ertappt =( - nee.
    Hab's aber flux nachgeholt. War ja auch ziemlich "void", der Inhalt ;)

    Schöne Grüße

    schnasseldag


  • Wenn ich Euch so lese, dann wundern mich Eure Aussagen eigentlich nicht. Wer eine ADC auf einem Sendemodul fertigt, der muß von digitalen Störungen ausgehen, die in den analogen Teil einstreuen. Da muß man sich dann nicht verkünsteln in großartigen Spannungsreferenzen und hohen Auflösungen. Daher wohl auch nur die 10 Bit Auflösung und die recht hohen Fertigungstoleranzen (was schreibt denn das Datenblatt über Genauigkeit und Liniarität?). Mich würde trotzdem interessieren, ob der Wandler bei konstanter Spannungsquelle auch brav konstante Werte liefert. D.h. was sagt denn das Abtasthistogramm? Schwanken die Werte (mal unanbhängig von deren Genauigkeit) oder liest man bei 1000 Messungen brav 1000mal den gleichen Wert?
    Automatisch zusammengefügt:


    Wieso bedarf es der Präzisionswiderstände, wenn Du den Wandler eh' kalibrieren mußt?


    Wenn ich versuche die maximale Spannung zu ermitteln, liegt eine relativ genaue Spannung am ADC an. Der Digitalwert schwankt dabei kaum. Aus der Erinnerung würde ich sagen +-1 bis 2 Digit. Allerdings wird in dem Moment auch nicht auf das Wlan zugegriffen. Die Ermittlung nehme ich vor, um einen möglichst genauen Wert zu bekommen, wenn ich die Akkus messe. Da zwei Eneloops in Reihe mehr als 1V haben, nutze ich den Spannungsteiler, um die Spannung auf einen Bereich <1V zu bekommen. Damit das Ergebnis möglichst wenig verfälscht wird, nutze ich dazu die 0,1% Präzisionswiderstände. Die so ermittelten Werte liegen bei Tests auf dem Basteltisch sehr nahe an der real an den Akkus anliegenden Spannung.


  • Wenn ich versuche die maximale Spannung zu ermitteln, liegt eine relativ genaue Spannung am ADC an. Der Digitalwert schwankt dabei kaum. Aus der Erinnerung würde ich sagen +-1 bis 2 Digit. Allerdings wird in dem Moment auch nicht auf das Wlan zugegriffen. Die Ermittlung nehme ich vor, um einen möglichst genauen Wert zu bekommen, wenn ich die Akkus messe. Da zwei Eneloops in Reihe mehr als 1V haben, nutze ich den Spannungsteiler, um die Spannung auf einen Bereich <1V zu bekommen. Damit das Ergebnis möglichst wenig verfälscht wird, nutze ich dazu die 0,1% Präzisionswiderstände. Die so ermittelten Werte liegen bei Tests auf dem Basteltisch sehr nahe an der real an den Akkus anliegenden Spannung.


    Hm, ich hab's glaube ich noch nicht verstanden. :s Das mit dem Spannungsteiler ist mir schon klar - aber wieso bedarf es der Präzisionswiderstände. Im Prinzip mußt Du Deinen AD-Wandler ja eh' kalibrieren, wenn Du "absolut" messen willst. Dann kalibriert sich doch die Ungenauigkeit eines (sagen wir mal) "Kohlewiderstandes" weg. Und selbst wenn man mal den höheren Temperaturgang der Kohlewiderstände gegenüber Metallfilm o.ä. betrachtet, so wird der sich bei räumlicher Nähe beider Widerstände im Spannungsteiler doch aufheben (oder vermindern). Falls Du nur "relativ" messen willst, z.B. um ein Maximum zu erfassen, dann ist eh alles egal - bis auf die Spannungsschwankung. Aber eine solche stellst Du ja nicht signifikant fest, wie Du schreibst.

  • ich nehme lieber sowieso MF, höher belastbar und i.d.R. 1%er, vermessen mache ich immer im gewünschten Bereich mit dem Labornetzteil 2 Spannungen und ADC Ausgabe, dazwichen dann nach Geradengleichung y = m * x + b mit y = U, m = dY/dX , b = Uoffset

    Das ganze noch nett skaliert das ich ohne float auskomme und nur uint rechnen muss

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)


  • ich nehme lieber sowieso MF, höher belastbar und i.d.R. 1%er, vermessen mache ich immer im gewünschten Bereich mit dem Labornetzteil 2 Spannungen und ADC Ausgabe, dazwichen dann nach Geradengleichung y = m * x + b mit y = U, m = dY/dX , b = Uoffset

    Ich lese da zunächst nur "höher belastbar". Ansonsten kalibrierst Du also auch Deine Meßkette. Damit sind die 5% Kohlewiderstandfertigungstoleranz raus (modulo Temperaturgang der Kohle). Wenn man die MF's rumliegen hat - klar, dann nimmt man sie. Meine Frage ist aber eher: "Braucht man sie?". Davon bin ich immer noch nicht überzeugt.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!