Skocz do zawartości

PCA9685, Arduino UNO, servo 360


Daniel1172

Pomocna odpowiedź

Witam.

Posiadam Arduino UNO i kontroler serw PCA9685. Posiadam bibliotekę Adafruit PWM servo.

Udało mi się sterować serwami 180, lecz nie wiem w jaki sposób sterować serwami o ciągłej rotacji. Miał ktoś taki sam problem i wie jak to zrobić?

Czy są do tego może jakieś inne biblioteki? Zależy mi na korzystaniu z kontrolera PCA9685, ponieważ chciałbym sterować kilkoma serwami.

Link do komentarza
Share on other sites

Sterowanie tymi serwami odbywa się dokładnie w taki sam spsób, co zwykłymi. Jedyną różnicą jest to, że w "normalnym" serwie ustawianą wielkością jest położenie kątowe wału a tutaj jego prędkość. Jeśli w jednych masz wysterowanie do położenia neutralnego (środkowego), to to samo w drugim będzie oznaczać zatrzymanie. Wychylenie wału do pozycji skrajnej w normalnym serwie odpowiada prędkości maksymalnej w tym "obrotowym". Wychylenie maksymalne serwa "kątowego" w drugą stronę to dla serwa ruchu ciągłego znów maksymalna prędkość, ale w przeciwną stronę. To wydaje się proste intuicyjne, czego tu nie rozumiesz?

  • Lubię! 1
Link do komentarza
Share on other sites

Wiem jak działa serwo. Moje pytanie dotyczy zaprogramowania ruchu serwa w Arduino IDE. A tam potrzebuję kodu, który zrealizuje ruch serwa. Kod dla ruchu serwa 180 stopni jest inny niż dla serwa o ciągłej rotacji.

Link do komentarza
Share on other sites

Aaa, to super, choć napisałeś coś wręcz przeciwnego:

4 godziny temu, Daniel1172 napisał:

nie wiem w jaki sposób sterować serwami o ciągłej rotacji

Spróbuj jaśniej formułować swoje pytania, przecież nie wiemy co naprawdę wiesz a czego nie. Dostałeś prostą odpowiedź jak nimi sterować. A teraz okazuje się, że:

51 minut temu, Daniel1172 napisał:

potrzebuję kodu, który zrealizuje ruch serwa

Na pewno łatwiej będzie pomóc, gdy będziemy dokładnie wiedzieć z czym masz problem. Czy możesz podać przykład takiego ruchu? Możesz sterować jedynie prędkością (i kierunkiem), a dalej jest tak samo jak ze zwykłym serwem. Tam miałeś program, który np. wysyłał kolejno zadane położenia wału realizując jakiś schemat położeń, tutaj wysyłasz kolejne prędkości, które są pożądane w danej chwili. Tylko tyle możesz z tym serwem zrobić. Czy odczytywanie co jakiś czas prędkości np. z kolejnych pozycji w tablicy nie umożliwia właśnie zadawania profilu prędkości? To jest dokładnie ten sam program co w przypadku serw kątowych, tylko ustawiasz (i otrzymujesz na wale) inną wielkość. Metoda jest ta sama. Możesz też interpolować liniowo miedzy dwoma punktami aby zaoszczędzić miejsce w tablicy i uzyskać spokojniejsze profile prędkości - dokładnie tak jak w standardowych serwach dostajesz płynne przejścia między położeniami.

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

6 minut temu, Daniel1172 napisał:

nie mam pojęcia jakiego kodu w Arduino IDE mogę użyć aby uruchomić serwo o ciągłej rotacji

Dokładnie takiego samego jak do zwykłych serw. A takich kodów masz przykładów setki.

6 minut temu, Daniel1172 napisał:

Zmiana samych wartości nie umożliwia ciągłego ruchu.

Mógłbyś to wyjaśnić szerzej? Nie rozumiem Twoich problemów. Wysyłasz liczbę oznaczającą w normalnych serwach położenie neutralne to serwo stoi, wysyłasz wartość ruchu wolnego to serwo kręci się wolno, wysyłasz więcej to serwo kręci się szybciej. Co to czego nie umożliwia? Skoro masz zainstalowaną bibliotekę Adafruit obsługującą Twój sterownik serw, to jej użyj do wysterowania poszczególnych wyjść sterownika. Podłącz na odpowiednie wyjście linię wejściową serwa i tyle. Skoro umiesz zmieniać położenie wału serwa "normalnego", to w tej samej chwili umiesz zmieniać prędkość serwa obrotowego. To to samo sterowanie, tylko we wszystkich opisach słowo "położenie" lub "kąt" zmieniasz na "prędkość".

Link do komentarza
Share on other sites

To może inaczej, bo powoili opadają mi ręce: napisz dokładnie co chcesz zrobić. Co ma to obrotowe serwo napędzać i co chcesz w tej konstrukcji uzyskać: jakie ruchy i kiedy. Skup się i napisz co najmniej (słownie) pięć fajnych zdań, jakbyś tłumaczył koledze z podwórka co tam w domu dłubiesz. 

  • Lubię! 1
Link do komentarza
Share on other sites

Chce serwem o rotacji ciągłej napędzać koło od samochodzika zdalnie sterowanego. Chce użyć do tego 4 serw. Podłączyłem je do kontrolera pca9685. Z kolei ten moduł będzie podłączony do Arduino. Sterowac napędem chce za pomocą telefonu poprzez moduł bluetooth. Chce uzyskać sytuację w której wciskam przycisk na telefonie i serwa kręcą się w prawo. Inny przycisk serwa kręcą się w lewo. Nie mogę znaleźć kodu do Arduino IDE, który umożliwiłby sterowanie serwem o rotacji ciągłej.

Link do komentarza
Share on other sites

W pierwszym poście napisałeś tak:

5 godzin temu, Daniel1172 napisał:

Udało mi się sterować serwami 180

To teraz wgraj ten sam kod, a do wyjść sterownika zamiast serwa wychyłowego podłącz serwo obrotowe. Voila, zrobione. Zobacz co się stanie, jak serwa obrotowe się zachowują i pomyśl czy jakoś odpowiada to temu co pisałem wyżej.

EDIT: No chyba (teraz przyszło mi do głowy), że nie kupiłeś wcale serw obrotowych tylko gołe silniki DC z przekładnią, które tylko wyglądają jak serwo, ale nie mają w środku żadnej elektroniki. Napisz ile drutów mają te twoje "serwa" i zapodaj link do sklepu.

Edytowano przez marek1707
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.