He conectado mi pin pwm a mi arduino como en este tutorial
Estáfuncionandocorrectamente.Puedoleeryconfigurarlavelocidadutilizandounbocetodeestesitioweb:
int fanPulse = 0;
unsigned long pulseDuration;
void setup()
{
Serial.begin(9600);
pinMode(fanPulse, INPUT);
digitalWrite(fanPulse,HIGH);
}
void readPulse() {
pulseDuration = pulseIn(fanPulse, LOW);
double frequency = 1000000/pulseDuration;
Serial.print("pulse duration:");
Serial.println(pulseDuration);
Serial.print("time for full rev. (microsec.):");
Serial.println(pulseDuration*2);
Serial.print("freq. (Hz):");
Serial.println(frequency/2);
Serial.print("RPM:");
Serial.println(frequency/2*60);
}
void loop()
{
analogWrite(3,20);
delay(5000);
readPulse();
analogWrite(3,50);
delay(5000);
readPulse();
analogWrite(3,100);
delay(5000);
readPulse();
analogWrite(3,200);
delay(5000);
readPulse();
analogWrite(3,255);
delay(5000);
readPulse();
}
Me parece que solo puedo ingresar valores superiores a 127 y valores inferiores a 127. No hay pasos entre ellos. El ventilador no girará más lento cuando vaya de 126 a 0 o de 128 a 255.
Algunos resultados que obtengo:
100:
pulse duration:19058
time for full rev. (microsec.):38116
freq. (Hz):26.00
RPM:1560.00
0:
pulse duration:19160
time for full rev. (microsec.):38320
freq. (Hz):26.00
RPM:1560.00
127:
pulse duration:9032
time for full rev. (microsec.):18064
freq. (Hz):55.00
RPM:3300.00
255:
pulse duration:9151
time for full rev. (microsec.):18302
freq. (Hz):54.50
RPM:3270.00
¿He cometido algún error o es posible que mi ventilador no acepte valores precisos? ¿Puedes recomendar alguno de los 4 ventiladores con cable que podría usar para esta o alguna otra forma? Pensé en usar un SG2524N para controlar un motor de dos cables, pero no tengo experiencia con esto. Gracias por tu consejo.