In short, this is a solution to add advanced and fully automated variable fan speed control to a MightyBoard-based 3D printer like the FlashForge Creator Pro. These printers only have a binary toggle for the fan and there is no straightforward solution to upgrade it to variable speed that can be controlled from within a print. I won't say this solution of mine is straightforward, but it surely does upgrade fan control from the crudest possible system to something pretty damn good. Installing and configuring it is not trivial but well worth the effort. If you're interested, download the STL models of this Thing, visit the GitHub page of this project, and get started.
The motivation for this project
I really like my FlashForge Creator Pro but there has always been one thing that kept bugging me, and it was the lack of variable speed for the cooling fan. This got especially problematic after installing an all-metal hot-end upgrade, which for some reason made prints much more sensitive to exaggerated cooling. Also, for some filaments like PETG I noticed that they can best be printed with just a tiny bit of cooling. For practically all filament types the right amount of cooling can help a lot to improve quality while printing overhangs. Most slicer programs do offer advanced cooling that varies the fan speed, but it only works on printers that support it.
Hence I looked for a solution to get real variable fan speed on an FFCP. My first solution was a manual PWM controller, but it is quite cumbersome because you practically need to babysit every print that requires varying fan speeds (which proved to be: every print). I needed a way to control the fan from within the print file itself.
Eventually I found a solution that is a bit unusual because it relies on the printer's buzzer to communicate with a Raspberry Pi which acts as the fan controller. This proved extremely reliable however and allows to add several advanced fan control features. The only downside is that the printer makes some additional sounds during prints, namely a triplet of high-pitched blips will be played at each fan speed change. These are not much more noticeable than the usual printing noises however, and there are ways to mute them if desired.
Go to the GitHub page of this project for instructions and more background information.
If you think I deserve a beer for the effort and engineering that went into this, remember there is a ‘tip designer’ button!
As explained on the GitHub page, it is recommended to print the microphone adapter in a flexible filament of some kind. This makes it easier to push in the electret capsule and attach the adapter to the buzzer. It also helps to dampen vibrations and improve signal-to-noise ratio. You can of course print it in a rigid filament like PLA, but you may need to experiment a bit with scaling the model up or down or line the insides with a bit of adhesive tape to get a perfect fit.
Password authentication can now optionally be configured in the server. Settings (like these credentials) can now be configured in a single configuration file at
/etc/default/mightyvariablefan. See the ReadMe for instructions.