Jake Wachlin has posted on Hackaday a CAN Controlled Dual Closed-Loop Motor Controller. CAN is an acronym for Controller Area Network. This is a robotic vehicle bus standard designed to enable microcontrollers and devices to communicate with each other’s applications without a host computer. This mechanism is implemented in the CAN controlled dual closed-loop motor controller. This controlled dual closed-loop motor controller can be used for a SCARA robot, control a leg of a robot, and versatile if needed for any motor control. About the project, Jake says “This project aims to develop a low-cost design which can be used for closed-loop control of two micro-gear motors. The current to the motors will also be monitored for current limiting and possible impedance control applications. It can be interfaced over CAN bus, ensuring robustness and scalability in robotics applications.”
During the course of the project, CAN interface didn’t work with the V1.0 dual controller, however, Jake says that a V1.1 update should improve the workings of the controller. Also, the use of JLCPCB as an assembly service and EasyEDA for its clean interface is part of the changes made amongst the following :
- Add a 16MHz crystal to the MCP2515 to fix the CAN issue
- Add pads at logic level CAN TX/RX for debugging support
- Label all external connections on the silkscreen
- Label maximum input voltage
- Add optional CAN 120 Ohm termination resistor with a solder jumper
- Add 3-bit device numbering with solder jumpers to address devices without firmware changes
- The first version just used 0.1″ pitch through holes for the motor and power/CAN connections. On V1.1 I chose actual screw terminal connections so wires don’t need to be soldered permanently in
- Add holes that can be used for mounting
- Add bulk capacitance for the motor controller (doesn’t seem strictly necessary, but not a bad idea to have).
- The assembly service supports a limited number of components and only single-sided SMD parts so are preferable if the assembling can be done personally.