H-Bridge: motor dc hacia adelante y hacia atrás con ic 555 por esp8266 gpio

-1

Buscando en la web para hacer h-bridge hacia adelante y atrás motor dc con ic 555 por el microcontrolador ESP8266 GPIO (PWM), encontré algunas ayudas e hice este circuito:

Este circuito siempre se mantiene con + 3.95v (este voltaje no importa ahora porque aumentaré más tarde con un IC de aumento de potencia) y, cuando el pin de gpio envíe una señal, el voltaje irá a -3.95v.

La pregunta es que necesito un circuito que comience con 0v y dos gpio pin conectados. Luego, cuando un pin envía una señal digital, este circuito mantiene un voltaje positivo y cuando otro pin se activa (alternativamente), este circuito mantiene un voltaje negativo. Cuando ambos gpio no envían señal, el circuito vuelve a 0v.

¿Alguien puede ayudarme?

¡Gracias!

Lista de componentes:

  • 01 DC Motor 12v;

  • 02 IC 555;

  • 01 ESP8266 (NodeMCU);

  • algunos cables;

Código de prueba simple (Arduino IDE):

const int pinoHorario = 13, pinoAntiHorario = 14;

void setup()
{
        Serial.begin(115200);

        pinMode(pinoHorario, OUTPUT);
        pinMode(pinoAntiHorario, OUTPUT);

        digitalWrite(pinoHorario, LOW);
        digitalWrite(pinoAntiHorario, LOW);
}

void loop()
{
        digitalWrite(pinoHorario, HIGH);
        delay(3000);
        digitalWrite(pinoHorario, LOW);
        digitalWrite(pinoAntiHorario, HIGH);
        delay(3000);
        digitalWrite(pinoAntiHorario, LOW);
        delay(3000);
}
    
pregunta Cayo Fontana

1 respuesta

4

Un ejemplo clásico de 'si tu única herramienta es un martillo, entonces todo problema parece un clavo'. Un 555 no es la opción obvia para un controlador de motor, pero como su salida es buena para +/- 200 mA, y puede ser manipulado como un inversor, ¿por qué no?

En este momento, tienes un diagrama que te da solo hacia delante y hacia atrás. El segundo 555 toma su entrada de la salida del primero.

Cámbielo para que el segundo 555 tome su entrada de un segundo GPIO. Entonces tienes control independiente sobre ambas líneas. Ahora, programando '00' o '11' te da 0v en el motor, '01' y '10' te dan hacia adelante y hacia atrás.

simular este circuito : esquema creado usando CircuitLab

¿Quién hubiera pensado que CircuitLab tenía un símbolo 555 listo para usar? OK, no es una buena. Si no tiene entradas a la izquierda y salidas a la derecha, es preferible un facsímil de las posiciones de los pines al azar, aunque si me entrecierro los ojos, puedo ver algunas posiciones de los pines. Al menos Vcc es superior y GND está en la parte inferior.

¡He aprendido algo hoy! Aquí hay un enlace que describe el uso de un 555 como un búfer de inversión de energía. Una buena característica es que se afirma que tiene una histéresis alta, basada en sus umbrales de conmutación 1 / 3rd y 2 / 3rds, que conserva su estado actual cuando la tensión de entrada está en el tercio medio.

Un comentario en tu código. Mientras que el tuyo economiza en las escrituras para obtener los tres estados 00, 01 y 10, estás depurando, donde la legibilidad y la certeza son todo, y la eficiencia no es necesaria. Yo estaría más inclinado a escribir el bucle como

void loop()
{
        digitalWrite(pinH, HIGH);
        digitalWrite(pinAH, LOW);
        delay(3000);
        digitalWrite(pinH, LOW);
        digitalWrite(pinAH, HIGH);
        delay(3000);
        digitalWrite(pinH, LOW);
        digitalWrite(pinAH, LOW);
        delay(3000);
}

siendo explícito sobre el estado de pin completo antes de cada instrucción de retardo. Puedo ver de un vistazo cuál debería ser el estado del pin, no tengo la carga de trabajo, o el error potencial, de flagelar a través de la lógica del programa para ver lo que aún está configurado desde la última vez.

Los nombres de variables largos ofrecen demasiadas posibilidades de escribir mal el nombre, los más cortos son más fáciles de corregir. Muchas veces he copiado / pegado el código de otra parte, y he perdido mucho tiempo porque no he cambiado todos los nombres que debería, y no lo he visto porque eran tan largos y de apariencia plausible. Por supuesto, para el código de producción, la regla de nombres descriptivos largos, ¡pero esto es depuración!

    
respondido por el Neil_UK

Lea otras preguntas en las etiquetas