Daniel1172 Napisano Marzec 13, 2021 Udostępnij Napisano Marzec 13, 2021 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. Cytuj Link do komentarza Share on other sites More sharing options...
marek1707 Marzec 13, 2021 Udostępnij Marzec 13, 2021 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? 1 Cytuj Link do komentarza Share on other sites More sharing options...
Daniel1172 Marzec 13, 2021 Autor tematu Udostępnij Marzec 13, 2021 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. Cytuj Link do komentarza Share on other sites More sharing options...
marek1707 Marzec 13, 2021 Udostępnij Marzec 13, 2021 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. Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
Daniel1172 Marzec 13, 2021 Autor tematu Udostępnij Marzec 13, 2021 Dobrze ale nadal nie mam pojęcia jakiego kodu w Arduino IDE mogę użyć aby uruchomić serwo o ciągłej rotacji. Zmiana samych wartości nie umożliwia ciągłego ruchu. Cytuj Link do komentarza Share on other sites More sharing options...
marek1707 Marzec 13, 2021 Udostępnij Marzec 13, 2021 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ść". Cytuj Link do komentarza Share on other sites More sharing options...
Daniel1172 Marzec 13, 2021 Autor tematu Udostępnij Marzec 13, 2021 Bardzo proszę jakby Pan mógł podesłać chociaż jeden przykład takiego kodu bo nie mogę znaleźć takiego, który umożliwiłby mi sterowanie serwem ciągłym. Cytuj Link do komentarza Share on other sites More sharing options...
marek1707 Marzec 13, 2021 Udostępnij Marzec 13, 2021 https://learn.adafruit.com/16-channel-pwm-servo-driver/using-the-adafruit-library Cytuj Link do komentarza Share on other sites More sharing options...
Daniel1172 Marzec 13, 2021 Autor tematu Udostępnij Marzec 13, 2021 Tak, jest tam opisane jaki jest kod do sterowania serwem ciągłej rotacji ale tylko dla Phytona a nie Arduino. Dla Arduino jest opisany kod odnośnie serwa normalnego. Więc ponawiam prośbę o kod. Cytuj Link do komentarza Share on other sites More sharing options...
marek1707 Marzec 13, 2021 Udostępnij Marzec 13, 2021 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. 1 Cytuj Link do komentarza Share on other sites More sharing options...
Daniel1172 Marzec 13, 2021 Autor tematu Udostępnij Marzec 13, 2021 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. Cytuj Link do komentarza Share on other sites More sharing options...
marek1707 Marzec 13, 2021 Udostępnij Marzec 13, 2021 (edytowany) 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 Marzec 13, 2021 przez marek1707 Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!