Skocz do zawartości

Odczytywanie pozycji Serwa


kasztan_85

Pomocna odpowiedź

Witam, nie mam pomysłu na rozwiązanie swojego problemu dlatego zgłaszam się do Was z prośbą o pomoc. Posiadam serwa cyfrowe Modelcraft VSD-1 i nie mam pojęcia jak odczytać ich wychylenie. Znalazłem sporo materiałów na temat serw analogowych ( odczytywanie wartości z potencjometru) ale o cyfrowych nie ma nic 🙁. Buduję robota kroczącego chciałbym zrobić go w taki sposób aby mógł poruszać się po nierównym terenie a do tego potrzebuje wiedzieć na jakiej pozycji zatrzymało się serwo. Proszę o pomoc.

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

No ale zaraz, przecież serwo jest elementem, któremu to Ty zadajesz położenie. Przecież wiesz gdzie chciałeś żeby teraz było, czy jednak nie? Zatrzymało się w takim miejscu w jakim mu kazałeś chyba, że a) wciąż jeszcze dojeżdza lub b) coś mu przeszkodziło - wtedy ciągnie dużo (przypadek a) lub mnóstwo (przypadek b) prądu.

EDIT: W sytuacji gdy wykluczasz zaciachy mechaniczne, pozycja serwa zależy od ostatnio wydanej komendy, upłyniętego czasu i dynamiki serwa przy możliwościach danego systemu zasilania. Dla uproszczenia możesz założyć, że po upłynięciu czasu pewnego czasu max, serwo jest w pozycji którą wyznaczyłeś ostatnią komendą.

Link do komentarza
Share on other sites

marek1707, problem w tym, że na pytanie "gdzie jest serwo", pomiar prądu da co najwyżej odpowiedź "nie tam gdzie powinno", a chyba nie do końca o to chodzi w pomiarze pozycji.

Link do komentarza
Share on other sites

Tu masz rację ale moja wątpliwość jest bardziej ogólna.

Serwa jako takie używane są wtedy, gdy nie potrzebujesz (Ty jako system nadrzędny wydający polecenia) informacji o położeniu rzeczywistym. To ono martwi się o to, by osiągnąć zadaną pozycję w najlepszym możliwym czasie. To w nim zamyka się pętla sprzężenia zwrotnego bo to właśnie jest ideą działania zespołu nazywanego "serwonapęd". Jeżeli natomiast w systemie sterowania potrzebujesz informacji o położeniu rzeczywistym to wcale serwa nie są Ci potrzebne. Potrzebujesz zwykłego napędu, silnika i/lub przekładni, pompy i siłownika - wszystko jedno czego, co pokona jakieś opory plus urządzenia do odczytu położenia. I wtedy to przez Ciebie (wciąż rozumianego jako system nadrzędny) zamyka się pętla sterowania położeniem.

Jeżeli Kolega użył lub chce użyć serw do sterowania położeniem to po co mu informacja o tym położeniu? Sterownik wydaje komendy (np. w postaci ciagu impulsów PPM) i oczekuje, że serwa załatwią sprawę. Powinny być tak dobrane, by sobie z tym radziły bez przeciążeń i palenia się. Natomiast jeśli system potrzebuje informacji o położeniu to trzeba "serwo" zrobić na piechotę. Być może wykorzystane zostaną handlowe serwomechanizmy przerobione tak, że bądą zwykłymi silnikami z przekładnią i potencjometrem (plus ew. nieinteligentny wzmacniacz mocy/mostek do sterowania silnikiem) ale coś takiego nie zasługuje na miano serwa. Stanie się nim po włączeniu w pętlę regulacji algorytmu w sterowniku.

Po prostu nie rozumiem idei stosowania pełnoprawnego serwa i jednoczesnej, nadmiarowej kontroli położenia. Znaczy co, liczymy momenty, projektujemy mechanikę, napędy, moce, kupujemy serwo i mu z definicji nie wierzymy, że zadziała?

