Version 1 of the PCB is being made with OSHpark!
Version 2 of PCB complete!
Version 2 assembled!
With DC motors and encoders, it is possible get continuous rotation position/velocity control. This allows for very precise motion, for example, a differential drive robot will be able to drive straight, or a robot arm can return to the same position each time regardless of load.
However, there aren't many boards that do this control. By exposing the control loop, the parameters can be tuned to the specific application, allowing smooth motion and position with very little jitter.
By having a CAN bus available on this board, it can talk to other similar boards and multiple motors can be linked up into a combined system just by connecting them together.
This lowers the number of connections to a controlling system down to four connections: Power, ground, RX, and TX. This is advantageous for robots with multiple degrees of freedom, which can get quite bulky in terms of communication lines.
Ideas for systems include differential drive robot (2), a SCARA arm robot (4) and a 6 DOF arm robot (6).
While shopping around, I found that I really liked the Micro Metal Gearmotors from Pololu because of their form factor and the many different torque/speed configurations. One way to control these motors precisely is the use of magnetic encoders (which they also sell). With that, the precision you can get down to is theoretically up to the backlash of the gearbox, which is pretty precise for most applications since this is about a degree or so. With encoders, velocity control can be done, which allows for a high degree of precision for robotics.
So I happened on the TIVA TM4C123 from TI. Apart from its impressive specs as a Cortex M4 chip with FPU, it also boasts two hardware Quadrature Encoder Interfaces. Since this is implemented in hardware, the chip itself isn't being interrupted constantly and so is free to do other tasks.
The nice thing is that this chip is also very capable as it is a Cortex M4, so it can do all the motion control for you while you implement a more complex control algorithm or processing intensive task like vision/mapping.
You talk to it over communication channels such as UART, SPI, and CAN, or even an analog signal, so this board is good when paired with other boards such as the Raspberry Pi and nano Pi.
Timeline:
- Get version 1 prototype working with CAN bus, UART and SPI
- Demonstrate control for a robotic system
- Slim down version 1 prototype and produce version 2 prototype
Full code and schematics will be provided as this project progresses so that you can build your own boards.