PA-12 je vysoko presný aktuátor, ktorý možno ovládať pomocou Arduino. Tento PA-12 introduction guide predstaví metódy riadenia a implementáciu s PA-12 Arduino API.
Existujú dve verzie PA-12. PA-12-R má bezjadrový DC servomotor a komunikačný protokol RS-485. PA-12-T má jadrový DC servomotor a komunikačný protokol TTL/PWM.
Začiatok práce s PA-12 a Arduinom závisí od verzie PA-12, ktorú implementujete. V tomto tutoriáli sa používa PA-12-10645012R – 1,06” Zdvih, 4.50LBS sily, 12VDC bezjadrový DC motor. Bezjadrový motor znamená, že komunikačný protokol pre tento aktuátor je RS-485.
Arduino Leonardo/Uno nemá komunikačný protokol RS-485, ale má TTL. V tomto tutoriáli budeme na komunikáciu s lineárnym aktuátorom Arduino používať modul TTL na RS-485.

Obrázok 1 - RS-485 na TTL modul Arduino
Prevádzka riadenia PA-12
PA-12 sa ovláda priamo dátovými paketmi odosielanými cez TTL alebo RS-485 komunikáciu. Každý dátový paket obsahuje informácie, ktoré slúžia na vykonanie určitej funkcie PA-12 alebo na prijatie aktuálneho stavu zariadenia. Aktuálny stav zariadenia môže byť napríklad ID serva, hodnota napätia, poloha tyče aktuátora atď.
Vybavenie a softvér
- Arduino Leonardo
- Modul TTL na RS-485
- Aktuátor PA-12-10645012R
- +12VDC napájací zdroj
- Prepojovacie vodiče
- Arduino IDE
- PA-12 Arduino API
PA-12 API
PA-12 API si môžete stiahnuť tu. Táto API obsahuje nasledujúce súbory a priečinky:
- PA12.ino
- Obsahuje štruktúry príkazov PA-12 a funkcie, ktoré prenášajú a prijímajú dáta do/z PA-12
- Všetky funkcie použité vo vzorových kódoch alebo určené na implementáciu vo vašom kóde sú uložené v tomto súbore
- PA12.h
- Hlavičkový súbor obsahuje komunikačný protokol a hlavičky sériovej komunikácie
- Obsahuje deklarácie funkcií a premenných pre všetky funkcie a vlastnosti PA12
- setPosition, ServoID, presentSpeed, forceEnable
- Pomocné súbory
- Vzorové kódy
- Vzorový kód možno použiť na jednoduchú implementáciu riadenia PA-12 do vášho vlastného systému
- Všetky vzorové kódy sú naprogramované pre Arduino Leonardo, avšak premenné použité pre vysielacie a prijímacie piny možno upraviť tak, aby boli kompatibilné s mikrokontrolérom/Arduinom, ktoré už máte
Ako importovať knižnicu PA12
Vyberte ‘Sketch’ --> Include Library --> Add .ZIP Library. Všetky súbory v priečinku PA12 budú importované priamo do knižnice Arduino pre lineárny aktuátor. Následne budete môcť používať funkcie PA12 na riadenie aktuátora.

