DC motor drive

Hi all, I built the following circuit and it did not exactly work as expected... It seems that even with the 100k resistor and the voltage follower (buffer) the circuit draws too much current from the digital pot-meter (in reality controlled with an Arduino board). This device gets very hot and stops working properly. Any clue why there is still that much current flowing to the op-amp input? Any alternative to have the DC motor controlled via the digital pot-meter?

The circuit:

by Circuit_Sandbox
December 25, 2012

Hi Circuit_Sandbox,

there are several things I don’t understand exactly from both, your posting and your circuit, thus I have more questions than answers:

a) What is your “target”, the purpose of your circuit (a “potentiometer” hints to the idea of speed control but the circuit does not).

b) I understand Arduino and motor, but what is a “digital pot-meter” in your case? You say it gets too hot? What, the pot or the Arduino or … ?

c) Too hot means “in reality”, OK, but your virtual circuit is “floating in virtual world”, in reality there is another Op Amp in the same chip, inputs floating? Why use a Op Amp at all (see point a).

Often true: Skip components == skip troubles.

d) Elaborate your “draws too much current”, _which circuit from where? With 100k there’s no chance for too muck current (in your example).

d) It seems the problem basically is not in your virtual circuit (although it’s suboptimal ! ) but in that part which is not in your drawing.

e) Regardless how small the motor would be, DON’T run it from your Arduino’s positive power supply. Be veeeeeeery careful with the current return to ground.

f) The BC547 and 1N4148 are excellent parts but you do not plan to use them in your application, do you?

Regards, Sancho

by Sancho_P
December 25, 2012

I agree with Sancho_P's points here.

And I have some comments too.

Connecting the opamp output directly to the base of Q1 will clamp the opamp o/p to about 0.7V above ground.

It will essentially turn Q1 fully on or fully off rather than give any kind of progressive speed control.

By the time the voltage on the slider of the pot has gone more than about 10% above ground (approx 0.5V) Q1 will be hard on.

That in turn will cause OA2 o/p to go into short circuit current limit. That will then cause OA2 to heat up because it is dissipating (the short circuit limit current * 9V) Watts.

In practice, the real LM358 o/p may not be able to swing down close enough to ground for OA2 o/p to ever get near enough to 0V to actually turn Q1 off anyway.

Depending on you motor, Q1 may be passing too much collector current and may be overheating too.

by signality
December 26, 2012

Hi Sancho_P and signality,

Thanks a lot for you valuable comments! It will take a while for me to grasp it all, but just some answers/comments on your comments above.

The goal of the circuit is to have DC speed control. The digital potentiometer in this case is an MCP4131 that has an SPI interface with an Arduino. And this MCP4131 is the device that heats up.

The reason for me to use an Op-Amp is to have a buffer. Initiall I only used the potentiometer together with the transistor. I hoped that the buffer would solve the high current issue that the potentiometer seems to suffer from.

Regarding point d) of Sancho_P: since the potentiometer is getting hot I had the impression that too much current is going through this chip. Given the 100k resistor this also surprises me.

Regarding the parts used, I checked what actually is on my breadboard. I am indeed using BC547, since I just had this general purpose transistor available. The diode is in fact a 1N4001. What would be better parts to use? And what kind of modifications would you suggest to make the whole circuit a more optimal one?

Btw I'm indeed using a seperate power supply for the motor, even though it is a very small toy motor :-).

Regards, CS

by Circuit_Sandbox
December 26, 2012

Post a Reply

Please sign in or create an account to comment.