Serwa cyfrowe różnią się jedynie sposobem obróbki sygnału sterującego PPM. Też mają potencjometr itp więc nie widzę różnicy w ich traktowaniu. Pomijam tu oczywiście serwa przystosowane do szyn szeregowych, jakie pojawiły się jakiś czas temu u niektórych producentów (S-BUS Futaby np) ale po rozmontowaniu, wyrzuceniu niepotrzebnej elektroniki i zostawieniu jedynie mostka wraz z potencjometrem nawet i te nadadzą się do zadawania położenia z pętlą zamkniętą na zewnątrz. Tyle, że trochę szkoda pieniędzy..

Być może istnieją też superwypasione serwa pozbawione potencjometru, wyposażone np. w enkoder ale z takimi się nie spotkałem bo moje modele to jednak nieduże zabawki i kupuję raczej coś z dolnej/średniej półki. Takie (przerobione i wybebeszone) serwo będzie oddawało informację o położeniu w trochę inny sposób ale nie będzie to nic niemożliwego do odczytu. W końcu elektronika serwa też jakoś sobie z tym radziła.

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

Przepraszam, że jestem przyczyną całego zamieszania. Teraz rozumiem o co chodzi.

marek1707 Robienie serwa z wyprowadzeniem pozycji od podstaw mija się z celem... jeśli da się przerobić, to po nadkładać pracą i zapewne środkami finanoswymi.

Link do komentarza
Share on other sites

Dzięki za odpowiedzi 🙂. Przemyślałem trochę sprawę i faktycznie pomiar wychylania serwa jest zbędny (marek1707 - dzięki za uświadomienie) , wystarczy, że dodam przełączniki krańcowe do nóżek robota i już będę wiedzieć czy noga opiera się na podłożu czy nie. Wcześniej chciałem zrobić, żeby noga wychylała się do momentu osiągnięcia podłoża, ale już wiem, że to głupi pomysł bo robot wchodząc po "schodach" obniżał by się z każdym stopniem. Wielki dzięki za zainteresowanie tematem 🙂

Link do komentarza
Share on other sites

Witam, nie mam pomysłu na rozwiązanie swojego problemu dlatego zgłaszam się do Was z prośbą o pomoc.

Jednak problem leżał gdzie indziej. Pokazuje to, jak ważne jest opisanie tego, co chcemy osiągnąć. A Ty zamiast to napisać, skupiłeś naszą uwagę na czymś zupełnie innym. Trzeba było od razu, że chcesz wyczuwać położenie, to pierwszy post brzmiałby "Zastosuj krańcówki" 😉

To tak dla potomnych.

Plusem jest, że przy okazji rozwiązano inną kwestię 🙂

Link do komentarza
Share on other sites

marek1707, wprawdzie wydało się, że autorowi jednak wystarczą krańcówki, ale... Nie zgodzę się z Tobą, że wyprowadzanie na zewnątrz regulatora informacji o wartości regulowanej (albo chociaż o błędzie) jest niepotrzebne. Odchodząc trochę od samych serw, wyobraź sobie robota, który ma przejechać po kwadracie o boku 1m i mającego sterownik silników, który realizuje sterowanie położeniem. Skąd jednostka nadrzędna miałaby wiedzieć, że już ma wydać polecenie do skrętu, jeśli nie będzie miała informacji o położeniu? Jeśli jeszcze w czasie przejazdu robot miałby robić jakieś pomiary, które należałoby zestawić z pozycją, to tym bardziej taka informacja będzie niezbędna.

Co do samych serw, nigdy nie zajmowałem się robotami kroczącymi, ale chyba jednak też może to być przydatne, skoro powstają takie fajne projekty, jak np. http://www.openservo.com/

Link do komentarza
Share on other sites

