PA-12 je visokonatančen aktuator, ki ga je mogoče krmiliti z Arduinom. Ta vodnik PA-12 introduction bo predstavil načine krmiljenja in implementacijo z Arduino API‑jem za PA-12.
Obstajata dve različici modela PA-12. PA-12-R ima brezjedrni enosmerni servomotor in komunikacijski protokol RS-485. PA-12-T ima enosmerni servomotor z jedrom in komunikacijski protokol TTL/PWM.
Začetek dela s PA-12 in Arduinom je odvisen od različice PA-12, ki jo uporabljate. V tem vodiču je uporabljen PA-12-10645012R – hod 1,06”, 4.50LBS sile, 12VDC brezjedrni enosmerni motor. Brezjedrni motor pomeni, da je komunikacijski protokol za ta aktuator RS-485.
Arduino Leonardo/Uno nima komunikacijskega protokola RS-485, ima pa TTL. V tem vodiču bomo za komunikacijo z linearnim aktuatorjem Arduino uporabili modul TTL v RS-485.

Slika 1 – RS-485 v TTL modul za Arduino
Delovanje krmiljenja PA-12
PA-12 se neposredno krmili s podatkovnimi paketi, poslanimi prek komunikacije TTL ali RS-485. Vsak podatkovni paket vsebuje informacije, uporabljene za izvedbo določene funkcije PA-12 ali za prejem trenutnega stanja naprave. Trenutno stanje naprave so lahko na primer ID serva, vrednost napetosti, položaj palice aktuatorja itd.
Oprema in programska oprema
- Arduino Leonardo
- Modul TTL v RS-485
- Aktuator PA-12-10645012R
- +12VDC napajalnik
- Povezovalne žice (jumper)
- Arduino IDE
- PA-12 Arduino API
PA-12 API
PA-12 API lahko prenesete tukaj. Ta API vsebuje naslednje datoteke in mape:
- PA12.ino
- Vsebuje ukazne strukture in funkcije PA-12, ki prenašajo in sprejemajo podatke v/iz PA-12
- V tej datoteki so shranjene vse funkcije, uporabljene v zglednih kodah ali namenjene implementaciji v vaši kodi
- PA12.h
- Glava (header) vsebuje komunikacijski protokol in datoteke glave za serijsko komunikacijo
- Vsebuje deklaracije funkcij in spremenljivk za vse funkcije in zmožnosti PA12
- setPosition, ServoID, presentSpeed, forceEnable
- Pomožne datoteke
- Vzorčne kode
- Vzorčno kodo lahko uporabite za preprosto implementacijo krmiljenja PA-12 v vaš sistem
- Vse vzorčne kode so programirane za uporabo z Arduino Leonardo, vendar je mogoče spremenljivke za oddajne in sprejemne pine prilagoditi mikrokrmilniku/Arduinu, ki ga že imate
Uvoz knjižnice PA12
Izberite ‘Sketch’ --> Include Library --> Add.ZIP Library. Vse datoteke v mapi PA12 bodo neposredno uvožene v Arduino knjižnico linearnega aktuatorja. Nato boste lahko uporabljali funkcije PA12 za krmiljenje aktuatorja.