Obrázok 2 - Import knižnice Arduino
Dostupné príkazy pre PA-12
Nižšie je zobrazená tabuľka príkazov. Viac informácií o príkazoch nájdete v PA12.ino. V tomto tutoriáli pokryjeme základné príkazy. Budúce tutoriály budú zahŕňať pokročilejšie funkcie a techniky riadenia.
Funkcie čítania
Funkcie v nasledujúcej tabuľke sú len na čítanie a vracajú hodnotu.
|
Funkcia čítania |
Premenná |
Popis |
|---|---|---|
|
myServo.getModelNumber(ID_NUM) |
ID_NUM |
Číslo modelu PA-12 |
|
myServo.Version(ID_NUM) |
ID_NUM |
Číslo verzie motora PA-12 |
|
myServo.CalStroke (ID_NUM, *Length*) |
ID_NUM, Dĺžka = krátka, dlhá alebo stred |
Kontrola kalibrácie polohy zdvihu |
|
myServo.presentVolt((ID_NUM)/10) |
ID_NUM |
Kontrola vstupného napätia |
|
myServo.presentTemperature(ID_NUM) |
ID_NUM |
Aktuálna teplota motora |
|
myServo.MaxTemperature(ID_NUM) |
ID_NUM |
Načíta maximálny teplotný limit |
|
myServo.presentPosition(ID_NUM) |
ID_NUM |
Aktuálna poloha aktuátora |
|
myServo.moving(ID_NUM) |
ID_NUM |
Vrátený stav motora. 1 = v pohybe, 0 = zastavený |
|
myServo.limitVolt(ID_NUM, *Highest/Lowest*) |
ID_NUM, vysoká úroveň napätia = Najvyššia alebo nízka úroveň napätia = Najnižšia |
Načíta nastavenie vysokej alebo nízkej hodnoty napätia |
|
myServo.alarmLed(ID_NUM) |
ID_NUM |
Načíta stav výstražnej LED. 1 = ZAP, 0 = VYP |
|
myServo.alarmShutdown(ID_NUM) |
ID_NUM |
Načíta stav režimu vypnutia pri alarme |
|
myServo.StrokeLimit(ID_NUM, *Long/Short*) |
ID_NUM, limit vysunutia = Long alebo limit zasunutia = Short |
Načíta maximálne a minimálne limity zdvihu |
|
myServo.ResolutionFactor(ID_NUM) |
ID_NUM |
Načíta faktor rozlíšenia servomotora |
|
myServo.movingSpeed(ID_NUM) |
ID_NUM |
Načíta hodnotu rýchlosti servomotora |
|
myServo.forceLimit(ID_NUM) |
ID_NUM |
Načíta maximálnu silu servomotora (dočasné nastavenie) |
|
myServo.maxForce(ID_NUM) |
ID_NUM |
Načíta maximálnu silu servomotora (trvalé nastavenie) |
Funkcie zápisu
|
Funkcia zápisu |
Premenná |
Popis |
|---|---|---|
|
myServo(&Serial, enable_pin, Tx Level) |
Číslo sériového portu, enable pin, vysielací pin |
Nastavenie komunikačného portu |
|
myServo.begin(*Baud Setting Value*) |
Hodnota nastavenia baud (pozri tabuľku) |
Baudová rýchlosť sériovej komunikácie |
|
myServo.ServoID(ID_NUM, ID_Sel) |
ID_NUM, ID_Sel |
Zmeniť hodnotu ID serva |
|
myServo.ledOn(ID_NUM, *LED RGB Value*) |
ID_NUM, hodnota LED RGB (pozri tabuľku) |
Zapne zadanú LED |
|
myServo.MaxTemperature(ID_NUM, Temperature) |
ID_NUM, teplota |
Zapísať maximálny teplotný limit |
|
myServo.goalPosition(ID_NUM, *Position Value*) |
ID_NUM, hodnota polohy (pozri tabuľku) |
Nastaviť požadovanú polohu zdvihu |
|
myServo.limitVolt(ID_NUM, *Highest/Lowest*, LimitVolt) |
ID_NUM, vyššia hodnota = Najvyššia alebo nižšia hodnota = Najnižšia, LimitVolt |
Nastaviť vysokú alebo nízku hodnotu napätia |
|
myServo.alarmLed(ID_NUM, *Alarm Variable*) |
ID_NUM, alarmový bit |
Nastavenie výstražnej LED. Pozrite tabuľku pre viac informácií. |
|
myServo.alarmShutdown(ID_NUM, *enable*) |
ID_NUM, Enable: 0 = off, 1 = on |
Nastavenie vypnutia motora pri alarme. Ak je alarm aktivovaný, motor sa môže vypnúť |
|
myServo.StrokeLimit(ID_NUM, *Long/Short*, *Position Value*) |
ID_NUM, limit vysunutia = Long alebo limit zasunutia = Short, hodnota polohy (pozri tabuľku) |
Zapíše maximálne a minimálne limity zdvihu |
|
myServo.ResolutionFactor(ID_NUM, *Resolution Factor*) |
ID_NUM, faktor rozlíšenia (pozri tabuľku) |
Nastaví hodnotu rozlíšenia pre polohovanie zdvihu aktuátora. |
|
myServo.movingSpeed(ID_NUM, *Moving Speed Value*) |
ID_NUM, hodnota rýchlosti pohybu (pozri tabuľku) |
Nastaví rýchlosť servomotora |
|
myServo.forceLimit(ID_NUM, *Force Value*) |
ID_NUM, hodnota sily (pozri tabuľku) |
Nastaví maximálnu silu servomotora (dočasné nastavenie) |
|
myServo.maxForce(ID_NUM, *Force Value*) |
ID_NUM, hodnota sily (pozri tabuľku) |
Nastaví maximálnu silu servomotora (trvalé nastavenie) |
Nastavenia premenných
Tabuľky nižšie obsahujú hodnoty premenných, ktoré sa zadávajú do funkcií.
Baudová rýchlosť
|
Hodnota premennej baud |
Baudová rýchlosť |
|
16 |
115200 |
|
32 |
57600 |
|
64 |
19200 |
|
128 |
9600 |
Hodnota LED
|
Hodnota LED RGB |
|
ČERVENÁ |
|
ZELENÁ |
|
MODRÁ |
Servo ID
|
Hodnota ID serva |
|
0 |
|
1 - 253 |
|
254 |
Pre premennú ID serva ID_NUM: K dispozícii je celkovo 255 možností. Hodnota 0 je predvolené nastavenie. Pre individuálne ID môžete zvoliť hodnotu od 1 do 253. Hodnota 254 je vyhradená pre broadcast ID, čím sa aktivujú všetky PA-12 v sieti.
Nastavenia alarmu
|
Nastavenie alarmu |
Hodnota nastavenia alarmu |
|
Chyba vstupného napätia |
0 |
|
Chyba limitu zdvihu |
1 |
|
Chyba rozsahu |
3 |
|
Chyba kontrolného súčtu |
4 |
|
Chyba preťaženia |
5 |
|
Chyba inštrukcie |
6 |
|
*Vyhradené* |
7 |
Faktor rozlíšenia zdvihu
|
Hodnota faktora rozlíšenia |
Rozlíšenie |
|
1 |
4096 |
|
2 |
2048 |
|
3 |
1024 |
|
4 |
512 |
Čím vyššia hodnota rozlíšenia, tým vyššia pozičná presnosť.
Rýchlosť pohybu
|
Hodnota rýchlosti pohybu |
Nastavenie rýchlosti |
|
0 |
Maximálna rýchlosť |
|
1 - 1023 |
1 = najnižšia, 1023 = najvyššia |
Hodnota sily
|
Hodnota sily |
Nastavenie sily |
|
0 - 1023 |
1 = najnižšia, 1023 = najvyššia |
Hodnota polohy
|
Hodnota polohy |
Poloha |
|
0 - 4095 |
0 = úplne zasunuté, 4095 = úplne vysunuté |
Návod na zapojenie
PA-12 je pripojený k modulu RS-485, ktorý je následne priamo pripojený k Arduinu. Táto verzia PA-12 vyžaduje pre napájanie servomotora 12VDC napájací zdroj.

