I just designed a circuit to control the speed of an ordinary AC brushed motor (if you must know the details, it's a Milwaukee 3.5HP router).
Anyway, the thing is that this router has an excellent speed controller that works by monitoring a resolver installed at the top of its shaft. The controller allows one to adjust its speed in the range of 10,000 to 22,000 RPM.
The reason why I had to build my own circuit is that I need it to work at speeds of between 300 and 1,500 RPM. The circuit I designed uses a single TRIAC and I control the speed by using two separate MCU's. The first MCU reads the router's resolver using a hall effect sensor (which generates 24 divisions per revolution) and reports a 6-bit number representing the motor's actual RPMs to the second MCU, which is in charge of triggering the TRIAC at a calculated phase-angle.
The system works reasonably well when there is no load involved. That is, RPMs are nice and smooth when the router is idle and not cutting anything. But it seems that the algorithm I wrote to increase or decrease the TRIAC's triggering angle is too primitive. The router's RPMs become unstable under load, and it leaves ugly marks on the material being cut.
Is there a simple algorithm out there that I could implement in the MCU's programming to improve the router's performance?
Anyway, the thing is that this router has an excellent speed controller that works by monitoring a resolver installed at the top of its shaft. The controller allows one to adjust its speed in the range of 10,000 to 22,000 RPM.
The reason why I had to build my own circuit is that I need it to work at speeds of between 300 and 1,500 RPM. The circuit I designed uses a single TRIAC and I control the speed by using two separate MCU's. The first MCU reads the router's resolver using a hall effect sensor (which generates 24 divisions per revolution) and reports a 6-bit number representing the motor's actual RPMs to the second MCU, which is in charge of triggering the TRIAC at a calculated phase-angle.
The system works reasonably well when there is no load involved. That is, RPMs are nice and smooth when the router is idle and not cutting anything. But it seems that the algorithm I wrote to increase or decrease the TRIAC's triggering angle is too primitive. The router's RPMs become unstable under load, and it leaves ugly marks on the material being cut.
Is there a simple algorithm out there that I could implement in the MCU's programming to improve the router's performance?
