Getting Started with Arduino and PA-12

Začíname s Arduinom a PA-12

Anna Sapiga
Anna Sapiga
PA Engineer

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.

Modul Arduino

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

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.

Knižnica Arduino

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.

Servomotor

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

 

Portové pripojenia - PA-12

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.

  1. PA12_PresentPosition
  2. PA12_StrokeLimit
  3. 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. 

Kód Arduino

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

Kód Arduino

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.

Kód Arduino

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.