This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
problema con el modulo L298
#1
Hola,
me pasa una cosa muy rara y no se que puede ser.
cargo el sketch a la placa arduino (es para controlar dos motores, utilizo un modulo con un L298).
conecto el monitor serial y me da unos valores correctos, miro la salidas que van conectadas al Enable del modulo L298 y con el osciloscópio y dan un pwm correcto. Miro las salidas que van conectadas a In1, In2, In3, In4, y parece que cambian correctamente para cambiar de sentido de giro.

hasta aquí todo parece correcto, ahora viene lo raro, desconecto el usb y conecto una fuente de alimentación a 9V para alimentar arduino y el modulo L298, se encienden las luces del arduino (on, L y la del driver que controla los motores)y no hace nada, miro con el osciloscopio y no tengo señal de pwm a la salida del arduino ni señal en los pines de dirección.
Alguien sabe que puede estar pasando?
Código:
/* codigo del blog de roboblogs, lectura de la IMU con el filtro complementario
   falta incorporar el control PID i salida de los motores */

#include <Wire.h>

//Direccion I2C de la IMU
#define MPU 0x68

//Ratios de conversion
#define A_R 16384.0
#define G_R 131.0

//Conversion de radianes a grados 180/PI
#define RAD_A_DEG = 57.295779

//MPU-6050 da los valores en enteros de 16 bits
//Valores sin refinar
int16_t AcX, AcY, AcZ, GyX, GyY, GyZ;

//Angulos
float Acc[2];
float Gy[2];
float Angle[2];
int llanta_I= 10;
int llanta_D= 11;


void setup()
// Se inicia la comunicación por I2C con el dispositivo MPU, y se “activa” enviando el comando 0.
// También se inicia el puerto de série para ver los resultados.
{
Wire.begin();
Wire.beginTransmission(MPU);
Wire.write(0x6B);
Wire.write(0);
Wire.endTransmission(true);
Serial.begin(9600);

pinMode (llanta_I, OUTPUT);
pinMode (llanta_D, OUTPUT);
}

void loop()
{
   //Leer los valores del Acelerometro de la IMU
   Wire.beginTransmission(MPU);
   Wire.write(0x3B); //Pedir el registro 0x3B - corresponde al AcX
   Wire.endTransmission(false);
   Wire.requestFrom(MPU,6,true); //A partir del 0x3B, se piden 6 registros
   AcX=Wire.read()<<8|Wire.read(); //Cada valor ocupa 2 registros
   AcY=Wire.read()<<8|Wire.read();
   AcZ=Wire.read()<<8|Wire.read();

    //Se calculan los angulos Y, X respectivamente.
   Acc[1] = atan(-1*(AcX/A_R)/sqrt(pow((AcY/A_R),2) + pow((AcZ/A_R),2)))*RAD_TO_DEG;
   Acc[0] = atan((AcY/A_R)/sqrt(pow((AcX/A_R),2) + pow((AcZ/A_R),2)))*RAD_TO_DEG;

   //Leer los valores del Giroscopio
   Wire.beginTransmission(MPU);
   Wire.write(0x43);
   Wire.endTransmission(false);
   Wire.requestFrom(MPU,4,true); //A diferencia del Acelerometro, solo se piden 4 registros
   GyX=Wire.read()<<8|Wire.read();
   GyY=Wire.read()<<8|Wire.read();

   //Calculo del angulo del Giroscopio
   Gy[0] = GyX/G_R;
   Gy[1] = GyY/G_R;

   //Aplicar el Filtro Complementario
   Angle[0] = 0.98 *(Angle[0]+Gy[0]*0.010) + 0.02*Acc[0];  //filtro angulo X
   Angle[1] = 0.98 *(Angle[1]+Gy[1]*0.010) + 0.02*Acc[1];  //filtro angulo Y

   //Mostrar los valores por consola
   //Serial.print("Angle X: "); Serial.print(Angle[0]); Serial.print("\n");
   //Serial.print("Angle Y: "); Serial.print(Angle[1]); Serial.print("\n---------\n");

    delay(10); //Nuestra dt sera, pues, 0.010, que es el intervalo de tiempo en cada medida
  
  
   /* ____________________________
         control de los motores
      ____________________________
    */
    int atras=0;
    int adelante=0;
    
    int ab= floor (3*(float (Angle[1]))); // convierto el angulo Y a un valor que va de 257 a -257 y lo guardo en la variable (ab)
  
    // Serial.print(ab); Serial.print("\n---------\n");
    
   ab= (ab*3);   /* se multipica por 3 para que el valor ab (que es el pwm de los motores) llege a los 255 o -255 más rapidamente,
                 aproximadamente a los 30 grados
                 */  
  
    if (ab < -255)
        {
        ab=-255;
        }
        if (ab > 255)
        {
        ab=255;
        }
        


if (ab>0){
   atras=  ab;       // PWM de los motores atras  (las dos ruedas funcionan al tiempo)
}
if (ab<=0){
   adelante=(-1*ab);      // PWM los motores van hacia adelante
}
    Serial.println(atras);
    Serial.println("\n-------------/n");
    Serial.println(adelante);
    
    // Sentido de giro de los motores
  if (adelante != 0){   // no se permite que se envie el comando hacia adelante y hacia atras al tiempo
     if (atras == 0){  
       analogWrite(llanta_I,adelante);
       digitalWrite(6,LOW);
       digitalWrite(7,HIGH);
    
       analogWrite(llanta_D,adelante);
       digitalWrite(4,LOW);
       digitalWrite(5,HIGH);
     }
  }
  
  
  if (atras != 0){         // no se permite que se envie el comando hacia adelante y hacia atras al tiempo
     if (adelante == 0){
       analogWrite(llanta_I,atras);
       digitalWrite(6,HIGH);
       digitalWrite(7,LOW);
    
       analogWrite(llanta_D,atras);
       digitalWrite(4,HIGH);
       digitalWrite(5,LOW);
    }
  }
        
    
  
     // Serial.print(ab); Serial.print("\n---------\n");
  
}
  Responder
#2
solucionado!!

una vez cargado el sketch al arduino, desconecto el usb del arduino y conecto la alimentación y no funciona, le doy al reset del arduino y funciona correctamente.
ahora solo falta pulir el código.
  Responder


Posibles temas similares…
Tema Autor Respuestas Vistas Último mensaje
  CONSULTA AUMENTAR ALCANCE MÓDULO BLUETOOTH AT-09 CON ANTENA Alvaro Braca 3 2,704 14-03-2019, 09:12 AM
Último mensaje: Merenat
  CONSULTA ayuda con modulo bluetooth f-6188 kcho26 0 1,405 25-02-2018, 07:29 PM
Último mensaje: kcho26
  DUDA Duda con conexion modulo de reles polarode 4 3,852 29-12-2017, 12:37 PM
Último mensaje: Jasobrino
  Nuevo módulo ESP8285, el sustituto del ESP8266 grafisoft 12 10,970 29-01-2017, 08:06 PM
Último mensaje: davidpedr0
  Cómo configurar una placa Freaduino y un módulo HC-05 Bluetooth ernestot87 4 2,672 27-11-2016, 01:39 PM
Último mensaje: Iván