Slika 2 – Uvoz knjižnice v Arduino
Razpoložljivi ukazi za PA-12
Spodaj je prikazana tabela ukazov. Za več informacij o ukazih preverite PA12.ino za podrobnosti o kodiranju. V tem vodiču bomo obravnavali osnovne ukaze. Prihodnji vodiči bodo vključevali naprednejše funkcije in tehnike krmiljenja.
Funkcije branja
Funkcije v spodnji tabeli so samo za branje in vračajo vrednost.
|
Funkcija branja |
Spremenljivka |
Opis |
|---|---|---|
|
myServo.getModelNumber(ID_NUM) |
ID_NUM |
Številka modela PA-12 |
|
myServo.Version(ID_NUM) |
ID_NUM |
Številka različice motorja PA-12 |
|
myServo.CalStroke (ID_NUM, *Length*) |
ID_NUM, Length = Short, Long ali Center |
Preverjanje kalibracije položaja hoda |
|
myServo.presentVolt((ID_NUM)/10) |
ID_NUM |
Preverjanje vhodne napetosti |
|
myServo.presentTemperature(ID_NUM) |
ID_NUM |
Trenutna temperatura motorja |
|
myServo.MaxTemperature(ID_NUM) |
ID_NUM |
Branje največje temperaturne meje |
|
myServo.presentPosition(ID_NUM) |
ID_NUM |
Trenutni položaj aktuatorja |
|
myServo.moving(ID_NUM) |
ID_NUM |
Vrnjena vrednost stanja motorja. 1 = v gibanju, 0 = ustavljen |
|
myServo.limitVolt(ID_NUM, *Highest/Lowest*) |
ID_NUM, High Voltage Level = Highest ali Low Voltage Level = Lowest |
Branje nastavitve visoke ali nizke napetosti |
|
myServo.alarmLed(ID_NUM) |
ID_NUM |
Prebere stanje alarmne LED. 1 = ON, 0 = Off |
|
myServo.alarmShutdown(ID_NUM) |
ID_NUM |
Prebere stanje načina izklopa ob alarmu |
|
myServo.StrokeLimit(ID_NUM, *Long/Short*) |
ID_NUM, Extend Limit = Long ali Retract Limit = Short |
Prebere največje in najmanjše omejitve hoda |
|
myServo.ResolutionFactor(ID_NUM) |
ID_NUM |
Prebere faktor ločljivosti servomotorja |
|
myServo.movingSpeed(ID_NUM) |
ID_NUM |
Prebere vrednost hitrosti servomotorja |
|
myServo.forceLimit(ID_NUM) |
ID_NUM |
Prebere največjo silo servomotorja (nestalna nastavitev) |
|
myServo.maxForce(ID_NUM) |
ID_NUM |
Prebere največjo silo servomotorja (stalna nastavitev) |
Funkcije pisanja
|
Funkcija pisanja |
Spremenljivka |
Opis |
|---|---|---|
|
myServo(&Serial, enable_pin, Tx Level) |
Številka serijskega porta, enable pin, oddajni pin |
Nastavitev komunikacijskega porta |
|
myServo.begin(*Baud Setting Value*) |
Vrednost nastavitve hitrosti (baud) (glej tabelo) |
Hitrost serijske komunikacije (Baud Rate) |
|
myServo.ServoID(ID_NUM, ID_Sel) |
ID_NUM, ID_Sel |
Spremeni vrednost ID serva |
|
myServo.ledOn(ID_NUM, *LED RGB Value*) |
ID_NUM, vrednost LED RGB (glej tabelo) |
Vklopi določeno LED |
|
myServo.MaxTemperature(ID_NUM, Temperature) |
ID_NUM, Temperature |
Zapiše največjo temperaturno mejo |
|
myServo.goalPosition(ID_NUM, *Position Value*) |
ID_NUM, vrednost položaja (glej tabelo) |
Nastavi želeni položaj hoda |
|
myServo.limitVolt(ID_NUM, *Highest/Lowest*, LimitVolt) |
ID_NUM, Higher Value = Highest ali Lower Value = Lowest, LimitVolt |
Nastavi visoko ali nizko napetostno nastavitev |
|
myServo.alarmLed(ID_NUM, *Alarm Variable*) |
ID_NUM, Alarm Bit |
Nastavitev alarmne LED. Za več informacij glejte tabelo. |
|
myServo.alarmShutdown(ID_NUM, *enable*) |
ID_NUM, Enable: 0 = off, 1 = on |
Nastavitev izklopa motorja ob alarmu. Če je alarm aktiviran, se lahko motor izklopi |
|
myServo.StrokeLimit(ID_NUM, *Long/Short*, *Position Value*) |
ID_NUM, Extend Limit = Long ali Retract Limit = Short, vrednost položaja (glej tabelo) |
Zapiše največje in najmanjše omejitve hoda |
|
myServo.ResolutionFactor(ID_NUM, *Resolution Factor*) |
ID_NUM, Resolution Factor (glej tabelo) |
Nastavi vrednost ločljivosti za pozicioniranje hoda aktuatorja. |
|
myServo.movingSpeed(ID_NUM, *Moving Speed Value*) |
ID_NUM, Moving Speed Value (glej tabelo) |
Nastavi hitrost servomotorja |
|
myServo.forceLimit(ID_NUM, *Force Value*) |
ID_NUM, Force Value (glej tabelo) |
Nastavi največjo silo servomotorja (nestalna nastavitev) |
|
myServo.maxForce(ID_NUM, *Force Value*) |
ID_NUM, Force Value (glej tabelo) |
Nastavi največjo silo servomotorja (stalna nastavitev) |
Nastavitve spremenljivk
Spodnje tabele vsebujejo vrednost spremenljivke, ki se vnese v funkcije.
Baud Rate
|
Vrednost spremenljivke Baud |
Baud Rate |
|
16 |
115200 |
|
32 |
57600 |
|
64 |
19200 |
|
128 |
9600 |
Vrednost LED
|
Vrednost LED RGB |
|
RED |
|
GREEN |
|
BLUE |
ID serva
|
Vrednost ID serva |
|
0 |
|
1 - 253 |
|
254 |
Za spremenljivko ID_NUM (ID servomotorja): Na voljo je skupno 255 možnosti. Vrednost 0 je privzeta nastavitev. Za posamezni ID lahko izberete vrednost od 1 do 253. Vrednost 254 je rezervirana za oddajni ID (broadcast), s čimer se aktivirajo vsi PA-12 v omrežju.
Nastavitve alarma
|
Nastavitev alarma |
Vrednost nastavitve alarma |
|
Napaka vhodne napetosti |
0 |
|
Napaka omejitve hoda |
1 |
|
Napaka območja |
3 |
|
Napaka kontrolne vsote |
4 |
|
Napaka preobremenitve |
5 |
|
Napaka instrukcije |
6 |
|
*Rezervirano* |
7 |
Faktor ločljivosti hoda
|
Vrednost faktorja ločljivosti |
Ločljivost |
|
1 |
4096 |
|
2 |
2048 |
|
3 |
1024 |
|
4 |
512 |
Višja kot je vrednost ločljivosti, višja je natančnost pozicioniranja.
Hitrost gibanja
|
Vrednost hitrosti gibanja |
Nastavitev hitrosti |
|
0 |
Največja hitrost |
|
1 - 1023 |
1 = najnižja, 1023 = najvišja |
Vrednost sile
|
Vrednost sile |
Nastavitev sile |
|
0 - 1023 |
1 = najnižja, 1023 = najvišja |
Vrednost položaja
|
Vrednost položaja |
Položaj |
|
0 - 4095 |
0 = popolnoma uvlečeno, 4095 = popolnoma izvlečeno |
Vodič za ožičenje
PA-12 je povezan z modulom RS-485, ta pa je nato neposredno povezan z Arduinom. Ta različica PA-12 zahteva napajalnik 12VDC za napajanje servomotorja.

