Forum: Mikrocontroller und Digitale Elektronik Benötige Hilfe beim Schltplan


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Severin F. (s3v3rin)


Angehängte Dateien:

Lesenswert?

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
von Markus M. (mmvisual)


Lesenswert?

Die +5V sind links und rechts miteinander verbunden. Rechts igbt es ein 
"HVGND" und kein "HV+5V"

von xerxes (Gast)


Lesenswert?

5V-Spannungsregler: Pinbelegung richtig ?

von MaWin (Gast)


Lesenswert?

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.

von Severin F. (s3v3rin)


Angehängte Dateien:

Lesenswert?

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?

von Markus M. (mmvisual)


Lesenswert?

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
von Dietrich L. (dietrichl)


Lesenswert?

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.

von MaWin (Gast)


Lesenswert?

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.

von Severin F. (s3v3rin)


Lesenswert?

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.

von Der Unwissende (Gast)


Lesenswert?

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.

von Forist (Gast)


Lesenswert?

Der Unwissende schrieb:
> ... PullUp-Wiederstände ...

Der Nick passt

von Forist (Gast)


Lesenswert?

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.

von Der Unwissende (Gast)


Lesenswert?

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...

von Chris K. (kathe)


Lesenswert?

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.

von Severin F. (s3v3rin)



Lesenswert?

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

von Forist (Gast)


Lesenswert?

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?

von Peter D. (peda)


Lesenswert?

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.

von Chris K. (kathe)


Lesenswert?

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.

von Der Unwissende (Gast)


Lesenswert?

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?

von Severin F. (s3v3rin)


Lesenswert?

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?

von Peter D. (peda)


Lesenswert?

Severin F. schrieb:
> Anstatt der IRLML2502?

Und der Optokoppler.

von Chris K. (kathe)


Lesenswert?

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

von MaWin (Gast)


Lesenswert?

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.

von Der Unwissende (Gast)


Lesenswert?

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.

von Harald S. (harri)


Lesenswert?

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

von Severin F. (s3v3rin)


Lesenswert?

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 vom Autor gelöscht.
von Der Unwissende (Gast)


Lesenswert?

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?

von Severin F. (s3v3rin)


Angehängte Dateien:

Lesenswert?

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?

von H. H. (hhinz)


Lesenswert?

Severin F. schrieb:
> Brauch ich da dann überhaupt ein
> Vorwiderstand? Wenn ja wie hoch?

470 Ohm.

von Der Unwissende (Gast)


Lesenswert?

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Ω

von Wolfgang (Gast)


Lesenswert?

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.

von Severin F. (s3v3rin)


Lesenswert?

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?

von Der Unwissende (Gast)


Lesenswert?

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

von Severin F. (s3v3rin)


Lesenswert?

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
von Stefan ⛄ F. (stefanus)


Lesenswert?

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.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

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.

von Severin F. (s3v3rin)


Angehängte Dateien:

Lesenswert?

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

von Stefan ⛄ F. (stefanus)


Lesenswert?

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.

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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...

von Stefan ⛄ F. (stefanus)


Lesenswert?

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.

: Bearbeitet durch User
von Severin F. (s3v3rin)


Angehängte Dateien:

Lesenswert?

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.

von Stefan ⛄ F. (stefanus)


Lesenswert?

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".

: Bearbeitet durch User
von Severin F. (s3v3rin)


Lesenswert?

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

von Stefan ⛄ F. (stefanus)


Lesenswert?

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.

von Severin F. (s3v3rin)


Angehängte Dateien:

Lesenswert?

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.

von Stefan ⛄ F. (stefanus)


Lesenswert?

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.

: Bearbeitet durch User
von Severin F. (s3v3rin)


Lesenswert?

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?

von Stefan ⛄ F. (stefanus)


Lesenswert?

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.

: Bearbeitet durch User
von Stefan ⛄ F. (stefanus)


Lesenswert?

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.

: Bearbeitet durch User
von Severin F. (s3v3rin)


Angehängte Dateien:

Lesenswert?

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?

von Stefan ⛄ F. (stefanus)


Lesenswert?

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.

: Bearbeitet durch User
von Chris K. (kathe)


Lesenswert?

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
von Wolfgang (Gast)


Lesenswert?

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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.