L298 Quand ça fume et quand ça saute!! :(

a marqué ce sujet comme résolu.
Auteur du sujet

Bonjour ,

Voilà j’ai fait un petit montage de test avec les éléments suivant :

Moteur :https://www.banggood.com/fr/XD-3420-DC-1224V-30W-Permanent-Magnet-DC-Motor-CWCCW-Motor-p-1223406.html?ID=49554&cur_warehouse=CN

Driver : https://hackerstore.nl/PDFs/Tutorial298.pdf

alim : https://www.leclubled.fr/transformateur-alimentation-led/580-alimentation-led-dc-24v-250w-0713145183124.html

Je pense avoir correctement branché tout ce beau monde puisque cela à fonctionné sur 1 moteur puis sur les 4 à basse tension.Mais j’ai décidé d’augmenter la vitesse et que je me retrouve un moteur sous la table ( honnêtement je l’ai pas vu partir ) pendant que des éclairs et de la fumé sortait d’un de mes driver

Je n’est pas fait de photo de mon montage ma frustration a pris le pas sur la réflexion. Mais se qui m’étonne c’est d’avoir pu les commandés avant correctement. C’est quand j’ai exécuter ce code qui le problème et survenue ( il n’y a plus que 1 moteur mais les 4 y était c’est la seule différence avec le code que j’ai utilisé)

#define pin_sens2_M1 13
#define pin_sens1_M1 12
#define pin_enableM1 5


void demarage_moteur();
void stop_moteur();
void demarage_moteur_inverse();
void stop_moteur_inverse();

void setup()
{
  pinMode(pin_sens2_M1, OUTPUT);
  pinMode(pin_sens1_M1,OUTPUT);
  pinMode(pin_enableM1, OUTPUT);

 

  Serial.begin(9600);
  delay(5000);
}

void loop()
{
  Serial.print("Phase d'accelation:");
  demarage_moteur();
  Serial.println("Fin accelaration, debut de la phase arret");
  stop_moteur();
  Serial.println("Moteur arreter debut du sens inverse");
  demarage_moteur_inverse();
  Serial.println("Fin accelaration inverse, debut de la phase arret");
  stop_moteur_inverse();
  Serial.println("Fin de la sequence");
  delay(10000);

}

void demarage_moteur()
{
    digitalWrite(pin_sens1_M1, HIGH);
    

  for(int i=0; i<256;i++)
  {
    Serial.println("+10 %");
    analogWrite(pin_enableM1, i);
    
    delay(40);

  }
}

void stop_moteur()
{
  for(int i=255; i<=0 ;i--)
  {
    Serial.println("-10%");
    analogWrite(pin_enableM1, i);
    
    delay(20);
  }
  digitalWrite(pin_sens1_M1, LOW);
  
}

void demarage_moteur_inverse()
{
    digitalWrite(pin_sens2_M1, HIGH);
    

  for(int i=0; i<256;i++)
  {
    Serial.println("+10 %");
    analogWrite(pin_enableM1, i);
    
    delay(40);
   }
  }



  void stop_moteur_inverse()
  {
    for(int i=255; i<=0 ;i--)
  {
    Serial.println("-10%");
    analogWrite(pin_enableM1, i);
    
    delay(20);
  }
    digitalWrite(pin_sens2_M1, LOW);
    
}

Résultat les 4 L298 sont grillés mais je ne sais pourquoi ce qui est le plus embêtant. Faire des erreurs c’est pas grave c’est les refaire le souci Si quelqu’un à une piste ?? je suis preneur

Merci

Édité par Marycha

Un bon travail se voit, un excellent est invisible.

+0 -0
Auteur du sujet

Bon après une nuit de sommeil tout s’éclaircie je pense avoir compris mon erreur. Je ne pense pas que le code soit en cause je vais expliquer mon raisonnement de départ; incomplet parce que je n’est pas saisi toutes les implication du fonctionnement des driver et de U = R.I

Donc j’avais besoin de d’alimenter mes moteurs (4) en 24V et plus ou moins 2A:

Donc petit calcul 4 moteurs 2A il y auras certainement un pic au démarrage on prévoit un peu plus partons sur 3A. Eureka il me faut une alim d’environ 24v 10A cela devrais aller.

Mes driver L298 peuvent fonctionnés en 2A nominal et accepte des pics de 3A donc je joue la sécurité Mes moteurs ne consommerons que se qu’il ont besoin on va les faire démarrés doucement pour maîtriser le pic de démarrage (c’est pourquoi mon code prévoie une accélération sur 10s )

Tous cela semble juste ma ligne était en parallèle seul l’intensité du moteur serait prise en compte dans le driver mais il semblerait que le module à pris toute l’intensité du circuit soit 10A au lieu de 3. ( 4 moteurs qui accélère environ 2A a 3A chacun on y est )

Ce qui explique du coup qu’il est fumé (normal) mais aussi que mon moteur est parti sous la table lui aussi vu que le driver a fait un cour circuit il a pris les 10A sur un cour instant

Quelqu’un peu confirmé ? parce que c’est la seule hypothèse que j’ai. Merci

Un bon travail se voit, un excellent est invisible.

+0 -0

Cette réponse a aidé l’auteur du sujet

Quitte à ce que sujet soit déterré, j’en profite pour noter que les rampes de freinage ne sont pas appliquées (for(int i=255; i<=0 ;i--)) et que le code ci dessus consiste donc à faire monter les moteurs à vitesse max, puis changer de sens de commande, ce qui les met en freinage régénératif, ce qui va avoir pour effet de renvoyer du courant vers l’alim, qui, n’étant pas une alimentation 2 quadrants, va juste emmagasiner le courant dans sa capa de sortie, faisant monter la tension du système. La tension maximum avant destruction d’un L298N étant de 50V, j’ai du mal à croire que ce soit la cause de la destruction décrite ci-avant, à moins qu’il y ait eu une charge mécanique sur les moteurs pendant les tests (par exemple des roues), mais il me semble utile de rappeler de prendre en compte les phases de freinage quand on conçoit une électronique de commande moteur.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte