Getting Started with Arduino and PA-12

Arduino ja PA-12 – näin pääset alkuun

Anna Sapiga
Anna Sapiga
PA Engineer

PA-12 on korkean tarkkuuden toimilaite, jota voidaan ohjata Arduinolla. Tämä PA-12 introduction -opas esittelee ohjaustavat ja toteutuksen PA-12 Arduino API:lla.

PA-12:sta on kaksi versiota. PA-12-R käyttää kelatonta DC‑servomoottoria ja RS‑485‑viestintäprotokollaa. PA-12‑T käyttää kela‑DC‑servomoottoria ja TTL/PWM‑viestintäprotokollaa.

PA-12:n ja Arduinon käyttöönotto riippuu käytettävästä PA-12‑versiosta. Tässä ohjeessa käytetään PA-12-10645012R – 1,06” iskun pituus, 4.50LBS voimaa, 12VDC kelaton DC‑moottori. Kelaton moottori tarkoittaa, että tämän toimilaitteen viestintäprotokolla on RS‑485.

Arduino Leonardo/Uno ei tue RS‑485‑viestintää, mutta siinä on TTL. Käytämme TTL–RS‑485‑moduulia viestiäksemme tässä ohjeessa Arduinon ja lineaarisen toimilaitteen välillä.

Arduino Module

Kuva 1 – RS‑485–TTL Arduino ‑moduuli


PA-12:n ohjaustoiminta

PA‑12:ta ohjataan suoraan lähettämällä datapaketteja TTL‑ tai RS‑485‑viestinnän kautta. Jokainen datapaketti sisältää tiedot, joita käytetään jonkin PA‑12:n toiminnon suorittamiseen tai laitteen nykytilan vastaanottamiseen. Nykytila voi olla esimerkiksi servon ID, jännitearvo, toimilaitteen varren sijainti jne.

Laitteisto ja ohjelmisto

PA-12 API

PA‑12 API voidaan ladata täältä. Tämä API sisältää seuraavat tiedostot ja kansiot:

  • PA12.ino
    • Sisältää PA‑12:n komentorakenteet ja toiminnot, jotka siirtävät ja vastaanottavat dataa PA‑12:lta/PA‑12:lle
    • Kaikki esimerkkikoodeissa käytettävät tai omaan koodiisi toteutettavat toiminnot sijaitsevat tässä tiedostossa
  • PA12.h
    • Otsikkotiedosto sisältää viestintäprotokollan ja sarjaviestinnän otsikkotiedostot
    • Sisältää kaikkien PA12‑ominaisuuksien funktio‑ ja muuttujamääritykset
    • setPosition, ServoID, presentSpeed, forceEnable
  • Aputiedostot
  • Esimerkkikoodit
    • Esimerkkikoodilla voit helposti toteuttaa PA‑12‑ohjauksen omaan järjestelmääsi
    • Kaikki esimerkkikoodit on ohjelmoitu käytettäväksi Arduino Leonardon kanssa; lähetys‑ ja vastaanottopinnejä varten käytetyt muuttujat voidaan kuitenkin muuttaa vastaamaan mikrokontrolleria/Arduinoa, joka sinulla on

PA12‑kirjaston tuonti

Valitse ‘Sketch’ --> Include Library --> Add.ZIP Library. Kaikki PA12‑kansiossa olevat tiedostot tuodaan suoraan lineaarisen toimilaitteen Arduino‑kirjastoon. Tämän jälkeen voit käyttää PA12‑toimintoja toimilaitteen ohjaukseen.

Arduino Library

Kuva 2 – Arduino‑kirjaston tuonti


Käytettävissä olevat komennot PA‑12:lle

Komennot on koottu alla olevaan taulukkoon. Saat lisätietoa komentoihin liittyvästä koodauksesta tarkastelemalla PA12.ino‑tiedostoa. Tässä ohjeessa käsittelemme peruskomennot. Tulevissa ohjeissa käsitellään edistyneempiä toimintoja ja ohjaustekniikoita.

Lukutoiminnot

Alla olevan taulukon toiminnot ovat vain luku ‑tilassa ja palauttavat arvon.

Lukutoiminto

Muuttuja

Kuvaus

myServo.getModelNumber(ID_NUM)

ID_NUM

PA‑12‑mallinumero

myServo.Version(ID_NUM)

ID_NUM

PA‑12‑moottorin versionumero

myServo.CalStroke (ID_NUM, *Length*)

ID_NUM, Length = Short, Long tai Center

Iskun pituuden kalibroinnin tarkistus

myServo.presentVolt((ID_NUM)/10)

ID_NUM

Tulojännitetarkistus

myServo.presentTemperature(ID_NUM)

ID_NUM

Moottorin tämänhetkinen lämpötila

myServo.MaxTemperature(ID_NUM)

ID_NUM

