0
\$\begingroup\$

I have a 6V DC motor, which needs to change rotation direction every 5 seconds or so.

The motor is powered and controlled by an Arduino. Arduino is providing approx. 8.5V and I'm using PWM control to lower the average voltage to approx. 2.5V, which is giving me the motor RPM I need. Motor is similar to this one (micro gear motor) and I discussed the suitability of PWM in this thread.

This motor was previously running for a long time on a bench DC power supply. But when I started it using Arduino it stopped working after less than two days. When I connected it again to DC supply it started working normally, across a range of voltages. So I don't think there is a mechanical failure.

I'm now troubleshooting what went wrong. While I'm checking my Arduino control code, I also wanted to ask if you can think of anything electr-mechanical that could go wrong with this setup (I'm not an electrical guy). The control sequence is very simple - a loop that will issue direction change command at set interval. So I'm thinking about windings, impendance, current, or whatever. By all means, you're free to have a laugh at my silliness but please bear with me. I's appreciate any advice.

Thanks!

\$\endgroup\$
4
  • \$\begingroup\$ Measure its starting current. This can be 10x operating current. Starting too often can cause overheating - or much more wear on the brushes. Or the driver IC. \$\endgroup\$ Jul 23, 2020 at 12:55
  • \$\begingroup\$ abrupt rotation direction change can possibly break gears ... ramp down speed to stop ,,, ramp up in the opposite direction \$\endgroup\$
    – jsotola
    Jul 23, 2020 at 12:59
  • 1
    \$\begingroup\$ "This motor was previously running for a long time on a bench DC power supply. But when I started it using Arduino it stopped working after less than two days." Are you powering DC motor directly from Arduino? How are you powering Arduino? How did you connect the motor to Arduino? Could you post a schematic? \$\endgroup\$
    – mguima
    Jul 23, 2020 at 13:01
  • \$\begingroup\$ Brian Drummond, I will try. jsotola, noted and Chris seems to say the same thing. I will try. mguima, I don't have a schematic but Ardiono is supplied with 9V, and its motor contacts receive 8.5V. Finally, I control the average voltage via PWM as motor is rated for 6V. The details are in the SE thread I linked above, second paragraph. Thanks all for the responses. \$\endgroup\$
    – mk1138
    Jul 24, 2020 at 18:04

1 Answer 1

3
\$\begingroup\$

"Slamming" the motor from one direction to another will produce both electrical and mechanical stress, especially if there is any load connected. It would be particularly horrible with a gearbox.

Since you have an MCU generating PWM what you should do to make things more gentle is to profile the movement: gradually ramp up the speed, then ramp it down and ramp up in the other direction.

Even a rather short ramp will be drastically different from the approximation of "dividing by zero" which occurs if you give a direction change with no transition time to divide by and force the limitations of the parts to create their own.

\$\endgroup\$
2
  • \$\begingroup\$ Thanks for the response Chris and noted. I will adjust the control sequence code to allow for more gentle transition. Are there any profiles you could recommend for a motor of this size/type? Not the actual solution, I will sort that out, just the recommendations, rule of thumb, etc. Also, any advice on how to start? What I mean by that, obviously there is a PWM value or average voltage below which motor won't actually run. How should I account for that when I'm starting and ramping it up? \$\endgroup\$
    – mk1138
    Jul 24, 2020 at 18:09
  • \$\begingroup\$ Experiment. And consider how much time your application can tolerate. A more sophisticated system (like a computerized machine tool) would monitor the motor rotation and have a feedback loop to control velocity, surrounded by a feedback loop to control position, surrounded by a movement planner which modeled where the motor should be at any point in time based on how far it had to move, how fast was requested, and programmed acceleration limits. \$\endgroup\$ Jul 24, 2020 at 19:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.