Skocz do zawartości

Raspberry Pi , silnik krokowy, A4988 - potrzebny program testowy


ectineraa

Pomocna odpowiedź

Witajcie,
jestem tu na forum nowy i właściwie zaczynam swoją przygodę z elektroniką oraz programowaniem. Jednym słowem wszystko od "zera".

Ogólnie mam problem z uruchomieniem silnika krokowego przez Raspberry Pi(czytałem podobne tematy na forum ale nie rozwiązało to mojego problemu)

1. Silnik krokowy 42BGHM80942BGHM809

2. Sterownik

A4988

3. Raspberry Pi B

Co zrobiłem:

- Podłączyłem RPi do A4988 VDD i GND

- Podłączyłem GPIO DIR do pinu na RPi (23)

- Podłączyłęm GPIO STEP do pinu na RPi 18

- Na piny sterownika VMOT/GND podłączyłem zasilanie 9 V

- Silnik krokowy połączyłem do pinów na sterowniku (1-A, 1B, 2 A, 2B)

- Zmostkowałem Reset i Sleep na sterowniku A4988

Wydaje mi się więc że wszystko jest ok.

Skopiowałem program napisany przez jednego z użytkowników tego forum

#include

#include

#include

#include

#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;

}

I tu sie pojawia problem.

Silnik "piszczy" ale się nie obraca. Przy zmianie napięcia na GPIO zgodie z tym co progam dyktuje , słychać, że dźwięk jaki wydaje z siebie silnik się zmienia.

Podłączyłem również diody do pinów na płytce 1A/B , 2A/B i diody mrugają , tak więc wydaje mi się, że wszystko powinno być ok - a nie jest.

Mam więc olbrzymią prośbę. Ponieważ dopiero uczę się pisać programy to czy mógłby mi ktoś przesłać kod programu poprawnego ponieważ nie dam sobie ręki uciąć, że ten wyżej przedstawiony jest dobry.

Będę wdzięczny

Link do komentarza
Share on other sites

I tu sie pojawia problem.

Silnik "piszczy" ale się nie obraca. Przy zmianie napięcia na GPIO zgodie z tym co progam dyktuje , słychać, że dźwięk jaki wydaje z siebie silnik się zmienia.

Podłączyłem również diody do pinów na płytce 1A/B , 2A/B i diody mrugają , tak więc wydaje mi się, że wszystko powinno być ok - a nie jest.

Przyczyn może być kilka.

1. Przypadkiem podpiąłeś sobie wejście Enable i nim sterujesz tak jakby było to wejście STEP. Wtedy silnik będzie się zachowywał tak jakby chciał ruszyć a nie mógł.

2. Masz źle podłączony silnik, do sterownika, czyli niewłaściwie A, /A lub B, /B tudziesz zamienione miejscami.

Ciekawostka.

Widzę jest tam tez POT czujnika prądu uzwojeń, natomiast nie wiem po co tam taki czujnik jak sterownik nie ma wyjścia informującego o przekroczeniu prądu IMAx ? To tak jakby Bezpiecznik zrobić tak że nie można go wymienić, ani sprawdzić ? Kompletny absurd konstrukcyjny jak dla mnie, zważywszy że 3 nogi scalaka są NC.

Tyle jeżeli chodzi o sprzęt, najprościej sprawdzić czy wszystko masz dobrze podpinając pod STEP jaki generator na NE555 choćby, a DIR do masy. Jak silnik się kręci, to błąd jest w programie.

Na Rapiszczu sie nie znam więc z softem ci nie pomogę.

Link do komentarza
Share on other sites

1. Przypadkiem podpiąłeś sobie wejście Enable i nim sterujesz tak jakby było to wejście STEP. Wtedy silnik będzie się zachowywał tak jakby chciał ruszyć a nie mógł.

2. Masz źle podłączony silnik, do sterownika, czyli niewłaściwie A, /A lub B, /B tudziesz zamienione miejscami.

Ciekawostka.

Na wstępie dziękuję za podpowiedzi.

Ad1) Do wejścia enable nic nie jest podłączone - nawet nie lutowałem do niego goldpina więc raczej nie dostaje sygnału. Jednak próbowałem podpiąć pod Enable GPIO HIGH co kończyło się wyłaczeniem całego sterownika.

