Skocz do zawartości

Sterowanie silnikami krokowymi przez BlueTooth


BuxBleed

Pomocna odpowiedź

Witam, mam problem ze sterowaniem silnikami krokowymi przez terminal Bluetooth w telefonie. Używam płytki Arduino Mega2560 w wersji oryginanej, nie żaden klon.

Otóż, jeśli arduino jest zasilane z kompa przez USB to wszystko działa super. Łącze się poprzez terminal w telefonie i komunikacja przebiega prawidłowo. Problemy zaczynają się kiedy arduino i silniki krokowe są zasilane z jednego źródła, w tym przypadku ogniwo Li-Pol.

Znowuż łączę się przez terminal w telefonie, stosowna dioda na module XM-15B zaczyna ciągle się świecić sygnalizując nawiązanie połączenia. No i w ogóle program nie odpowiada, zero jakichkolwiek reakcji ze strony programu. Nie wiem co może być nie tak, w końcu różni się to tylko sposobem zasilania układu.

Oto kod programu:

#define L_DIR 2 
#define R_DIR 3
#define L_STEP 9
#define R_STEP 8      //definicje pinów STEP i DIR na sterowniku DRV8825


void setup()
{ 
 Serial3.begin(9600);
 pinMode(L_STEP, OUTPUT);  
 pinMode(R_STEP, OUTPUT);
 for(int i=0;i<6;i++)
 {
   pinMode(22+i,OUTPUT);       // Ustawiam wszystkie piny do regulacji wielkosci krokow MO,M1,M2 na obu driverach jako wyjscie 
 }
   for(int i=0;i<6;i++)
 {
   digitalWrite(22+i,HIGH);  // Ustawiam  stan wysoki na wszystkich pinach  MO,M1,M2 na obu driverach
 }
 digitalWrite(L_STEP,LOW);
 digitalWrite(R_STEP,LOW);
 digitalWrite(L_DIR,LOW);
 digitalWrite(R_DIR,HIGH);
 delay(2000);
} 


void dir()
{
 if (Serial3.available()>0)      
 {
   char data=(char)Serial3.read();
   if(data=='k')
   {
    delay(1);
     Serial3.println("ZMIANA KIERUNKU");
     digitalWrite(L_DIR,HIGH);
    digitalWrite(R_DIR,LOW);
   }
   else
   {
     delay(1);
     Serial3.println("NIC SIE NIE DZIEJE");
   }
 }
}

void loop() 
{ 
 dir();
 delayMicroseconds(500);
 digitalWrite(L_STEP,LOW);     // sterowanie obydwoma silnikami poprzez podanie im impulsu co 500us
 digitalWrite(R_STEP,LOW);
 delayMicroseconds(500);
 digitalWrite(L_STEP,HIGH);
   digitalWrite(R_STEP,HIGH);
} 
Link do komentarza
Share on other sites

Oczywiście zanim napisałeś zmierzyłeś napięcie zasilania procesora na którymś pinie VCC - okazało się poprawne 5V i puściłeś jakikolwiek program, np. "firmowy" Blink mrugający diodką LED i ten działał, tak? Co to za "ogniwo Li-Pol"?

Link do komentarza
Share on other sites

No wszystko działa poprawnie, za wyjątkiem tego modułu, diody świecą się, silniki się kręcą w jedną stronę. A znak podany z terminala miał zmieniać ich kierunek.

No najzwyczajniejszy Akumulator litowo-polimerowy dający napięcie 11,7V z którego zasilane jest arduino i cały układ.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

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