You are on page 1of 8

How To Radio Control DC Motors Cheaply

What Is A "VEX"?
For the people who don't know what a "VEX" is. It is a company that sells robotic parts and kits. They sell a "VEX" transmitter and receiver on their site for $129.99 but you can get a "VEX" transmitter and receiver for about $20 on "Ebay" and many other places. The "VEX" transmitter is a 6 channel FM transmitter with 2 joysticks that can go up & down and from side to side. On the backside of the transmitter there are 4 buttons which control channel 5 and channel 6. The transmitter controls can be set to tank-style or arcade-style. The transmitter has a host of other features.

This makes it a very cheap way to remote control servos. The only problem is that you can only control servos motors and you need to buy an expensive $149.99 "VEX" microcontroller just in order to do that. That is until now!

BUYING The Motor Interface Chip To buy the Motor Interface Chip used in this article send the money thru PayPal to the e-mail address: areaperson@hotmail.com If Being Shipped Within The U.S. The cost of the chip is $14.95 + $2.00 S/H = Total $16.95 If Being Shipped Outside The U.S. The cost of the chip is $14.95 + $3.00 S/H = Total $17.95

How It All Works
This low cost "motor interface chip" can decode the signals from the "VEX" receiver to control up to 8 motor's H-bridges and 1 driver. It can also receive commands from another microcontroller chip to control the motors.

This interface chip uses 3 output pins to control a motor's H-Bridge. Two pins to control the motor's direction and one pin to control the motor's speed by using P.W.M. The chip uses the input from the two buttons on channel 5 to control the input from the "VEX" transmitter left joystick so that it can control 6 motors. The chip uses the input from the other 2 buttons on channel 6 to lock in the high or low output on pin 14 of the motor interface chip. The motor interface chip has the following features. These features may not work since a receiver may pick up a signal from anywhere. We assume no responsible directly or indirectly from using these parts. WARNING! NEVER USE THE REMOTE ON A ROBOT THAT CAN CAUSE DAMAGE IF IT GOES OUT OF CONTROL. If your robot goes out of transmitter range; the motor interface chip may shut down the motors and give control to a microcontroller if your robot is using one. This may also be true if you turn your transmitter off. The motor interface chip does not use a serial port to communicate with other microcontrollers. This means you can use a very inexpensive microcontroller chip to be the brains of your robot. Putting a low on pin 2 will cause all the motors to operate at half the power level when using the transmitter.

How To Hook Up The VEX Reciever To The Interface Chip
Motors, relays and power supplies will cause radio interference; so pick a spot on your robot where the "VEX" reciever is far away from these things. I mounted mine on a 43 in. long mast that was attach to the robot's base. The "VEX" reciever comes with a yellow cable. Plug the cable into the "VEX" reciever, the other end of the cable plugs into a telephone handset jack. You must buy the jack. Since I will not know the colors of the wires coming out of your jack; I will referent the yellow cable wires. If you look at the yellow cable you will see 4 wires which are yellow, green, red and white. The yellow wire gets wired to + 5 volts. The green wire is the signal and it gets wired to pin 6 on the interface chip. The red wire gets wired to ground. The white wire is not used. You need to wire a 4.7 K pull up resistor from pin 6 on the Interface Chip to the + 5 volts. You will also want to wire a 2200 uf capacitor across the power wires close to the "VEX" reciever. Pin 2 is an input pin. It must be wired and NOT left floating. It can be wired to + 5 volts or ground thru a 47 ohm resistor. It can also be wired to pin 14. Option 1: pin 2 high will give the full range of power to the motors. Option 2: pin 2 low will give half the range of power to the motors. Option 3: pin 2 wired to pin 14. When channel 6 top button is pressed it gives the full range of power to the motors. When channel 6 bottom button is pressed it gives half the range of power to the motors. NOTE: If you do NOT plan to run the robot from a computer or microcontroller then you need to wire a 1K ohms resistor to + 5 volts and the other end of the 1K ohms resistor goes to pin 7 & 33.

How To Hook Up A Microcontroller To The Interface Chip
Your microcontroller if you are using one can communicate with the Interface Chip over 3 wires. Pin 7 on the Interface Chip is the input for the data bit. When the pin is low it is a zero data bit. When the pin is high it is a one data bit. Your microcontroller must output the data bit before the clock pulse. The data bit must be at least 40 us long. Pin 33 on the Interface Chip is the input for the clock bit. Your microcontroller must output a high pulse for at least .5 us. Pin 5 on the Interface Chip is an output pin. When this pin goes high it is to let your microcontroller know that it is ready to receive the next command. This pin will go low if the Interface Chip is getting a signal from the "VEX" transmitter. This pin will also go low and stay low if there was a communication error between your microcontroller and the Interface Chip. Pin 4 is an output pin. If there is a communication error between the Interface Chip and your microcontroller, this pin will go high and stay high . A reset must be done in order to clear this error.

