In the past, I have equipped three mills with stepper motors, and made my own 3-axis 5A/winding motion control hardware (quite a nice piece, because it fits on a 100 x 80 mm board and requires nothing but a computer with a USB port and a potent power supply). Maybe I'll write a blog about it someday as well...
With the availablitiy of low-cost high-performance brushless motors, I decided to say goodbye to the stepper motor aera, and so I am now working on a closed loop brushless motor control. It should serve as a servo controller for my CNC machines, but with significantly improved dynamics in comparison with stepper motors. On my BF70 mill - for instance - I reach a maximum speed with stepper motors of about 3 mm/s. I intend to boost that to about 70 mm/s with the brushless motor control. Also I decided to make the hardware ready for advanced RC-users.
The (theoretic because yet untetsted) limits and specifications of the controller are:
- 100 A peak motor current
- 40 V DC supply (maximum of 100 V if different FETs are used)
- SVPWM (Space-Vector-Pulse-Width-Modulation) of up to 100 kHz with 16 bits resolution
- 10-bit current sensing at each driver (also of negative currents that will be conducted by the freewheeling diodes)
- Hall-type angle sensing with (hopefully) 10 bit resolution (per turn)
- End-/reference-switch(es) support
- IIC bus for additional sensing/IO/control
- SPI as a main control bus
- USB (virtual COM-port) for secondary control, parameter setting, and debugging (on a separable doughter board)
Here is a snapshot of the layout. I do not plan to give out the layout or the schematics for free, so please do not ask unless you have a business model in mind.
Features I have implemented or plan to implement in software:
- Motor current regulation
- Closed-loop motion control - and yes, I mean by that positioning with an accuracy below 1°
- Regulation algorithms starting with straightforward PID control
- Self learning of the motor and drive train (number of poles, inductance, current, momentum of inertia, friction, ...)
- Self configuring of the parameters of the motion controller
- Motion trajectory generation (ramp-up/-down, ...)
- RC-type interface (pulse-width) for speed control (drive train)
- RC-type interface for positioning (using the BLDC-Motor as a servo