I znowu masz rację 🙂 Jestem w stanie wyobrazić sobie jakieś egzotyczne zastosowanie serwa, gdzie jego główną funkcją będzie poruszanie czegośtam a przy okazji chciałbym (jako sterownik) np. zapalać diodki LED w jakichśtam konkretnych położeniach. Wtedy wydawałbym kolejne polecenia "dojedź do pozycji 1", zapal diodkę, "dojedź do pozycji 2", znowu zapal diodkę itd, ale z punktu widzenia użytkowego to mogłoby być niefajne - ruch nie byłby płynny, serwo by skakało i wyło. Wydanie polecenia przejazdu od razu do pozycji końcowej byłoby bardziej naturalne ale wtedy rzeczywiście sterownik musiałby mieć informację o położeniu, żeby odpowiednio uruchamiać diodki. Tylko że - zauważ - to dałoby się od razu zrobić bez serwa rozumianego jako autonomiczny klocek. Pętlę regulacji zamykamy przez enkoder położenia i sterownik - ma on wtedy komplet informacji o wszystkim co tego procesu dotyczy i może dowolnie diodki zapalać. Trzeba po prostu rozważyć, którędy pętla sprzężenia zwrotnego ma przebiegać i co będzie wygodniejsze.

Przykład z robotem nie bardzo do mnie przemawia, bo gdzie tu regulacja położenia? Gdyby silniki były osobnym zespołem z własną inteligencją i czujnikiem położenia (ale nie wału czy koła tylko całego robota) to wtedy stanowiłyby pewnego rodzaju serwonapęd. Dostawałyby instrukcję np. "to teraz jedziemy 50cm prosto" i to by robiły. Gdyby przestrzeliły z prędkością, przyczepnością itp miałyby informację o błędzie i same poprawiłyby położenie - to rozumiem jako tryb serwo. W przypadku gdy są głupim napędem sterowanym przez główny procesor, to w nim dopiero zamyka się pętla regulacji położenia, bo to do niego podłączony być musi czujnik położenia. I to nie obrotów kółek a położenia całości na płaszczyżnie. Jeśli zrobiliśmy tylko enkoder do kółek to możemy zrobić pętlę regulacji liczby obrotów, ew. szybkości obrotowej i taki serwonapęd (bo nim w istotocie będzie) będzie sterowany komendami "1500 obrotów silnika w prawo" albo "przez 3 sekundy daj 150rpm" zamiast "50cm prosto". Inna wielkość regulowana to inne polecenia ale robiąc "serwo" przez procesor mamy informację o wszystkich zmiennych procesu i możemy je sobie wykorzystywać jak chcemy, np. robić coś ciekawego w pewnych fazach ruchu.

Nie ma co bić piany, każdy chyba intuicyjnie rozumie co to jest serwo i ważne, by - sprowadzając temat na ziemię - początkujący odróżniali je od silniczka z przekładnią, bo przed i po przeróbce wygląda prawie tak samo i było już kilka nieporozumień.

BTW: Osobiście nie widzę przeciwwskazań do wyciągnięcia napięcia z potencjometru na zewnątrz. W konstrukcjach, gdzie środowisko nie jest do końca określone (takich jak ten robot kroczący) informacja o położeniu a w szczególności braku ruchu na skutek np. przeszkody może być łatwiej (w sensie konstrukcji elektronicznej) uzyskiwalna ze śledzenia tego sygnału niż np. z pomiaru prądu. Ja zrobiłbym jednak sterownik z pomiarem prądu na wszystkich gniazdach serw - to wydaje mi się jakoś bezpieczniejsze no i natężenie prądu prowadzi wprost do alarmu. Natomiast położenie odczytane z potencjometru musi być wciąż porównywane z zadanym z uwzględnieniem czasu i dynamiki układu - trochę roboty trzeba w to jednak włożyć.

Link do komentarza
Share on other sites

Ty oczywiście też masz rację 🙂 Po prostu mam takie skrzywienie, że lubię dzielić systemy na mniejsze klocki, z których każdy zajmuje się swoją działką i są później koordynowane przez jednostkę nadrzędną 🙂 A jeśli chodzi o przykład z robotem, to chodziło mi właśnie o taki osobny sterownik z trybem pracy "serwo".

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.