Diverso comportamento di due motori DC con l298n e sensore hc-sr04.

Ciao a tutti ho creato una macchinina schiva ostacoli composta da due motori DC un sensore hc-sr04 e la motor shield l298n. Ho alimentato il tutto con 6 pile AA come consigliatomi in questo forum. Tutto funziona, c’è soltanto un problema, uno dei due motori non rispetta la velocità che gli ho assegnato ma va più lento o addirittura a scatti.

inserisco il mio codice per farvi capire meglio:

#include <NewPing.h>
#define PIN_TRIG 2
#define PIN_ECHO 3
#define MAX_DIST 3000
NewPing datoregistrato(PIN_TRIG,PIN_ECHO,MAX_DIST);
int ENA=11; 
int IN1=10; 
int IN2=9; 
int IN3=8; 
int IN4=7; 
int ENB=6;
unsigned int uS;
float cm;
void setup() {
 pinMode(ENA, OUTPUT);
 pinMode(ENB, OUTPUT);
 pinMode(IN1, OUTPUT);
 pinMode(IN2, OUTPUT);
 pinMode(IN3, OUTPUT);
 pinMode(IN4, OUTPUT);
Serial.begin(115200);
}

void loop() {
Serial.print("Dista: ");
 
Serial.print(cm);
Serial.println(" cm");
 
  uS = datoregistrato.ping();
  cm = datoregistrato.convert_cm(uS);
if(cm>30)
{ 
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENA, 200);
analogWrite(ENB, 200);
}
if (cm>=8 && cm<=50)
{
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENA, (int)(200*(cm-10)/40+50));
analogWrite(ENB, (int)(200*(cm-10)/40+50));
 }                                                                                                             

if (cm<8 ) 
 {
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENA, 150);
analogWrite(ENB, 150);
delay(1500);  
 }

}

Grazie per chi mi darà una mano! :slight_smile:

Nota del moderatore: Stai già parlando della stessa cosa QUI ed il cross-posting è proibito. Cortesemente continua nell’altro thread. Grazie - gpb01