Hello, I have a 92MM fan. It is a 4 pin Pwm with Tac on it. At this moment I just want to run the fan flat out and see the speed on it. I searched online and found https://www.digikey.com/en/products/detail/delta-electronics/QFR0912GJ-00P0/21556246?s=N4IgTCBcDaIGwAYDMBaAigMQEoIJwEYwBxAKRQQQAUEUA5AERAF0BfIA this website. I study the schmetic and code But ran into a problem with reading the RPM in serial monitor reads 10006. My fan doesn't go to 5040 thousand RPM. The fan I'm using is 5400 RPM. I'm not sure what to do to read out the correct RPM. The code is listed below. Can someone please help me?
Edit: They also require a 560ohm resistor to go to 3.3v. Also the fan I'm using is from digikey. https://www.digikey.com/en/products/detail/delta-electronics/QFR0912GJ-00P0/21556246?s=N4IgTCBcDaIGwAYDMBaAigMQEoIJwEYwBxAKRQQQAUEUA5AERAF0BfIA
Joseph
//project done by www.theorycircuit.com
//code by Crenn from http://thebestcasescenario.com thank you!
//Varibles used for calculations
int NbTopsFan; int Calc;
//The pin location of the sensor
int hallsensor = 2; typedef struct{
//Defines the structure for multiple fans and
//their dividers
char fantype;
unsigned int fandiv; }fanspec;
//Definitions of the fans
//This is the varible used to select the fan and it's divider,
//set 1 for unipole hall effect sensor
//and 2 for bipole hall effect sensor
fanspec fanspace[3]={{0,1},{1,2},{2,8}}; char fan = 1;
void rpm ()
//This is the function that the interupt calls
{ NbTopsFan++; }
//This is the setup function where the serial port is initialised,
//and the interrupt is attached
void setup()
{ pinMode(hallsensor, INPUT);
Serial.begin(9600);
attachInterrupt(0, rpm, RISING); }
void loop ()
//Set NbTops to 0 ready for calculations
{ NbTopsFan = 0;
//Enables interrupts
sei();
//Wait 1 second
delay (1000);
//Disable interrupts
cli();
//Times NbTopsFan (which is apprioxiamately the fequency the fan
//is spinning at) by 60 seconds before dividing by the fan's divider
Calc = ((NbTopsFan * 60)/fanspace[fan].fandiv);
//Prints the number calculated above
Serial.print (Calc, DEC);
//Prints " rpm" and a new line
Serial.print (" rpm\r\n");
}