Sterownik silników do AVTDuino UNO R4

Sterownik silników do AVTDuino UNO R4

Przedstawiona konstrukcja kontynuuje cykl odświeżający nakładki Arduino, pozwalający na korzystanie z całego potencjału wersji R4 popularnej płytki bazowej. Opisany moduł zastępuje leciwe sterowniki silników oparte na układach L293 oraz L298 nowoczesnymi sterownikami MAX22202, zachowując możliwie wysoki stopień kompatybilności wstecznej.

Podstawowe parametry:
  • dwa niezależnie sterowane kanały,
  • prąd szczytowy uzwojeń: 3 A/kanał,
  • napięcie zasilania silników: 3...30 V (niezależne w obydwu kanałach),
  • możliwość sterowania kierunkiem i prędkością obrotów,
  • możliwość monitorowania prądu silników,
  • konstrukcja na bazie scalonych sterowników pełnomostkowych MAX22202,
  • wbudowana przetwornica DC/DC typu buck z opcją wyboru źródła zasilania logiki (napięcie zasilania kanału 1 lub 2).

Nakładka umożliwia dwukierunkowe sterowanie sygnałem PWM dwóch silników prądu stałego z niezależną regulacją prędkości. Prąd szczytowy uzwojeń może sięgnąć maksymalnie 3 A przy zasilaniu każdego silników z osobnego źródła napięcia 3...30 VDC. Wbudowana opcjonalna przetwornica obniżająca ułatwia zasilanie płytki bazowej, gdy napięcie jednego z silników mieści się w zakresie 9...30 V. Zastosowane układy sterowników zapewniają płynną regulację prądu uzwojeń, z wartością ustalaną potencjometrem montażowym; mają ponadto funkcję monitorowania prądów uzwojeń oraz sygnalizację stanów awaryjnych.

Nakładka wyposażona jest w dwa nowoczesne, pełnomostkowe układy sterownika silnika prądu stałego typu MAX22202 (Analog Devices), którego budowę przedstawiono na rysunku 1.

Rysunek 1. Budowa wewnętrzna MAX22202 (za notą Analog Devices)

Układ MAX22202 zawiera wszystkie bloki niezbędne do sterowania silnikiem prądu stałego, a jego aplikacja ogranicza się do zaledwie kilku elementów zewnętrznych. Wbudowany mostek MOSFET charakteryzuje się niewielką rezystancją w stanie przewodzenia R_ds(on)~0,3 Ω, co zmniejsza straty i umożliwia pracę przy niskich napięciach zasilania, już od 3 V, bez zmniejszenia wydajności prądowej. MAX22202 ma wbudowany układ pomiaru prądu silnika, niewymagający zewnętrznego rezystora pomiarowego – dzięki temu jego aplikacja jest uproszczona, a straty mocy zminimalizowane. Układ pracuje w dwóch trybach: pierwszy to włączona regulacja prądu silnika, przy którym maksymalny prąd uzwojeń ustalany jest rezystancją podłączoną do wprowadzenia ILIM, drugi to praca z wyłączoną regulacją, gdy do wyprowadzenia ILIM podłączony jest rezystor 14 kΩ, a aktywne pozostaje tylko ograniczenie prądu maksymalnego 3,5 A. Regulacja prądu silnika ułatwia np. rozruch napędu bez przeciążeń prądowych i zbędnych obciążeń mechanicznych. W każdym trybie możliwa jest regulacja PWM. Wartość rezystora podłączonego do wyprowadzenia ILIM ustalającego prąd silnika Itrip wyznacza się ze wzoru:

Itrip [A]= Kilim/Rlim [kΩ]

gdzie Kilim=~50 KV (Rlim: 18...250 kΩ)

Jeżeli w danej aplikacji przewidywane jest sterowanie silnika w zamkniętej pętli sprzężenia zwrotnego lub konieczna jest informacja o prądzie uzwojeń, to wyprowadzenie ISEN udostępnia potrzebny sygnał monitorujący. Podłączony do niego rezystor obciąża wbudowane źródło prądowe, a uzyskiwane napięcie wyjściowe opisane jest wzorem:

