The general idea behind this project is to create a remote controlled car that is controlled by a TV remote. The car should be able to go forward and backward as well as turn both left and right and stop on command. Depending on the time available I may also add speed control. I also want to power the Arduino and motors with a battery rather than tethering it to power cables. There are a number of challenges in this project. The first being interpreting the IR signal sent out by the remote. An IR receiver diode is needed to convert the signal from light pulses to electric ones. Then the pulses must be interpreted to discern which button on the remote has been pressed (I plan to do this on the Arduino). Another challenge is creating the vehicle's chassis. I plan to build a very simple rectangular frame out of aluminum angle to accomplish this part of the project. The only other major part of the project is creating the drive and steering system. My plan for this is to use two DC motors to both drive and steer the car. This design requires the car to be front wheel drive with a single rear wheel that can turn freely. When the car is told to turn one of the motors will simply slow down or stop while the other continues to turn causing the vehicle to turn. Because I want to use DC motors I'm going to need a motor controller chip that can change both the direction and speed of the motors. My intension is to use the FAN8082 which was documented for the midterm project.
2/22/11: Started trying to figure out what the output of the IR receiver diode looked like for some of the buttons on my remote. I did this by attaching the signal out lead of the diode to an oscilloscope and capturing the output which looked like this.
From what this picture it seems that my remote uses pulse distance code, meaning that the length of time between the pulses determines if the pulse represent a one or a zero. I also figured out the first part of the code holds the device address, which is irrelevant to me, and the last 6-8 pulses represent the command being sent. Based on this information I stared writing some Arduino code to read the commands but it didn't really work.
2/25/11: Recieved the FAN8082 chips I ordered from Jameco
3/6/11: Found some 3-6V DC motors around my house that i think will work nicely. I added Lego shafts to the motor's drive shafts so I can use Lego wheels (which I have) to avoid buying more stuff.
3/8/11: Built the chassis for the car and attached the motors and wheels but forgot to take pictures. I tested the motors using a 6V power supply and quickly realized they did not have nearly enough torque to move the car. I went out and got some DC motors from Radio Shack but they did not have enough torque either. I though of using gears to increase the torque but decided it was to complicated.
3/10/11: Built the IR reciever circuit.
3/12/11: Found some bigger motors but they run on 12v which adds some complexity to the project but I think this is the best way of fixing the problem. Because the new motors were bigger in diameter I couldn't use the Lego wheels so I order some larger ones from Sparkfun.
I had to modify the car's chassis to fit the new motors and I remembered to take a picture this time.
3/16/11: Recieved the wheels today so i was able to put the whole thing together.
3/23/11: After a frustrating few hours I came to the conclusion that the FAN8082 chips can not power 12V motors despite the fact that the data sheet says the chip can run on up to 18V. This revelation meant I had to find a higher power motor controller.
3/28/11: After researching a number of methods of motor control i decided to go with an H-bridge controller which I bought from Digi-Key.
4/7/11: I got the new controller chips and I have been working with them all week but I can't seem to get the motors to do what i want. I think the problem is that the motors have their own speed control which makes them only go in one direction which I cold live with except the way the motors mount on the chassis mean that they are going in opposite directions so all the car could do is spin in circles. So basically I can't use these motors so I'm going to get some servos from Sparkfun.
4/16/11: Wrote the code to interpret the IR codes today which turned out to be easer then I expected. I used the Arduino command PulseIn to get the length of the high pulses to determine if the pulse represented a one or a zero. One difficulty I did run into was that some of the pulse lengths fluctuated from one button press to another even if you pressed the same button. It took some time to work around this problem and the workaround meant that i couldn't use some of the buttons on the remote but I don't think thats a big problem.
4/23/11: I got the servos so I started to modify the chassis and wheels to work with them. I filled the hub of the wheels with hot glue to create a surface to screw the servo attachment to.
I also had to make some slight modifications to the chassis to fit the servos and this is what the finished product looked like.
I also wrote the Arduino code to convert button presses into movements and wired up the Arduino. I still have some bugs to work out and if i have time I'm going to switch the bread board for a prototype board but other then that the toy is complete.