You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I used an eighty-millimeter fan in my build in stead of the prescribed sixty-millimeter one. It accelerates slower and has a lower nominal rpm, 2000 verses 4000.
My investigations to find a solution
In the Fan.cpp file, I found the relevant functions and parameters; please correct me if I am wrong here.
The fan-test part of the self-test, function fan::test(), measures switches the fan on full speed and measures rpm after 250 ms. The measurement time is 25 ms (line 153 of original fan.cpp). In this period the speed signal must make a full cycle to be valid every time. That means at least 1200 fan rpm.
Furthermore, in function fan::tick(), the measurement time is 50 ms for a full cycle. Here fan speed lower than 600 rpm causes a fault condition during fan operating condition (line 241).
My suggestion
Since there already exits a parameter FAN_NOMINAL_RPM, make use of this to control the measurement times. Introduce a new static variable dependent upon FAN_NOMINAL_RPM. Value could be 100000 / FAN_NOMINAL_RPM. Just take care that FAN_NOMINAL_RPM is not zero. Replacing the number 25 in test() with this and 50 in tick() with 2*this will clear the issue, FWIW.
Tested
I did an adaptation of original fan.cpp file and 're' defined FAN_NOMINAL_RPM to 2000 in conf_user.h. This works for my build.
Included a zip containing copies of my modified files, for reference. Fan.zip
The text was updated successfully, but these errors were encountered:
Expected behavior
Self-test should be passedActual behavior
Two out of three times self-test gives "Fan fail"How to reproduce
I used an eighty-millimeter fan in my build in stead of the prescribed sixty-millimeter one. It accelerates slower and has a lower nominal rpm, 2000 verses 4000.
My investigations to find a solution
In the Fan.cpp file, I found the relevant functions and parameters; please correct me if I am wrong here.
The fan-test part of the self-test, function fan::test(), measures switches the fan on full speed and measures rpm after 250 ms. The measurement time is 25 ms (line 153 of original fan.cpp). In this period the speed signal must make a full cycle to be valid every time. That means at least 1200 fan rpm.
Furthermore, in function fan::tick(), the measurement time is 50 ms for a full cycle. Here fan speed lower than 600 rpm causes a fault condition during fan operating condition (line 241).
My suggestion
Since there already exits a parameter FAN_NOMINAL_RPM, make use of this to control the measurement times. Introduce a new static variable dependent upon FAN_NOMINAL_RPM. Value could be 100000 / FAN_NOMINAL_RPM. Just take care that FAN_NOMINAL_RPM is not zero. Replacing the number 25 in test() with this and 50 in tick() with 2*this will clear the issue, FWIW.
Tested
I did an adaptation of original fan.cpp file and 're' defined FAN_NOMINAL_RPM to 2000 in conf_user.h. This works for my build.
Included a zip containing copies of my modified files, for reference.
Fan.zip
The text was updated successfully, but these errors were encountered: