Controlling DC motor using 555 IC circuit

I recently acquired a motor control circuit, it is the 555 DC Motor Speed Controller found on anykits.com.

I want to control this using my Arduino. Is there a sensible way to accomplish this, or should I try something else? I am building a small robot which uses two 6V DC motors.

You gotta make up yer mind if you want the 555 controlling the motor or the Arduino.

Remove the 555 from yer kit and power it up with 5v supply sharing ground connection with Arduino. Put a jumper wire from Arduino output pin to empty 555 chip socket pin 3. Write code.

The preceding example will work, but its kinda pointless to use a 555 controller and not use the 555. Why do you not like any of the motor shields that are available for Arduino?

Truth be told, I'm rather new at these things. I was under the impression that you needed some sort of external control device so that you wouldn't run to much current through the Arduino. This kit appeared to be what I needed, but obviously not. I don't have any preferences regarding the use of a motor shield or not, this one was cheaper and I figured I might learn something in the process.

The thing was that this kit used a potentiometer to control the speed of the motors, and I wanted the Arduino to do it.

The thing was that this kit used a potentiometer to control the speed of the motors, and I wanted the Arduino to do it.

You might want to look into how the 555 timer is being used; the 555 is a great introductory chip for electronics; well worth learning.

Likely its being used as an astable multivibrator, with the frequency being varied by the potentiometer, outputting a PWM signal to the motor controlling circuitry (likely a transistor).

Anyhow, the easiest way would be, as suggested, to bypass the 555, and toggle the transistor controlling the motor with the Arduino (using analogWrite). This really doesn't need the entire controller board, though, unless it has some other special characteristics (perhaps it can control high amperage motors?).

Another option (kinda roundabout, though) would be to hook up a digital potentiometer to the Arduino, and the pins of it to where the potentiometer is on the board (removing its current mechanical potentiometer, of course). You would need a digi-pot with the same range as the current mechanical potentiometer, and it would be more complex to control, but it could work...

:slight_smile:

I was under the impression that you needed some sort of external control device so that you wouldn't run to much current through the Arduino.

That's the correct impression: there are some really tiny motors around that you could, theoretically, drive directly from an Arduino, but it's still a bad idea.

As AltairLabs pointed out, you can still use the kit without the 555 by connecting a PWM output to the board. But that will only let you run the motor in one direction, which is probably not good enough for robot purposes. You'll almost certainly want one or more H-bridge drivers.

You need to be careful in picking them: Arduino motor shields tend to use a lot of I/O pins and not have the capacity to drive hefty motors. You may find it preferable to use one of the serial or I2C controllers from someone like Pololu.

Sorry for the late feedback!

I did as suggested and soldered a cable directly from pin 3 on the PCB to the Arduino, and sent pwm-signals to it, and the motor turned! Thanks a lot!

It did not appear at first glance if the speed changed as I cranked up the voltage, maybe I did it wrong.

Anyhow, I'm thinking of redesigning the whole thing and constructing a few h-bridges instead, since as of now my robot can only go forward. A bit of a bummer that is.

This is likely totally irrelevant, and I don't know what a anykits.com speed controller does or how it is designed, but a linear 555 has the interesting capability of both sourcing and sinking up to 200 mA and its output is a nifty half H-bridge. I have heard of circuits exploiting this and using a 555 for its driver properties.