Sterownik czterech mikrosilników dla Pi Zero

Sterownik czterech mikrosilników dla Pi Zero

Zaprezentowany układ to nakładka na Raspberry Pi pozwalająca na wysterowanie czterech mikrosilników prądu stałego. Moc lub prędkość obrotowa każdego silnika może być regulowania dzięki sterowaniu sygnałem PWM. Takie rozwiązanie doskonale sprawdzi się w realizacji projektów związanych z robotką i nie tylko.

Podstawowe parametry:
  • sterowanie poprzez magistralę I2C,
  • sterowanie czterema silnikami o prądzie maksymalnym 400 mA,
  • napięcie znamionowe silników musi mieścić się w zakresie 2,5...5,5 V,
  • konstrukcja płytki PCB przystosowana do RPi Zero ale może współpracować także z innymi komputerkami.

Moduł zawiera trzy układy scalone – dwa podwójne mostkowe drivery silników typu A3901 oraz ośmiokanałowy generator PWM typu PCA9634. Budowę wewnętrzną pierwszego pokazuje rysunek 1.

Rysunek 1. Schemat wewnętrzny układu A3901

Driver A3901 umożliwia sterowanie dwoma silnikami o prądzie maksymalnym 400 mA zasilanymi napięciem z zakresu 2,5...5,5 V. Regulacja prędkości obrotowej może odbywać się poprzez sterowanie sygnałem PWM o częstotliwości do 250 kHz. Układ został wyposażony w zabezpieczenie termiczne. Logika wejść sterujących został pokazana w tabeli 1.

Uproszczony schemat wewnętrzny drugiego układu – PCA9634, został pokazany na rysunku 2. Sterowanie układem odbywa się poprzez magistralę I2C. Funkcje układu oraz jego konfiguracja i sterowanie zostaną omówione w dalszej części artykułu.

Rysunek 2. Schemat wewnętrzny układu PCA9634

Budowa i działanie

Schemat ideowy nakładki został pokazany na rysunku 3. Sterowniki U2 i U3 typu A3901 są sterowane z wyjść generatora PWM U1 typu PCA9634. Wyprowadzenia adresowe A0, A1 umożliwiają ustawienie jednego z 4 adresów na magistrali I2C, czyli teoretycznie możliwe jest sterowanie do szesnastu mikrosilników na jednej magistrali. Wejście !OE sterujące trójstanowym buforem wyjściowym PCA9634 nie jest w układzie wykorzystane i jest połączone z masą (!OE = 0).

Rysunek 3. Schemat ideowy sterownika silników

Zasilanie modułu doprowadzone jest do złącza PWR. Zwora V50 umożliwia zasilanie Raspberry Pi napięciem zasilania silników. Zasilanie z jednego źródła Raspberry Pi i silników należy każdorazowo odpowiednio przeanalizować, aby nie doprowadzić do nieprawidłowego działania Pi, z mocno zakłócanego przez silniki źródła zasilania. Zasilanie silników z Raspberry Pi nie jest zalecane ze względu na małą wydajność prądową systemowego napięcia 5 V. Należy także pamiętać o odpowiedniej wydajności źródła zasilania PWR, kondensatory CE1, CE2, CE3 zapewnią tylko podstawową filtrację. Dla zwiększenia stabilności zasilania można dołączyć dodatkowy kondensator poza modułem.

Każdy z układów U2 i U3 zabezpieczony jest przed uszkodzeniem przy pomocy bezpiecznika polimerowego (F1, F2). Magistrala I2C została doprowadzona do złącza I2C (Grove) lub złącza I2CA (PH 2 mm) które umożliwiają dołączenie jej do współpracujących układów. Rezystory R1, R2 zapewniają właściwą polaryzację magistrali.

Montaż i uruchomienie

Moduł został zmontowany na dwustronnej płytce drukowanej o wymiarach zgodnych z Raspberry Pi Zero, ale oczywiście może być stosowany także w innych wersjach komputerka i z innymi płytkami uruchomieniowymi (Arduino, Pi Pi Pico, STM32). Wymaga tylko doprowadzenia zasilania silników do złącza PWR, i magistrali I2C do złącza I2C (można nawet nie lutować złącza GPIO). Schemat płytki PCB został pokazany na rysunku 4.

Rysunek 4. Schemat płytki PCB

Montaż jest typowy, należy tylko zwrócić uwagę na przylutowanie pada termicznego na dolnej stronie obudów układów U2 i U3. Jest to niezbędne dla zapewnienia prawidłowego odprowadzania ciepła. Na koniec należy ustawić adresu modułu na magistrali I2C zworami A1, A0.