Risen [Ω] = Kisen·Vfs [V]/Imax [A]

gdzie Kisen=~5 kA/A

Stany awaryjne – takie jak przeciążenie, przegrzanie lub zbyt niskie napięcie zasilania – sygnalizowane są stanem niskim na wyprowadzeniu FAULT.

Za sterowanie silnikiem odpowiadają sygnały ENABLE, PHASE(DIR) oraz MODE, zgodnie z tabelą 1. Jeżeli stan niski na wyprowadzeniu MODE trwa dłużej niż (1,5...3,5 ms), układ przechodzi w stan obniżonego poboru mocy. W przypadku włączonej regulacji prądu silnika i przekroczenia jej nastawy, sterowanie mostkiem przełączane jest na wewnętrzne, ograniczające prąd uzwojenia niezależnie od stanu wyprowadzeń.

Schemat nakładki przedstawiono na rysunku 2. Układy U1, U2 (MAX22202) pracują w typowej aplikacji. Każdy z silników podłączony jest wraz z napięciem zasilania do odpowiadającego mu złącza M1, M2. Odsprzęganie zasilania zapewniają kondensatory C2, C3, CE1 i C5, C6, CE2, zaś transile TVS1, TVS2 zabezpieczają drivery przed skutkami przepięć. Pojemności filtrujące mają minimalne wartości, niezbędne do zapewnienia poprawnej pracy U1, U2 (każdorazowo należy zapewnić odpowiednią filtrację i przekroje przewodów zasilających dobranych pod kątem wymagań współpracujących silników). Regulacja prądu silnika odbywa się za pomocą potencjometrów RV1, RV2. Ustawienie ślizgaczy w maksymalnym położeniu wyłącza regulację, ustalając rezystancję widzianą przez wyprowadzenie ILIM na R1, R3=14 kΩ. Sygnał monitorujący prąd silnika, dostępny na wyprowadzeniu ILIM, przetwarzany jest na napięcie i dodatkowo buforowany przez wzmacniacz U3 o wzmocnieniu ustalonym na 2 V/V. Maksymalny mierzony prąd to 3,5 A, co odpowiada napięciu 2 V na wyprowadzeniach A0 lub A2 i A1. Zakres prądu i napięcia może zostać zoptymalizowany poprzez dobór rezystorów R2, R10 i R4, R8 odpowiednio do każdego z silników – należy pamiętać tylko, by nie przekraczać zakresu napięcia wejściowego ADC (zależnego od użytej płytki bazowej). Bezpiecznie jest pracować w zakresie 0...3 V, ponieważ gwarantuje zgodność z płytkami zasilanymi napięciami zarówno 3,3 V, jak i 5 V. Zwora A0 (zalutowana domyślnie w położeniu A0) umożliwia zmianę wyprowadzenia monitorującego prąd silnika M1 z A0 na A2, co jest istotne w aplikacjach, w których chcemy wykorzystać wyprowadzony na A0 przetwornik D/A w UNO R4. Sygnał monitorujący prąd silnika nie podlega w układach U1 i U2 żadnej obróbce oprócz skalowania zakresu – o stosowne przeliczenie należy zatem zadbać we własnym zakresie, zwłaszcza jeśli sterujemy silnikiem sygnałem PWM. Kiedy sygnał monitorujący prąd silników nie jest niezbędny w aplikacji, może zostać całkowicie odłączony od wyprowadzeń A0(2), A1 przy użyciu przełączników DIP M1CFG, M2CFG, a linie te zostaną uwolnione do użycia w innych celach. Stan awaryjny driverów: FLT1, FLT2, dostępny jest na wyprowadzeniach D6, D7 i także może zostać od nich odłączony przełącznikami DIP M1CFG, M2CFG. Sterowanie silnikami sprowadza się do trzech sygnałów: ENB1/2 (załączającego silnik z możliwą regulacją PWM), PHA1/2 (odpowiadającego za zmianę kierunku) oraz MD1/2 (odpowiadającego za tryb pracy). Przypisanie sygnałów jest zgodne z Motor Shield. Diody LD1...LD4 – podłączone bezpośrednio na wyjściach OUT układów U1 i U2 – sygnalizują wysterowanie silnika, dzięki czemu możliwa jest też obserwacja napięcia indukowanego w silniku przy braku wysterowania uzwojenia (przejście do pracy prądnicowej) i kontrolowanie rzeczywistego stanu wyjść mostka.

