[vermutlich gelöst] ESP01 (Tasmota) und Tx (GPIO0, GPIO2) als Relay geht nicht?

Begonnen von andies, 02 September 2023, 13:08:52

Vorheriges Thema - Nächstes Thema

Papa Romeo

#15
Hallo andies,

ist deine Zeichnung so korrekt  ???

--> verwendest du wirklich einen NPN-Transistor  ::)

--> den du mit dem Emitter an +5 Volt legst  :-\


Edit: ... ist aber eigentlich egal. Auch mit der richtigen Verschaltung oder Verwendung eines PNP-Transistors würde das Ganze so nicht funktionieren.
Der NPN würde nie eine ausreichende Basisspannung erhalten damit er durchsteuert und der PNP würde nie einen so hohen Spannungspegel bekommen damit er sperrt.

Versuchs mal nach der anhängenden Skizze:



LG
Papa Romeo

...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

andies

FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

Ach so, danke für die Skizze - damit hatte ich angefangen (allerdings ohne den 1k nach VCC), jedoch war die Verstärkung so gering, dass das Relais nie angezogen hatte. Ich hatte das auf den 10k zurückgeführt. Oder habe ich da auch einen Denkfehler?
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Papa Romeo

#18
Hallo andies,
der Fehler liegt an den internen Pullup´s und ob Diese aktiviert oder nicht aktiviert sind.
Wie groß diese Pullup´s jetzt beim ESP01 sind weiß ich nicht. Beim ESP32 sollen sie zwischen 30 und 80 kOhm liegen und auch nicht bei allen GPIO´s gleich sein.
Aber nehmen wir mal an der Pullup ist aktiviert und beträgt 50 kOhm. Dein Basis-Widerstand von 10 kOhm erhöht sich dann um diese 50 kOhm und es kann dann durchaus sein,
daß diese 40 uA dann nicht mehr ausreichend sind um den Transistor voll durchzusteuern.
Des weiteren kann es auch dazu führen, dass der ESP nicht mehr bootet, wenn man z.B., wie du den TX (GPIO01) verwendet.
Durch den 10 kOhm Basiswiderstand und die Basis-Emitter-Strecke des Transistors wird der Port auf ca. 1 Volt gezogen. Tx benötigt aber zum Booten zwingend einen HIGH-Pegel.
Versieht man nun den GPIO mit einem externen Pullup, hier z.B. 1kOhm, erhöht sich der Basiswiderstand nur um dieses eine kOhm und der Basisstrom wird dadurch fast 6mal so groß
und der Port behält zudem beim Booten seinen HIGH-Pegel.

LG
Papa Romeo
 
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

andies

#19
Danke an Papa Romeo, ich bin erst jetzt dazu gekommen das umzusetzen. Allerdings reagiert bei mir das Relais nicht (ich habe genau die Skizze von Dir verlötet). In Tasmota habe ich Tx sowohl als Relais als auch als Relais_b konfiguriert und wenn ich ON-OFF schalte, bewegt sich das Relais nicht.

Als Relais habe ich SRD05 VDC, als Transistor einen BC238 B. Ich hänge mal Fotos und vermutliche Datasheets hier an.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

Ich habe mal die Spannung an der Basis (bzw Tx am ESP) gemessen:
ZitatLOW entspricht 0,11 V
HIGH entspricht 0,78 V
Letzteres verstehe ich nicht.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

Also, ich habe mal etwas gerechnet. Laut Datenblatt benötigt das Relais 70mA (und das entspricht auch dem Widerstand, den ich damals an dem Coil gemessen habe).

Bei 10k am ESP habe ich einen Strom von 3,3/10k=330 muA. Die Figure 1 sagt, dass dann die 70mA gerade als "Collector Current" erreicht werden. Das ist knapp. Demzufolge könnte es sein, dass ich den Widerstand senken muss, damit ich mehr Collector Current kriege.