Sterowanie silnikami odbywa się poprzez odpowiednią konfigurację generatorów PWM układu PCA9634. Na niektórych wyjściach należy ustawić tylko stany logiczne 0 lub 1, określając w ten sposób kierunek obrotów. Generowanie sygnału PWM podłączonego do jednego z wejść A3901 umożliwi płynną regulację obrotów w odpowiadającym kierunku.

Strukturę rejestrów konfiguracyjnych układu PCA9634 zawiera tabela 2. W zależności od potrzeb możliwa jest komunikacja z poszczególnymi rejestrami poprzez adresowanie indywidualne rejestrów, wskazujące na konkretny rejestr, zgodnie z rysunkiem 5.

Rysunek 5. Adresowanie indywidualne rejestrów
Rysunek 6. Adresowanie grupowe rejestrów

Drugim sposobem jest adresowanie grupowe wszystkich rejestrów, co pokazano na rysunku 6. Ostatnim sposobem jest adresowanie grupowe rejestrów PWM po wcześniejszej konfiguracji układu, co zostało pokazane na rysunku 7.

Rysunek 7. Adresowanie grupowe rejestrów PWM

Odczyt odbywa się podobnie. Dokładniejsze informacje zamieszczone są w nocie katalogowej. Podstawową konfigurację dla omawianego modułu zawiera tabela 3.

Dla sprawdzenia działania modułu można wykorzystać skrypt z listingu 1.

Listing 1. Skrypt testowy dla układu PCA9634

#!/bin/bash
echo "Pi Zero UDCM4 PCA9634 + A3901
MicroMotor Driver ADR:0x60"

i2ctransfer -y 1 w17@0x60 0x80 0x80 0x04
0x7F 0x7F 0x7F 0x7F 0x7F 0x7F 0x7F 0x7F
0x80 0x00 0xff 0xe2 0xe4 0xe8

echo "Stop"
i2cset -y 1 0x60 0x0C 0x00
i2cset -y 1 0x60 0x0D 0x00
sleep 2

echo "Left 50%"
i2cset -y 1 0x60 0x0C 0x88
i2cset -y 1 0x60 0x0D 0x88
sleep 2

echo "Brake"
i2cset -y 1 0x60 0x0C 0x55
i2cset -y 1 0x60 0x0C 0x55
sleep 2

echo "Right 50%"
i2cset -y 1 0x60 0x0C 0x22
i2cset -y 1 0x60 0x0D 0x22
sleep 2

echo "Stop"
i2cset -y 1 0x60 0x0C 0x00
i2cset -y 1 0x60 0x0D 0x00
sleep 2

Po podłączeniu zasilania silników, obecność układu na magistrali sprawdzamy poleceniem: i2cdetect -y 1. Powinien zostać wskazany adres układu PCA9634 z zakresu 0x60...0x63 odpowiadający ustawieniu zworek A1, A0. Jeżeli adres został zmieniony z domyślnego 0x60, należy uwzględnić to edytując skrypt testowy. Skrypt testowy steruje jednocześnie wszystkimi silnikami z wypełnieniem sygnału PWM równym 50% poprzez rejestry PWM0:9. Zmiana kierunku ich obrotów odbywa się poprzez odpowiednią konfigurację wyprowadzeń w rejestrze LEDOUT0/1 oraz MODE2.

Adam Tatuś, EP

Wykaz elementów:
Rezystory:
  • R1, R2: 4,7 kΩ SMD0603
  • RP1, RP2: 47 kΩ drabinka rezystorowa CRA06S08
Kondensatory:
  • C1, C2: 0,1 μF SMD0603 X7R/50 V
  • C3, C4: 4,7 μF SMD0603 X7R/16 V
  • CE1, CE2, CE3: 100 μF/10 V elektrolityczny miniaturowy SMD 6,3 mm
Półprzewodniki:
  • U1: PCA9634PW (SSOP20)
  • U2, U3: A3901SEJTR-T (DFN10)
Pozostałe:
  • F1, F2: 1 A SMD1206 bezpiecznik polimerowy
  • A0, A1: zwora SMD0603
  • GPIO: złącze IDC40 żeńskie 2×20
  • M1, M2, M3, M4: złącze SIP2 2,54 mm kątowe
  • PWR: złącze śrubowe DG381-3,5-2
  • V50: złącze SIP2 2,54 mm + zwora
Artykuł ukazał się w
Elektronika Praktyczna
grudzień 2021
DO POBRANIA
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio marzec - kwiecień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje marzec 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich kwiecień 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów