Controlling speed of motor that is being powered directly off battery

Hi all,

I'm still new to arduino so I'm still learning.

But I have a high powered motor (~10v) that I plan to power directly from LiPo batteries. I do, however, want the speed of the motor to be controlled by arduino. How can this be done? I'm sure it's a common scenario but haven't found many useful links. I also want to do this myself, without a motor shield.

Only thing that comes to mind is I connect the batteries directly to the motor, and have a digital potentiometer sitting in between the batteries / motor, and I control the resistance of the digital pot from arduino.... but this also doesn't sound correct since I'd have to dig around for a digital pot that can handle the voltage.
A transistor sounds logical here too, but I need a range of voltages, rather than an 'on/off' approach :slight_smile:

Any help is appreciated!

Two ways both use PWM

  1. feed the PWM into a motor through a transistor or better yet an FET.
  2. feed the PWM into a Transistor to get it up to 10V, smooth it the apply it to an emitter follower with the motor in the emitter.

Thanks for the response.
See that's what confuses me - maybe I don't understand transistors enough, but isn't a transistor only a binary operation - meaning it lets all voltage in or no voltage in, depending on if base is set to high or low.

It sounds like, however, I can use PWM to send varying frequencies to the base pin, which in turn only lets that percentage of voltage through.... is that correct?

Also, for the record, I don't quite get what you mean by #2 :slight_smile:

jetboatman:
See that's what confuses me - maybe I don't understand transistors enough, but isn't a transistor only a binary operation - meaning it lets all voltage in or no voltage in, depending on if base is set to high or low.

You're right; your knowledge on transistors is lacking. Transistors are inherently analog devices, which only act like digital switches when driven to saturation. You may do well to pick up a book or two on basic electronics (I always recommend Grob's Basic Electronics, but I have heard that "The Art of Electronics" is also a good introduction; the various electronics books by Forrest M. Mims III are also a good introduction, though maybe lighter on the theory and math).

Yes, I'm actually reading a few books and still ramping up.

So I take it the transistor will let in the amount of voltage that is proportional to how much the base pin is saturated? (for example if I have 10V on my collector, and I send 2v to a 5v base, it'd put 4v on the emitter?)

No transistors do not work with voltage they work with current. If say 1mA flows through the base of a transistor with a gain of 20 then 20mA will flow from collector to emitter. Of course you need voltages to push currents.
A motor will change speed if you feed it a signal that goes rapidly from zero volts to full volts. The speed is proportional to the ratio of time spent high and low by the signal. This was my 1)
A motor will also change speed if you feed it a varying voltage which was my point 2), however this is a more complex circuit and probbly best left alone in your current state of knowledge.

Hi,
If the motor is being powered from a LIPO and is a high powered motor, it has the potential to draw 100's of amps. My RC Motors driven from 2 cell LIPOs are able to draw continuous current of over 70 Amps and start up and stall currents in the low to mid 100's.

If the motor is drawing these levels of current a quick solution might be to drive a cheap off the shelf RC Electronic Speed Controller from the Arduino.

This project uses a 30 dollar speed controller and Arduino to control a motor thats good for 40Km/h or potentially a lot more in a car with larger tyres and higher gearing.

Duane B

rcarduino.blogspot.com

A bit of background reading might help you understand, try:-
http://www.thebox.myzen.co.uk/Tutorial/PWM.html

and

http://www.thebox.myzen.co.uk/Workshop/Motors_1.html