Skocz do zawartości

Jak zrobić serwo przy pomocy motoreduktora i arduino


Pomocna odpowiedź

Napisano

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

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...

Ż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
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

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? 

(edytowany)
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

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...