Ciao a tutti..
Mi so imbattutto in un strano problema, ho comprato una ventola per pc Nexus D12SL-12 (
http://www.nexustek.nl/NXS-120mm-pwm-fan-ultra-quiet.htm). Questa ha un filo per regolare la velocità (PWM) e un filo per leggere il numero di giri. Come tante altre ventole.
Questa ha un minimo di 500 RPM a un massimo di 2000 RPM.
Avevo già fatto questo con molte altre e leggevo regolarmente il numero corretto RPM, ma con questa ho dei problemi.
Più precisamente, dal minimo al massimo leggo solo una differenza di 300 RPM invece dovrebbero essere 1500 RPM e inoltre non riesco mai a leggere un numero corretto... MIN 3500 massimo 3800.
E' una ventola che ha 4 step al giro.. e il circuito con cui la leggo ha una resistenza pull-up di 10K.
Mi potete dire dove sbaglio ? Tenete presente che con altre ventole più piccole non ho mai avuto problemi.
Questo è il codice con cui leggo i dati tramite un pin analogico dell' arduino.
int fanPulse = A2;
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*4);
Serial.print("freq. (Hz):");
Serial.println(frequency/4);
Serial.print("RPM:");
Serial.println(frequency/4*60);
}
void loop()
{
analogWrite(3,0);
delay(15000);
readPulse();
analogWrite(3,255);
delay(15000);
readPulse();
}
Grazie