On my journey to cut aluminum on my CNC as fast as possible, I’ve come to realize that coolant flow and chip extraction are the limiting factors for my machine (a Fadal 3016). I wanted to make sure the coolant always is hitting the tool at the ideal place, but don’t want to have to constantly pause the machine to move the nozzles to adjust for different length tools. Moderns machines have features like built in servo coolant nozzles, high pressure coolant pumps, and through spindle coolant to solve this and older machines generally can be retrofitted. Since these kits are worth more than my machine, I decided to build my own, plus I figured I would build something better with a web interface (instead of a small LCD screen) and I could sniff the command traffic to determine how to aim the nozzle at any given time.
The code is posted on my github. The servo control, signal monitoring, and webserver are a go program that runs on the RPi. The web interface is written in typescript with React and React Bootstrap components. There is also a serial tapping program (written in go) that runs on the control computer and connects to a chrome browser serial port to report the sniffed traffic. The RPi has a CI/CD script to automatically update the code and site on a git push.

