Arduino blog

Arduino blog

Arduino thinkering

This blog is about things I come by related to Arduino which I feel are inspiring/important/funny enough to write about.

help my robot motors are burning!!!

Arduino sketch experiancesPosted by Jan Wed, May 14, 2014 22:02:46
As the loyal reader of my posts knows by now... I am building a lawn mower robot. All of the implemented functionality is working fine; except for .... the 4WD engines.
For one reason or another these engines keep on burning. I have used quite a set of different types of engines by now, and all of them get toasted one day. And that day is ..... way to soon. From the last set I used 16 of the 20 motors. It is this set of motors in particular this post is about.

As the burning motors drives the development cost to unknown heights and it drives the development spirit to unknown lows, I have added heat sensors to the engines. the idea is to stop the robot before the motors get to hot.
The first question is what is to hot? Wikipedia comes to help
As for the motors no special rating is given I assume it is less than 90°C. Some other web page stated 70°C for standard insulation wire.
As I'm not measuring the heat of the insulation but the outside of the motor I took 50°C.
This indeed reduced the burned number of motors but it did not stop it and it increased the "cooling time" dramatically.
So I added blowers to decrease the cooling time. As I do not want blowers on the final robot I decided to increase the power of the motors. The idea is that increasing the power of the engines decreases the need for heat dissipation.
My current motors are rated 15 watt. Assuming there are on average 3 wheels touching the ground I have 45 watt available.
As to my calculations the robot should not need only 17 watt. So I start doubting my calculations and looked for a more powerful motor; preferably a brushless (as those do not loose power when running lower speeds). However the amount of 15+ watt motors on the market seems so small I can't find them.
Conclusion: Something must be wrong.

I tried to find concrete info on the influence of PWM on brushed DC engines but didn't find convincing material. So I decided to do some tests myself.
The first test I'll share with you is with the engine only loaded with the gearbox and without shielding (I mean without a metal case to keep dirt away from the motor). I used arduino prescalers 1 to 5 which means pwm frequency 31000 Hz, 4000 Hz, 490 Hz, 120 Hz and 30 Hz.
I also used my arduino eclipse plugin with the scope functionality.
The test makes one motor runs at 160 PWM. Every second the temperature is taken and plotted. This 500 times so a line is 500 seconds (or 8.333 minutes)
Channel 0 is prescaler 1 is 31000Hz. the engine was 24°C when the test started and it rose to 29°C that is an increase of 5°C.
Channel 1 is prescaler 2 is 4000Hz. the engine was 24°C when the test started and it rose to 29°C that is an increase of 5°C.
Channel 2 is prescaler 3 is 490Hz. the engine was 24°C when the test started and it rose to 32°C that is an increase of 8°C.
Channel 3 is prescaler 4 is 120Hz. the engine was 24°C when the test started and it rose to 37°C that is an increase of 13°C.
Channel 4 is prescaler 5 is 30Hz. the engine was 24°C when the test started and it rose to 44°C that is an increase of 20°C.


Even with the experimental setup I feel the conclusion is: the higher the PWM frequency the better (that is in arduino world). from 4000Hz onwards there is no improvement to be seen with the test case but there is hardly any load during the test.
The default Arduino PWM frequincy on pin 3 is 490Hz (prescaler 3). Changing to presscaler to 1 seems a good idea.

I also did the test with a metal casing around the motor to protect the engine from dirt. All other parameters are the same.

Channel 0 is prescaler 1 is 31000Hz. the engine was 25°C when the test started and it rose to 28°C that is an increase of 3°C.
Channel 1 is prescaler 2 is 4000Hz. the engine was 23°C when the test started and it rose to 28°C that is an increase of 5°C.
Channel 2 is prescaler 3 is 490Hz. the engine was 24°C when the test started and it rose to 32°C that is an increase of 8°C.
Channel 3 is prescaler 4 is 120Hz. the engine was 24°C when the test started and it rose to 36°C that is an increase of 12°C.
Channel 4 is prescaler 5 is 30Hz. the engine was 24°C when the test started and it rose to 45°C that is an increase of 21°C.


so from these tests it looks like the metal casing is not relevant. But the PWM frequency is. Due to a bug I used the prescaler 3 (with is the default). With a unloaded motor reaching 44° in 8.333 minutes I think I found the issue.

Field tests have shown the issue has been tackled.







  • Comments(3)

Fill in only if you are not real





The following XHTML tags are allowed: <b>, <br/>, <em>, <i>, <strong>, <u>. CSS styles and Javascript are not permitted.
Posted by yves Tue, February 02, 2016 10:49:53

Hello,

Very nice JOB !!
I would like to use your scope.
Could you give me a sample code ?

Thanks.
Yves

Posted by Jan Fri, October 09, 2015 19:47:39

The scope is part of the arduino eclipse plugin. http://eclipse.baeyens.it
You can find more on the usage here http://forum.arduino.cc/index.php?topic=58911.0

Posted by aphtk Fri, October 09, 2015 00:32:49

How does one use Arduino Eclipse [Oscillo]scope? I cannot seem to find any literature around it. I want to read IR Recveiver values on the scope to decode a remote control, but my scope just sits there doing nothing.