Let's Make Robots!

Dagu Gear Motor Pain

I have been flumoxed by a motor issue recently, and was wondering if others had some strategy dealing with it successfully.

I have a Dagu GA25Y370 133 RPM 6V DC gear motor.  I've connected it to an BBB Arduino clone through some TIP 122 transistors.
To get the motor to start turning I have to go to nearly 100% duty cycle on the PWM.  This is undesirable, as I would like fine control at low speeds.
The motor turns rapidly once started.  After starting, PWM can be used to control it down to about 55% PWM.

Thinking this might be a problem with lack of current I put a huge cap on the power rails, and connected it to a computer power supply.  
Regrettably, this did not help.  I also tried with 9V DC, this moved the starting PWM lower (about 80%) but at 9V DC the speed was equivalent or faster than 100% 5V.
Maybe doubling up on the Transistors?  Although, I find it strange the current transistors are not even getting warm to the touch in all the experimentation so far.  I don't have any FETs currently, so that is not an option.
I'm trying to "fix the problem at the source".  But, at the moment, I can only think of a programming strategy that sends 100% PWM to the motor the amount of time just to get it started (however long that is), then quickly drops the PWM down to 50%.  Yarrgh...
Any idea's welcomed.


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

I want to assume the gearmotors are greased, but that can make a world of difference.

Do you have a similar motor?

I have mico metal gear motors and plastic solarbotics gearmotors through pololu.  The Tamiya gearbox is where I have been able to see the difference between non-greased and greased motors, and its hard to get them started when not greased due to friction.

I'll have to tear the bot apart to get to the motors.. but if I can't find any other solution, I'll be giving that a try.

That sounds very strange Grog. At the normal Arduino PWM frequencies these motors should run quite smoothly with good torque. I am suspecting your transistor is not wired correctly or damaged. If you accidently swap the emitter and the collector then the transistor will still work but the gain is much lower and it won't handle current very well.


I have two of them wired up - they are behaving the same.   Now that I've put it on the floor, with a slight load - the behavior is magnified - Quick startup and then I try to ramp it down to control

You ROCK !

My understanding are the pins are bound to particular multipliers 9&10 are bound as are 3 & 11, and 5 & 6.
Pins 9,10 & 3,11 are defaulted to 500, but the ones I was using were 5 & 6 which defaults @ 1000.

Your suggestion worked.  The only "strange part" was I had to go in the opposite direction.

These are my observations @ 9 V DC :

62 Hz - did not move the motor at all even at analogWrite 255 or 100% duty.

250 Hz - moved the motor at analogWrite 255, but other strange loss of control (serial from computer) occurred - possible brown out?

1000 Hz - same

8000 Hz  - a little better

62000 Hz - motor starts to move at analogWrite 140 - fine control down to 98 just before stalling, and of course the bonus of no audible whine !

I guess this is just dependent on so many variables, e.g. harmonics, size, current, magnet strength, gearbox friction, etc etc - that I'm not going to try to figure it out,  I'll just sing praises to you !

Had a similar problem with my Pacman robot. OddBot and Gareth gave me the tip to pulse the motor at a lower PWM frequency. 50 or 100Hz should be ok, Arduino normally runs  PWM at 500Hz. This trick works really great.