Problema con motor driver L298N

Salve a tutti, è da circa due settimane che sto provando a creare una macchina comandata a IR, il problema è che il motor driver
(questo https://www.amazon.it/bipolare-Raspberry-intelligente-pannello-controllo/dp/B06X9KQ84B/ref=asc_df_B06X9KQ84B/?tag=googshopit-21&linkCode=df0&hvadid=279830266001&hvpos=&hvnetw=g&hvrand=11665359880992180032&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1008747&hvtargid=pla-420918437214&psc=1)

muove solo il motore a sinistra, da quello a destra non ho segni di risposta, ho controllato le connessioni diverse volte e penso siano giuste. Sto usando questo codice:

#include "IRremote.h"
IRrecv telecomando(11);
decode_results risultato;
int enA = 9;
int in1 = 8;
int in2 = 7;
int in3 = 5;
int in4 = 4;
int enB = 3;

void setup()
{
  Serial.begin(9600);
  telecomando.enableIRIn();
pinMode(enA , OUTPUT);
pinMode(enB , OUTPUT);
pinMode(in1 , OUTPUT);
pinMode(in2 , OUTPUT);
pinMode(in3 , OUTPUT);
pinMode(in4 , OUTPUT);
}
void avantixx()
{
digitalWrite(in1,HIGH);
digitalWrite(in2, LOW);
analogWrite(enA,250);
digitalWrite(in3,LOW);
digitalWrite(in4, HIGH);
analogWrite(enB,250);
}
void avantix()
{
digitalWrite(in1,HIGH);
digitalWrite(in2, LOW);
analogWrite(enA,150);
digitalWrite(in3,LOW);
digitalWrite(in4, HIGH);
analogWrite(enB,150);
}
void Stop()
{
digitalWrite(in1,LOW);
digitalWrite(in2, LOW);
analogWrite(enA,LOW);
digitalWrite(in3,LOW);
digitalWrite(in4, LOW);
analogWrite(enB,LOW);
}
void indietro()
{
digitalWrite(in1,LOW);
digitalWrite(in2, HIGH);
analogWrite(enA,100);
digitalWrite(in3,LOW);
digitalWrite(in4, HIGH)
analogWrite(enB,100);
}
void destra()
{
digitalWrite(in1,HIGH);
digitalWrite(in2, LOW);
analogWrite(enA,50);
digitalWrite(in3,LOW);
digitalWrite(in4, LOW);
analogWrite(enB,LOW);
}

void sinistra()
{
digitalWrite(in1,LOW);
digitalWrite(in2, LOW);
analogWrite(enA,LOW);
digitalWrite(in3,HIGH);
digitalWrite(in4, LOW);
analogWrite(enB,50);
}
void loop() 
{
   if (telecomando.decode(&risultato))[
    {
      if(risultato.value==16750695){avantixx();}
      if(risultato.value==16718055){avantix();}
      if(risultato.value==16726215){Stop();}  
      if(risultato.value==16730805){indietro();}
      if(risultato.value==16716015){sinistra();}  
      if(risultato.value==16734885){destra();}
      Serial.println(risultato.value);
       telecomando.resume();
    }
}

>leonardocolletta: ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice (... fosse anche UNA sola riga) all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag: [code] _il _tuo_ codice_ [/code] così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie.

Guglielmo

P.S.: Ti ricordo anche che, purtroppo, fino a quando non avrai sistemato il codice come richiesto, nessuno ti potrà rispondere, quindi ti consiglio di farlo al più presto. :wink:

Ciao, magari sarebbe utile avere uno schema di connessione dei motori con il chip! Mi chiedo perchè usi una connessione a infrarossi invece che a bluetooth?
Il consiglio che posso darti è controllare di aver scritto le funzioni avantix, avantixx, indietro etc correttamente per verificare che non ci siano contrasti tra loro.
Il secondo consiglio che posso darti è quello di provare in modo indipendente ogni singola funzione.

Grazie mille, la foto si dovrebbe vedere aprendo questo link (Login | Tinkercad) , mi scuso per il circuito, l'ho fatto su Tinkercad e non era disponibile il controllore, quindi ho provato a riprodurre le connessioni alla meglio.
In realtà sul mio Arduino ho messo una scheda di espansione che ha 5 connessioni 5V e GND , quindi i 5V del modulo infrarossi non sono nello stesso pin del 5V da cui arriva l'alimentazione (Arduino viene alimentato dal 5V supply che è fornito dal controllore dei motori).
le connessioni ai pin sono queste: 9=ENA/ 8=IN1/ 7=IN2/ 5=IN3 / 4=IN4 / 3=ENB; poi c'é l'ingresso in cui arriva l'alimentazione della batteria da 12V direttamente sul motor driver, la terra che va ad Arduino e quella che va alla batteria, e il 5V supply.
Con questi collegamenti, quando tutto è in funzione, premo i tasti che ho impostato per i movimenti e solo il motore a sinistra risponde (correttamente) mentre quello a destra è fermo. Inizialmente ho pensato a un problema del motore, ma dopo che li ho invertiti : quello che prima non funzionava, messo a sinistra era funzionante mentre a destra quello che prima andava ora era fermo.
Ho controllato diversi siti sulle connessioni, e ho riscontrato alcune divergenze: alcuni dicono che le connessioni del motore a destra sono l'opposto di quelle a sinistra (5V sotto e GND sopra) mentre altri no (sia a destra che a sinistra 5V sopra e GND sotto) ho provato tutte e due le connessioni ma il motore resta immobile.
Non saprei cosa fare, é possibile che sia rotto? Grazie mille, buona Pasqua.

Prova a vedere qui.
Segui le istruzioni, crea il circuito, carica il codice e vedi se c'è un guasto sul modulo o no.

Ciao,
P.

Grazie mille per l'aiuto, penso proprio che sia rotto :slightly_frowning_face:.

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