Coreless motor speed control using PWM

Hi, I'm trying to build a small drone using 4 small coreless dc motors . First I tried controlling the speed of them individually. I tried doing this using just a normal transistor (BC547C and also TIP122) and I connected it like this: (I used a different transistor as I said, the power supply are three 1,5V batteries)

When I now control the speed of the motor using the potentiometer the speed of the motor is about half the speed it would be when just connected to a power supply even on a duty cycle of 100%.

Why is this happening?
How can I fix it?

Thanks for helping me out!

Post the code, using code tags.

There are several problems with the posted circuit. You need a flyback diode across the motor, not the transistor, you need a suitable base resistor for a bipolar transistor (1K might work), and there is a significant voltage drop across an inefficient Darlington transistor like the TIP120.

A BC547, with max 100 mA collector collector current, is totally inappropriate for motors.

Use a logic level MOSFET instead, with a 150 Ohm gate resistor and 10K gate pulldown. The flyback diode is still required.

I don't think the code is the problem, it is just a basis program reading the analog pin and writing the converted value to the base of the transistor.

The motor should draw max 50 mA and the diode won't make a difference in the speed of the motor, right?

I currently don't have access to a MOSFET any time soon, and even if I did, would that solve the problem of the motor slowing down? Could you suggest a MOSFET suitable for this project?

The motor should draw max 50 mA

Much, much more, if it is a quadcopter motor. 50 mA would not even lift the motor. Post a link to the motor data sheet, as there is no current rating on the page you linked. Or measure the winding resistance with your multimeter and post that.

An old rule of thumb for quadcopters is "an Amp per ounce and your model won't bounce".

Google will be happy to tell you what other DIY experimenters are currently using for quadcopter MOSFET motor drivers. You will want something as small and light as possible, but for experimenting on the bench, this one should do.

In the schematic you posted the diode has neither a positive nor negative effect on the circuit performance.

Duinogud:
Hi, I'm trying to build a small drone using 4 small coreless dc motors . First I tried controlling the speed of them individually. I tried doing this using just a normal transistor (BC547C and also TIP122) and I connected it like this: (I used a different transistor as I said, the power supply are three 1,5V batteries)

Though these small coreless/slotless dc motors look tiny, they have massive power to weight ratios
and take several amps.

The BC547 is never appropriate to switching any load, its a small signal transistor designed to run
at 50mA or less.

The TIP122 is a darlington and much too slow for PWM for small motors (although it can handle the current
for simple on-off control, it loses about 1.5V, making it a really poor solution even for that.

You need a logic level MOSFET with an on-resistance of 0.1 ohm or less. 20V or 30V device is plenty,
and surface mount is required simply on mass-budget considerations (A TO220 MOSFET is probably
heavier than the motor!)

Better still consider using SOIC8 packaged dual MOSFETs, still large enough to hand-solder, but
two MOSFETs in each package saves space and mass.

For battery you require a LiPo cell, 1.5V batteries cannot handle the power density requirements to
take off.

Before you start, find out the thrust curve for a motor/propeller conbination and then work out a mass budget
that has a chance of taking off.

You really do have to do the math, and to do that you really do need to know the thrust available.

If you don't have a good match between motor and prop you'll either be wasting mass on an
over large motor for the prop, or you'll fry the motors. Remember you want to run on 3.7V
LiPo pack, so that is the max motor voltage to work with.

1 Like