ad2) Silnik podłączyłem zgodnie z instrukcjami na stronie (http://botland.com.pl/index.php?controller=attachment&id_attachment=564)

Czarny A1

Zielony A2

Czerwony B1

Niebieski B2

Próbowałem również podłączyć silnik DC 5V do A1 + / A2 - co również powodowało, że silniczek piszczał (zmiennym tonem) jednak nie ruszał.

Link do komentarza
Share on other sites

Więc zrób tak.

Weź silnik krokowy i zmierz omomierzem, czy wyprowadzenia cewek są faktycznie tam gdzie opisuje je schemat. Jeśli tak to spoko.

Można jeszcze sprawdzić polaryzacje cewek, ale to wymaga analogowego woltomierza.

Teraz do sterownika podłącz sobie diody LED połączone wg schematu. R obliczone dla 9V i 30mA.

Ponieważ silnik jest dwufazowy, to jak sterownik działa prawidłowo, to diody powinny migać wg tej tabelki, przy kroku ustawionym (wejścia M-Mode) na 1.

Dla tego zaproponowałem ci dwa kolory LEDów na schemacie łatwiej będzie rozróźnić co się dzieje.

Pewnie teraz już wiesz czemu silniczek DC ci nie ruszył 😎.

Jeżeli tak się nie dzieje to znaczy że jest uwalony sterownik.

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

Ok, wieczorem siąde i spróbuję. Ew nakręcę film i wrzucę tutaj.

Mam też pytanie dot. sygnału na pin "STEP". Czy sygnał ma być "ciągły" ?

Jako że jestem początkujący to ciężko mi to wytłumaczyć, ale chodzi mi o to , że jak wszystko podłączę :

DIR będzie podłączony w RPi do GND

STEP np do pinu 7

To mogę z konsoli zmieniać sygnał na PIN7 - LOW/HIGH.

I zastanawiam się czy mogę na stałe PIN 7 ustawić HIGH przez co silnik będzie się kręcił cały czas, czy może stan PIN-u 7 ma się zmienić z LOW na HIGH na jakieś kilka mikrosekund i znów wrócić na stan LOW ?

Podobnie się zastanawiam jak to ma być w przypadku gdy podłączę sterownik w taki sposób:

VMOT / GND - do 9V

1A/1B/2A/2B - silnik

VOD / GND - do 3.3 V z pinów RPi

MS 1 do GPIO np. 7 RPi

MS 2 do GPIO np. 8 RPi

MS 3 do GPIO np. 25 RPi

RST/SLEEP - mostek

i zgodnie z instrukcją sterownika stan LOW na MS1, MS 2, MS 3 powoduje pełny obrót silnika. Więc zastanawiam się czy w przypadku gdy ten stan będzie wszędzie cały czas LOW to czy silnik będzie się obracał bez przerwy ?

Tak jak wspomniałem, zaczynam wszystko od zera zarówno w programowaniu i elektronice więc proszę mi wybaczyć jeśli moje pytania wydają się "głupie"

Będę również wdzięczny jeśli ktoś by mi podesłał jakiś kod na program testowy dla konfiguracji DIR/STEP

I jeszcze pytanie trochę nie do tematu, zwróciłem uwagę, że niektórzy fajnie przedstawiają graficznie podłączenie np. RPi / płytka sytkowa / zasilanie / silnik

konkretnie mam na myśli coś takiego jak w linku : http://picoboard.pl/wp-content/uploads/uk%C5%82ad-serv-PWM.jpg

Czy to jest jakiś program ? Jeśli tak to jak się nazywa?

Link do komentarza
Share on other sites

Mam też pytanie dot. sygnału na pin "STEP". Czy sygnał ma być "ciągły" ?

Po Angielsku STEP to krok, czyli podaje się tam sygnał krokowy. Moim zdaniem jest to trochę mylące oznaczenie dla tego pinu, ponieważ w mi znanych sterownikach ma ono oznaczenie CLK, czyli zegar, co sugeruje jasno i klarownie, że trzeba tam podać przebieg prostokątny taktujący sterownik.

Dla tego wcześniej zasugerowałem ci podłączenie sobie do tego wejścia generatora na NE555, tak 50 do 100Hz.

Można od biedy podpiąć tam nawet przycisk, ale dobuduj sobie do niego układ odkłucający RC, bo inaczej będą ci się działy dziwy.

i zgodnie z instrukcją sterownika stan LOW na MS1, MS 2, MS 3 powoduje pełny obrót silnika. Więc zastanawiam się czy w przypadku gdy ten stan będzie wszędzie cały czas LOW to czy silnik będzie się obracał bez przerwy ?

To jest tylko precyzja kroku, czyli dokładność obracania się wału silnika.

Widzę że nie rozumiesz idei sterowania takim silnikiem. poszukaj i poczytaj sobie najpierw podstawy. Inaczej rozwalisz sterownik, silnik.

Link do komentarza
Share on other sites

aha jeszcze jedno szybkie pytanie, czy wina możę byćpo stronei zasilania ? Do zasilania sterownika używam baterii firmy Nosram 2200 NiMH 7,2V (nie mniej napięcie jakie mi podaje voltomierz przy pełnym naładowaniu baterii to 9.1 V.

Planuję przerobić sobie zasilacz komputerowy żeby z niego brać napięcia 3.3 / 5 / 12 V - będzie to dobre rozwiązanie ?

[ Dodano: 31-03-2014, 21:03 ]

No więc tak, podłączyłem diody i uruchomiłem program (kod na samej górze)

Skutek jak na filmie:

[ Dodano: 31-03-2014, 21:58 ]

Dorzucam jeszcze jeden film na 4 diodach:

[ Dodano: 01-04-2014, 01:40 ]

Mam w głowie jeszcze jedną myśl - może się mylę ale :

Silnik który mam wg. specyfikacji:

Rozdzielczość: 400 kroków/obr (0,9 °)

Napięcie znamionowe: 3V

Pobór prądu na cewkę: 1,7 A

Specyfikacja sterownika to:

Napięcie zasilania silnika: 8 V - 35 V

Prąd: maks. 1A na cewkę ( przy zastosowaniu chłodzenia do 2 A)

I teraz się zastanawiam czy problem nie tkwi właśnie tutaj.

Silnik jest na 3V a sterownik wypuszcza takie zasilanie jakie dostaje czyli w moim przypadku 8-9V.

Nie mniej silnik ma pobór prądu na cewkę 1,7A a w specyfikacji sterownika mam prąd maks. 1A na cewkę.

ALE jest również informacja żę prąd max wynosi do 2A "przy zastosowaniu chłodzenia" czyli założeniu radiatora. Zakładam jednak, że bez radiatora i tak przez sterownik powinien przejść prąd 2A - najwyżej sterownik się spali.

Silnik, właściwie jak dostaje 8V to może nie ruszyć? Chyba szybciej się spali , czy się mylę?

Jak podłączę go bezpośrednio do baterii to wykonuje krótki ruch więc wątpi że z powodu za wysokiego napięcia silnik "stoi"

Sam już nie wiem..

Link do komentarza
Share on other sites

Ja bym na twoim miejscu spróbował jeszcze z inną bibliotekę np pigpio u mnie wiringpi zawsze miał kaprysy i nie robił tego co trzeba.

Spróbuj puścić serie stanów wysokich i niskich za jego pomocą. Lub ręcznie kilka razy i zobacz czy silnik ruszy. Ten sterownik działa tak że na DIR ustawiasz kierunek, zaś STEP powinien przyjmować stan wysoki na jeden krok. Możesz również spróbować z PWM-em myślę że też da rady.

No i pokaż zdjęcie podłączenia całego układu lub go wyrysuj.

Rzeczywiście dajesz za duże napięcie na silnik. Spróbuj dać mniejsze sterownik powinien też zadziałać. Ale obawiam się dając prawie 3 razy większy prąd uszkodziłeś go.

Link do komentarza
Share on other sites

Ja bym na twoim miejscu spróbował jeszcze z inną bibliotekę np pigpio u mnie wiringpi zawsze miał kaprysy i nie robił tego co trzeba.

Spróbuj puścić serie stanów wysokich i niskich za jego pomocą. Lub ręcznie kilka razy i zobacz czy silnik ruszy. Ten sterownik działa tak że na DIR ustawiasz kierunek, zaś STEP powinien przyjmować stan wysoki na jeden krok. Możesz również spróbować z PWM-em myślę że też da rady.

No i pokaż zdjęcie podłączenia całego układu lub go wyrysuj.

Rzeczywiście dajesz za duże napięcie na silnik. Spróbuj dać mniejsze sterownik powinien też zadziałać. Ale obawiam się dając prawie 3 razy większy prąd uszkodziłeś go.

Więc na "szybko" zrobiłem szkic połączenia nad którym siedzę :

- wiem, że pytałem, ale może jest jakiś program, żeby takie szkice robić ładniej?

A w nawiązaniu do odpowiedzi cyryllo to przy napięciu poniżej 7.7 V sterownik nie działa więc nie dam rady. Zresztą sam sterownik obsługuje napięcia do 35V więc myślę, że go nie uszkodziłem - bardziej w moim chłopskim odczuciu mógłbym spalić silnik.

Jednak martwi mnie cały czas fakt żę silnik potrzebuje na cewkę 1.7A a sterownik ma 1A (podobno przy chłodzeniu do 2A).

Teraz się więc zastanawiam, czy kupić nowy silnik czy nowy - inny sterownik - jest może jakiś sterownik bardziej uniwersalny, bo przeglądam sterowniki na botland i cięzko mi dobrać taki który pozwoli mi na obsługę różnych silników krokowych ? Słyszałem dużo o mostkach H ale jeszcze nie zgłębiłem informacji o nich.

Ogólnie tak jak mówiłem zaczynam dopiero ale w planach mam zrobić mini CNN.

Spróbuje wieczorem tak jak mówisz z biblioteką pigpio.

Link do komentarza
Share on other sites

Możesz mi powiedzieć poco zasilasz reset napięciem 3,3V? Połącz reset ze sleep.

Co do Amperów to puki nie obciążysz silnika to na wolno obracający się silnik nie musisz mieć chłodzenia. Gdy już będziesz mieć obciążenie wtedy warto się zainteresować.

Link do komentarza
Share on other sites

Możesz mi powiedzieć poco zasilasz reset napięciem 3,3V? Połącz reset ze sleep.

Co do Amperów to puki nie obciążysz silnika to na wolno obracający się silnik nie musisz mieć chłodzenia. Gdy już będziesz mieć obciążenie wtedy warto się zainteresować.

Reset podłączyłem pod 3.3V ponieważ wg. instrukcji ma on mieć stan wysoki, a ja gdzieś zgubiłem goldpiny i nie mam jak rozsądnie zmostkować reset i sleep. Może to być przyczyną tego, że silnik nie rusza?

Nakręcę dzisiaj chyba film cały - podłączę wszystko na filmie od "zera" i pokażę Wam jak reaguje silnik itd.

Szczerze mówiąc już 3-ci dzień(właściwie noc) siedzę nad tym i powoli tracę cierpliwość 🙂, nie wiem co robić, kupować nowy sterownik (jaki?) kupować nowy silnik o niższym A, szukać problemu w baterii, szukać problemu w kodzie , czy może coś jest źle podłączone ... sam już nie wiem bo próbowałem na wiele różnych sposobów i efektów brak..

Link do komentarza
Share on other sites

Niestety ale uwaliłem chyba wczoraj sterownik, bo dzisiaj go chciałem włączyć i nie reaguje - sprawdzałem na diodach oraz na voltomierzu i na pinach A1/2 oraz B 1/2 nie ma żadnego napięcia.

Tematu jednak nie poddaje i zamierzam kupić nowy sterownik , pytanie jaki mi doradzacie.

Wiem, że najpierw powinienem odpowiedzieć na pytanie - a do czego ten sterownik i do jakich silników będziesz używał, więc powiem tak : Sterownik który pozwoli mi na uruchomienie silnika krokowego taki jak posiadam link

Zastanawiam się nad sterownikiem:

1. Taki jak miałem czyli A 4988

2. DRV 8834

Może jakieś inne propozycje ?

Link do komentarza
Share on other sites

No i przyszedł do mnie nowy sterownik, nagrałem od razu film jak i co robię więc zapraszam

Film podzieliłem na 2 części , właśnie wrzucam na YT drugi etap.

Efekt końcowy jest wg. mnie niezadowalający 🙁 może już na tym etapie (czyli oglądając pierwszy filmik) ktoś mi powie że robię gdzieś błąd.

- cz.1

- cz.2
Link do komentarza
Share on other sites

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.