Problema con arduino y controlador l298n

Tengo un problema con mi carrito electrónico donde quise usar el sensor ultrasónico, el driver l298, el arduino y el bluetooth hc05, pues al parecer ya conecté todo bien y compilé el codigo al arduino, incluso mi aplcación si conecta bien con el bluetooth pero a la hora de intentar maniobrar mi carro, simpelemente se vuelve loco y no para de avanzar o se queda en el último movimiento que le mandé, no se si sea problema de que no hay suficiente batería, pues ya probé con un set de 4 pilas de 1.5v cada una y tambien con una pila nueva de 9v pero el problema persiste

He trasladado su tema de una categoría de idioma inglés del foro a la categoría International > Español @javisgl.

En adelante por favor usar la categoría apropiada a la lengua en que queráis publicar. Esto es importante para el uso responsable del foro, y esta explicado aquí la guía "How to get the best out of this forum".
Este guía contiene mucha información útil. Por favor leer.

De antemano, muchas gracias por cooperar.

Si no adjuntas el código (hazlo de acuerdo a las Normas de Foro, por favor) y el esquema de conexiones no podemos ayudarte.
No somos adivinos (por ahora). :wink:

Claro, unas disculpas es la primera vea


Este es el circuito que use

/*
 * 
 * 
 * @Derecho de autor: Cristhian Lara 10/09/20
 * D2MAGICOS
 * 
 * Carrito controlado mediante aplicacion movil echa en android studio
 */

#include <SoftwareSerial.h>

SoftwareSerial miBT(2, 3);   //Instancia la conexion al bluetooth - PIN 2 a TX y PIN 3 a RX

int LED = 13;
//Variables para el sensor ultrasonico
int trigPin = 11;
int echoPin = 12;
int maxDist = 15;
int minDist = 2;

float distancia;

//Entrada de los motores
int motor1A = 5; // INPUT 1
int motor1B = 6; // INPUT 2
int motor2A = 10; // INPUT 3
int motor2B = 9; // INPUT 4

// Dato recibido atraves de la aplicacion movil
char data = 'S';

void setup()
{
  pinMode(echoPin, INPUT);    // echo como entrada
  pinMode(trigPin, OUTPUT);   // trigger como salida
  pinMode(LED, OUTPUT);    // LED como salida
  
  //Definimos las salidas del arduino
  pinMode(motor1A , OUTPUT);
  pinMode(motor1B , OUTPUT);  
  pinMode(motor2A , OUTPUT);  
  pinMode(motor2B , OUTPUT);
      
  Serial.begin(9600); //Inicia la comunicación en el monitor serial a 9600 Baudios
  miBT.begin(9600); // inicialmente la comunicacion serial a 9600 Baudios (velocidad de convencional)

  Serial.println("Módulo conectado");
}
 
void loop()
{
    //Esperamos hasta que haya un Stream de datos
    if(miBT.available() > 0){
      data = miBT.read();
      Serial.println(data);
    }
    
    switch (data) {
    case 'F':
      avanzar();        // Forward | AVANZAR
      break;
    case 'B':
      retroceder();     // Backward | RETROCEDER
      break;
    case 'L':
      izquierda();  //Left | IZQUIERDA
      break;
    case 'R':
      derecha();    //Right | DERECHA
      break;
    case 'S':
      detener();    //Stop | DETENER
      break;
    case 'A':
      automatico(); // Modo automatico depende del sensor ultrasonico 
      break;
    }
    delay(20);
}

void avanzar(){
  // Forward | AVANZAR
  digitalWrite(motor1A, HIGH);
  digitalWrite(motor1B, LOW);
  digitalWrite(motor2A, HIGH);
  digitalWrite(motor2B, LOW);
      
}

void retroceder(){
  // Backward | RETROCEDER
  digitalWrite(motor1A, LOW);
  digitalWrite(motor1B, HIGH);
  digitalWrite(motor2A, LOW);
  digitalWrite(motor2B, HIGH); 
}

void derecha(){
  //Right | DERECHA
  digitalWrite(motor1A, HIGH);
  digitalWrite(motor1B, LOW);
  digitalWrite(motor2A, LOW);
  digitalWrite(motor2B, LOW); 
}

void izquierda(){
  //Left | IZQUIERDA
  digitalWrite(motor1A, LOW);
  digitalWrite(motor1B, LOW);
  digitalWrite(motor2A, HIGH);
  digitalWrite(motor2B, LOW);
}

void detener(){
  //Stop | DETENER
  digitalWrite(motor1A, LOW);
  digitalWrite(motor1B, LOW);
  digitalWrite(motor2A, LOW);
  digitalWrite(motor2B, LOW); 
}

void automatico(){
  
     distancia = calcularDistanciaCm(); // Calculamos la distancia de la pulso
     Serial.println(distancia);
     if (distancia <= maxDist && distancia >= minDist){    // si la distancia es menor de 15cm
        digitalWrite(LED,HIGH);      // Enciende LED
        
        detener(); //DETENEMOS LOS MOTORES 200 ms     
        delay (200);
        
        retroceder();          // RETROCEDE DURANTE 500 ms
        delay(500);           
        
        izquierda();     // Girar durante 600 milisegundos     
        delay(600);
        
        digitalWrite(LED,LOW);
     }
     else{                            
        avanzar(); //SI NO EXISTE OBSTACULO CONTINUA AVANZANDO
     }
}

float calcularDistanciaCm() {
  
  float duracion, distancia; // Variable para calcular el tiempo y distancia
  
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  duracion = pulseIn(echoPin, HIGH);
  distancia = (duracion * 0.0343) / 2;
  
  delay(10);
  
  return distancia;
}

Este es el código que use

El problema es la alimentación.

4 pilas te dan 6V pero no son suficientes para que el regulador del UNO trabaje correctamente (como mínimo necesita 6.5V).
1 batería de 9V no entrega suficiente corriente, seguramente en cuanto mueves un motor cae la tensión.

Debes usar pilas 18650 como indica el proyecto.

Saludos

Vale muchas gracias, probaré y muy seguramente me funcione ¡excelente día amigo!

2 pilas en serie. 3.7x2=7.4V
Siempre necesitas 6.5V minimo para alimentar por Vin un Arduino de 5V.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.