Voltage drop on a dc motor

Hello, thank you for reading and sorry for bothering.
I'm working on a project for my college, and I need to have two propeller motors connected to a driver motor (Actually I'm using 2 L239D to reduce the voltage partition between the two motors using just one, yet i'm planning to adquire another bridge H).
I think that by reading my explanation you will realize that I am a newbie, but I have the two L239D connected to their respective pins in Arduino and the motors, my plan is on having three motors to simulate a helicopter.

My idea is to reduce one of the rear engine's rpm to produce the movement to the left or right, so I'm using an analogWrite with different values for each motor. This is working nicely.
Now, for going forward i thought that giving it a value of 255 for each motor will work, at first instance this seems to work for 1-3 seconds, but when this time elapses one motor (specifically the motorB1) stops and I don't have idea why.

Could someone help me to know why and if possible, how to fix it? Thank you.

  if (state == 'l') { // Left
      analogWrite(motorA1, 255);
      analogWrite(motorB1, 25);
    if (state == 'r') { // RIGHT
      analogWrite(motorB1, 255);
      analogWrite(motorA1, 25);
      if (state == 'f') { // FORWARD
      analogWrite(motorB1, 255);
      analogWrite(motorA1, 250);
      if (state == 'R') { // REVERSE
      analogWrite(motorB1, 70);
      analogWrite(motorA1, 70);
  if (state == 's') { // Stop
    analogWrite(motorA1, 0);
    analogWrite(motorB1, 0);

Here is the little code I'm using right now in the section void loop.

The problem is ALWAYS in the code you chose not to post!


What you describe sounds like insufficient power as much as anything. So what are you using to power everything, including the motors and drivers?

I haven't looked your code because posting a little snippet rather than the complete program is basically useless. Apart from anything else if you knew which part of the program was causing the problem you'd probably have solved it yourself.

See "How to use this forum - please read" at the top of this and every other forum for how to help us to help you.


Well, you may be right, I just thought it was not necessary because there are only a few lines that I missed:

int motorA1 = 5; // Pin  2 of L293
int motorB1 = 9; // Pin 10 of L293

int state = '0'; // Initialise Motors
void setup() {
  // Set pins as outputs
  pinMode(motorA1, OUTPUT);
  pinMode(motorB1, OUTPUT);

The ancient/inefficient L293 is just ok for tiny <600mA toy motors.
Not suitable for “two propellor motors for a helicopter”.

H-bridges are to spin a motor on two directions.
That never happens with a drone/helicopter motor.
Just use a single logic level mosfet. First diagram here.

Perhaps think about using brushless motors with esc. then each could be driven by simple servo signal.

Welcome to the forum.

Can you please post a copy of your circuit, in CAD or a picture of a hand drawn circuit in jpg, png?

Are you using a L239D shield or have you built your own L239D circuit?
Have you got the gnd of the controller connected to the gnd of the L239D?
What model Arduino are you using?

Thanks.. Tom... :slight_smile:

Well, you may be right, I just thought it was not necessary because there are only a few lines that I missed:

So you are not doing any Serial.read()? Looks like you are STILL missing some lines.

My first guess is that your driver is overheating and shutting itself down.

O.k. so you're not going to post a complete program.

Please provide details of the motors you're trying to drive, "propeller motor" isn't a useful specification. I have motors driving propellers that use >200W and would vaporise an L293D in an instant.

And as I asked back in #2, what you are powering everything with and how is it all connected?