| RS-485 strana A | Arduino |
| DI | Pin 1 |
| DE | Pin 2 |
| RE | Pin 2 |
| R0 | Pin 0 |
Pin 0 na Arduine je TTL prijem. Pin 1 na Arduino Leonardo je TTL vysielanie. Pin 2 vo vzorových kódoch je nastavený ako enable pin.
|
PA-12 4-pinový konektor |
Hodnota |
|
Čierny |
GND |
|
Červený |
Servomotor +VDC |
|
Biely |
Komunikačný pin A |
|
Žltý |
Komunikačný pin B |

Obrázok 3- Portové pripojenia PA-12
|
RS-485 strana B |
Pripojenie |
|
VCC1 |
+5VDC (Arduino) |
|
A |
Biely vodič PA-12 |
|
B |
Žltý vodič PA-12 |
|
GND2 |
Zem napájania a PA-12 GND |
1Modul RS-485 je napájaný z +5VDC výstupu Arduina.
2Zem je spoločná medzi PA-12, napájacím zdrojom a modulom RS-485.
Vzorový kód
V tomto tutoriáli zobrazíme tri vzorové kódy, ktoré poskytnú úvodný pohľad na niektoré funkcie PA-12 a ako možno funkcie zápisu a čítania implementovať do vášho vlastného kódu.
- PA12_PresentPosition
- PA12_StrokeLimit
- PA12_ForceLimit
1. Aktuálna poloha
V tomto kóde používateľ zadá požadovanú hodnotu polohy medzi 0 až 4095 v sériovom monitore. Po zadaní sa príkaz odošle do PA-12, ktorý aktivuje servomotor a presunie tyč do požadovanej polohy. Kým je motor v pohybe, aktuálna poloha sa zobrazuje až do dosiahnutia koncovej polohy.

2. Limit zdvihu
V tomto kóde PA-12 cykluje každých 1000 ms v rámci zadaných parametrov vysunutia a zasunutia. Označenia Long a Short sa nachádzajú vo funkcii limitu zdvihu

3. Limit sily
Kód limitu sily zobrazený tu je dočasná verzia. To znamená, že pri každej strate napájania PA-12 sa hodnota limitu sily vráti na predvolené nastavenie. Používateľ zadá hodnotu limitu sily v sériovom monitore. V tomto prípade maximálna hodnota sily 0 predstavuje nízku hodnotu sily a 1023 predstavuje maximálnu hodnotu sily.

Budúce tutoriály
V budúcich tutoriáloch sa budeme venovať:
- Implementácii pokročilých funkcií
- Riadenie verzií PA-12 s TTL a PWM
- Technikám odstraňovania chýb
- Externým metódam riadenia
PA-12 je univerzálny a veľmi presný aktuátor, ktorý umožňuje koncovému používateľovi dosiahnuť priamu kontrolu nad svojou aplikáciou. Pri správnej implementácii dokáže PA-12 splniť presne to, čo vaša sústava vyžaduje.
Pre ďalšie informácie nám prosím napíšte na sales@progressiveautomations.com alebo zavolajte nášmu tímu na 1-800-676-6123.