Skocz do zawartości

Błąd lewego silnika podczas zadawania poszczególnych komend


mateusz797

Pomocna odpowiedź

Dzień dobry,

 

Poniższy program służył mi do nadawania poszczególnych stanów dla silników, stosowałem go podczas budowy robotów.

Program ten poprawnie mi działał do dzisiejszego dnia, czyli - po podłączeniu do mostka silnika L298N, arduino oraz platformy robota .

Zasada działania programu : robot na poczatku przez 6 sek jedzie prosto, potem do tyłu następnie skręca w prawo oraz w lewo. Dzisiaj zaczalem program testowac na innym podwoziu. Lewy nie chce kręcic się do przodu, tylko do tyłu się kręci, czyli poprawnie działają teraz komendy :

a) Jazda do tyłu (bo lewy silnik się kreci do tyłu)

b) skręt w lewo (bo lewy kręci sie o tyłu a prawy do przodu)

 

Nie działają komendy:

c) Jazda o przodu (kręci sie tylko prawy silnik, lewy się nie rusza)

d) Skręt w prawo (kręci sie prawy silnik o tyłu, lewy sie nie rusza)

 

Rozebrałem podwozie, Pojedynczo podlaczylem silniki do małej baterii, jak zmienilem biegunowość to po podłączeniu do baterii, kazdy silnik sie krecil w lewo lub w prawo (Tak jak bylo na poczatku ),

Przekladnie sprawdzalem, nigdzie nie ma połamanych zębów, smarowanie jest. Problem tkwi w tym że po podłączeniu sterownika silnikow i arduino działają mi tylko teraz dwa kanały.

Ja mam wrazenie ze musze nowy mostek H kupic, bo za lewy silnik jest odpowiedzialny jest ENA. Czy mieli Państwo podobny problem? Program mi działał dobrze całe dwa miesiace spr. na tym silniki. Dzisiaj sie coś stało, ze lewy silnik tylko o tyłu sie kręci

const int IN1 = 7;
const int IN2 = 6;
const int IN3 = 4;
const int IN4 = 5;

const int ENA = 11;
const int ENB = 3;


void setup() {

  pinMode (IN1, OUTPUT);
  pinMode (IN2, OUTPUT);
  pinMode (IN3, OUTPUT);
  pinMode (IN4, OUTPUT);
  pinMode (ENA, OUTPUT);
  pinMode (ENB, OUTPUT);
  // put your setup code here, to run once:

}

void loop() {

  delay(4000);

  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);

  
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);

  analogWrite(ENA, 80);   // 80/256 predkosc
  analogWrite(ENB, 80);    // Syt. 1 - Prosto

  
  delay(6000);

  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);

  
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);   // Syt. 2 - Jazda do tyłu

  analogWrite(ENA, 80);   // 80/256 predkosc
  analogWrite(ENB, 80);
  delay(6000);           

  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);

  
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);

  analogWrite(ENA, 105);   // skret w prawo
  analogWrite(ENB, 105);
  delay(6000);


  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);

  
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);

  analogWrite(ENA, 105);   // lewo
  analogWrite(ENB, 105);
  delay(6000);
}


 

Edytowano przez Gieneq
Zachęcam do używania bloku kodu
Link do komentarza
Share on other sites

Szkoda ze nie dałeś schematu by ułatwiło... Albo nie opisałeś dokładniej programu co robi...

 

A z tego co opisujesz wynika że nie łączy któryś :

IN2 = 6;  IN4 = 5;

 

Tylko nie wiem który pin  jest odpowiedzialny do tego silniczka 

ale ta tabela ci podpowie

Screenshot_4.jpg

Edytowano przez Jarewa
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.