Skocz do zawartości

[RaspberryPi] Sterowanie silnikiem krokowym


Pomocna odpowiedź

Napisano

Witam wszystkich ❗

Czy ktoś z forumowiczów miał przygodę z sterowaniem silnikiem krokowym z maliny?

Mam problem z uruchomieniem silnika.

Części które mam:

[*][*]silnik PG1521-0504B

[*][*]sterownik A4988

[*][*] stabilizator napięcia avt1667

Co zrobiłem:

[*]Podłączyłem zasilanie 5V z 6 baterii AA do pinów GND, VMOT sterownika przez avt1667

[*]Podłączyłem zasilanie z maliny z pinów P1-06, P1-02 do pinów GND i VDD sterownika.

[*]Podłączyłem do pinów sterownika DIR, STEP piny maliny P1-16, P1-12

[*]Spiąłem ze sobą piny RESET i SLEEP sterownika(zgodnie z rysunkiem minimalnego podłączenia sterownika.)

[*]Podłączyłem kable silnika do sterownika[*]Żółty do 1B[*]Pomarańczowy do 1A[*]Brązowy do 2A[*]Czarny do 2B

[*]Dodałem diodki testowo do kabli przy DIR, STEP. Wcześniej testowałem bez i też nie działało

Oznaczenia pinów raspberry zgodne z

http://elinux.org/RPi_Low-level_peripherals

Program który używam do kontroli:

#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <wiringPi.h>

#define DIR_PIN 23
#define STEP_PIN 18
#define DELAY 5
#define BETWEN_TEST_DELAY 3000

int main (int argc, char *argv[]) {

   if (wiringPiSetupGpio () == -1) {
       fprintf (stderr, "Can't initialise wiringPi: %s\n", strerror (errno)) ;
       return 1 ;
   }


   pinMode(DIR_PIN, OUTPUT);
   pinMode(STEP_PIN, OUTPUT);

   while(1) {

       printf("dir low test start\n");
       digitalWrite(DIR_PIN, LOW);
       int i = 0;
       for(i = 0; i < 1000; i++) {
           delayMicroseconds(DELAY);
           digitalWrite(STEP_PIN, HIGH);
           delayMicroseconds(DELAY);
           digitalWrite(STEP_PIN, LOW);
       }
       printf("dir low test end\n");

       delay(BETWEN_TEST_DELAY);

       printf("dir high test start\n");
       digitalWrite(DIR_PIN, HIGH);
       i = 0;
       for(i = 0; i < 1000; i++) {
           delayMicroseconds(DELAY);
           digitalWrite(STEP_PIN, HIGH);
           delayMicroseconds(DELAY);
           digitalWrite(STEP_PIN, LOW);
       }
       printf("dir high test end\n");

       delay(BETWEN_TEST_DELAY);
   }

   digitalWrite(STEP_PIN, LOW);
   digitalWrite(DIR_PIN, LOW);

   return 0;
}

Mimo że kombinowałem z różnymi ustawieniami i połączeniami i programem ciągle nie mogę uruchomić silnika żeby chociaż drgnął. Silnik nie wydaje żadnych dźwięków.

Ma ktoś pojęcie gdzie popełniłem błąd?

Z góry dziękuję za odpowiedzi:)

Zacznij od zmierzenia napięcia na VMOT. Moim zdaniem ten sterownik potrzebuje tam co najmniej 8V do prawidłowej pracy. Skąd Ci przyszło do głowy te 5V i po co wstawiłeś tam dodatkowy stabilizator? Przecież silnika nie obchodzi jakim napięciem zasilasz driver tylko jaki prąd płynie mu przez uzwojenia a od tego masz regulację na samym sterowniku. Poza tym ten stabilizator z AVT ma na wejściu prostownik co daje spadek od razu z 1.5V na dzień dobry a potem z tego co zostało miałby zrobić 5V? To będzie trudne bo to nie jest jakiś LDO tylko stary Simple Switcher a one nie miały takich osiągów. Jeśłi nawet masz 5V to jest to na granicy działania tego układu. Zanim zaczniesz bawić się dalej znajdź zasilacz 12V/1A i multimetr.

Pamiętaj też o założenia radiatora na układ sterujący silnikami bo może być tak że się od razu przegrzewa i bezpiecznik odłącza wszystko. Ja tak miałem u mnie w robocie po 3-4 sekundach silniki stawały.

  • 4 tygodnie później...

Witam, pytałem już na tym forum jak obsługiwać silniki krokowe niestety jakimś cudem (a właściwie brakiem umiejętności) cały zestaw skutecznie zamordować. 😳 W związku z tym prosiłbym drogich forumowiczów o pomoc.

Otóż ciągle chce zamontować silniki krokowe do raspberry pi.

Czego potrzebuję:

2 silniki krokowe (napęd)

1 serwomotor ("kierownica")

sterownik(i) możliwie ułatwiając(y/e) kontrolowanie silników.

Zależy mi na tym aby silniki były wstanie poruszyć samochodzikiem o wadze 1-2 kg.

Jednym z ważniejszych kryteriów jest to aby cały zestaw dało się zasilać bateriami.

Fajnie by było żeby sterownik wymagał 2 wejść logicznych (ze względu na małą ilość gpio na malince)

Czy ma ktoś pomysł na możliwie łatwy do złożenia zestaw?

__________

Komentarz dodany przez: Sabre

Scaliłem z pierwszym tematem, nie wiem po co zakładałeś nowy skoro dotyczy tego samego.

Gotowce:

http://electropark.pl/moduly-sterowniki-silnikow/3326-modul-sterownika-silnika-krokowego-uln2003-5v-12v-z-silnikiem-krokowym-5v.html - te działają zasilane z USB (mikrokontroler pyMCU). Na Raspberry mogą wymagać zewnętrznego zasilania. 4 GPIO do sterowania.

I jakieś tanie serwo:

http://electropark.pl/towerpro-serwa/2496-towrpro-sg-92r-serwo-modelarskie-5901002496004.html - jedno serwo można sterować z GPIO udającego PWM.

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