3.5V + Arduino + PN2222A not delivering enough power to the motors

Hello folks,

I am trying to build a drone using mini toys DC motors (3.5V). Using Arduino Uno and PN2222A transistor with 3.7V 380mAh battery.

When I connect the motor directly to the battery it spins with maximum speed which is sufficient to fly it. However, when I connect the motors and battery according to the circuit attached, the motors vary in speed and the PWM is working perfect, but maximum speed (255) is insufficient to fly the drone.

I am using analogWrite(MotorPin1,255);

Also, there is a plan to replace the Arduino Uno with ESP32 Dev later on using LEDC library, please tell me if there are going to be any differences in the power supply.

Thanks

I couldn't upload the circuit here

Circuit: motors1 bb hosted at ImgBB — ImgBB

Thanks

Your motors will require more current than a lowly 2N2222 can handle.

A logic-level MOSFET is the way to go with such motors, which can take several amps I believe.

It would be good if you post all the details of the motors you have...

Hi,
If this is your circuit;


Then it should not work.
There is not positive connection to the motor from the battery,

Can you please post a copy of your circuit, in CAD or a picture of a hand drawn circuit in jpg, png?
Take you time and draw an accurate circuit diagram, not a fritzy picture, please label pins and include your power supplies.

You will drop 1.6V of your 3.7V across the transistor, that is why you cannot get full speed.

Thanks.. Tom... :slight_smile:
PS, your image was too big.

Thanks Mark, the motor is ZXD7PK16-Y

It shows its current as <100 mA

Thanks Tom.

Will draw it and get back.

And thanks for the tip on the image

Attached below the sketch of the circuit with all components used.

Problem: the circuit works but not as required. the motor spins between 0-255 and it changes the speed but when given 255 value the motor doesn't spin at maximum speed. When i disconnect the motor and connect directly to the 3.7V battery it spins at maximum speed.

Components

Controller: ESP32/Arduino Uno Transistor: PN2222a Diode: IN4007 Battery: Li 3.7 Volt 380 mAh Resistor: 100 ohm

The resistor connected at base, the ESP32/Arduino is connected to the laptop.

IMG_0432.png

That motor draws 1.2 Amperes when it starts up.

As MarkT and Tom suggested, the PN2222A is totally inadequate.

Thanks jremington,

Could you help me to find an alternative? I read that logic-level Mosfet are the best option here. But unfortunately I couldn't find any where I live, tried the IRF510N Mosfet but it didn't work as it didn't get enough voltage since it requires 10V

Thanks again

I couldn't find any where I live

Mail order works. Research the countless choices on line.

Hi,
OPs circuit, thankyou, with explanation of volt drop across transistor edited in for PWM value = 225.
IMG_0432erit.jpg

Are you really using pin15 on the UNO ? ? ?
You need to use a PWM pin.

Tom.. :slight_smile:

Hey Tom.

Well, on the ESP32 I am using D15 which has the PWM functionality using LEDC. On the Arduino Uno I tried with Pin3

Even if i use the 5V supplied from Arduino after replacing the ESP32 with the Arduino Uno it doesn't work at maximum speed of the DC motor.

Thanks a lot

Hi Jan2015,

Try two 3.7V batteries

and a TIP-120 (Darlington) transistor.

I think that will do what you want.

You lose voltage through the transistor so you need a little more kick than you would think.

MB

Check my tag line for suggestions on how to draw schematics for maximum clarity.