Skocz do zawartości

Jak sterować serwem przez potencjometr?


dominik1226

Pomocna odpowiedź

Witam!

Jestem tu nowy a to mój pierwszy post.

Tak więc do swojego robota potrzebuję sterowanie którym w czasie rzeczywistym będę mógł sterować potencjometrem serwo.

Ruch ma być taki sam jak potencjometra (t.j. potencjometr 40* , serwo 40*) a wiec ma naśladować ruch. Próbowałem to zrobić na zasadzie testera : http://www.elektroda.pl/rtvforum/topic871257.html ale na początku były drgania, a puzniej nie odtwarzało całego ruchu (tylko ok 90* ) co z tym zrobić pytałem się już na elektrodzie i udało mi się zmniejszyć drgania ale nadal mały zasięg.

Chyba że zaproponujecie inny sposób takiego sterowania? Może przez mikrokontroler? np Atmega8. Wiem że przez mikrokontroler prościej ale nie wiem jak napisać program do takiego sterowania (eclipse). Czy wtedy mógłby mi ktoś dać "gotowca" ? wiem że to duża prośba ale po prostu nie daję rady :/

Dysponuję do tego robota serwem : http://abc-rc.pl/SG-92

Link do komentarza
Share on other sites

Sterowanie serwem nie do końca jest takim standardem jak by się mogło wydawać

Z mojego doświadczenia wynika, że sterowanie serwem (MG995) impulsem 1->2ms pozwala właśnie na osiągnięcie zasięgu 90*. Żeby sterować w większym zakresie (max ok 180*) potrzeba zwiększyć i zakres impulsu do 1->4ms.

Chyba, że źle policzyłem PWM 😋 to wtedy proszę, żeby ktoś mnie poprawił!

Może właśnie nieodpowiedni sygnał sterujący jest problemem? Przeliczałeś wartości elementów przy 555? Jesteś pewny, że są takie jak być powinny?

Gdybyś chciał to zrobić na Atmedze8 to w najprostszym przypadku będziesz potrzebować przetwornik ADC i PWM.

Odczyt z ADC będziesz musiał odpowiednio przeskalować, na wartość wypełnienia PWM o częstotliwości 50Hz.

Jeśli przerasta Cię napisanie tego w C, to może z Bascomem lub Arduino? Nie będą odpowiedniejsze?

Sam ich nigdy nie używałem, ale z tego co się orientuję wykorzystanie w najprostszym zastosowaniu ADC i PWM nie powinno Ci przysporzyć takiego problemu jak pisanie tego w C 🙂

A w Bascomie z tego co kiedyś gdzieś czytałem są chyba nawet specjalne funkcje do sterowania Servem, ale głowy sobie za to nie dam uciąć...

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

Dobrze byłoby, żebyś jedna rozumiał działanie układów które budujesz. Inaczej będziesz zdany na łaskę internetu i forów takich jak to. To chyba nie jest miłe uczucie, prawda?

Jeżeli wciąż mówimy o tym schemacie (źródło: elektroda.pl):

http://obrazki.elektroda.net/64_1194629825.png

to masz tutaj kilka elementów odpowiedzialnych za timing (czasy) impulsów wyjściowych:

- C1 odpowiada za wszystko razem, tj jego zmiana wpłynie proporcjonalnie na długość impulsów ale także na odległość między nimi. Dwa razy większy (np. 470nF) - dwa razy dłuższe impulsy i dwa razy większy odstęp. Ponieważ tego nie chcesz, bo serwo musi dostawać swoje impulsy co 20ms, C1 nie ruszasz.

- R1 odpowiada za minimalny czas impulsu. Tu zależność jest w przybliżeniu liniowa - dwa razy mniejszy opornik daje dwa razy krótszy najkrótszy impuls. Jeżeli poprzednio miałeś regulację od ok. 1ms w górę, to po zmianie z 5k6 na 2k7 powinieneś móc zejść do 0.5ms

- RV1 zsumowany z R1 odpowiada za przeciwną granicę tj. za najdłuższy impuls. Jeżeli więc z zmniejszysz R1 żeby dostać krótsze impulsy, to musisz powiększyć RV1 żeby w jego przeciwnym skrajnym położeniu móc dostawać impulsy dłuższe. Niestety z potencjometrami nie jest tak fajnie jak z opornikami i nie ma takiej gęstej gradacji wartości. Zmiana RV1 na 10k nie zwiększy górnej granicy czasu dwukrotnie (bo zmniejszyłeś R1), ale i tak powinno wystarczyć.

Dla porządku: za odstęp między impulsami odpowiada R2.

C2 nie jest krytyczny - filtruje tylko wewnętrzne napięcia odniesienia i może być 100nF-1uF.

Serwa modelarskie przeznaczone są do pracy w zakresie właśnie ok. 90° kątowych, bo zwykle ich ruch przenoszony jest na powierzchnie sterowe modeli za pomocą cięgło-popychacza (tzw. bowdena) a w takim układzie kinematycznym obrót o więcej niż 90° zaczyna przekładać się na mocno nieliniowy ruch cięgła. Nie ma żadnej gwarancji, że dane serwo będzie w ogóle chciało pracować w tak rozszerzonym zakresie impulsów i w takim zakresie kąta obrotu - robisz to na własną odpowiedzialność.

Link do komentarza
Share on other sites

Dzieki ja już próbowałem modyfikować ten model i wtedy to akurat po kilku zmianach jakis tydzien temu to normalnie odtwarzało ruch a jak przekreciłęm potencjometr na maxa to zaczynał sie krecic w około wiec spróbuje dzięki. a wiec z r2 trzeba cos mnienić? chyba ni mi się wydaje dzięki za pomoc bo dopiero zaczynam 😉

Link do komentarza
Share on other sites

Chodzi mi o to że nie zrozumiałęm z twojej wypowiedzi czy trzeba zmieniać r2. Ale już wiem.

Zaczynam programować a na elektronice jestem juz troszkę obeznany ale nie tak bardzo wiec poziom troszkę wyższy jak początkujący 🙂

Pewnie znowu nie zrozumiałęś 😃 ale wybacz mi ja taki jestem 😃

Na elektrodzie pisałem juz chyba 3 posty ale tam zawsze albo do piaskownicy albo do kosza a jak nie to moderator usuwał. Ten serwis jest lepszy dzieki za pomoc 😉

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.