| RS-485 stran A | Arduino |
| DI | Pin 1 |
| DE | Pin 2 |
| RE | Pin 2 |
| R0 | Pin 0 |
Pin 0 na Arduinu je sprejem TTL. Pin 1 na Arduino Leonardo je oddaja TTL. Pin 2 v vzorčnih kodah je nastavljen kot enable pin.
|
4‑polni konektor PA-12 |
Vrednost |
|
Črna |
GND |
|
Rdeča |
Servo Motor +VDC |
|
Bela |
Komunikacijski pin A |
|
Rumena |
Komunikacijski pin B |

Slika 3– Povezave vrat PA-12
|
RS-485 stran B |
Povezava |
|
VCC1 |
+5VDC (Arduino) |
|
A |
Bel vodnik PA-12 |
|
B |
Rumeni vodnik PA-12 |
|
GND2 |
GND napajalnika in GND PA-12 |
1RS-485 modul se napaja iz Arduino izhoda +5VDC.
2Masa je skupna med PA-12, napajalnikom in modulom RS-485.
Primeri kode
V tem vodiču bomo prikazali tri primere kode, ki ponujajo prvi vpogled v nekatere funkcije PA-12 ter kako lahko funkcije pisanja in branja vključite v lastno kodo.
- PA12_PresentPosition
- PA12_StrokeLimit
- PA12_ForceLimit
1. Trenutni položaj
V tej kodi uporabnik v serijskem monitorju vnese želeno vrednost položaja med 0 in 4095. Po vnosu se ukaz pošlje PA-12, ki nato aktivira servomotor in premakne palico v želeni položaj. Med gibanjem motorja se prikazuje trenutni položaj, dokler ni dosežen končni položaj.

2. Omejitev hoda
V tej kodi PA-12 cikla vsakih 1000 ms znotraj vnesenih parametrov omejitve iztega in uvleka. Oznaki Long in Short se nahajata v funkciji omejitve hoda

3. Omejitev sile
Koda omejitve sile, prikazana tukaj, je nestalna različica. To pomeni, da se ob vsakem izpadu napajanja PA-12 vrednost omejitve sile ponastavi na privzeto nastavitev. Uporabnik vnese vrednost omejitve sile v serijskem monitorju. V tem primeru največja vrednost sile 0 pomeni nizko vrednost sile, 1023 pa pomeni največjo vrednost sile.

Prihodnji vodiči
V prihodnjih vodičih bomo obravnavali:
- Implementacijo naprednih funkcij
- Krmiljenje različice PA-12 z TTL in PWM
- Tehnike odpravljanja napak
- Zunanje metode krmiljenja
PA-12 je vsestranski in zelo natančen aktuator, ki končnemu uporabniku omogoča neposreden nadzor nad aplikacijo. Ob ustrezni implementaciji lahko PA-12 natančno izpolni zahteve vašega sistema.
Za dodatne informacije nam pišite na sales@progressiveautomations.com ali pokličite našo ekipo na 1-800-676-6123.