List Of The Commands
There are 32 commands that the interface chip understands. All the commands are 3 bytes or 24 bits long. The format for the commands are as follows. The 1st byte that is sent is always the command byte which is the left most number on the list below. The 2nd byte sent may be a PWM byte. It is a number between 0 and 50. When a 0 is sent the P.W.M. pulse is low which means the motor will be off. When the number 50 is sent the P.W.M. pulse is high which means the motor will be on at full power. When the number 25 is sent the motor will run at about half power. As seen on the list sometimes the 2nd byte is just 0 which is being used just for a place holder. It has no affect on the motor. The 3rd byte sent may be a PWM byte or an error checking number. For example: To order motor 1 to go at full speed and motor 2 to go at half speed forward, the command would be. 1 50 25

To order motor 7 to go backward at 10% power, the command would be. 16 5 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 Motor 1 & 2 forward, PWM #, PWM # (no error checking) Motor 1 & 2 backward, PWM #, PWM # (no error checking) Motor 1 forward, PWM #, 3 Motor 1 backward, PWM #, 4 Motor 2 forward, PWM #, 5 Motor 2 backward, PWM #, 6 Motor 3 forward, PWM #, 7 Motor 3 backward, PWM #, 8 Motor 4 forward, PWM #, 9 Motor 4 backward, PWM #, 10 Motor 5 forward, PWM #, 11 Motor 5 backward, PWM #, 12 Motor 6 forward, PWM #, 13 Motor 6 backward, PWM #, 14 Motor 7 forward, PWM #, 15 Motor 7 backward, PWM #, 16 Motor 8 forward, PWM #, 17 Motor 8 backward, PWM #, 18 All motors speed, PWM #, 19 Motor 1 & 2 speed, PWM #, PWM # (no error checking) Motor 1 & 2 stop, X, 21 (pins low) Motor 1 stop, 0, 22 (pins low) Motor 2 stop, 0, 23 (pins low) Motor 3 stop, 0, 24 (pins low) Motor 4 stop, 0, 25 (pins low) Motor 5 stop, 0, 26 (pins low) Motor 6 stop, 0, 27 (pins low) Motor 7 stop, 0, 28 (pins low) Motor 8 stop, 0, 29 (pins low) All motors stop, 0, 30 (pins low) Pin 14 high, 0, 31 Pin 14 low, 0, 32

Pin Summary
Input Pins Pin 1 Pin 2 Pin 6 Pin 7 If it goes low it does a rest (MCLR) If low it only gives one half of the output to the motors "VEX" receiver commands and data from another microcontroller

Pin 33 Pin 11 Pin 32 Pin 12 Pin 31

data interrupt + voltage + voltage ground ground Output Pins

Pin 34 Pin 35 Pin 36 Pin 37 Pin 38 Pin 15 Pin 16 Pin 17 Pin 18 Pin 23 Pin 24 Pin 25 Pin 26 Pin 19 Pin 20 Pin 21 Pin 22 Pin 27 Pin 28 Pin 29 Pin 30 Pin 8 Pin 9 Pin 10 Pin 14 Pin 5 Pin 4

P.W.M. for motor 1 High when joystick 1 is left High when joystick 1 is right P.W.M. for motor 2 High when joystick 2 is up High when joystick 2 is down P.W.M. for motor 3 High when joystick 3 is up High when joystick 3 is down P.W.M. for motor 4 High when joystick 4 is left High when joystick 4 is right P.W.M. for motor 5 High when joystick 3 is up and top button 5 is press High when joystick 3 is down and top button 5 is press P.W.M. for motor 6 High when joystick 4 is left and top button 5 is press High when joystick 4 is right and top button 5 is press P.W.M. for motor 7 High when joystick 3 is up and bottom button 5 is press High when joystick 3 is down and bottom button 5 is press P.W.M. for motor 8 High when joystick 4 is left and bottom button 5 is press High when joystick 4 is right and bottom button 5 is press Stays high when top button 6 is press; goes low when bottom button 6 is press Tells other microcontroller it can send the next command Goes high if a command error has been detected

All the other pins are not being used.