- zawiera generator PWM sterowany z magistrali I²C typu PCA9632,
- regulacja prędkości obrotowej jest realizowana sygnałem PWM o częstotliwości do 250 kHz,
- umożliwia sterowanie dwoma silnikami o prądzie maksymalnym 400 mA zasilanymi napięciem 2,5...5,5 V.
Moduł zawiera dwa układy scalone: podwójny mostkowy driver silników A3901, którego budowę pokazano na rysunku 1 oraz generator PWM sterowany z magistrali I²C typu PCA9632 przedstawiony na rysunku 2. Schematy wewnętrzne wyjaśniają najważniejsze funkcje tych układów.
Budowa i działanie
Schemat sterownika pokazano na rysunku 3. Driver A3901 umożliwia sterowanie dwoma silnikami o prądzie maksymalnym 400 mA zasilanymi napięciem 2,5...5,5 V.
Układ jest wyposażony w zabezpieczenie termiczne. Regulacja prędkości obrotowej może odbywać się sygnałem PWM o częstotliwości do 250 kHz. Kombinacje stanów na wejściach sterujących układu A3901 i odpowiadające im działanie zestawiono w tabeli 1.
Dla sterowania driverem A3901 zastosowano generator PWM PCA9632 współpracujący z magistralą I²C. Wyprowadzenia adresowe A0, A1 umożliwiają ustawienie 4 adresów, czyli sterowanie do ośmioma mikrosilnikami na jednej magistrali I²C. Zasilanie modułu doprowadzone jest do złącza PWR, zwora VCC umożliwia zasilanie części sterującej napięciem zasilania silników.
Należy pamiętać o odpowiedniej wydajności źródła zasilania, kondensator CE1 zapewnia podstawową jego filtrację, jej efektywność może zostać zwiększona dodatkowym elementem poza modułem.
Magistrala I²C doprowadzona jest do złącza I²C, rezystory R1, R2 zapewniają jej polaryzację.
Montaż i uruchomienie
Moduł zmontowany jest na dwustronnej płytce drukowanej o wymiarach 20×20 mm, której schemat został pokazany na rysunku 4. Montaż jest typowy, należy tylko zwrócić uwagę na przylutowanie padu termicznego obudowy U1, dla zapewnienia prawidłowego odprowadzania ciepła i ustawienia adresu I²C zworami A1, A0.
Zmontowany moduł nie wymaga uruchamiania. Sterowanie silnikami odbywa się poprzez odpowiednią konfigurację generatorów PWM układu PCA9632. Sterując GPIO i generatorami, można ustawić stany logiczne 0/1, zmieniając odpowiednio sterowanie silnikiem, a generowanie sygnału PWM podłączonego do jednego z wejść A3901 umożliwi płynną regulację obrotów w odpowiadającym kierunku.
Do sprawdzenia działania można wykorzystać Raspberry Pi i skrypt z listingu 1.
#!/bin/bash
echo "A3901 MicroMotor Driver ADR:0x63"
i2ctransfer -y 1 w13@0x63 0x80 0x80 0x14 0x00 0x00 0x00 0x00 0x80 0x00 0xFF 0xE$
echo "Stop 1"
i2cset -y 1 0x63 0x08 0x00
sleep 2
echo "Left 1 100%"
i2cset -y 1 0x63 0x08 0x01
sleep 2
echo "Brake 1"
i2cset -y 1 0x63 0x08 0x05
sleep 2
echo "Right 1 100%"
i2cset -y 1 0x63 0x08 0x04
sleep 2
echo "Stop 1"
i2cset -y 1 0x63 0x08 0x00
sleep 2
echo "Left 1 50%"
i2cset -y 1 0x63 0x08 0x09
i2cset -y 1 0x63 0x03 0x7F
sleep 2
echo "Stop 1"
i2cset -y 1 0x63 0x08 0x00
sleep 2
echo "Right 1 50%"
i2cset -y 1 0x63 0x08 0x06
i2cset -y 1 0x63 0x02 0x7F
sleep 2
echo "Stop 1"
i2cset -y 1 0x63 0x08 0x00
sleep 2
echo "Stop 2"
i2cset -y 1 0x63 0x08 0x00
sleep 2
echo "Left 2 100%"
i2cset -y 1 0x63 0x08 0x10
sleep 2
echo "Brake 2"
i2cset -y 1 0x63 0x08 0x50
sleep 2
echo "Right 2 100%"
i2cset -y 1 0x63 0x08 0x40
sleep 2
echo "Left 2 50%"
i2cset -y 1 0x63 0x08 0x90
i2cset -y 1 0x63 0x05 0x7F
sleep 2
echo "Stop 2"
i2cset -y 1 0x63 0x08 0x00
sleep 2
echo "Right 2 50%"
i2cset -y 1 0x63 0x08 0x60
i2cset -y 1 0x63 0x04 0x7F
sleep 2
echo "Stop 2"
i2cset -y 1 0x63 0x08 0x00
sleep 2
Po podłączeniu zasilania silników i magistrali I²C modułu, obecność układu na magistrali sprawdzamy poleceniem: i2cdetect -y 1 powinien zostać wskazany adres PCA9632 z zakresu 0x60...0x63 odpowiadający ustawieniu zwór A1, A0. Jeżeli adres został zmieniony z 0x63 (A1, A0 = 1), należy uwzględnić to, edytując skrypt testowy.
Adam Tatuś, EP
- R1, R2: 4,7 kΩ
- C1: 0,1 μF ceramiczny (SMD0603)
- CE1: 100 μF/10 V elektrolityczny miniaturowy
- C2: 4,7 μF ceramiczny (SMD0603)
- U1: PCA9632DP2 (TSSOP10_050)
- U2: A3901SEJTR-T (DFN10)
- M1, M2: złącze SIP2 2,54 mm
- PWR: złącze śrubowe DG381-3.5-2
- RP1: drabinka rezystorowa 47 kΩ (CRA06S08)
- VCC: zwora - opcja (SMD0603)