Controlar un motor cc con un pulsador

Llevo mucho investigando y no doy con la clave para poder hacer que un motor gire y pare o empiece a girar al pulsar el pulsador, este es el código que estoy usando:

// Control de un motor DC con un transistor
// Activamos y desactivamos con un sensor digital


int pinPulsador = 8; // Declaramos la variable pinPulsador con el número del pin en qué está conectado


int pinMotor = 9;  //Igual para el pin del motor




int estadoPulsador = 0; // para guardar el estado del sensor


void setup() {
   pinMode(pinMotor, OUTPUT); //Inicializa el pin del motor como salida
   pinMode(pinMotor, INPUT); //Inicializa el pin del pulsador como entrada
   digitalWrite(pinMotor, LOW); //Activamos el estado de reposo para el motor
}


void loop() {
   estadoPulsador = digitalRead(pinPulsador); // Lee el valor del pin del pulsador y lo almacena en la variable pinPulsador
   if(estadoPulsador== HIGH) { // Comprueba el estado del pulsador está pulsado
     digitalWrite(pinMotor, HIGH); // Si es así activa el motor
   } else {
     digitalWrite(pinMotor, LOW); // Si no, lo mantiene en reposo
   }
}

Los componentes que estoy usando son:
-arduino uno
-placa protoboard
-transistor 2N222
-resistencia de 220Ω (rojo, rojo, marrón)
-pulsador
-una resistencia de 10 KΩ (marrón, negro, naranja)

Su publicacion se MUEVE a su ubicacion actual ya que es mas adecuada.

A bote pronto estas inicializando el mismo pin en el setup.

   pinMode(pinMotor, OUTPUT); //Inicializa el pin del motor como salida
   pinMode(pinMotor, INPUT); //Inicializa el pin del pulsador como entrada

Deberia ser

   pinMode(pinMotor, OUTPUT); //Inicializa el pin del motor como salida
   pinMode(pinPulsador, INPUT); //Inicializa el pin del pulsador como entrada
2 Likes

Muchas gracias, tienes razón, pero aun así el motor no gira aunque pulse el pulsador

así es el esquema que estoy usando

¿Como alimentas el Arduino y el motor?

En tu diagrama parece que tienes el motor conectado al transistor en configuración de seguidor-emisor (entre el emisor y tierra).

Debes conectar el emisor del transistor a GND y el motor entre V+ y el colector. Y usar un diodo en paralelocon el motor (con polaridad invertida: el ánodo a V+, el cátodo al colector) para proteger el transistor.

Y es importante verificar lo que pregunta @tresvdoble

1 Like

mediante un puerto USB

Vin es la entrada del regulador de tensión, no es una salida, no puedes tomar tensión de ese pin porque no la hay cuando lo alimentas por USB.

Gracias, ya lo he modificado y aún así no funciona, no da error en el código, pero el motor no se acciona.

Puedes publicar una foto de tu circuito?

Vale. Sin foto nos vamos más despacio.

Cambia la resistencia de 10KΩ por una de 330Ω en la base del transistor.

Ten en cuenta que la demanda de corriente transitoria inicial de un motor es significativamente más alta que la corriente en estado estable (sin carga). Esto puede rebasar la capacidad del puerto USB y dañarlo, además de que como ya indicó @MaximoEsfuerzo Vin no es el pin adecuado para esto. Considera usar una fuente de poder alternativa para el motor, como un paquete de 4 pilas AA o algo similar.

Y no veo que hayas instalado el diodo de kickback. https://www.geeksforgeeks.org/freewheeling-diode/

También debes tener en cuenta que el 2N2222 puede manejar hasta 800mA y no nos has dicho las características del motor que intentas mover.

Entonces coloco el negativo en el GND y el positivo en el 5V

Es un motor normal de arduino, no estoy segura de cuales son los mA con los que trabaja

@carli_66
Te aconsejaria, que primero ensayes solo el motor con unas pilas o con el sistema de alimentación que preveas, comprobando el voltaje y amperaje con un tester, para ver que tipo de: transistor, MOSFET,etc. o lo que creas conveniente dado el consumo y tensión que hayas detectado.

Un saludo !!! ...:cocktail:... :cocktail: