A great deal of the robots out there are basically just giagantic remote control contraptions. Some people will argue there is little roboticism about that, but I think remotely operated mechanisms do qualify as robots. After all, imagine a machine capable of extend our human capabilities such as grabbing and seeing, but on places where we just can’t go, like heavily toxic environments or just plain inacessible locations. Nothing better than a remotely controlled robot for these tasks!
I have finally been able to add remote control capabilities to my wheel chair robot project. I have named this robot Cobotrox I. The name Cobotrox goes to about 10 years ago. One day as I was teching my microprocessor interfacing course at the University of Puerto Rico, I needed to provide the class with a password. Our of nowhere I came with c0b0tr0x, so I decided to use the word on future projects. Here we go!
How do we add remote control to a robot? You can either buy every remote control component or you can make it yourself. I opted for a combination of both realms. I bought the transmission part and decided to build the decoding section. The transmitter and receiver are considerably cheap nowadays. You can buy fancy FM RC radios for about $150 new. These have more channels than you will most likely need.
The decoding I have been making for about 10 years with microcontrollers. I have done this project over and over with HC11, AVR’s and now MSP430 microcontrollers. It is very possible I even tried PICs at some point in time, but I am not a PIC lover so I don’t think that went too far. But I am certain a great deal of PICs can easily tackle this application. 80C51’s, ARMs, you name it. If it is a processor, it can do it!
What needs to be done? You need to read the RC PWM coming out of your RC receiver. The previous tutorial should explain how this PWM works. This is vital to understand because the RC PWM contains both direction and speed information. Well, in reality the RC PWM contains position, but we can decode this position to whatever we want to do with it!
The idea is to measure the RC PWM pulse and determine whether the length in time is greater, equal or lesser than 1.5 ms. If it is larger than 1.5 ms, we move the motor forward. If it is less, we move the motor backwards. Once direction is determined, then the magnitude of the speed control PWM is determined as a factor of how much larger than 1.5 ms or how much smaller than 1.5 ms, the pulse is. We do this on a continuous basis and achieve speed control of our DC motors.
Do not be mistaken. You can use this signal to control speed of stepper motors, enable/disable loads such as water pumps, solenoids, lamps, etc, or whatever else you can think of! The information is there; it is all now a matter of doing something with it.
Below I present a flowchart that summarizes what I explained below. If you want to see code, I certainly have the MSP430 code ready to be posted. I may have the AVR code in assembly, somewhere in my backups. I doubt I will ever find the HC11 code, but it is pretty much useless anyway, unless you are getting your flux capacitor busy and need to reconstruct this functionality 10 years ago.