Skocz do zawartości

Jak zrobić serwo przy pomocy motoreduktora i arduino


WARIO45

Pomocna odpowiedź

Witam

Do kilku swoich projektów potrzebuję zbudować przerośnięte serwa. Kilka razy omijałem ten problem stosując elektronikę z mikro serw. Ale teraz pomyślałem że nie ma co wybebeszać kolejnego sprawnego serwa i trzeba rozwiązać ten problem z poziomu software. I tu pojawia się problem. Ponieważ nie jestem biegły w pisaniu programu to nie wpadłem na pomysł jak to może poprawnie wyglądać. Od strony sprzętowej wygląda to prosto. Silnik szczotkowy połączony z przekładnią redukcyjną. Vmax przy zasilaniu 12V to ok 100 obr/min. Z ostatnim stopniem przekładni sprzęgnięty jest potencjometr( 1k ohm) skrajne nóżki podpięte do zasilania a suwak do wejścia analogowego w mikrokontrolerze. Silnik jest sterowany mostkiem h zrobionym Z mosfetów a mosfety driverami. Wejścia driwerów (2 szt) podłączone są do wyjść pwm mikrokontrolera. Pierwsza wersja programu w której poprostu porównywałem dwie zmienne (pozycja w której ma się znaleźć serwo i pozycja w której znajduje się obecnie) i w zależności od wyniku silnik obracał się w odpowiednią stronę lub stał. To nie było dobre rozwiązanie. Albo całość wpadała w drgania oscylując w okolicach odpowiedniej nastawy albo przy zmniejszeniu czułości spadła powtarzalność. Idea wydawała się dobra. Postanowiłem że dodam zmniejszanie prędkości zależnie od wielkości różnicy między jedną zmienną a drugą. Na początku wyglądało że to będzie to ale po kilku wieczorach znalezienia odpowiedniej nastawy poddałem się. Może wy znacie jakiś sposób jak to najprościej rozgryźć? 

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

Imo zamiast potencjometru wolałbym zastosować jakiś enkoder obrotowy. Łatwiej kontrolować, ale zwykle mniejsza rozdzielczość i konieczność pamiętania pozycji. No i enkoder pewnie musiałby mieć połączenie za pomocą przekładni mechanicznej, więc to dodatkowe pole na błąd...

Link do komentarza
Share on other sites

Żeby uniknąć oscylacji należy zastosować odpowiednio zestrojony regulator PID. W uproszczeniu taki regulator na wejściu dostaje odchyłkę (czyli informacje o tym jak daleko silnik jest od żądanej pozycji) a na wyjściu zwraca kierunek i prędkość wymagane do uzyskania tej pozycji. Po odpowiednim zestrojeniu (co proste niestety nie jest) uzyskujemy z jednej strony dużą prędkość gdy odchyłka jest duża, z drugiej strony precyzję i brak oscylacji w pobliżu wartości zadanej. 

  • Lubię! 2
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

11 minut temu, farmaceuta napisał:

Poszukaj pod haslem "wiper serwo diy"...jest tego troche na YT i googlu..

Coś podobnego mam już ogarnięte, tylko jeśli do każdego tego typu projektu idzie mi kolejne serwo i chciałbym to pomi ąć z poziomu programu. Sam mikrokontroler musi być używany a robi raptem 5 działań matematycznych to sterowanie dodatkową rzeczą nie powinno stanowić problemu

Link do komentarza
Share on other sites

7 minut temu, etet100 napisał:

Żeby uniknąć oscylacji należy zastosować odpowiednio zestrojony regulator PID. W uproszczeniu taki regulator na wejściu dostaje odchyłkę (czyli informacje o tym jak daleko silnik jest od żądanej pozycji) a na wyjściu zwraca kierunek i prędkość wymagane do uzyskania tej pozycji. Po odpowiednim zestrojeniu (co proste niestety nie jest) uzyskujemy z jednej strony dużą prędkość gdy odchyłka jest duża, z drugiej strony precyzję i brak oscylacji w pobliżu wartości zadanej. 

Wiesz może jak napisać program takiego regulatora? 

Link do komentarza
Share on other sites

31 minut temu, WARIO45 napisał:

Coś podobnego mam już ogarnięte, tylko jeśli do każdego tego typu projektu idzie mi kolejne serwo i chciałbym to pomi ąć z poziomu programu. 

Sa rozne kombinacje tych serw diy...nie w kazdym przypadku potrzebna elektronika z malego serwa, sa tez takie gdzie dajesz zewnetrzny potencjometr i mostek H..reszta to mikrokontroler..

29 minut temu, WARIO45 napisał:

Wiesz może jak napisać program takiego regulatora? 

Sa gotowe biblioteki na Ardu gdzie przekazujesz tylko zmienne i nastawy a reszte robi wlasnie biblioteka..(ktora lepsza/gorsza nie doradze, nie korzystalem)

Tu masz w miare fajny przyklad..

(razem z kodem  i kontrolerem PID)

Edytowano przez farmaceuta
  • Pomogłeś! 1
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.