Lue suurin lämpötilaraja

myServo.presentPosition(ID_NUM)

ID_NUM

Toimilaitteen nykyinen sijainti

myServo.moving(ID_NUM)

ID_NUM

Moottorin tilan palautettu arvo. 1 = Liikkeessä, 0 = Pysähtynyt

myServo.limitVolt(ID_NUM, *Highest/Lowest*)

ID_NUM, High Voltage Level = Highest tai Low Voltage Level = Lowest

Lue korkean tai matalan jännitteen asetus

myServo.alarmLed(ID_NUM)

ID_NUM

Lukee hälytys‑LEDin tilan. 1 = Päällä, 0 = Pois

myServo.alarmShutdown(ID_NUM)

ID_NUM

Lukee hälytystilassa tapahtuvan sammutuksen tilan

myServo.StrokeLimit(ID_NUM, *Long/Short*)

ID_NUM, Extend Limit = Long tai Retract Limit = Short

Lukee iskun pituuden maksimi‑ ja minimirajat

myServo.ResolutionFactor(ID_NUM)

ID_NUM

Lukee servomoottorin resoluutiokertoimen

myServo.movingSpeed(ID_NUM)

ID_NUM

Lukee servomoottorin nopeuden arvon

myServo.forceLimit(ID_NUM)

ID_NUM

Lukee servomoottorin enimmäisvoiman (haihtuva asetus)

myServo.maxForce(ID_NUM)

ID_NUM

Lukee servomoottorin enimmäisvoiman (pysyvä asetus)

Kirjoitustoiminnot

Kirjoitustoiminto

Muuttuja

Kuvaus

myServo(&Serial, enable_pin, Tx Level)

Sarjaportin numero, enable‑pinni, lähetyspinni

Viestintäportin asetus

myServo.begin(*Baud Setting Value*)

Baud‑asetusarvo (ks. taulukko)

Sarjaviestinnän siirtonopeus (baud)

myServo.ServoID(ID_NUM, ID_Sel)

ID_NUM, ID_Sel

Vaihda servon ID‑arvo

myServo.ledOn(ID_NUM, *LED RGB Value*)

ID_NUM, LED RBB ‑arvo (ks. taulukko)

Kytkee määritetyn LEDin päälle

myServo.MaxTemperature(ID_NUM, Temperature)

ID_NUM, Temperature

Kirjoita suurin lämpötilaraja

myServo.goalPosition(ID_NUM, *Position Value*)

ID_NUM, Position Value (ks. taulukko)

Aseta haluttu iskun pituuden sijainti

myServo.limitVolt(ID_NUM, *Highest/Lowest*, LimitVolt)

ID_NUM, Higher Value = Highest tai Lower Value = Lowest, LimitVolt

Aseta korkean tai matalan jännitteen asetus

myServo.alarmLed(ID_NUM, *Alarm Variable*)

ID_NUM, Alarm Bit

Hälytys‑LEDin asetus. Katso lisätiedot taulukosta.

myServo.alarmShutdown(ID_NUM, *enable*)

ID_NUM, Enable: 0 = off, 1 = on

Moottorin hälytyssammutuksen asetus. Jos hälytys aktivoituu, moottori voidaan sammuttaa

myServo.StrokeLimit(ID_NUM, *Long/Short*, *Position Value*)

ID_NUM, Extend Limit = Long tai Retract Limit = Short, Position Value (ks. taulukko)

Kirjoittaa iskun pituuden maksimi‑ ja minimirajat

myServo.ResolutionFactor(ID_NUM, *Resolution Factor*)

ID_NUM, Resolution Factor (ks. taulukko)

Asettaa resoluutioarvon toimilaitteen iskun pituuden asemoinnille.

myServo.movingSpeed(ID_NUM, *Moving Speed Value*)

ID_NUM, Moving Speed Value (ks. taulukko)

Asettaa servomoottorin nopeuden

myServo.forceLimit(ID_NUM, *Force Value*)

ID_NUM, Force Value (ks. taulukko)

Asettaa servomoottorin enimmäisvoiman (haihtuva asetus)

myServo.maxForce(ID_NUM, *Force Value*)

ID_NUM, Force Value (ks. taulukko)

Asettaa servomoottorin enimmäisvoiman (pysyvä asetus)


Muuttuja‑asetukset

Alla olevissa taulukoissa on funktioihin syötettävät muuttuja‑arvot.

Baud‑nopeus

Baud‑muuttujan arvo

Siirtonopeus (baud)

16

115200

32

57600

64

19200

128

9600


LED‑arvo

LED RGB ‑arvo

RED

GREEN

BLUE


Servo‑ID

Servon ID ‑arvo

0

1 - 253

254


