I’m running series of experiments using a 6V DC motor. I’m using desktop DC power supply to power the motor and regulate its speed and everything works just fine, the setup has been running for months.
Now I need to use Arduino motor shield to power the motor and run a particular control sequence (involving motor speed, direction, brake). Arduino is powered by 9V DC supply brick (from an 110V outlet), and delivers approx. 8.5V on its outlet power pins. Once I connect the motor the voltage I read on the pins is approx. 6.8V using my multi-meter. I cannot measure the current, once I connect the multi-meter the RPM drops dramatically, I guess I’m affecting the circuit somehow.
So far i have been using Arduino’s PWM control successfully but only for motors rated for voltage equal or greater than that of the power supply. This time I’m conscious of the max. voltage/current on/through the motor. I understand that PWM will reduce the average voltage but my understanding is that the motor will see the full voltage only at shorter intervals. Will this damage the motor? Playing with different PWM values I was able to get the same voltage as previously from bench DC power supply (say, 3V) but the motor noise is quite different. Motor is much louder and it sound as if it’s struggling to work. I’m still measuring the same average voltage of 3V on the motor’s power pins. I’m afraid this will reduce motor life or burn it completely if I continue letting 6.8V (8.5V?) directly onto it. How safe is to continue this operation?
I also saw a good discussion on regulators here on StackExchange. If PWM is not suitable, should I try a voltage regulator? Ultimately, what I’m trying to achieve is for motor to change the speed/RPM but also the direction – not sure if I can pull this off with the regulators. What would be your advice for this application?
Please don’t mind if I used inappropriate terminology – I’m just a daft mechanical guy trying to figure the electrical part of how I can run this safely. I’d appreciate any input. Thanks.
EDIT: This is to provide info on PWM frequencies/mark/space ratios. I hope a chart is OK, it might be easier to explain.
The way Arduino works is you set PWM via a byte, so sending a value between 0 and 255. 0 will let no marks through, 255 will have no spaces.
I plotted here the voltage measurements across motor contacts when: a) no motor is connected, b) when motor was connected and rotation was set to CW, and c) when motor was connected and rotating CCW. CCW rotation voltage should have “-” sign in front but I plotted it this way to be easier to read and compare. Motor had no mechanical load on it.
For the motor, I stopped plotting PWM at point when I almost reached the rated voltage. I’d like to run the motor at minimum of 2.5V, and I’m interested to know how high I can go. Also if this minimum is OK or not (so far it worked just fine off of a bench DC supply).
I hope this makes sense and please let me know if there’s anything else I should check and provide.pwmdc-motorshareedit follow flagedited 2 hours agoasked 9 hours agomk11381122 bronze badges New contributor
- 1A warm welcome to the site. Please can you edit your question and add PWM frequencies and some mark/space ratios you’ve been using as that essential data’s missing. – TonyM 8 hours ago
- 1There is a lot to read up on with respect to bucking and pwm for driving motors. Not all of it is software, either. – jonk 6 hours ago
- 1Thank you TonyM, jonk for replies and the greeting. I have updated the original message to provide more info on PWM. I understand that there is lot more to this, I hope I can figure some of it here. – mk1138 2 hours ago
You can use PWM control under the following two conditions:
- The average voltage applied does not exceed the rated voltage of the motor. This ensures that the average power rating of the motor is not exceeded.
- The duration of the PWM pulse does not cause the winding current to saturate. The rotor windings act like an inductor, which smooths the current, but if the PWM frequency is too low, you won’t get a smooth current but rather high current pulses during each PWM pulse.
To do a quick and dirty test, just set the PWM frequency to 20kHz, and set the duty cycle so that the effective voltage applied to the motor, d*Vin, = Vrated.shareedit follow flag answered 7 hours agomr_js58622 silver badges88 bronze badges
- 1Thanks for the reply mr_js. Regarding your second point, is there a rule of thumb for minimum frequency that would cause current pulses that are too high? I’m using a simple micro gear motor and I’ve been running it for months now at 2.5V with no issues. How can I check if this average voltage via PWM control would damage it? Also, I updated my originating post with more information on how PWM control works with this particular controller, and some measurements. – mk1138 2 hours ago
- @mk1138 for that type of motor (iron-cored armature with many turns) anything above ~3kHz should be high enough. electronics.stackexchange.com/questions/287046/… – Bruce Abbott 14 secs ago