Rysunek 2. Schemat nakładki

W celu ułatwienia aplikacji nakładki, na złącza Grove wyprowadzono magistralę I²C (wyprowadzenia A4, A5) oraz UART (D0, D1), umożliwiającą podłączenie czujników zasilanych napięciem IOREF. Opcjonalnie układ uzupełnia przetwornica obniżająca PSU typu AMSR-787.2Z, pozwalająca na zasilanie płytki bazowej z jednego z napięć zasilających silniki, doprowadzonych do złącza VIN – położenie współpracującej z nim zwory ustala wybór napięcia VM1 lub VM2. Przetwornica obniża wybrane napięcie do 7,2 V (obciążalność maksymalna 500 mA). Do poprawnej pracy konwertera DC/DC wymagane jest napięcie wejściowe 9...30 V, co nieznacznie ogranicza możliwości driverów, ale upraszcza aplikację w przypadku, gdy podłączamy silniki do typowego napięcia z przedziału 9...24 V, np. z pakietu akumulatorów. Gdy wymagane jest sterowanie silnikami niskonapięciowymi 3...9 V, napięcie do płytki bazowej musi być doprowadzone niezależnie. W przypadku AVTDuino UNO R4 Plus, aby wykorzystać zasilanie z napięcia silników, należy założyć na płytkę bazową zworę VIN; w przypadku innych płytek Arduino trzeba koniecznie sprawdzić dopuszczalny zakres zasilania VIN.

Układ zmontowany jest na dwustronnej płytce drukowanej zgodnej z Arduino Shield Rev3. Rozmieszczenie elementów przedstawiono na rysunku 3. Sposób montażu nie wymaga opisu, montaż zwory VIN i przetwornicy PSU jest opcjonalny (zgodnie z uwagami w tekście). W zależności od przewidywanego zastosowania, przedłużane złącza szpilkowe PWR, AD, IOL, IOH, ISP (wysokość 13...15 mm) można zastąpić „stackowalnymi” złączami Arduino, umożliwiającymi montowanie modułów w kanapki.

Rysunek 3. Rozmieszczenie elementów na płytce drukowanej

Prosty szkic z listingu 1 ułatwia przetestowanie sterowania silnikami przy użyciu PWM i zmiany kierunku. W przypadku zastosowania szkiców z Arduino Motor Shield należy zmodyfikować funkcję obsługującą wyprowadzenie BRAKE, która w AVTDuino UNO_R4_DCMotor Shield pełni funkcję MODE i konieczna jest jej negacja.

// Test MAX22202 UNO_R4_DCMotor
int dirPin1 = 12;
int pwmPin1 = 3;
int modePin1 = 9;
int pwm1 = 0;

int dirPin2 = 13;
int pwmPin2 = 11;
int modePin2 = 8;
int pwm2 = 0;

int step = 1;

void setup() {
//define pins
pinMode(dirPin1, OUTPUT);
pinMode(pwmPin1, OUTPUT);
pinMode(modePin1, OUTPUT);
pinMode(dirPin2, OUTPUT);
pinMode(pwmPin2, OUTPUT);
pinMode(modePin2, OUTPUT);
digitalWrite(modePin1, LOW);
digitalWrite(modePin2, LOW);
digitalWrite(dirPin1, LOW);
digitalWrite(dirPin2, LOW);
analogWrite(pwmPin1, 0);
analogWrite(pwmPin2, 0);
}

