Skocz do zawartości

Kod do sterowania silnikami DC


Pomocna odpowiedź

Witam ponownie, mierzyłem wejścia i wyjścia drivera tak jak mówiłeś i nie wykryłem zwarć. Nie mam pojęcia co to może być. Zamówiłem nowe układy do sterowania więc zobaczymy czy to wina drivera czy moja.

Ahhhh.. zapomniałem napisać, zrobiłem to także jednak gdy silniki są odłączone problem nie występuje, nie ma zmniejszania napięcia oraz przygasania wszystkiego a dioda CC na zasilaczu nie zapala się.

Tak było prościej gdyż do dzisiaj nie wiem co jest przyczyną złego działania układu a otrzymana pomoc nie była wystarczająca więc próbuję nowych rozwiązań eliminując po kolei poszczególne elementy. Dwa nowe drivery nie powinny być uszkodzone więc zobaczymy czy to ich wina, później spróbuję dać inne silniki chociaż to raczej nie pomoże gdyż na początku jeden silnik miałem inny i było to samo, na końcu zostanie kod jednak nie mam pojęcia co może być tam źle, szczególnie że poprawnie nie działa tylko jedna część. Zamiana biegunowości nie ma tutaj nic do rzeczy ponieważ driver i tak steruje nimi niezależnie wiec będzie tylko zamieniony kierunek obrotów.

Ale co konkretnie znaczy połączenia między tym wszystkim ? Chodzi Ci o to czy wszystko jest dobrze połączone ?

Rozwiązałem problem, wina leżała w połączeniach (i chyba w programie) . Umieszczam dobry program oraz schemat połączeń. Może komuś się przyda.

#include <SoftwareSerial.h>
SoftwareSerial Digit(10,11); // RX, TX

int BluetoothData;
int Zamek_Kierunek = 8; // Do HG7881, wyjście A-1A 
int Zamek_Predkosc = 9; // Do HG7881, wyjście A-1B  PWM~
int Naped_Kierunek = 7; // Do HG7881, wyjście B-1A 
int Naped_Predkosc = 6; // Do HG7881, wyjście B-1B  PWM~


void setup()  {                          
 Digit.begin(9600);

 pinMode(Zamek_Kierunek, OUTPUT); 
 pinMode(Zamek_Predkosc, OUTPUT);
 pinMode(Naped_Kierunek, OUTPUT);
 pinMode(Naped_Predkosc, OUTPUT);    
 pinMode(Swiatlo_Garaz, OUTPUT);  
  }

void loop() {
 if (Digit.available()){
   BluetoothData=Digit.read();  

       if(BluetoothData=='o')  {          

           //digitalWrite(Swiatlo_Garaz, LOW);

           analogWrite(Zamek_Kierunek, 255);   
           for(int i=50; i<=55; i++)  {
               analogWrite(Zamek_Predkosc, odwrocWartosc(i));
               delay(40);  }

           delay(2000);
           analogWrite(Zamek_Kierunek, LOW);
           analogWrite(Zamek_Predkosc, LOW);
           delay(1000);

           analogWrite(Naped_Kierunek,255);
           for(int j=35; j<=40; j++)  { 
               analogWrite(Naped_Predkosc,odwrocWartosc(j) );
               delay(40);  }

           delay(2500);
           analogWrite(Naped_Kierunek, LOW);
           analogWrite(Naped_Predkosc, LOW);  
           delay( 1000 ); }


       if(BluetoothData=='z')  { 
          analogWrite(Naped_Kierunek, LOW); 
           for(int j=35; j<=40; j++)  { 
               analogWrite(Naped_Predkosc,j);
               delay(40);  }

           delay(2500); // 2,5 SEK NA PEŁNYCH OBROTACH 
           analogWrite(Naped_Kierunek, LOW);
           analogWrite(Naped_Predkosc, LOW);
           delay(1000); // CZAS PO ODCIĘCIU ZASILANIA 

            analogWrite(Zamek_Kierunek, LOW);
           for(int i=50; i<=55; i++)  { 
               analogWrite(Zamek_Predkosc,i);
               delay(40);  } //CZAS W KTÓRYM ZMIENIANE JEST 
                             //WYPEŁNIENIE CZYLI CO 40 MS

           delay(2000);
           analogWrite(Zamek_Kierunek, LOW);
           analogWrite(Zamek_Predkosc, LOW); 
             delay( 1000 );  } 

} // do if Digit available
} //do Void loop


int odwrocWartosc(int zmienna)  {
 return 255 - zmienna;  } 

IMG_5858459c53ac72200.png

Obejrzyj dokładnie pod lupą całą płytkę od scalaków do wyjść. Jeżeli nie znajdziesz zwarcia organoleptycznie, ustaw multimetr na poszukiwanie zwarć (biip) i przy wyłączonym zasilaniu wszystkiego sprawdź czy istnieje przejście między którymś wyjściem drivera a GND lub którymś z 4 wyjść a zasilaniem drivera.

Jeżeli wszystko będzie OK, to jest jakiś problem z połączeniem silników.

..mierzyłem wejścia i wyjścia drivera tak jak mówiłeś i nie wykryłem zwarć. Nie mam pojęcia co to może być..

..zapomniałem napisać, zrobiłem to także jednak gdy silniki są odłączone problem nie występuje

Czy połączone są właściwe rzeczy, czy te połączenia są pewne, czy nie ma zwarć

..a otrzymana pomoc nie była wystarczająca .. wina leżała w połączeniach..

Zabrakło wyprowadzania na siusiu? 😐

Nie dało Ci prawda ? Musiałeś jeszcze napisać swoje. Mimo Twojego denerwującego stylu pisania dziękuję za pomoc.

Nie dało Ci prawda ?

Drobiazg, lubię to a poza tym była to praca zespołowa.

BTW: Co mi nie dało i czego? Rób wszystko 2x wolniej i 2x przy tym więcej myśl a będziesz popełniał 4x mniej błędów. Spróbuj kiedyś - to działa.

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...