Hello,
I am controlling a 2 wheel drive car using a Johnson 30 RPM motor which is connected to an Arduino Uno via a L298N dual H-Bridge motor driver. I am giving the driver a supply of 12V. I am using a bluetooth app to control the direction of the car. When I try to operate the car only one of the wheels is rotating at a time. I tested the same code using a 12V 100 RPM BO motor and it worked just fine. Could the issue be with the driver I am using. I initially tested using the 2A L298N driver and later switch to the L298N dual H-bridge driver. I tried powering the driver using a 12V 2A adaptor as well as a DC power supply.
The components I am using are:
- Arduino UNO
- HC-05 Bluetooth Module: https://robu.in/product/hc-05-6pin-bluetooth-module-with-button/
- 30 RPM Johnson Motor: https://robu.in/product/grade-a-quality-orange-12v-30-rpm-johnson-geared-dc-motor/
- L298N Dual H-Bridge driver: https://robu.in/product/l298n-dual-h-bridge-dc-stepper-motor-driver-controller-module/
- Bluetooth app: https://play.google.com/store/apps/details?id=braulio.calle.bluetoothRCcontroller&hl=en_IN&gl=US
Code:
int enA = 9;
int enB = 11;
int vspeed = 0;
char a;
void setup()
{
pinMode(2, OUTPUT); //Left motors forward
pinMode(3, OUTPUT); //Left motors reverse
pinMode(4, OUTPUT); //Right motors forward
pinMode(5, OUTPUT); //Right motors reverse
pinMode(enA, OUTPUT); //enA
pinMode(enB, OUTPUT); //enB
Serial.begin(9600);
}
void loop()
{
if (Serial.available())
{
a = Serial.read();
Serial.println(a);
}
if (a == '0') {
vspeed = 10;
}
else if (a == '1') {
vspeed = 25;
}
else if (a == '2') {
vspeed = 50;
}
else if (a == '3') {
vspeed = 75;
}
else if (a == '4') {
vspeed = 100;
}
else if (a == '5') {
vspeed = 125;
}
else if (a == '6') {
vspeed = 150;
}
else if (a == '7') {
vspeed = 175;
}
else if (a == '8') {
vspeed = 200;
}
else if (a == '9') {
vspeed = 225;
}
else if (a == 'q') {
vspeed = 255;
}
analogWrite(10, vspeed);
analogWrite(11, vspeed);
if (a == 'F') //Forward
{
digitalWrite(2, HIGH);
digitalWrite(4, HIGH);
digitalWrite(3, LOW);
digitalWrite(5, LOW);
}
else if (a == 'B') //Reverse
{
digitalWrite(3, HIGH);
digitalWrite(5, HIGH);
digitalWrite(2, LOW);
digitalWrite(4, LOW);
}
else if (a == 'L') //Left
{
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(2, LOW);
digitalWrite(5, LOW);
}
else if (a == 'R') //Right
{
digitalWrite(2, HIGH);
digitalWrite(5, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
}
else if (a == 'G') //Left forward
{
digitalWrite(2, LOW);
digitalWrite(4, HIGH);
digitalWrite(3, LOW);
digitalWrite(5, LOW);
}
else if (a == 'H') //Left reverse
{
digitalWrite(2, LOW);
digitalWrite(5, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
}
else if (a == 'I') //Right forward
{
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
else if (a == 'J') //Right reverse
{
digitalWrite(3, HIGH);
digitalWrite(2, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
else if (a == 'S') //Stop
{
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
}