void loop() {
// M1 speed up/down
digitalWrite(modePin1, HIGH);
delay(5);
// M1 >>
digitalWrite(dirPin1, LOW);
for (pwm1 = 0; pwm1 <= 255; pwm1++) {
analogWrite(pwmPin1, pwm1);
delay(10);
}
delay(3000);
for (pwm1 = 0; pwm1 <= 255; pwm1++) {
analogWrite(pwmPin1, 255 - pwm1);
delay(10);
}
delay(1000);

// M1 <<
digitalWrite(dirPin1, HIGH);
for (pwm1 = 0; pwm1 <= 255; pwm1++) {
analogWrite(pwmPin1, pwm1);
delay(10);
}
delay(3000);
for (pwm1 = 0; pwm1 <= 255; pwm1++) {
analogWrite(pwmPin1, 255 - pwm1);
delay(10);
}
delay(1000);
// M1 fast decay
digitalWrite(modePin1, LOW);
analogWrite(pwmPin1, 0);

// M2 speed up/down
digitalWrite(modePin2, HIGH);
delay(5);

// M2 >>
digitalWrite(dirPin2, LOW);
for (pwm2 = 0; pwm2 <= 255; pwm2++) {
analogWrite(pwmPin2, pwm2);
delay(10);
}
delay(3000);
for (pwm2 = 0; pwm2 <= 255; pwm2++) {
analogWrite(pwmPin2, 255 - pwm2);
delay(10);
}
delay(1000);

// M2 <<
digitalWrite(dirPin2, HIGH);
for (pwm2 = 0; pwm2 <= 255; pwm2++) {
analogWrite(pwmPin2, pwm2);
delay(10);
}
delay(3000);
for (pwm2 = 0; pwm2 <= 255; pwm2++) {
analogWrite(pwmPin2, 255 - pwm2);
delay(10);
}
delay(1000);
// M2 fast decay
digitalWrite(modePin2, LOW);
analogWrite(pwmPin2, 0);
}

Listing 1. Przykładowy szkic testowy

Jeżeli wszystko działa poprawnie, moduł może zostać użyty we własnej aplikacji.

Adam Tatuś, EP

Wykaz elementów:
Rezystory: (1%)
  • R1, R3: 14 kΩ (SMD 0603)
  • R2, R4: 1,5 kΩ (SMD 0603)
  • R5...R10: 22 kΩ (SMD 0603)
  • R11, R12: 10 kΩ (SMD 1206)
  • R13, R14: 220 kΩ (SMD 0603)
Kondensatory:
  • C1, C4: 1 μF/10 V (SMD 0603, X7R)
  • C2, C5, C7: 100 nF/50 V (SMD 0603, X7R)
  • C3, C6: 4,7 μF/50 V (SMD 1206, X7R)
  • C8: 100 nF/50 V (SMD 0603, X7R)
  • C9: 10 μF/10 V (SMD 0603, X7R)
  • CE1...CE3: 47 μF/50 V elektrolityczny, typ EEEFT1H470AP
Półprzewodniki:
  • LD1, LD3: dioda LED czerwona (SMD 0603)
  • LD2, LD4: dioda LED zielona (SMD 0603)
  • TVS1, TVS2: transil SM6T33A (SMB)
  • U1, U2: MAX22202ATC (TDFN12)
  • U3: LMV358DGK (VSSOP8_065)
Pozostałe:
  • AD: złącze szpilkowe 6 pin 2,54 mm (13...15 mm)
  • I²C, UART: złącze Grove kątowe
  • IOH: złącze szpilkowe 10 pin, 2,54 mm (13...15 mm)
  • IOL, PWR: złącze szpilkowe 8 pin, 2,54 mm (13...15 mm)
  • ISP: złącze szpilkowe 2×3 pin, 2,54 mm (13...15 mm) (opcja)
  • M1, M2: złącze śrubowe kompletne 4 pin 3,81 mm kątowe
  • M1CFG, M2CFG: przełącznik DIP switch, 2 sekcje, typ A6H-2101
  • PSU: przetwornica AMSR-787.2Z (opcja)
  • VIN: złącze SIP3 + zwora (opcja)
  • RES: przycisk TACT-switch 6×3 mm
  • RV1, RV2: potencjometr montażowy 200 kΩ
Artykuł ukazał się w
Elektronika Praktyczna
marzec 2024
DO POBRANIA
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik czerwiec 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio lipiec - sierpień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje maj 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna czerwiec 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich lipiec 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów