Hallo zusammen, bevor ich wieder alles zusammenlöte und nur den aufsteigenden Rauch beobachte, wollte ich hier mal in die Community fragen, ob der Schaltplan so passt? Einsatzgebiet: Ich will mir für mein Aquarium ein Gerät bauen, welches mir über die verschiedenen Sensoren und Schwimmerschalter mir Informationen via MQTT im ioBroker bereitstellt. Gleichzeitig soll es 7 DC Motoren einzeln ein und ausschalten können. Die komplette Logik im ioBroker, sowie die Firmware (Tasmota) für den Mikrocontroller habe ich bereits fertig. Das Gerät muss also nur Daten sammeln und per MQTT/Wlan weitersenden, sowie die maximale Einschaltzeit und den Einschaltbefehl per MQTT/Wlan entgegennehmen. Auf Anraten eines Bekannten soll der Logikkreis mit den Sensoren und dem Mikrocontroller mit einem 5V Netzteil und der Lastkreis mit den DC Motoren mit einem separaten 12V Netzteil Ich habe als Bauteile die direkt auf das Board gesteckt werden: - Microchip: NodeMCU V3 mit einem ESP8266 - GPIO Expander: MCP23017 - Optokoppler: HW-399 Optoisolator Bauteile die per Kabel angeschlossen werden sollen: - Analog zu Digital Wandler ADS1115 16-Bit ADC - Optional: 0,96" OLED SSD1306 Display
:
Verschoben durch Moderator
Die +5V sind links und rechts miteinander verbunden. Rechts igbt es ein "HVGND" und kein "HV+5V"
Severin F. schrieb: > Optokoppler: HW-399 Das ist irgend so ein merkwürdiges chinesisches Modul um billige Chips teuer zu verkaufen. Eine klare Erklärung habe ich nicht gefunden. Aber es arbeitet wohl mit 500mA Transistoren nach GND und 5k1 pull up an HVCC, der nicht nur 5V, sondern bis 24V betragen kann. Dein 78S05 (2A nur für 2 Optokoppler!) ist wohl nicht notwendig. Aber das Optokopplermodul auch ziemlich unpassend. Es hat halt keinen push pull Ausgang. Wenn man Optokoppler einsetzen will, hat man jedenfalls nicht links und rechts dieselben 5V. Ob ein kleiner IRLML2502 den Anlaufstrom deiner Pumpenmotoren schalten kann solltest du nachschlagen.
Falls ich irgendwelche Sachen total falsch gemacht habe, bitte nicht zu Streng sein. Ich bin gelernter Metzger und habe mich da versucht so gut wie es nur geht selbst rein zu lesen. Dabei habe ich Oft von zwei bekannten noch Infos oder Warnhinweise zugerufen bekommen. Wie z.B. "Dass kannst du doch so nicht machen!", oder "Achte aber noch da und da drauf" MaWin schrieb: > Severin F. schrieb: >> Optokoppler: HW-399 > > Das ist irgend so ein merkwürdiges chinesisches Modul um billige Chips > teuer zu verkaufen. Eine klare Erklärung habe ich nicht gefunden. Aber > es arbeitet wohl mit 500mA Transistoren nach GND und 5k1 pull up an > HVCC, der nicht nur 5V, sondern bis 24V betragen kann. > Dein 78S05 (2A nur für 2 Optokoppler!) ist wohl nicht notwendig. Aber > das Optokopplermodul auch ziemlich unpassend. Es hat halt keinen push > pull Ausgang. > Wenn man Optokoppler einsetzen will, hat man jedenfalls nicht links und > rechts dieselben 5V. > > Ob ein kleiner IRLML2502 den Anlaufstrom deiner Pumpenmotoren schalten > kann solltest du nachschlagen. Markus M. schrieb: > Die +5V sind links und rechts miteinander verbunden. Rechts igbt es ein > "HVGND" und kein "HV+5V" An den Pin Out des NodeMCU Boards sind 3,3V. der Optokoppler ist links auch an einen 3,3V Output an dem NodeMCU Board angeschlossen. Der IRLML2502 kann bis zu 12V am Gate. Ich habe den Auszug aus dem Datasheet mal Angehängt. Jede Dosierpumpen braucht: - im Leerlauf 0,14A - unter Last 0,14A - Blockiert 0,24A Wobei ich alles so Programmiert habe, dass nie zwei Pumpen gleichzeitig laufen. Ich habe jetzt den 78S05 entfernt und habe also auf der rechten Seite nur 12V. Was für einen Optokoppler zum Trennen der Stromkreise und was für ein FET/Transistor zum Schalten der Pumpen würdet ihr mir empfehlen?
Mosfets, die nur 12V aushalten und die Betriebsspannung bereits 12V ist geht nicht lange gut. Severin F. schrieb: > Was für einen Optokoppler zum Trennen der Stromkreise und was für ein > FET/Transistor zum Schalten der Pumpen würdet ihr mir empfehlen? Mosfet: - STN3NF06L
:
Bearbeitet durch User
Markus M. schrieb: > Mosfets, die nur 12V aushalten und die Betriebsspannung bereits 12V ist > geht nicht lange gut. Die 12V sind Vgsn, also max. Spannung am Gate. Der Transistor kann aber 20V Vds, also genug Reserve.
Dietrich L. schrieb: > Die 12V sind Vgsn, also max. Spannung am Gate. Der Transistor kann aber > 20V Vds, also genug Reserve Bekommt aber, seit dem HVCC von 5V auf 12V umgestellt wurde, knapp 12V auf's Gate. Ein LogicLevel ist gar nicht mehr nötig.
MaWin schrieb: > Dietrich L. schrieb: > >> Die 12V sind Vgsn, also max. Spannung am Gate. Der Transistor kann aber >> 20V Vds, also genug Reserve > > Bekommt aber, seit dem HVCC von 5V auf 12V umgestellt wurde, knapp 12V > auf's Gate. > Ein LogicLevel ist gar nicht mehr nötig. Das bedeutet was genau? Ich kann auch wieder auf 5V an HVCC umstellen, wenn das besser ist.
Die PullUp-Wiederstände an den I2C-Anschlüssen sowie am DS18B20 gehen an 5V, somit ist ein abrauchen des ESP8266 gewährleistet. Ein um klemmen auf 3V3 ist nur für den DS18B20 (dann auch Vdd des selben auf 3V3) eine Lösung, wenn die MCP23017 an 5V betrieben werden reicht der H-Level (lt. Datenblatt 0,8Vdd=4V) nicht aus. Also die MCP auf 3V3 legen oder einen Pegelwandler dazwischen schalten.
Der Unwissende schrieb: > Die PullUp-Wiederstände an den I2C-Anschlüssen sowie am DS18B20 gehen an > 5V, somit ist ein abrauchen des ESP8266 gewährleistet. Wie schon gesagt - der Nick passt. Du machst dir ziemlich unbegründet Sorgen. Das Ohmsche Gesetz und ein Strom von 360µA werden verhindern, dass der ESP8266 jemals etwas von den 5V zu sehen bekommt.
Forist schrieb: > Wie schon gesagt - der Nick passt. Urteile nicht nach Nicknamen, ansonsten: wer einen Schreibfehler findet kann ihn ruhig behalten - ansonsten zum Fundbüro bringen. Forist schrieb: > Das Ohmsche Gesetz und ein Strom von 360µA... Wie kommst du auf den Strom von 360µA? Nach dieser Logik begrenze ich Den Strom von der Steckdose auf 360µA und klemme das an einen ESP-GPIO... Das Datenblatt besagt VIHmax 3V6, aber das haben bestimmt noch viel unwissendere geschrieben...
D3 GPIO2 und D4 GPIO2 sollten beim Boot from flash high sein. D4 ist aber undefiniert und könnte durch dein Optokopplermodul evtl. Low sein undefiniert ist auch D8 GPIO15 welcher low sein sollte.
Chris K. schrieb: > D3 GPIO2 und D4 GPIO2 sollten beim Boot from flash high sein. > D4 ist aber undefiniert und könnte durch dein Optokopplermodul evtl. Low > sein > undefiniert ist auch D8 GPIO15 welcher low sein sollte. D3 (GPIO0) muss beim Flash an GND gelegt werden. Wenn ich Ihn also durch einen Pullup auf High ziehe macht das doch nichts? An die übrigen IO-Pins (D4-TX) habe ich jetzt noch 100k Pulldown eingeplant, um diese auf Low zu definieren. Der Unwissende schrieb: > Die PullUp-Wiederstände an den I2C-Anschlüssen sowie am DS18B20 > gehen an > 5V, somit ist ein abrauchen des ESP8266 gewährleistet. > Ein um klemmen auf 3V3 ist nur für den DS18B20 (dann auch Vdd des selben > auf 3V3) eine Lösung, wenn die MCP23017 an 5V betrieben werden reicht > der H-Level (lt. Datenblatt 0,8Vdd=4V) nicht aus. Also die MCP auf 3V3 > legen oder einen Pegelwandler dazwischen schalten. Den DS18B20 sowie dessen Pullup habe ich an 3,3V umgeklemmt. Den ein Pegelwandler für den I2C habe ich nach dem Vorbild (Seite 4) eingefügt: https://www.nxp.com/docs/en/application-note/AN10441.pdf
Der Unwissende schrieb: > Wie kommst du auf den Strom von 360µA? Nach dieser Logik begrenze ich > Den Strom von der Steckdose auf 360µA und klemme das an einen > ESP-GPIO... Die Application Note von Atmel, bei der das so gemacht wird, kennst du? Hast du irgendeinen Grund anzunehmen, dass das beim ESP8266 nicht funktioniert?
Severin F. schrieb: > Jede Dosierpumpen braucht: > - im Leerlauf 0,14A > - unter Last 0,14A > - Blockiert 0,24A Da würde ich zum AQY212 raten, das macht die Schaltung einfacher und der kann bis 1A schalten. Vor die LED einen Widerstand, daß ~5mA fließen, das kann ein IO-Expander oft direkt treiben.
Severin F. schrieb: > Chris K. schrieb: >> D3 GPIO2 und D4 GPIO2 sollten beim Boot from flash high sein. >> D4 ist aber undefiniert und könnte durch dein Optokopplermodul evtl. Low >> sein >> undefiniert ist auch D8 GPIO15 welcher low sein sollte. > > D3 (GPIO0) muss beim Flash an GND gelegt werden. Wenn ich Ihn also durch > einen Pullup auf High ziehe macht das doch nichts? > An die übrigen IO-Pins (D4-TX) habe ich jetzt noch 100k Pulldown > eingeplant, um diese auf Low zu definieren. Wieso ist jetzt D4 GPIO2 permanent auf low mit dem pulldown??? Zum boot sollte er doch auf high sein.
Forist schrieb: > Die Application Note von Atmel, bei der das so gemacht wird, kennst du? > Hast du irgendeinen Grund anzunehmen, dass das beim ESP8266 nicht > funktioniert? Ich finde im VW die Schalter nicht die in der Bedienungsanleitung von BMW so gut beschrieben sind... Wo ist bloß der Fehler?
Chris K. schrieb: > Severin F. schrieb: > Wieso ist jetzt D4 GPIO2 permanent auf low mit dem pulldown??? > Zum boot sollte er doch auf high sein. Wieso der auf High sein sollte? Erkläre mir das bitte. Ich verstehe das nicht. Peter D. schrieb: > > Da würde ich zum AQY212 raten, Anstatt der IRLML2502?
bootloader mode at startup or following reset. | GPIO 0 | GPIO 2 | GPIO 15 ----------------------------------|--------|--------|--------- Flash Startup (Normal) | 1 | 1 | 0 UART Download Mode (Programming) | 0 | 1 | 0 SD-Card Boot | 0 | 0 | 1
Der Unwissende schrieb: > Nach dieser Logik begrenze ich Den Strom von der Steckdose auf 360µA und > klemme das an einen ESP-GPIO... Ist ok.
Eine letzte Anmerkung: Da auf dem NodeMCU-Modul ein USB/Seriell- Baustein vorhanden ist würde ich den separaten Anschluss zum Flashen nochmal überdenken. Die an den Steckplätzen für MCP23017 angegebenen Pin-Nummern passen zu keiner im Datenblatt aufgeführten Gehäuseform?!? Auch reicht nur GND für die Wahl der Bausteinadresse i.d.R. nicht aus - CMOS-Eingänge brauchen eindeutig definierte Pegel. Die Verbindung VU(3) - Vin(15) hebelte m.E. die Funktion der Schutzdiode am USB-Anschluss aus.
Nur mal so interessehalber: ist die komplette Trennung von 5 und 12V Teil wirklich so unbedingt nötig? Könnte man nicht die GNDs verbinden (weiterhin getrennte Versorgungsspannungen) und die Motoren mit einem guten alten ULN2001 ansteuern? Da wären die Freilaufdioden auch schon drin. mfg Harri
Chris K. schrieb: > bootloader mode at startup or following reset. Danke das Stichwort Bootloader hat mir gefehlt. Ist aber logisch, da der MC ja dann nie normal bootet. Ändere ich auf jedenfall ab, wahrscheinlich werde ich die IO Pins anders anordnen müssen. Der Unwissende schrieb: > Eine letzte Anmerkung: > > Da auf dem NodeMCU-Modul ein USB/Seriell- Baustein vorhanden ist würde > ich den separaten Anschluss zum Flashen nochmal überdenken. Stimmt habe ich total vergessen! Ist dementsprechend unnötig und wird entfernt. > Die an den Steckplätzen für MCP23017 angegebenen Pin-Nummern passen zu > keiner im Datenblatt aufgeführten Gehäuseform?!? Auch reicht nur GND für > die Wahl der Bausteinadresse i.d.R. nicht aus - CMOS-Eingänge brauchen > eindeutig definierte Pegel. Ich nutze dieses Bauteil. Dort ist der MCP23017 drauf. https://tasmota.github.io/docs/MCP230xx/ Über die Firmware Tasmota kann man die Pullup Widerstände ein oder ausschalten. Ich werde sie Einschalten, damit wenn ich die Taster schließe, die IO Pins an GND anliegen. > Die Verbindung VU(3) - Vin(15) hebelte m.E. die Funktion der Schutzdiode > am USB-Anschluss aus. Eigentlich ist nur die Verbindung an VU (3) notwendig. da hast du recht.
Beitrag #6813887 wurde von einem Moderator gelöscht.
Severin F. schrieb: >> Die Verbindung VU(3) - Vin(15) hebelte m.E. die Funktion der Schutzdiode >> am USB-Anschluss aus. > > Eigentlich ist nur die Verbindung an VU (3) notwendig. da hast du recht. Die 5V-Speisung nicht an VU legen sondern an Vin, da VU im DB als Ausgang bezeichnet ist! Ein Modul mit dem MCP23017 scheint mir nicht Sinnvoll, sollte der Baustein warum auch immer mal gehimmelt werden musst du ein gleiches Modul beschaffen - bei Verwendung eines MCP23017 im SPDIP-Gehäuse mit Sockel ist ein Austausch weit einfacher. Integrierte Pull-Up/Down sind eine feine Sache, beziehen sich aber nur auf GPA0-7 und GPB0-7 - die Adress-Select-Pins müssen entweder an GND oder VDD gelegt werden bzw. Alternativ Pull-Up und per Jumper an GND legen um während des einschaltens/zum initialisieren eine eindeutige Adresse zu gewährleisten. Wie sieht der aktuelle Plan jetzt aus?
Der Unwissende schrieb: > Ein Modul mit dem MCP23017 scheint mir nicht Sinnvoll, sollte der > Baustein warum auch immer mal gehimmelt werden musst du ein gleiches > Modul beschaffen - bei Verwendung eines MCP23017 im SPDIP-Gehäuse mit > Sockel ist ein Austausch weit einfacher. Ich habe das Bauteil 4 Mal zuhause herumliegen :D Daher das Bauteil :D Der Unwissende schrieb: > die Adress-Select-Pins müssen entweder an GND oder VDD gelegt werden bzw. > Alternativ Pull-Up und per Jumper an GND > legen um während des einschaltens/zum initialisieren eine eindeutige > Adresse zu gewährleisten. Die Adress-Select-Pins sind standartmäßig auf High, ich habe aber noch Jumper mit eingeplant, falls ich sie mal an GND legen muss. => Schaltplan 2x3 Stiftleiste mit der Bezeichnung A2-A0. Der Unwissende schrieb: > Wie sieht der aktuelle Plan jetzt aus? Ist noch in Arbeit. Mein zwei Monate alter Sohn verhindert, dass ich mich mal intensiv reinfuchsen kann. Ich bin mir aktuell auch noch unsicher wegen dem PhotoMOS AQY212 Peter D. schrieb: > Severin F. schrieb: >> Jede Dosierpumpen braucht: >> - im Leerlauf 0,14A >> - unter Last 0,14A >> - Blockiert 0,24A > > Da würde ich zum AQY212 raten, das macht die Schaltung einfacher und der > kann bis 1A schalten. Vor die LED einen Widerstand, daß ~5mA fließen, > das kann ein IO-Expander oft direkt treiben. Verständisfragen: LEDE Reverse Voltage ist die Spannung, die die LED bei "zurückfließendem Strom" aushält? Die Dropout Voltage ist die Spannung, die die LED auf jedenfall benötigt, um zu leuchten? Die Spannung der IO Pins des NodeMCU beträgt 3,3V. Das müsste ja dann ausreichen. Pro Io Pin sind es max. 12mA. Brauch ich da dann überhaupt ein Vorwiderstand? Wenn ja wie hoch?
Severin F. schrieb: > Pro Io Pin sind es max. 12mA. Brauch ich da dann überhaupt ein > Vorwiderstand? Wenn ja wie hoch? Eine LED wird grundsätzlich nie ohne Vorwiderstand an eine Spannungsquelle angeschlossen, lt. DB des AQ212 ist VFtyp 1,14V/5mA, somit (3,3V-1,14V)/0,005A=432Ω Nach Widerstandsreihe E24 nimmt man dann 430Ω
Severin F. schrieb: > Pro Io Pin sind es max. 12mA. Brauch ich da dann überhaupt ein > Vorwiderstand? Wenn ja wie hoch? Das ist nicht der Strom der aus dem IO Pin raus fließt kann, sondern der Strom, mit dem er maximal belastet werden darf. Natürlich brauchst du irgendetwas, das den Strom auf einen Wert unterhalb dieser Grenze begrenzt.
beim AQY212 gibt es ja verschiedene Varianten Ich hätte den AQY212EH genommen. Was meint Ihr? Anderes Thema: GPIO2 + GPIO15 muss ja beim Boot auf low sein. kann ich da vor den Vorwiderstand des AQY212 einfach noch einen Pull Down Widerstand von 100k machen? Wenn nichts angeschlossen ist, übernehmen das Pull Down Widerstände auf dem NodeMCU board. Sprich beim Boot schaut der IC ob GND anliegt und dann müsste er die GPIOs ausschalten. Leuchtet dann nicht auch für einen kurzen Moment die Diode im AQY212, sprich die Dosierpumpe läuft für ein kurzen Moment? In den ersten versuchen der Schaltung, als ich noch Transistoren verwendete, führte dies dazu, dass der Transistor dauerhaft durchschaltete, und die Dosierpumpen an GPIO2+15 permanent liefen. Was kann ich tu um das zu umgehen. Ich habe noch ein IO Pin frei (GPIO16). Würde es was bringen die Optokoppler mit einem MosFET vom IO Pin zu trennen, und zwischen IO2+15 und MosFET je ein PullDown? Dadurch hätten quasi wenn der ESP bootet die IO2+15 keine verbindung zu ihren Optokoppler, und wenn dann nach dem regulären Boot der übrige IO Pin (GPIO16) die MosFETs für die verbindung von GPIO2+15 zu ihren AQY212 herstellt?
Irgendwie drehst du dich mit den Logik-Pegeln die beim Bootvorgang anliegen sollen im Kreis und stolperst ständig mit dem umsetzen der Anforderung. Alternativer Denkansatz: Die 2 MCP23017 ergeben zusammen 32 GPIO - wenn du 7 davon für die AQY212 verwendest (mit 820Ω Vorwiderstand wg. 5V)? Severin F. schrieb: > Bauteile die per Kabel angeschlossen werden sollen: > - Analog zu Digital Wandler ADS1115 16-Bit ADC > - Optional: 0,96" OLED SSD1306 Display beide Positionen laufen an I2C, du hast sogar die Wahl ob mit 3V3 oder 5V
Okay. Ich denke ich werde einen zweites NodeMCU Board einbauen... ich habe noch mehrere rumliegen. dann kann ich ohne Probleme alle Optokoppler an die Pins des ESP anschließen. Und ich habe je genügend Pins für die I2C und die Einhaltung des Bootloaders. EDIT: die Dosierpumpen muss ich alle über die ESP GIPOs direkt anschließen, da ich dort einen timer (Pulsetime), wodurch die Pins auch maximal nur so lange auf on bleiben, wie über die Pulsetime vorher festgelegt wurde.
:
Bearbeitet durch User
Severin F. schrieb: > Anderes Thema: GPIO2 + GPIO15 muss ja beim Boot auf low sein. kann ich > da vor den Vorwiderstand des AQY212 einfach noch einen Pull Down > Widerstand von 100k machen? Im Prinzip ja, aber bitte nicht 100kΩ. Das ist zu hochohmig, damit riskierst du, dass der zufällige Pegel beim Einschalten zu langsam auf LOW runter geht und dass Radiowellen (möglicherweise auch vom Modul selbst) einstreuen. Die meisten Module verwenden 10 oder 12kΩ, was auch schon grenzwertig ist. Ist hatte zu hause in der Bastelecke vereinzelte Fälle, wo das schon nicht mehr zuverlässig arbeitete. Seit ich auf 2,2kΩ runter gegangen bin, habe ich keine Fehlfunktionen mehr. Severin F. schrieb: > Leuchtet dann nicht auch für einen kurzen Moment die > Diode im AQY212, sprich die Dosierpumpe läuft für ein kurzen Moment? GPIO2 und GPIO15 "flackern", damit meine ich, dass sie beim Start mehrmals zwischen LOW und HIGH hin und her wechseln. Also ja. Severin F. schrieb: > In den ersten versuchen der Schaltung, als ich noch Transistoren > verwendete, führte dies dazu, dass der Transistor dauerhaft > durchschaltete, und die Dosierpumpen an GPIO2+15 permanent liefen. Dann hast du wohl etwas falsch gemacht. Ohne wenigstens den aktuellen Schaltplan zu zeigen, kann ich dir nicht helfen. Fotos von beiden Seiten der Platinen und der Verkabelung wären auch gut. > Was kann ich tu um das zu umgehen. Ein anderen Chip mit mehr freien Pins verwenden. Zum Beispiel den ESP32 oder eine Port-Expander über I²C Bus dran hängen. Die MCP23017 und PCF8574 sind bekannte Klassiker. Aber auch einfache Schieberegister wie 74HCT595 (Ausgabe) und 74HCT165, oder auch den TPIC6B595 welcher direkt Relais ansteuern kann. Ich verwende den ESP8266 gerne in Kombination mit einem 8 Bit AVR, der kann viele Sachen besser: - I/O Pins erweitern - Ruckelfreie PWM erzeugen - Zeitspannen ohne sporadische Fehler messen - Analoge Spannungen sehr viel genauer messen - Touch Sensoren abfragen - Den ESP überwachen und ggf. zurück setzen - Strom sparen indem der ESP nur bei Bedarf VCC bekommt - Tiefentladeschutz für den Akku - Kann mit schwachem Akku noch sinnvolles tun, wo der ESP schon versagen würde. - 5V Spannungspegel (gut für Lasten an MOSFET) um nur ein paar (Anwendungs-spezifische) Beispiele zu nennen. Eventuell kannst du dir dann sogar das Programmieren des ESP Chips selbst ersparen, wenn du alles auf der AT-Firmware aufbaust. Manchen Leuten hier bereitet dieser Gedanke zwar Kopfschmerzen, aber das zuverlässig hin zu bekommen ist gar nicht so schwer. Früher oder später muss man sowieso mal lernen, asynchrone Kommunikation zu beherrschen, und das ist echt kein Hexenwerk.
Severin F. schrieb: > Sprich beim Boot schaut der IC ob GND anliegt und dann müsste er die > GPIOs ausschalten. Leuchtet dann nicht auch für einen kurzen Moment die > Diode im AQY212, sprich die Dosierpumpe läuft für ein kurzen Moment? Nein, der Strom durch den internen Pullup reicht nicht aus, um die LED anzusteuern.
Stefan ⛄ F. schrieb: > Ohne wenigstens den aktuellen > Schaltplan zu zeigen, kann ich dir nicht helfen. Also, auf dem Bild ist jetzt der aktuelle Schaltplan. Ich habe übersichtlichere Schematic für das NodeMCU und den MCP23017 gefunden und eingebaut. Ich hoffe ich habe alles richtig eingebaut. Bleibt nur nochmal die Frage mit dem Bootloader. Geht das an GPIO2+15 (D2+D8) so, wie ich das jetzt im Schaltplan realisiert habe? PS.: Ja ich weiß, es wäre besser den ESP32 zu verwenden. Aber das würde wieder Stunden/Tage in Anspruch nehmen, meine Programmierung anzupassen und da sagt definitiv meine Frau nein x.X
Severin F. schrieb: > Geht das an GPIO2+15 (D2+D8) so, wie ich das jetzt im Schaltplan > realisiert habe? Beide Pins flackern beim Botten. Du wirst also "ungewollte" Impulse an SDA sehen was vermutlich noch harmlos ist), und an einem deiner Leistungsausgänge.
Severin F. schrieb: > auf dem Bild ist jetzt der aktuelle Schaltplan. Wenn es schon so unheimlich eng hergeht (unnötigerweise nur links unten, denn rechts oben ist gähnende Leere...): warum machst du nicht einfach ein paar mehr von diesen GND-Symbolen an passende Stellen im Schaltplan? Und, tada: es gibt auch Symbole für Versorgungsspanungen, sodass man sich auch da das angestrengte und fehlerträchtige Verfolgen von Leitungen sparen kann. Der Unwissende schrieb: > bei Verwendung eines MCP23017 im SPDIP-Gehäuse mit Sockel ist ein Austausch > weit einfacher. Und man bekommt nicht noch einen Supersonder-Formfaktor in sein Design. Von irgendeiner Firma, die das Ding morgen nicht mehr herstellt. Severin F. schrieb: > Ich habe das Bauteil 4 Mal zuhause herumliegen :D Das ist der Grund für beliebte Fehlentscheidungen...
Stefan ⛄ F. schrieb: > Beide Pins flackern beim Botten. Sollte natürlich "beim Booten" heissen. Mir ist noch etwas aufgefallen: Du ziehst GPIO2 durch den 4,7kΩ Widerstand herunter. Auch den GPIO15 ziehst du durch den Optokoppler herunter. Beides darf nicht sein, so kann der ESP8266 nicht booten. R11 und R12 müssen sowieso nach 3,3V gehen, nicht nach GND. Schau dir nochmal genau an, wie diese bidirektionalen I²C Pegelwandler aufgebaut sein müssen: https://elektro.turanis.de/html/prj146/example.png Wenn du das korrigierst, löst sich auch das Problem mit dem Pegel beim Start in Luft auf. Was den GPIO15 angeht: Ändere es so:
1 | 430Ω |
2 | GPIO15 o---[===]---|<|---o 3,3V |
Dann geht der Ausgang natürlich bei LOW Pegel an, anstatt bei HIGH. Das musst du in der Programmierung berücksichtigen. Flackern wird er aber trotzdem.
Lothar M. schrieb: > Severin F. schrieb: > > Wenn es schon so unheimlich eng hergeht (unnötigerweise nur links unten, > denn rechts oben ist gähnende Leere...): warum machst du nicht einfach > ein paar mehr von diesen GND-Symbolen an passende Stellen im Schaltplan? > Und, tada: es gibt auch Symbole für Versorgungsspanungen, sodass man > sich auch da das angestrengte und fehlerträchtige Verfolgen von > Leitungen sparen kann. > > Und man bekommt nicht noch einen Supersonder-Formfaktor in sein Design. > Von irgendeiner Firma, die das Ding morgen nicht mehr herstellt. > > Das ist der Grund für beliebte Fehlentscheidungen... Severin F. schrieb: > Falls ich irgendwelche Sachen total falsch gemacht habe, bitte nicht zu > Streng sein. Ich bin gelernter Metzger und habe mich da versucht so gut > wie es nur geht selbst rein zu lesen. Entschuldige bitte, dass noch kein Meister vom Himmel gefallen ist... -.- Aber Ja, ich werde mich die Tage nochmal daran setzen um zu versuchen den Schaltplan übersichtlicher zu gestalten. Stefan ⛄ F. schrieb: > Wenn du das korrigierst, löst sich auch das Problem mit dem Pegel beim > Start in Luft auf. I2c ist doch an GPIO4+5, was beim Booten egal ist? GPIO2+15 habe ich doch auf GND gezogen. Siehe nochmal auf dem Bild. Und ja es ist eng und unübersichtlich. Ich werde das korrigieren. Ich werde es mir die Tage trotzdem nochmal anschauen, wo da mein Fehler liegt.
Severin F. schrieb: > Geht das an GPIO2+15 (D2+D8) so, wie ich das jetzt im Schaltplan > realisiert habe? Severin F. schrieb: > I2c ist doch an GPIO4+5 Ja was denn nun? Du bringst mich ganz ducheinander! An deinem Schaltplan sehe ich eine Leitung von D2 durch Q8 nach SDA. Diese meinte ich. In meinen Unterlagen sehe ich nun aber, das GPIO2=D4 ist, nicht D2. An D4 hast du auch so eine Leistungs-Stufe mit Optokoppler. Dann gilt da halt ebenfalls das bereits gesagte. Dennoch sind R11 und R12 falsch, das müssen Pull-Up Widerstände sein. Ist dir bekannt, dass du beim ESP8266 beliebige Pins für I²C benutzen kannst, weil das eh in Software (Bit-Banging) implementiert wurde? Wenn du allerdings für SCK einen der "flackernden" Pins verwendest, könnte das unangenehme Seiteneffekte an den angeschlossenen IC's auslösen. Ich würde es vorher mal auf dem Steckbrett antesten. Im Zweifelsfall google mal nach "freitakten".
Stefan ⛄ F. schrieb: > Severin F. schrieb: > >> Geht das an GPIO2+15 (D2+D8) so, wie ich das jetzt im Schaltplan >> realisiert habe? > > Severin F. schrieb: > >> I2c ist doch an GPIO4+5 > > Ja was denn nun? An deinem Schaltplan sehe ich eine Leitung von D2 durch > Q8 nach SDA. Das was ich da geschrieben habe war falsch. Entschuldige bitte. Ich meinte dort oben GPIO2+15 (D4+D8) D1 =GPIO5 D2 = GPIO4
Severin F. schrieb: > GPIO2+15 habe ich doch auf GND gezogen Genau das darfst du nicht tun, dann startet der ESP nicht. Wenn du sie irgendwohin ziehst, dann auf HIGH. Nur dann funktioniert es.
Stefan ⛄ F. schrieb: > Severin F. schrieb: >> GPIO2+15 habe ich doch auf GND gezogen > > Genau das darfst du nicht tun, dann startet der ESP nicht. Wenn du sie > irgendwohin ziehst, dann auf HIGH. Nur dann funktioniert es. Also ich habe den Schaltplan etwas aufgeräumt und nochmal den I2C- Pegelwandler nach deiner Vorlage angepasst. GPIO 2+15 habe ich mit einer Diode Dazwischen auf High gezogen. Ich hoffe das passt nun.
Wofür sind D8 und D9? So können die Pull-Up Widerstände nicht wirken. Vermutlich wolltest du sie anders herum drehen. Aber dennoch: Wozu sind die Dioden gut? Selbst wenn du sie weglassen würdest bliebe da noch das problem, dass die Optokoppler die Spannung herunter ziehen. Das ergibt dann keinen eindeutigen HIGH Pegel mehr. Der ESP verlangt >= 2,5V als HIGH Pegel.
Stefan ⛄ F. schrieb: > Wofür sind D8 und D9? Stefan ⛄ F. schrieb: > Was den GPIO15 angeht: Ändere es so: > 430Ω > GPIO15 o---[===]---|<|---o 3,3V Hattest du doch hier beschrieben?
Severin F. schrieb: > Hattest du doch hier beschrieben? Das war der Vorwiderstand und die Diode des Optokopplers. Nicht nur der Pull-Up Widerstand muss diese beiden Pins hoch ziehen, sondern auch die Last (der Optokoppler). Sonst arbeitet die Last gegen den Pull-Up.
Da ist aber schon wieder etwas durcheinander / missverstanden worden. Nochmal ganz von vorne. Der ESP8266 verlangt einen HIGH pegel mit mindestens 2,5V. Ich zitiere von meiner Homepage: > D3, GPIO0 > Low beim Start aktiviert Firmware-Upload, hat 12 kΩ Pull-Up Widerstand > und einen Taster mit 470 Ω nach GND, flackert beim Start. Du hast da einen zusätzlichen Pull-Up Widerstand dran gehängt und den DS1820. Hier ist es wichtig, dass der DS1820 diesen Pin beim Starten nicht unter 2,5V herunter zieht. Ist das der fall? Ich kenne diesen Chip nicht, das musst du selber klären. > TxD, D10, GPIO1 > Serieller Ausgang des ESP über 470 Ω mit dem USB-UART verbunden, flackert > beim Start, darf beim Start nicht auf Low gezogen werden Du ziehst diesen Pin durch die Last des Optokopplers auf Low. Das darf nicht. Du musst ihn stattdessen hoch ziehen. Der Optokoppler gehört so angeschlossen:
1 | GPIO1 o---[===]---|<|---o 3,3V |
> D4, GPIO2 > Ist mit der blauen LED verbunden, die bei LOW Pegel leuchtet. Flackert > beim Start. Muss beim Start high sein. Hat 12 kΩ Pull-Up Widerstand. > Ausgang vom zweiten UART, der nur Ausgabe kann. Du ziehst diesen Pin durch die Last des Optokopplers auf Low. Das darf nicht. Du musst ihn stattdessen hoch ziehen. Der Optokoppler gehört so angeschlossen:
1 | GPIO2 o---[===]---|<|---o 3,3V |
Außerdem hast du einen Pull-Up + Diode in deinem Plan, die unnötig sind, weil sich bereits in dem ESP8266 Modul ein Pull-Up befindet. Zudem fällt an der Diode zu viel Spannung ab (2,5V sind erforderlich). > D8, GPIO15 (CS) > Normaler I/O Pin oder SPI Chip Select, muss beim Start Low sein, > hat 12 kΩ Pull-Down Widerstand, flackert beim Start. Dieser Pin muss auf Low gezogen werden, so dass deine Beschaltung mit dem Optokoppler in Ordnung ist. Aber dein Pull-Up Widerstand (samt Diode) muss weg.
Stefan ⛄ F. schrieb: > Du hast da einen zusätzlichen Pull-Up Widerstand dran gehängt und den > DS1820. Hier ist es wichtig, dass der DS1820 diesen Pin beim Starten > nicht unter 2,5V herunter zieht. Ist das der fall? Ich kenne diesen Chip > nicht, das musst du selber klären. Ich weiß die genauen Volt nicht. Aber ich habe es eben probiert. mit dem Pullup (R10) an GPIO0/D3 bootet der ESP regulär. Ich glaube ich habe es jetzt verstanden. Auf dem NodeMCU sind ja schon Pull Up/Down widerstände, welche schon die richtigen Pegel geben. Ich habe sie durch diese Beschaltung immer umgangen und ausgehebelt? Stefan ⛄ F. schrieb: > GPIO2 o---[===]---|<|---o 3,3V > GPIO1 o---[===]---|<|---o 3,3V Ich bin immer davon ausgegangen, dass wenn ich die Diode des Optokopplers einschalten will, dass ich es so aufbauen muss: > GPIO1/2 o---[===]---|>|---o GND Spirch: Strom fließt aus dem GPIO (ein/aus Schalter) durch den Widerstand+ Diode zu Ground. so wie bei allen anderen I/O Pins. Aber bei GPIO1+2 wird dann quasi der Strom von der Spannungsquelle durch die Diode + Widerstand in den GPIO fließen. Dadurch ist beim booten der Pegel auf High und danach muss ich ihn in der Software ausschalten. Kommt das in etwa hin?
Severin F. schrieb: > Spirch: Strom fließt aus dem GPIO (ein/aus Schalter) durch den > Widerstand+ Diode zu Ground. so wie bei allen anderen I/O Pins. Anders herum geht es auch: Strom fließt vom Optokoppler in den GPIO Pin hinein. Der muss dann halt auf LOW geschaltet werden, damit der Optokoppler leuchtet. > muss ich ihn in der Software ausschalten. Trenne dich mal von der Vorstellung von LOW=aus und HIGH=an. Das kommt ganz auf die Schaltung an und ich wage zu behaupten, dass die Mehrheit der Schaltungen LOW=an verwendet.
GPIO0 und 2 sind doch prädestiniert für i2c mit den Pullups auf den i2C Modulen. GPIO15 ist auf dem Nodemcu schon mit Pulldown von 12k. Die Beschaltung nach deinem Stromlauf sollte passen. Dann hast du wieder einen unkomplizierteren Pin für was anderes übrig.
:
Bearbeitet durch User
Severin F. schrieb: > Ich weiß die genauen Volt nicht. Aber ich habe es eben probiert. mit dem > Pullup (R10) an GPIO0/D3 bootet der ESP regulär. Dann solltest du es nachmessen. Sonst bootet er im Sommer bei 32°C vielleicht gerade nicht mehr.
Hallo zusammen, Am Wochenende kamen alle Teile an. Heute Habe ich alles mal auf dem Breadboard zusammengesteckt. Die Schaltung Funktioniert wie sie soll. Vielen Herzlichen Dank für eure Hilfe! Ohne euch hätte ich das nicht geschafft!!!
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.