Fan Calibration Resolution

JI recently upgraded to V2, and noticed that my exhaust fan setpoint RPMs had increased. So I decided to check if anything changed with the calibrated setpoints. Well, it turns out the calibrated setpoints were hosed, with everything below F7 throwing an A-01 error.

I recalibrated the fan, which solved the A-01 error. I then decided to look at the new V2 setpoints compared to my old V1 to find suitable replacements for my profiles.

What I noticed is that the fan RPM setpoints are always divisible by 10 RPM, compared to before, when the setpoints showed differences down to 1 RPM. Not a big deal or an issue.

Another thing I noticed was some weird incremental increases in setpoints for the calibrated setpoints… here is what I am seeing… as you can see, setpoint 5 increases by 300 RPM after an increase of 180…

Can we have a calibrated fan curve that is linear, or even better…parabolic?

The smaller incremental increases at lower settings of a parabolic curve would give better control, whereas the increments below…240-240-180-300-180 seems less than ideal for good control. Even a linear fan curve would be more predictable than the current calibration.


Ave low high Delta
F1 630 600 660
F2 870 840 900 240 38%
F3 1110 1080 1140 240 28%
F4 1290 1260 1320 180 16%
F5 1590 1560 1620 300 23%
F6 1770 1740 1800 180 11%
F7 2010 1980 2040 240 14%
F8 2250 2220 2280 240 12%
F9 2490 2460 2520 240 11%
FA 2730 2700 2760 240 10%
FB 2970 2940 3000 240 9%
FC 3390 3360 3420 420 14%
1 Like

Something like this?

FWIW, my calibrated speeds are slightly different (April 2020 V2, fw 553, RT 2.5.5 stable):

bulletFanSpeed bulletFanSpeed

These are measured on a cold, empty machine after running calibration several times (due to user inexperience) with the chaff collector and filter removed. This clearly shows that the calibration feature was a very good idea, nice work guys!

  • Brad

It is trying to calibrate so that each step increases the RPM by 200 - with the chaff collector detached… So F1 = 600, F2 = 800… This will change somewhat when you attach the chaff collector and other factors can affect it. The plan is to make it unnecessary to even calibrate by using a PI controller, but this is still in the works.

Thanks Jacob. I’ll see what the calibrated values look like without the chaff collector attached


When I monitor blower fan speeds, why does it only change in increments of 60 RPM? Previously it did not, and the spread between low and high fan speed at each setting was only ~25 RPM. Now it’s always exactly 60 RPM, which implies that both precision and accuracy of the readings are worse.

That is weird. Do you have the exact RPM numbers at different settings?
Also is this the same when the Bullet is completely cooled down and during roasting?


I believe this is the case whether cool or heated, but I will verify.

During calibration, I see the same thing, where the values only change in increments of 60 RPM as the fan ramps up through the setpoints.

These are the readings I took yesterday afternoon while in roast mode with P0. Values in green are what I was reading. Even as the values change in the info panel, it only changes in increments of 60.


I preheated the bullet and started a roast…fan speeds still only changed in increments of 60… I also noticed that ‘coil fan’ and ‘coil fan 2’ also only changed in increments of 60.


So internally we’re reading a sensor in revolutions per second, saving the data in integer format, and converting to RPM for display? Either way, sensitivity of 1 revolution per second seems adequate to me.


I’m glad your happy with it… but what your saying makes no sense. Why would you round or truncate an intermediary value…all you are doing is reducing precision and accuracy, and introducing error.

As an example at F2, currently I see 840 and 900 RPM. At F3, I see 1080 and 1140. So the range of potential fan speed increase is 20%-36%…the high end is almost double the increase compared to the low end!

Compare that to what I used to see… F2 values of 1024 and 1038, F3 values of 1249 and 1265 for a range of increase of 20%-24.5%.

Ok, I understand what you mean now. I thought you were talking about the delta between each setting but you are talking about the resolution.
To be honest I don’t remember why it has the resolution of 60, but the new V2 boards are now responsible for calculating the RPM, this used to be done by the control board. This information is the sent to to the control board, then to RoasTime.
When I get more time I will look into this.

I don’t think its a RT thing…seems to me it must be firmware related. I can watch the fan speeds on the Bullet display while its calibrating, and the speeds indicated in the time display only change by 60 RPM.

1 Like

RPM and CFM do not have a linear relationship. Example 25% of maximum RPM does not equal 25% of maximum flow, same for 30%, 35%, etc. If you google “fan curve”, you will see what i mean. If Aillio can get a fan curve for the bullet, its possible that we can determine what RPM equals the various airflows we would like for each fan setting (F1 - F9). There are several variables which make this a challenge, but at least each step (F3 to F4 for example) would provide a consistent airflow increase or decrease.

I realize that rpm<>cfm. But the Bullet currently does not provide any other form of data regarding fan performance.

In any case, this weekend I’ll be measuring linear air speed of the exhaust as a proxy for flow rate. Air speed will scale the same as flow rate since the only difference would be the cross-sectional area through which the air travels.

Based on this data, I’ll have a better sense of what the actual incremental changes in air flow will be for the setpoints. I suppose I would even be able to calculate the fan curve you mentioned.

At this point, the RPMs aren’t even accurate anyways, since the values change by 60 rpm.

I like where your head is! Do you have a pitot your using?

I don’t have a pitot tube…I’ll be using an anemometer I purchased on AMZN a while back when I was testing fans for exhaust and cooling.