Ebenso bei einer Verstärkung von etwa 100-200 (nach Figure 3 müsste es 200 sein) benötige ich an der Basis etwa 350-700 muA, damit ich auf 70mA komme. Bei 3,3V verlangt das einen Widerstand von 10k-4.7k. 

Ich habe dann 4k statt 10k verbaut und das Relais schaltet. Also: gelöst. (Oder mache ich da was langfristig kaputt?)
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Papa Romeo

Hallo Andies,

dann stimmt was nicht ... Transistor E und C vertauscht ...oder Pin´s am ESP verwechselt ...

Da ich weiß, dass meine Skizze funktioniert und ich es dir auch beweisen kann, hab ich die Schaltung
schnell mal fliegend zusammengelötet ... ist nicht schön, aber selten.

ESP:
- 3V3, RST, EN auf +3.3 Volt
- GND auf Masse
- GPIO0, GPIO2 mit 10 kOhm auf +3.3 Volt
- GPIO1, GPIO3 mit  1 kOhm auf +3.3 Volt
- GPIO1, GPIO3 mit 10 kOhm an die Basis der beiden Transistoren
- Emitter Transitoren an Masse
- Kollektoren der Transistoren über 470 Ohm und LED´s an + 5 Volt

ESP mit tasmota-DE.bin geflashed

GPIO1 --> Relay 1
GPIO3 --> Relay 2

siehe Bilder im Anhang.

LG
Papa Romeo

...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

Papa Romeo

Zitat von: andies am 15 Oktober 2023, 14:57:28Bei 10k am ESP habe ich einen Strom von 3,3/10k=330 muA. Die Figure 1 sagt, dass dann die 70mA gerade als "Collector Current" erreicht werden. Das ist knapp. Demzufolge könnte es sein, dass ich den Widerstand senken muss, damit ich mehr Collector Current kriege.

...versteh ich jetzt nicht ganz ... die 10k haben doch mit dem Relais nichts zu tun. Dieser bestimmt doch nur die maximale Steuerspannung
(Basisspannung) des Transistors. Der Transistor schaltet die 70mA locker und braucht keinen Vorwiderstand.

LG
Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

andies

#24
Also, Deine Schaltung verstehe ich und die war nicht mein Problem. Bei mir hat der Transistor nicht genug Strom geliefert, um das Relais zu schalten (so erkläre ich mir das) - also ich vermute Basistrom*Verstärkung < CE-Strom für das Relais.

Es kann am Relais liegen. Das ist billig und vermutlich benötigt das mehr mA als die Dioden, damit es überhaupt reagiert?

(Ich meine: Meine Schaltung, die ja exakt Deine Schaltung ist (siehe Link), geht jetzt - ich habe nur 10k durch 4k ersetzt, mehr nicht! Kann da was schiefgehen? In die Luft fliegen? Eigentlich nicht, oder?)
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Papa Romeo

Zitat von: andies am 15 Oktober 2023, 13:37:31Ich habe dann 4k statt 10k verbaut und das Relais schaltet. Also: gelöst. (Oder mache ich da was langfristig kaputt?)

... solange du den zulässigen Basisstrom nicht überschreitest, passiert da nicht´s.

Zitat von: andies am 15 Oktober 2023, 13:37:31Ich habe mal die Spannung an der Basis (bzw Tx am ESP) gemessen:
...
HIGH entspricht 0,78 V
Letzteres verstehe ich nicht.

Wenn du an der Basis und nicht direkt an Tx (GPIO_01) gemessen hast ist das o.k.
Die 0.78 Volt entsprechen dann der UBE, die bei einem durchgeschalteten
Transistor um die 0.7 Volt beträgt. Der Rest zum HIGH-Pegel (3.3Volt) fällt
an den Widerständen (Pullup 1kOhm und Basiswiderstand 10kOhm) ab.
Misst du direkt an TX musst du bei HIGH eine Spannung von knapp unter 3.3 Volt haben.

LG
Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary