BugBot Out On The Town
A Motor Dual Channel I2C Motor Controller Or Servo Driver
Here we have a small pc board with the ability to be attached as an I2C slave and supply several functions common in robotic systems.
- Each Channel Can maintain the counts for the hardware encoder in that chip
- Each Channel Can control 3 standard PWM signal Servo Units
It is implemented as two separate dsPic30F2010 microcontrollers and this board will run nicely on 3.3V or 5V. Each channel or processor is accessed with an I2C address difference of 1. The A4 jumper allow the board to appear at 7-bit addr base of 0x60 or this address or 0x70 so hopefully we can avoid other I2C devices.
* Each side always has one 16-bit Quadrature Encoder Interface so for fast motors this subsystem does not miss counts but a software solution can. Each channel has a simple led to show encoder is changing as a quick check. Each read over I2C returns a 6-byte packet with checksum where 2 bytes are encoder.
* Each side can use it's 6-signal header in one of 4 ways (Proportional Control so far)
o 6 simple digital input lines
o 3 servo digital PWM lines that supply pulses from 400us to 2.5ms scaled from input
o Load headers for standard 3-pin servo connectors and separate servo power input
o Two PWM 0-100% motor controller lines with PWM and 2 control lines for use as breaking or forward/reverse characteristics to devices such as the High power VNH2SP30 control bits or just use the 0-100% PWM signal at 5ms cycle by itself
The driver board is external and a nice small one is the AdaFruit TB6612 model but the control on other higher power units are similar.
If one side is for servos and one side is for motors you then end up with 2 motors, 3 servos and 2 high res QEI encoders for wheels or whatever.
The board has a header for the programming of the microcontrollers from a programmer like the PicKit-3 and a switch selects which device will be programmed.
Mark-World - Tech Projects To Amuse The Curious