Jorj's home page: Technophilia

IR-controlled car

Around 1999, I received a little remote-controlled car as part of a work-gift-exchange. It didn't work well, and I wound up canibalizing it for parts. I couldn't quite bring myself to throw out the plastic base with wheels and motor. And now my son's glad.

For a few months he's been playing with the base with a couple AA batteries hooked directly to the motor. He calls it "the black car" and loves to watch it run in to stuff. Of course I couldn't leave well enough alone.

From the junk box, I put together a simple IR receiver that runs the base. Now he can point any remote control at it and watch it zoom. Forward only. For now...


From a previous project, I had an Altoids gum tin with a small voltage booster circuit. (The tin is visible in that link, and there's another tin holding the control circuitry on the other side of my head. But that's not pertinent to this project.) I scavenged the tin and used its Maxim 756 circuit as my starting point.

I figured that I'd need three reasonably simple components:

IR demodulator

This type of IR demodulator receives any 38kHz-modulated standard remote and turns it into a nice binary stream of data. The problem is that these old devices are very fussy once you put them in real-world conditions. I've made a number of projects with them, and every time I wind up wasting an incredible amount of time trying to make them quieter. The false-positive demodulation rate is relatively high. For IR receivers with PIC back-ends, you can filter out the bad data in the firmware. But for this project I wanted the demodulation stream to trigger an intermediate buffer circuit, which would then hold the motor "on" for some period of time. This way Jake could point pretty much any remote at it and watch it go.

To keep the IR detector happy while the motor is running, I had to filter the power supply more heavily than usual (1000uF) and decouple the power feed from the demodulator through a 100 ohm resistor. In ambient light, there are still false positives but not nearly as many as I had initially seen.

The output of the demodulator runs through a metal-can 2n2222 NPN transistor. I have lots of these sitting around; a TO-92 plastic case would also be fine. As would any general-purpose NPN transistor.

motor driver

Simpler is better, and for the driver I grabbed the first power transistor I found in my junk box. It's a TIP31 PNP power transistor, and would run a more substantial motor. But the 5V boost circuit doesn't source enough current to run the motor, so the 2-AA battery compartment is used as the collector source here. The emitter is wired to the motors, and the base is controlled from the sample and hold buffer.

I played with current-limiting resistors and filter tank circuits and decided that, with 2 NiMH AA batteries as the source, there wasn't much damage to be done to either the TIP31 or the motor at start-up, or even if the car runs in to a wall but continues to run. Some tests showed that I could heat up the TIP31 enough to make it uncomfortable but not much more than that. I also didn't have a ~2 watt 1 ohm resistor sitting around, so I opted to leave out filters and the typical current-limiting resistor.

sample-and-hold buffer

I decided to use a 555 timer as a monostable multivibrator. As long as the timer is tuned such that it lasts as long as the repeat rate of the remote, it should continue to properly bias the motor driver and run the motor at a rate approaching continually.

The only real problem is that the output of the 2n2222 wasn't reliably triggering the 555. I decided to take the simple route and put a couple of inverting buffers between. I had an old 7404 (hex inverting buffer) sitting around and used 2 of its buffers, ganged together. It's a hack, but it's also for a toy that will have a life span of about two months!

Initially, the delay period for the 555 timer was about a half second. All of our remotes worked, but false positives from the IR detector were enough to make the car move. I dropped to a 4.7uF capacitor (from 47uF), which reduces the time constant to about .047 seconds; false positives make the car shake a little, but it doesn't move. Unfortunately it also means that many of our remotes can't make the car move either, as they don't repeat fast enough. But I've got one (two, if you press the buttons fast enough) and there's probably a middle ground solution.


I've got a hand-drawn one that I need to scan and import. Or something. Stay tuned...