DC motor speed control

I am currently in senior design, and I am wondering can I still control the seed of a Dual Speed DC motor using the PWM pin on the Arduino? The dual speeds for the motor are 45/65 RPM, depending on how they are wired up, but I want to vary the speed other than the dual speeds.

Thanks

A datasheet for the motor might help. Otherwise you know a lot more than we do so if you can't answer the question we have no chance.

Steve

On a very basic level, yes.
But logic level pins generally aren't suitable for driving motors directly (but it depends on what you are working with).

Generally what you'd want is an H-bridge (or something like a motor shield if you want a premade module), driving the motor separately, while supplying the logic from the Arduino. Again, this depends entirely on what you're working with.

Markie1992:
I am currently in senior design, and I am wondering can I still control the seed of a Dual Speed DC motor using the PWM pin on the Arduino? The dual speeds for the motor are 45/65 RPM, depending on how they are wired up, but I want to vary the speed other than the dual speeds.

Thanks

This sounds like a direct drive turntable motor for a record player. (Plays those round, usually black, analog audio encoded discs)
It may have a control circuit inside if it is DC, so PWM will not work.
Can you post a picture of the motor please?
Thanks.. Tom.. :slight_smile:

https://www.motiondynamics.com.au/zd1530-worm-drive-motor-12v-50w-45-65-rpm-5-29nm-left.html. This is a link to the motor, hope this helps.

Hi,
The motor you are looking at was designed as a windscreen wiper motor.

These are traditionally built and used for car wipers, but they can also be run as a highly efficient worm drive motor.
This particular unit has extremely tight tolerances (zero backlash) and an ultra smooth motor and gearbox.
While it is operating you can barely hear it, that's how quiet the motor and gearbox are.
This smaller unit has a rating of 5nM, and will overdrive to a maximum (and stall at) 29nM. It is an extremely powerful motor for its small size.
It operates from 12V and has 2 operational speeds (either 45 RPM or 65 RPM - User selectable speeds)

The plug wiring diagram is;


It gives you two speeds by using brush advance.
Its is basically a Brushed DC motor, so it can be controlled with PWM.

Can you please tell us your electronics, programming, Arduino, hardware experience?

What is the application that you need a variable speed motor?

Tom.. :slight_smile:

I am using this motor for my senior design. This motor will be used to drive a stair climbing wheelchair, and I am the only electrical engineer in the group. I am responsible for the wiring and programming of the motor and will be using two of these motors to drive the wheelchair. From what you told me, I can still vary the speed of this motor using PWM and not just be limited to the dual speeds (45/65 RPM) of the motor? So how do I connect this motor to the Arduino Uno so I can vary the speed; can you provide a schematic of something similar to the wire hookup of this motor to the Arduino Uno. I have a little experience in C programming and with the Arduino, but this is the first time I will be using the Arduino all out.

Thanks

Markie,

i had had a similar similar project. I was supposed to build a driving simulator using almost the same motor.

There are two ways (actually 3 ways) i know of, to control a DC Motor of this kind.

  1. Buy a H-Bridge. The most popular and easiest to use is the L293D. Just follow the documentation from the driver's website. (Price: <5 Dollar , but you will need some condensators to prevent your Arduino from breaking down with back current)

  2. A motor shield: This is the easiest. Just connect, apply some libraries and use! (Price: around 15-25 Dollars)

To control the speed, send values from 0-255 to the PWM pin. In most Arduino books, you can find DC Motors connection tutorials.

Load current 7.5 A, stall current 31 A. It needs a really heavy duty motor driver.

Hi,
Do you need to drive it forward and reverse?

Tom... :slight_smile:

website:
Fast RPM:

Black wire to Blue wire

Slow RPM:

Black wire to Grey wire

to reverse the polariity, simply exchange the position of the battery postivie for the battery negative

(typos are theirs).
So that's a wiring change to change the speed.
No mention on what type of DC motor it is, and that's important to know whether it's even possible to regulate by PWM.

And indeed really heavy duty, with 31A stall current and up to 29 Nm torque. Ready made h-bridges (such as the L293D as suggested above) won't do.

Yes I plan on driving this motor forward and reverse, but I plan on using this type of motor driver found in the link below. I really need to know if this motor can be controlled with PWM because I don't know if it can or can not be controlled with PWM do to the dual speeds (45/65 RPM)?

Markie1992:
I really need to know if this motor can be controlled with PWM because I don't know if it can or can not be controlled with PWM do to the dual speeds (45/65 RPM)?

What's stopping you from finding that out? Arduino, power MOSFET, some soldering, (don't even think about a breadboard), beefy power supply...

https://www.amazon.com/DC5-12V-Dual-channel-H-Bridge-Stepper-Controller/dp/B074TH1719

I'm quite sure your motor is not a stepper.

Oh, and do give it a good load. Without load it may reach nearly full speed at very low duty cycles.

Hi,
Do you need exactly 45 and 65 RPM?
What is the motor connected to?

Can you please tell us your electronics, programming, Arduino, hardware experience?

Have you got a current limit type power supply?
If not, then put a fuse in the positive from your power source.

Thanks.. Tom... :slight_smile:

No, I want to vary the speed of the motor other than the 45/65 rpm.

Let’s get a list of points...

  • You don’t need the two speed functionality, ignore one. PWM will fix that.
  • You need a substantial,power supply - especially for two motors under load.
  • A stepper driver is no use to you.
  • A single sided chunky MOSFET driver is the approach if reverse isn’t needed.
  • Arduino PWM should be fine to ‘drive’ the MOSFET driver.