Sterownik silników robota czterokołowego

Czerwiec 29, 2015
Wysłane przez Michał Drwięga

Do sterowania napędami robota czterokołowego zaprojektowano i wykonano osobny moduł. Konstrukcja robota oparta na czterech niezależnie sterowanych kołach wymusiła zastosowanie stosunkowo rozbudowanego układu. Spowodowane jest to między innymi wymaganiem synchronizacji prędkości kół robota, szczególnie tych położonych po jednej stronie ramy, aby zminimalizować niepotrzebne poślizgi i straty energii. Dodatkowo, moduł musi obsługiwać cztery enkodery inkrementalne. Na poniższym rysunku  przedstawiono schemat blokowy modułu.

motors_controller_diagram
Schemat blokowy modułu sterownika silników

W skład modułu sterowania silnikami wchodzą następujące bloki:

  • blok mikrokontrolera,
  • stopień mocy oparty na mostkach H,
  • blok pomiaru prądu silników,
  • blok enkoderów magnetycznych.

 

Warto zauważyć, że moduł został oparty na mikrokontrolerze MKL15Z32VLH4 firmy Freescale, należącym do rodziny Kinetis L. Posiada on rdzeń ARM Cortex M0+ i umożliwia taktowanie z częstotliwością 48 MHz. Szereg układów peryferyjnych mikrokontrolera znacznie ułatwił implementację sterownika silników. Oprogramowanie mikrokontrolera napisane zostało w języku C. Wykorzystano środowisko programistyczne Freescale CodeWarrior v10.4 w edycji specjalnej. Dodatkowo wraz ze środowiskiem CodeWarrior, używano narzędzia Processor Expert, które umożliwia częściowe generowanie kodu mikrokontrolera na podstawie dość czytelnych dla człowieka opcji konfiguracyjnych poszczególnych bloków. Projekt elektroniczny modułu wykonano w studenckiej wersji oprogramowania Altium Designer. W dalszej części znajdują się schematy modułu oraz jego wizualizacje 3D.

 

Jako mostki H (H-Bridge) wykorzystano układy TB6569FG produkowane przez firmę Toshiba. Charakteryzują się one szczytowymi prądami obciążenia na poziomie 4,5 A, przy czym średnie prądy nie powinny przekraczać 1,5 A. Zachowują prawidłowe działanie dla napięć w granicach od 10 V do 50 V. Dodatkowo, układy posiadają wiele przydatnych zabezpieczeń, między innymi:

  • zabezpieczenie termiczne,
  • zabezpieczenie nadprądowe (z możliwością zmiany parametrów wykrywania zbyt wysokich prądów),
  • zabezpieczenie przed zbyt wysokim napięciem zasilającym,
  • zabezpieczenie przed zbyt niskim napięciem zasilającym.

 

W przypadku aktywacji któregoś z zabezpieczeń wyjście układu typu otwarty-dren (Open-drain), oznaczone jako ALERT przechodzi w stan wysokiej impedancji. W omawianym module, ze względu na przekroczenie dopuszczalnych prądów mostków H przez użyte w robocie silniki Pololu 37D, zdecydowano się wykorzystać po dwa mostki połączone równolegle na każdy silnik.

 

Do pomiaru prądu pobieranego przez silniki wykorzystano układy ACS712 produkcji Allegro MicroSystems. Zasada działania czujników oparta jest na pomiarze natężenia pola elektromagnetycznego powstającego w przewodniku, przez który przepływa prąd. Dodatkową zaletą tych układów jest separacja galwaniczna między mierzonym sygnałem i częścią logiczną. Wynik pomiaru zwracany jest w postaci analogowej. W celu konwersji do postaci cyfrowej, wykorzystuje się przetwornik analogowo-cyfrowy będący jednym z peryferiów mikrokontrolera.

 

Pomiar prędkości obrotowej kół

Pomiar prędkości obrotowej kół robota zrealizowano z wykorzystaniem enkodera magnetycznego AS5306 produkcji Austria Microsystems. W celu obliczenia prędkości obrotowej wymagana jest znajomość częstotliwości sygnału kwadraturowego. Zdecydowano się na metodę pomiaru, w której zlicza się impulsy wejściowe w ustalonym okresie czasu. Związane jest to ze stosunkowo dużą rozdzielczością enkodera magnetycznego, który współpracuje z pierścieniem posiadającym 36 par magnesów. Rozdzielczość enkodera można obliczyć wykorzystując wzór podany w nocie katalogowej AS5306.

Rozdzielczość [krok] = [współczynnik interpolacji] x [liczba par biegunów],

przy czym współczynnik interpolacji zależy od konstrukcji matrycy hallotronów i dla układu AS5306 wynosi 160 kroków na jedną parę biegunów magnetycznych. Można więc otrzymać rozdzielczość enkodera równą 5760 kroków na jeden obrót koła.

Układ regulacji prędkości koła

W celu zapewnienia osiągnięcia zadanej prędkości obrotowej przez dany silnik robota, zaimplementowano dyskretny regulator PID. Wyjściem regulatora jest wartość wypełnienia sygnału PWM (Pulse-Width Modulation) sterującego kluczami. Natomiast wejściem jest wartość prędkości obrotowej silnika uzyskiwana na podstawie pomiaru sygnału kwadraturowego z enkodera magnetycznego AS5306. Na poniższym rysunku przedstawiono układ regulacji prędkości koła robota. W implementacji regulatora PID pomocna okazała się nota aplikacyjna Atmel AVR221.

 

uklad_regulacji_pid
Układ regulacji prędkości koła

 

W programie wykorzystano cztery regulatory, przy czym każdy odpowiada za dane koło robota. Nastawy regulatorów dobierano eksperymentalnie.

Schematy modułu sterownika silników
motors_controller_scheme1

motors_controller_scheme2

motors_controller_scheme3

Wizualizacja 3D modułu zasilania robota czterokołowego

motors_controller_3d_a

Źródło:

  • Michał Drwięga. Fuzja sygnałów sensorycznych dla potrzeb lokalizacji kołowego robota mobilnego. Praca inżynierska, Politechnika Wrocławska, Wrocław, 2013

Tagi: , , , , , ,

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

  • Polski
  • English