Controla un Motor DC con finales de carrera desde Home Assistant

Descubre todos los secretos del motor DC, cómo gestionarlo con un puente-H L298 y controlarlo desde Home Assistant. Añade de manera muy fácil un par de interruptores de final de carrera para que el motor se detenga al llegar a los extremos.

Y este es el código que hemos probado en el ESPHome:

esphome:
  name: motor-exp
  friendly_name: motor-exp

esp8266:
  board: esp01_1m

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "8H4EjBkZVGpGNWIGFxxxId4gKwIpv23QrvfY="

            
ota:
  password: "5b0633f589955xxxd152bb938efd"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Motor-Exp Fallback Hotspot"
    password: "icEmxxxYm1"

captive_portal:

# Conexiones del ESP8266 al L298
output:
  - platform: gpio
    id: motor_forward
    pin: GPIO5 #D1
  - platform: gpio
    id: motor_reverse
    pin: GPIO4 #D2
  - platform: esp8266_pwm   
    pin: GPIO0 #D3
    id: motor_speed
    frequency: 1000Hz

# Barra de desplazamiento para elegir la velocidad del motor
number:
  - platform: template
    name: "Motor Velocidad"
    id: motor_dc
    min_value: 0
    max_value: 100
    step: 1
    optimistic: true
    initial_value: 100

# Con el objeto COVER podemos utilizar 3 botones: subir, bajar y stop
cover:
  - platform: template
    name: "Motor DC Control"
    id: motor_dc_control
    device_class: damper
    open_action:
      lambda: |- 
        id(motor_speed).set_level((id(motor_dc).state)/100);
        id(motor_forward).turn_on();
        id(motor_reverse).turn_off();
    close_action:
      lambda: |- 
        id(motor_speed).set_level((id(motor_dc).state)/100);
        id(motor_forward).turn_off();
        id(motor_reverse).turn_on();
    stop_action:
      lambda: |- 
        id(motor_speed).turn_off();
        id(motor_forward).turn_off();
        id(motor_reverse).turn_off();
    optimistic: true
    assumed_state: true
Scroll al inicio