Hallo Ich habe einen ESP8266, genauer ein NodeMCU V2 und möchte gerne mehrere analoge Eingänge nutzen. Meine erste Idee ist es, mit Transistoren meine verschiedenen Sensoren (Potis als Spannungteiler) nacheinander auf den A0 Eingang zu schalten. Dabei würde ich aber immer einen digitalen Eingang "opfern" müssen. Gibt es da eine elegantere Lösung? Ich bräuchte 4 analoge Eingänge und die Auflösung von 1023 Schritten bei 3.3V reicht aus, mehr wäre aber eine interessante "Spielerei". Danke für eure Antworten wenn ich notwendige Angaben vergessen haben sollte, bitte nicht gleich steinigen :-)
Hmm.... Entweder einen fertigen Analogmultiplexer, oder ein I2C/SPI ADC z.B.: ADS1115 Von einem Transistorgeweih, würde ich Abstand nehmen
Ich würde auch einen Multiplexer vorschlagen, z.B. einen CD4051. Dann kommst Du für 4 analoge Eingänge mit 2 GPIO-Pins aus. Und wenn Du noch einen GPIO-Pin mehr opferst, dann kannst Du sogar zwischen 8 analogen Eingänge wechseln.
Hallo und danke für die ganten Antworten! Wenn ich das richtig verstehe, ist ein I2C Modul einfacher anzusprechen, da ich jeden der 4 Kanäle über das I2C protokoll ansprechen kann und im Endeffekt gar nicht merke, dass der ESP nur einen analogen Eingang besitzt. Bei den anderen Multiplexern ist das schon etwas aufwändiger. Dafür sind die Preisuntershcieden enorm. Die I2C Teile finde ich nur als Breakout für 15€. Gibt es die auch in günstiger? Muss ja nicht gleich 10 Bit sein :-)
Google mal nach PCF8591 - der hat 8 bit und gibts sogar für < 2 € auf einem Break-Out Board in der Bucht.
Den ADS1115 (4 Kanal, 16 bit) kriegst doch schon für knapp 7 Eurotaler inkl. Versandkosten bei eBay aus Deutschland, wäre dann sogar schon am Wochenende da. http://www.ebay.de/itm/ADS1115-AD-Wandler-16-bit-I2C-TWI-ADC-analog-digital-Arduino-Raspberry-Pi-I06-/172360594596?hash=item28217df4a4:g:faYAAOSwYIxX8AHK
Klaus schrieb: > und im Endeffekt gar nicht merke, dass der ESP nur einen analogen > Eingang besitzt. Warum nimmst du nicht gleich einen fertigen A/D Wandler mit mehreren Eingangskanälen und klemmst ihn an I2C oder (imho besser) an die SPI? Dann must du auch nicht mit den 3,3 V Eingangsbereich auskommen, kannst Auflösung, Genauigkeit und Geschwindigkeit frei wählen und auch differentielle Typen nehmen
Klaus schrieb: > Wenn ich das richtig verstehe, ist ein I2C Modul einfacher anzusprechen, > da ich jeden der 4 Kanäle über das I2C protokoll ansprechen kann > und im Endeffekt gar nicht merke, dass der ESP nur einen analogen > Eingang besitzt. > > Bei den anderen Multiplexern ist das schon etwas aufwändiger. Das verstehe ich nicht ganz, was genau ist bei einem Multiplexer wie dem 4051 Deiner Meinung nach aufwändiger? Meiner Meinung nach ist es eher genau umgekehrt: Die Verwendung eines 4051 ist weniger aufwändig; um einen bestimmten analogen Kanal auszuwählen, den Du messen willst, musst Du lediglich zwei GPIO-Pins auf high oder low setzen, ansonsten benutzt Du die ganz normalen ADC-Funktionen des ESP8266. Einfacher geht's doch gar nicht... Bei I2C hingegen musst Du mit einem anderen IC per I2C kommunizieren, der Software-Aufwand ist da doch offensichtlich sehr viel höher? Und für Deine vier ADC-Kanäle benötigst Du in beiden Fällen zwei IO-Pins, auch da spart man also vermutlich nichts. So einen teuren per I2C angebundenen ADC mit mehreren Kanälen würde ich persönlich nur dann benutzen, wenn für die konkrete Verwendung mindestens einer der folgenden Vorteile dieser ICs wichtig wäre: - Der ADC des ESP8266 kann ungenutzt bleiben und stattdessen die am ESP8266 anliegende Spannung gemessen werden - Der angedachte ADC-IC hat wichtige Vorteile gegenüber dem internen ADC des ESP8266, z.B. höhere Auflösung, grösserer Spannungsbereich o.Ä. - IO-Pins sind extrem knapp, UND es wird eh bereits I2C für etwas anderes genutzt, zur I2C-Anbindung des ADC-IC werden also keine zusätzlichen IO-Pins benötigt
Hast du bedacht, dass der analoge Eingang des ESP nur sinnvoll nutzbar ist, während dessen WLAN Interface abgeschaltet ist? Du könntest einen AVR Mikrocontroller dran hängen. Der könnte zusätzlich den ESP überwachen und ggf resetten. Und er würde (je nach größe) noch weitere I/O Pins frei haben. Du könntest ihn wahlweise seriell, per I2C oder SPI ansteuern. Wenn du einen Arduino Nano clone nimmst, bekommst du sogar noch ein USB Interface dazu geschenkt. Dann hättest du statt NodeMCU ein ESP-12 Modul oder gar ein ESP-01 Modul verwenden können. (Aber immer, wenn ich solche Kombinationen empfehle, werde ich ja gehänselt.)
Stefan U. schrieb: > Hast du bedacht, dass der analoge Eingang des ESP nur sinnvoll nutzbar > ist, während dessen WLAN Interface abgeschaltet ist? Wo bekomme ich denn weitere Informationen dazu?
Im aktuellen Datenblatt des ESP8266EX Chips auf http://espressif.com/en/products/hardware/esp8266ex/resources . Ich erinnere mich an die Angabe, dass mit 20% Abweichung durch HF Einstreuung zu rechnen ist. Ganz so schlimm war es bei meinen Experimenten zwar nicht, aber immerhin 10%. Nachtrag: Sorry, ich finde den Absatz nicht mehr wieder. Vor zwei Wochen stand da aber noch etwas zu drin. Ich sehe, dass auch gerade eben wieder eine neue Version des Datenblattes veröffentlicht wurde.
Stefan U. schrieb: > Im aktuellen Datenblatt des ESP8266EX Chips auf > http://espressif.com/en/products/hardware/esp8266ex/resources . > > Ich erinnere mich an die Angabe, dass mit 20% Abweichung durch HF > Einstreuung zu rechnen ist. Ganz so schlimm war es bei meinen > Experimenten zwar nicht, aber immerhin 10%. > > Nachtrag: Sorry, ich finde den Absatz nicht mehr wieder. Vor zwei Wochen > stand da aber noch etwas zu drin. Ich sehe, dass auch gerade eben wieder > eine neue Version des Datenblattes veröffentlicht wurde. Da hat es bei der neuesten Version tatsächlich eine Änderung gegeben. In Version 5.3 des Datenblatts stand beim ADC noch: "RF Calibration Process Optimize the RF circuit conditions based on the value of vdd33_const. The permissible error is ±0.2V." In Version 5.4 hingegen steht da jetzt nur noch: "RF Calibration Process Optimize the RF circuit conditions based on the testing results of VDD3P3 (Pin 3 and Pin 4)." Wobei ich mir nicht sicher bin, ob die alte Formulierung tatsächlich bedeutet, dass die Genauigkeit speziell bei Verwendung von WLAN plötzlich drastisch absinkt.
Stefan U. schrieb: > erschreckendes Messprotokoll: Das kann ich so nicht bestätigen. Mit meiner NodeMCU und den 3.3V von einem digitalen Pin waren die Werte ziemlich stabil.
Stefan U. schrieb: > Hier gibt's ein erschreckendes Messprotokoll: > > https://github.com/esp8266/Arduino/issues/2070 Da steht aber auch... - "transitions between sleep states are causing this", und dass das Problem offenbar auch bei aktivem Wifi verschwindet, wenn man einfach die Option
1 | wifi_set_sleep_type(NONE_SLEEP_T); |
benutzt https://github.com/esp8266/Arduino/issues/2070#issuecomment-244043885 - wenn man diese Option nicht benutzt, die Störung offenbar nicht nur den internen ADC des ESP8266 betrifft, sondern es sogar bei Verwendung eines externen ADS1015-ADC angeblich ebenfalls zu ähnlichen Phänomenen kommt https://github.com/esp8266/Arduino/issues/2070#issuecomment-243070835 und genauso bei einem externen, ebenfalls digital angebundenen DHT22-Sensor: https://github.com/esp8266/Arduino/issues/2070#issuecomment-256611708 Und jemand behauptet folgendes aus Espressifs FAQ zu zitieren: > How accurate is the internal ADC? > When connected to routers, ESP8266 will enter modem_sleep in STA mode > only, which will cause the changes of the internal chip currents and > reference values, and thus result in abnormal ADC sampling. > > If a high accuracy is required, please use system_adc_fast_read API. But > RF circuitry should be shut down before measuring and Wi-Fi will be > disconnected. For an relatively lower accuracy when readings’ difference > of 1 or 2 can be tolerated, Wi-Fi can be configured to non_sleep mode. > > For lower accuracy, the user may enter sleep mode. Power consumption is > lower in this case. https://github.com/esp8266/Arduino/issues/2070#issuecomment-277660842
:
Bearbeitet durch User
Gerhard J. schrieb: > Den ADS1115 (4 Kanal, 16 bit) kriegst doch schon für knapp 7 Eurotaler > inkl. Versandkosten bei eBay aus Deutschland, wäre dann sogar schon am > Wochenende da. > > Ebay-Artikel Nr. 172360594596 Verstehe ich das richtig, das der Sensor nur Spannungen zwischen 2 und 5,5 V messen kann? Messbereich 2,0-5,5V Versorgungsspannung 2,0-5,5V Logik/Ausgangsignal 2,0-5,5V Das macht dann für mich keinen Sinn, da ich ja Potis als Spannungsteiler einsetze und damit einen Bereich von 0 - 3.3V messen muss. Joachim S. schrieb: > - Der angedachte ADC-IC hat wichtige Vorteile gegenüber dem internen ADC > des ESP8266, z.B. höhere Auflösung, grösserer Spannungsbereich o.Ä. Da komme ich auf eine neue Frage: Kann ich mit einem Kanal die Akkuspannung messen (also 5 - 8,4V) und mit den anderen Kanälen die Potis? Wobei, die 16 Bit Auflösung sollten das ja möglich machen.
Klaus schrieb: > Verstehe ich das richtig, das der Sensor nur Spannungen zwischen 2 und > 5,5 V messen kann? > > Messbereich 2,0-5,5V > Versorgungsspannung 2,0-5,5V > Logik/Ausgangsignal 2,0-5,5V > > Das macht dann für mich keinen Sinn, da ich ja Potis als Spannungsteiler > einsetze > und damit einen Bereich von 0 - 3.3V messen muss. Das kannst Du auch machen. Der Messbereich geht natürlich immer von 0 V bis zur jeweiligen Maximalen Messspannung. Die Spannung darf nicht höher als die Versorgungsspannung sein, deshalb auch die unterschiedlichen Messbereiche. > > Joachim S. schrieb: >> - Der angedachte ADC-IC hat wichtige Vorteile gegenüber dem internen ADC >> des ESP8266, z.B. höhere Auflösung, grösserer Spannungsbereich o.Ä. > > Da komme ich auf eine neue Frage: > > Kann ich mit einem Kanal die Akkuspannung messen (also 5 - 8,4V) und mit > den anderen Kanälen die Potts? Na klar geht das. Für die Akkuspannung schaltest Du einfach einen Spannungsteiler vor den Messeingang.
Klaus schrieb: > die Auflösung von 1023 Schritten bei > 3.3V reicht aus Das geht sich ohne extra Hardware nicht aus. Die ESP Module können über ihren Analog Pin nur Spannungen bis 1V messen. (1V = 1023)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.