Versión de circuito de un programa if else simple

He escrito un programa simple que controla dos motores (salidas) cada uno con dos estados (positivo, negativo) con un Arduino. Los estados de los motores se basan en el estado de cuatro botones (entradas) (Arriba, Abajo, Derecha, Izquierda). Solo un botón puede estar activo a la vez.

if( up ) {
    motor1 = positive ; // + 
    motor2 = negative ; // - 
} else if ( down ) {
    motor1 = negative ; // - 
    motor2 = positive ; // + 
} else if ( left ) {
    motor1 = negative ; // -
    motor2 = negative ; // - 
} else if ( right ) {
    motor1 = positive ; // +
    motor2 = positive ; // + 
}

The logic table 

      | Motor1 | Motor2 | 
-------------------------
Right |   +    |   +    |
Left  |   -    |   -    |
Up    |   +    |   -    |
Down  |   -    |   +    |

El programa parece tan simple que creo que debería poder hacer un circuito en lugar de usar un microcontrolador. Usar un microcontrolador parece un desperdicio para una aplicación simple.

He diseñado el circuito derecho e izquierdo y la separabilidad del circuito arriba y abajo tratando de simplificarlo. Ahora tengo que unir estos dos circuitos.

ingrese la descripción de la imagen aquí

Supongo que tendré que usar algunos relés y un "transistor OR" para hacer el circuito fusionado. Pero no estoy seguro de por dónde empezar.

Sugerencias, comentarios o diagramas serán muy apreciados.

Nota: Estos motores se utilizarán en una tabla CoreXY . Creé estos diagramas con CircuitLab

Creo que esto funcionó para un solo motor circuitlab.com/circuit/4p5cgq/screenshot/1024x768
Beam Robotics muestra que se pueden lograr comportamientos motorizados complejos con un puñado de componentes discretos, sin usar microcontroladores ni software. Por otro lado, en términos de circuitos, un circuito integrado de microcontrolador de 8 pines no es especialmente complicado.

Respuestas (2)

Supongo que está utilizando motores de CC con escobillas

Corríjame si me equivoco, pero parece que necesita invertir cada motor de CC de forma independiente para brindarle la funcionalidad básica que necesita, por lo que aquí hay un interruptor de inversión de motor de CC básico: -

ingrese la descripción de la imagen aquí

Se muestra un interruptor DPDT (doble polo y doble tiro). Tiene dos interruptores independientes que se activan mecánicamente juntos; uno tiene tres contactos en la columna de la izquierda y el otro tiene tres contactos en la columna de la derecha. El pin central de cada interruptor es el pin común.

Esto le brinda la funcionalidad básica de reversa del motor y si tuviera este circuito de forma independiente en ambos motores, podría operar los dos interruptores y moverse hacia la izquierda, hacia la derecha, hacia arriba o hacia abajo.

Sin embargo, si desea que 4 interruptores controlen las cuatro direcciones desde (digamos) los botones, tendría que convertir el interruptor DPDT en cada motor en un relé DPDT y tener un poco de lógica de dirección usando diodos de los 4 botones. activando las bobinas de los dos relés.

Suponiendo que el estado predeterminado del relé sin alimentación produce una dirección hacia la IZQUIERDA, la activación del relé 1 provocará un movimiento hacia ARRIBA. De manera predeterminada, encender el relé 2 causará ABAJO y encender ambos relés causará DERECHA. Es posible que también necesite un contacto/relé/interruptor de encendido/apagado.

Usar un microcontrolador parece un desperdicio para una aplicación simple.

Mi inclinación natural es estar de acuerdo. Pero hay otros puntos de vista. Aquí hay un ejemplo de una aplicación igualmente simple que usa un microcontrolador relativamente simple de la misma familia que el de su Arduino.

Ejemplo ATtiny circuito ingrese la descripción de la imagen aquíDesde robotroom.com control de doble ventilador