Getting Started with Arduino and PA-12

Prvi koraki z Arduinom in PA-12

Anna Sapiga
Anna Sapiga
PA Engineer

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.

Arduino modul

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

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.

Arduino knjižnica

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.

Servomotor

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

 

Povezave vrat – PA-12

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.

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

Koda za Arduino

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

Koda za Arduino

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.

Koda za Arduino

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.