Servomoottorin ID‑muuttuja ID_NUM: vaihtoehtoja on yhteensä 255. Arvo 0 on oletus. Voit valita yksittäiselle ID:lle arvon 1–253. Arvo 254 on varattu lähetys‑ID:ksi, jolloin kaikki verkossa olevat PA‑12‑yksiköt aktivoidaan.

Hälytysasetukset

Hälytysasetus

Hälytysasetuksen arvo

Tulojännitevirhe

0

Iskun pituuden rajan virhe

1

Aluevirhe

3

Tarkistussumma‑virhe

4

Ylikuormitusvirhe

5

Ohjauskomento‑virhe

6

*Reserved*

7

Iskun pituuden resoluutiokerroin

Resoluutio­kertoimen arvo

Resoluutio

1

4096

2

2048

3

1024

4

512


Mitä suurempi resoluutioarvo, sitä parempi paikannustarkkuus. 

Liikenopeus

Liikenopeuden arvo

Nopeusasetus

0

Maksiminopeus

1 - 1023

1 = Hitaimmin, 1023 = Nopeimmin


Voima‑arvo

Voima‑arvo

Voima‑asetus

0 - 1023

1 = Pienin, 1023 = Suurin


Sijaintiarvo

Sijaintiarvo

Sijainti

0 - 4095

0 = Täysin sisällä, 4095 = Täysin ulkona


Kytkentäohje

PA‑12 kytketään RS‑485‑moduuliin, joka on suoraan kytketty Arduinoon. Tämä PA‑12‑versio vaatii 12VDC virtalähteen servomoottorin syöttöä varten.

Servo Motor

RS‑485 puoli A Arduino
DI Pin 1
DE Pin 2
RE Pin 2
R0 Pin 0

 

Arduinon pinni 0 on TTL‑vastaanotto. Arduino Leonardon pinni 1 on TTL‑lähetys. Esimerkkikoodeissa pinni 2 on asetettu enable‑pinniksi.

PA‑12 4‑napainen liitin

Arvo

Black

GND

Red

Servo Motor +VDC

White

Communication Pin A

Yellow

Communication Pin B

 

Port Connections - PA-12

Kuva 3 – PA‑12‑porttikytkennät

RS‑485 puoli B

Kytkentä

VCC1

+5VDC (Arduino)

A

PA‑12 White Wire

B

PA‑12 Yellow Wire

GND2

Virtalähteen GND ja PA‑12 GND

1RS‑485‑moduuli saa virran Arduinon +5VDC‑lähdöstä.

2Maadoitus on yhteinen PA‑12:n, virtalähteen ja RS‑485‑moduulin välillä.

Esimerkkikoodi

Tässä ohjeessa esittelemme kolme esimerkkikoodia, jotka antavat alustavan käsityksen joistakin PA‑12:n ominaisuuksista ja siitä, miten kirjoitus‑ ja lukutoimintoja voi toteuttaa omaan koodiisi.

  1. PA12_PresentPosition
  2. PA12_StrokeLimit
  3. PA12_ForceLimit

1. Nykyinen sijainti

Tässä koodissa käyttäjä syöttää halutun sijaintiarvon väliltä 0–4095 sarjavalvontaan. Kun arvo on syötetty, komento lähetetään PA‑12:lle, joka aktivoi servomoottorin liikuttamaan vartta haluttuun asentoon. Moottorin liikkuessa nykyinen sijainti näytetään, kunnes lopullinen sijainti on saavutettu. 

Arduino Code

2. Iskun pituuden rajat

Tässä koodissa PA‑12 käy sykliä 1000 ms välein annettujen ulos‑ ja sisäänvedon rajojen sisällä. Long ja Short ‑määreet sijaitsevat stroke limit ‑toiminnossa

Arduino Code

3. Voimaraja

Tässä esitettävä voimarajaa koskeva koodi on haihtuva versio. Tämä tarkoittaa, että aina kun PA‑12 menettää virran, voimarajan arvo palautuu oletusasetukseen. Käyttäjä syöttää voimarajan arvon sarjavalvonnasta. Tässä tapauksessa voima‑arvo 0 tarkoittaa pientä voimaa ja 1023 suurinta voimaa.

Arduino Code

Tulevat ohjeet

Tulevissa ohjeissa käsittelemme:

  • Edistyneiden toimintojen toteutus
  • PA‑12:n TTL‑ ja PWM‑version ohjaus
  • Vianetsintätekniikat
  • Ulkoiset ohjaustavat

PA‑12 on monipuolinen ja erittäin tarkka toimilaite, jonka avulla loppukäyttäjä voi hallita sovellustaan suoraan. Oikein toteutettuna PA‑12 pystyy täyttämään tarkalleen järjestelmäsi vaatimukset.

Lisätietoja saat lähettämällä sähköpostia osoitteeseen sales@progressiveautomations.com tai soittamalla tiimillemme numeroon 1‑800‑676‑6123.