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
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 !!! ......