Hola buenas Quería preguntarles cómo conseguir controlar las rpm de un ventilador (Silverstone FM121) con Arduino Leonardo. Trae dos conectores, uno para sólo leer las rpm (3 pines, sólo se usa uno) y otro para conectar a un potenciómetro (2 pines, positivo y negativo). Quiero controlar mediante software las rpm, en vez de por el potenciómetro. Gracias de antemano!
Supongo que por PWM, usando un transistor para la conmutación (y su correspondiente diodo en inversa en los bornes del motor para reducir lo picos).
No sé si te servirá este enlace de algo:
http://tdrobotica.co/tutoriales/arduino/319-arduino-basico-t21ab-control-por-pwm-de-un-motor
He probado eso y no funciona asi
Entonces, ¿cómo funciona?
O mejor dicho, ¿qué significa para ti que no funciona?
¿Que funciona muy rápido? ¿que funciona muy lento? ¿que ni arranca?
¿qué frecuencia y que duty cycle estás usando para controlar el ventilador?
¿con qué tensión lo estás alimentando?
¿con qué conmutas el ventilador?
Es decir: ¿qué hay entre el ventilador y el arduino?
Un esquemático vendría muy bien.
Además, si buscas por google, encontrarás montones de ejemplo y documentación al respecto.
Otro video interesante:
De todas formas, podría ser que la circuitería interna del ventilador tuviese cierta lógica adicional que hiciese que ese ventilador no se pudiese controlar por PWM y sólo se pudiese controlar con la tensión de alimentación, pero sinceramente ... lo dudo.
El ventilador si no tiene nada conectado al conector de 2 pines que dije en el primer post, va al máximo, y si lo conecto al potenciómetro que trae, puedo controlarlo. Por lo que supongo que habrá que poner resistencia entre esos dos pines.
Lo he conseguido, pero si no lo pongo en el rango mínimo o máximo, suena un sonido extraño en el ventilador agudo. He conectad: pin 3 pwm -> || diodo rectificador -> negativo del conector de 2 pines
el soft es este:
/*
Control por PWM de un motor
Programa que hace uso de un motor y la Consola
serial de Arduino, tiene la posiblidad de
configurar al motor 5 velocidades distintas,
desde el teclado del PC puedes enviarle la
velocidad deseada. Las 5 velocidades se configuran
con 5 PWM distintos.
Cosas de Mecatrónica y Tienda de Robótica
*/
//--------------------------------------------------
//Declara puertos de entradas y salidas y variables
//--------------------------------------------------
int motor=3; //Declara Pin del motor
//------------------------------------
//Funcion principal
//------------------------------------
void setup() // Se ejecuta cada vez que el Arduino se inicia
{
Serial.begin(9600); //Inicia la comunicacion serial Arduino-PC
}
//------------------------------------
//Funcion ciclicla
//------------------------------------
void loop() // Esta funcion se mantiene ejecutando
{ // cuando este energizado el Arduino
// Si hay algun valor en la Consola Serial
if (Serial.available()){
//Variable donde se guarda el caracter enviado desde teclado
char a = Serial.read();
// Si el caracter ingresado esta entre 0 y 5
if (a>='0' && a<='5'){
//Variable para escalar el valor ingresado a rango de PWM
int velocidad = map(a,'0','5',0,255);
//Escritura de PWM al motor
analogWrite(motor,velocidad);
//Mensaje para el usuario
Serial.print("El motor esta girando a la velocidad ");
Serial.println(a);
}else{ // Si el caracter ingresado NO esta entre 0 y 5
//Mensaje para el usuario
Serial.print("Velocidad invalida");
Serial.println(a);
}
}
}
//Fin programa
¿Estás intentando alimentar el ventilador directamente desde un pin del arduino??????
No, tiene un molex que está enchufado a la fuente de alimentación, y a través del conector de 2 pines, si le aplico el máximo de AnalogWrite va el ventilador al mínimo, y si le aplico el mínimo va el ventilador al máximo. Como digo, si no conecto nada del Arduino al ventilador, va al máximo.
O sea, que lo tienes conectado directamente al Arduino: la masa a la fuente y el positivo a la salida de PWM del arduino.
Lo raro es que no hayas fundido ya el Arduino, e incluso que el ventilador llegue a girar.
Espero que al menos la masa sea común.
Primero que esos ventiladores suelen ir a 12V y el Arduino da 5V como máximo. Pero es que además la salida del Arduino nunca la debes conectar a una carga de tan baja impedancia y mucho menos de naturaleza inductiva como un ventilador.
Usa un transistor para conmutar y un diodo en inversa para protegerlo de los transitorios.
Fijate en el primer enlace como usan el transistor. El esquemático se ve mejor en el segundo video.
Lo del diodo y los transitorios viene mejor explicado en:
No, a la salida del pwm del arduino el negativo de los dos pines del ventilador con un diodo rectificador (el positivo no esta conectado a nada). Y aparte la fuente de alimentacion al ventilador.
Lo mismo da que conectes directamente el positivo que el negativo de la fuente. Los buffers de salida del AVR son simétricos.