motor controller not pumping out enough umpf

Hey there.
This is my first post ever to this forum so y'all be nice :slight_smile: I need help. I'll provide as much information as can about my project.

I have;

1ea Arduino Uno (compatible, its an osepp uno r3)

1ea MD1.3 2A Dual Motor Controller (SKU: DRI0002)

2ea Wheel chair motors rated to 24v each (but they can operate on 12v. If need be I'll provide more on these)

1ea Spektrum remote control (transmitter and receiver)

1ea 12v car battery

Arduino code

Here's the goal.
Tie the remote control's receiver into the Arduino (check).
Have the Arduino receive the signal sent by the controller (check).
Have the Arduino connect to the motor controller (check).
Hook up the 12v car battery to the motor controller (check).
Send the values gathered by the Arduino and then output to the motor controller (check).
Wire the wheel chair motors to the motor controller (check).

Here's the problem.
I can get the motors to turn based on what i do to the remote control. I trigger forward, it goes forward. I trigger back, it goes back. yada yada
This is happening while the motors are lifted above the ground. But when I put the motors on the ground, it no go man. They dont have enough power to push the weight they are attached to.

What have I check with the multi meter you asked? 12v are being delivered all the way to the motor controller. Ive checked every single point. But the lines going to the motors (positive and negative) are only getting .3v maybe .5 if I cuss.

Like I said, not enough umpf.

I did a manual override and wired the battery to the motors with toggle switches. plenty of umpf.
I have changed out the motor controller, still no umpf.

So here is my neck on the chopping block yall have at it. WHAT THE HELL AM I MISSING????

by the way I should mention the code was designed by Nick Poole from Spark Fun Electronics. I have altered it slightly.

/*
RC PulseIn Joystick Servo Control
By: Nick Poole
SparkFun Electronics
Date: 5
License: CC-BY SA 3.0 - Creative commons share-alike 3.0
use this code however you'd like, just keep this license and
attribute. Let me know if you make hugely, awesome, great changes.
*/

int ch1; // Aux
int ch2; // Thr
int ch3; // Str

int move; // Forward/Back speed
int turn; // Turning Factor

int pwm_a = 6; // PWM control for motor outputs e1
int pwm_b = 5; // PWM control for motor outputs e2
int dir_a = 3; // direction control for motor outputs m1
int dir_b = 2; // direction control for motor outputs m2

void setup() {

pinMode(9, INPUT); // Set our input pins as such
pinMode(10, INPUT);
pinMode(11, INPUT);

Serial.begin(9600); // Pour a bowl of Serial (for debugging)

pinMode(pwm_a, OUTPUT); //Set control pins to be outputs
pinMode(pwm_b, OUTPUT);
pinMode(dir_a, OUTPUT);
pinMode(dir_b, OUTPUT);

}

void loop() {
ch1 = pulseIn(9, HIGH, 25000); // Read the pulse width of
ch2 = pulseIn(10, HIGH, 25000); // each channel
ch3 = pulseIn(11, HIGH, 25000);

// if(ch1>1000){Serial.println("Left Switch: Engaged");}
// if(ch1<1000){Serial.println("Left Switch: Disengaged");}

Serial.print("Steering Wheel X:");
Serial.println(map(ch3, 1000,2000,-500,500));

Serial.print("Throttle Y:");
Serial.println(map(ch2, 1000,2000,-500,500));

Serial.println();

delay(1000);

move = map(ch2, 1000,2000, -500, 500); //center over zero
move = constrain(move, -255, 255); //only pass values whose absolutes are
//valid pwm values

// *What we're doing here is determining whether we want to move forward or backward
if(move>0){digitalWrite(dir_a, 1);digitalWrite(dir_b, 1);};
if(move<0){digitalWrite(dir_a, 0);digitalWrite(dir_b, 0); move=abs(move);};

// *Here we're determining whether a left or a right turn is being executed
turn = map(ch3,1000,2000,-500,500);
turn = constrain(turn, -255, 255);

//*This is where we do some mixing, by subtracting our "turn" variable from the appropriate motor's speed we can execute
// a turn in either direction
if(turn>0){analogWrite(pwm_b, move-turn); analogWrite(pwm_a, move);};
if(turn<0){turn=abs(turn); analogWrite(pwm_a, move-turn); analogWrite(pwm_b, move);};

Serial.print("move:"); //Serial debugging stuff
Serial.println(move);

Serial.print("turn:"); //Serial debugging stuff
Serial.println(turn);

Serial.print("move-turn:"); //Serial debugging stuff
Serial.println(move-turn);

Serial.println(); //Serial debugging stuff
Serial.println();
Serial.println();

}

tah dah!

How much current do the motors require to move the attached load? I'd bet a lot more than 2 Amps.

DOH'ETH!

Wheelchair motors are typically rated something like 50 to 75A, not the 2A of an L298, and I'd
expect them to take at least 2A to turn without load against the friction of the brushes/commutators.

You probably need at least an order of magnitude higher current handling in your motor controller.