Als kleine Ergänzung: Ich habe inzwischen bei mir das Relais-Modul aus dem Aufbau entfernt und durch Transistoren ersetzt. Das ist günstiger, kleiner, stromsparender und hat den großen Vorteil, dass man die Geschwindigkeit der Pumpen über Pulsweitenmodulation (PWM) steuern kann. Da es bei mir um Topfpflanzen geht hatte ich mir vorher überlegt, Ventile einzubauen, damit die Töpfe nicht überlaufen weil die Pumpe schneller Wasser zuführt als die Erde aufnehmen kann. Mit der PWM kann ich auf die Ventile verzichten und spare sogar noch Strom, da die Pumpen nicht gegen die halb geschlossenen Ventile arbeiten müssen.
Hier der Schaltplan für zwei Pumpen:
7449d542-8324-4671-bfca-03e67ae53e55-image.png
Die Pumpen, die ich verwendet habe könnt ihr in meinem letzten Beitrag sehen, sie sind mit 3-5V zu betreiben und haben dabei 100-200mA.
Als Transistor habe ich einen S8050 verwendet. Laut Datenblatt, das ich zuerst gefunden habe, verträgt er einen Collector-Strom von 500 mA, ich habe allerdings auch an anderen Stellen 700 mA gefunden.
Damit ist er auf jeden Fall groß genug dimensioniert um auch den Einschaltstrom des Motors zu verkraften.
Dementsprechend muss der Basis-Vorwiderstand mit mindestens (3,3V - 1,2V) / 0,012A = 175 Ohm dimensioniert werden (3,3V: GPIO-Ausgang, 1,2V: Spannungsabfall Basis-Emitter des Transistors, 12mA: maximale Belastung des GPIO).
Ich habe hier 220 Ohm gewählt, damit liegt der Basis-Strom bei ca. 9,5 mA, was noch locker ausreichen sollte um den Transistor bei bis zu 200mA Collector-Strom komplett durchzuschalten.
Die Freilaufdiode hat keine besonderen Anforderungen, sie ist nur wichtig um den Transistor vor der Induktivität des Motors zu schützen, da ansonsten beim Abschalten des Motors sehr kurzfristig Spannungen im Bereich bis zu mehreren hundert Volt oder höher entstehen können (siehe hier), es reicht also jede kleine Diode, die ihr gerade zur Verfügung habt.
Für diejenigen, die mit ESPHome arbeiten, hinter dem Spoiler noch Teile aus der YAML-Datei, mit denen ich die Motoren ansteuere:
Spoiler
Eine kleine Erklärung zu den einzelnen Teilen:
Ich benötige hier MQTT, da der ESPHome-Adapter für ioBroker number noch nicht unterstützt.
Mit den ersten beiden Einträgen stelle ich die Bewässerungsdauer ein (max. 30 Sekunden).
Die beiden Einträge unter output stellen mir die Geschwindigkeitsregulierung zur Verfügung. Dabei werden die Motoren, wenn sie eingeschaltet werden, mit mindestens 30% betrieben, da sie bei geringerer Pulsweite nicht anlaufen.
Die letzten beiden Einträge stellen dann die Ansteuerung als Ventilator zur Verfügung und sorgen dafür (unter on_turn_on), dass die Pumpen vom ESP selbsttätig wieder ausgeschaltet werden nach Ablauf der eingestellten Zeit, als kleine Sicherheitsmaßnahme, damit es bei Problemen mit dem ioBroker nicht zu einer Überschwemmung kommt.
mqtt:
broker: 192.168.1.2
username: username
topic_prefix: meintopic
number:
- platform: template
name: "Dauer1"
id: dauer1
unit_of_measurement: ms
optimistic: true
min_value: 0
max_value: 30000
step: 1
restore_value: true
initial_value: 3500
- platform: template
name: "Dauer2"
id: dauer2
unit_of_measurement: ms
optimistic: true
min_value: 0
max_value: 30000
step: 1
restore_value: true
initial_value: 3500
output:
- platform: esp8266_pwm
pin: D1
frequency: 200 Hz
id: wasser1_pwm
min_power: 0.3
max_power: 1.0
zero_means_zero: true
- platform: esp8266_pwm
pin: D2
frequency: 200 Hz
id: wasser2_pwm
min_power: 0.3
max_power: 1.0
zero_means_zero: true
fan:
- platform: speed
id: wasser1
output: wasser1_pwm
name: "Wasser1"
on_turn_on:
- delay: !lambda |-
return id(dauer1).state;
- fan.turn_off: wasser1
- platform: speed
id: wasser2
output: wasser2_pwm
name: "Wasser2"
on_turn_on:
- delay: !lambda |-
return id(dauer2).state;
- fan.turn_off: wasser2