I really like the modular approach.
So the software will be able to deal with any kind of position/speed oriented motor driver?
Thats correct, its the crux of the design.
Just a thought:
I know that the ways how you can drive motors are numerous (steppers, brushless, DC, servo, …). It would be really nice to see how this is handled in software?
I think there are two ways a motor can be interface:
- speed (positive/negative)
- discrete positioning (steppers & so)
how do you handle this in software?
Or do you restrict it to motors with discrete positioning?
I have limited this board design to DC motor and stepper motors, although it would be possible to do BLDC it certainly isn't optimised for it. Normally such a design is based around discrete driver sections but these complicate BOM and load cost particularly for manufacturing and I wanted a simple low cost solution.
You can however see examples of DC and Stepper software control on Xcore's github repo sw_basic_motor_examples
, but this runs on Xmos' sophisticated discrete motor control board design. The software for MAMC won't be to dissimilar to this really, perhaps a little simpler.
In terms of positioning you can use open loop and/or closed loop, for the closed loop it most likely will involve PWM position feedback but SPI/I2C or even Quadarature can be used. You can also measure velocity using an ADC some diodes and resistors measuring back emf for example. I originally toyed with having that on board but in the end have left it as an optional shield add on whilst keeping flexibility and low cost. This is even more so given the use of the 48 pin L1 to push cost down as low as possible. The L2 versions would be able to have even more bells and whistles, but I wanted the lowest common denominator to develop with and make it affordable for everyone.