Getting Started with Arduino and PA-12

Aan de slag met Arduino en de PA-12

Anna Sapiga
Anna Sapiga
PA Engineer

De PA-12 is een actuator met hoge precisie die met Arduino kan worden aangestuurd. Deze PA-12 introduction-handleiding behandelt aansturingsmethoden en implementaties met de PA-12 Arduino API.

Er zijn twee versies van de PA-12. De PA-12-R heeft een kernloze DC-servomotor en RS‑485‑communicatieprotocol. De PA-12-T heeft een DC-servomotor met kern en TTL/PWM‑communicatieprotocol.

De start met de PA-12 en Arduino hangt af van de versie van de PA-12 die wordt geïmplementeerd. In deze tutorial wordt de PA-12-10645012R gebruikt – 1,06” Slaglengte, 4.50LBS kracht, 12VDC kernloze DC‑motor. De kernloze motor betekent dat het communicatieprotocol voor deze actuator RS‑485 is.

De Arduino Leonardo/Uno heeft geen RS‑485‑communicatieprotocol, maar wel TTL. We gebruiken een TTL‑naar‑RS‑485‑module om in deze tutorial met de lineaire actuator via Arduino te communiceren.

Arduino‑module

Figuur 1 - RS-485 naar TTL Arduino‑module


PA-12-bedieningswerking

De PA-12 wordt direct aangestuurd met datapakketten die via TTL of RS‑485‑communicatie worden verzonden. Elk datapakket bevat informatie die wordt gebruikt om een bepaalde functie van de PA-12 uit te voeren of om de huidige status van het apparaat te ontvangen. De huidige status van het apparaat kan bijvoorbeeld de servo‑ID, spanningswaarde, positie van de stang van de actuator, enz. zijn.

Apparatuur en software

PA-12 API

De PA-12 API kan hier. worden gedownload. Deze API bevat de volgende bestanden en mappen:

  • PA12.ino
    • Bevat de PA-12‑opbouw van commando’s en functies die data naar/van de PA-12 verzenden en ontvangen
    • Alle functies die in de voorbeeldcodes worden gebruikt of in uw code zullen worden geïmplementeerd, zijn in dit bestand opgeslagen
  • PA12.h
    • Het headerbestand bevat het communicatieprotocol en headers voor seriële communicatie
    • Bevat functie‑ en variabeledeclaraties voor alle PA12‑functies en functionaliteit
    • setPosition, ServoID, presentSpeed, forceEnable
  • Hulpprogrammabestanden
  • Voorbeeldcodes
    • De voorbeeldcode kan worden gebruikt om de PA‑12‑besturing eenvoudig in uw eigen systeem te implementeren
    • Alle voorbeeldcodes zijn geprogrammeerd voor gebruik met Arduino Leonardo, maar de variabelen voor de zend‑ en ontvangstpinnen kunnen worden aangepast om compatibel te zijn met de microcontroller/Arduino die u al hebt

PA12‑bibliotheek importeren

Selecteer ‘Sketch’ --> Include Library --> Add .ZIP Library. Alle bestanden in de PA12‑map worden rechtstreeks geïmporteerd in de Arduino‑bibliotheek voor de lineaire actuator. Hierdoor kunt u de PA12‑functies gebruiken om de actuator aan te sturen.

Arduino‑bibliotheek

Figuur 2 - Arduino‑bibliotheek importeren


Beschikbare commando’s voor PA-12

Hieronder staat een tabel met commando’s. Voor meer informatie over de commando’s, bekijk PA12.ino voor code‑informatie. In deze tutorial behandelen we de basiscommando’s. Toekomstige tutorials zullen geavanceerdere functies en besturingstechnieken omvatten.

Leesfuncties

De functies in de tabel hieronder zijn alleen-lezen en geven een waarde terug.

Leesfunctie

Variabele

Beschrijving

myServo.getModelNumber(ID_NUM)

ID_NUM

PA‑12 modelnummer

myServo.Version(ID_NUM)

ID_NUM

PA‑12 moterversienummer

myServo.CalStroke (ID_NUM, *Length*)

ID_NUM, Lengte = Kort, Lang of Midden

Kalibratiecontrole van de slaglengtepositie

myServo.presentVolt((ID_NUM)/10)

ID_NUM

Controle van de ingangsspanning

myServo.presentTemperature(ID_NUM)

ID_NUM

Huidige temperatuur van de motor

myServo.MaxTemperature(ID_NUM)

ID_NUM

Lees de maximale temperatuurgrens

myServo.presentPosition(ID_NUM)

ID_NUM

Huidige positie van de actuator

myServo.moving(ID_NUM)

ID_NUM

Geretourneerde waarde van motorstatus. 1 = In beweging, 0 = Gestopt

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

ID_NUM, Hoog spanningsniveau = Hoogste of Laag spanningsniveau = Laagste

Lees de hoog- of laagspanninginstelling

myServo.alarmLed(ID_NUM)

ID_NUM

Leest de status van de alarm‑LED. 1 = AAN, 0 = Uit

myServo.alarmShutdown(ID_NUM)

ID_NUM

Leest de status van de alarm‑uitschakelmodus

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

ID_NUM, Uitschuiflimiet = Lang of Inschuiflimiet = Kort

Leest de maximale en minimale slaglengte‑limieten

myServo.ResolutionFactor(ID_NUM)

ID_NUM

Leest de resolutiefactor van de servomotor

myServo.movingSpeed(ID_NUM)

ID_NUM

Leest de waarde van de servomotor‑snelheid

myServo.forceLimit(ID_NUM)

ID_NUM

Leest de maximale kracht van de servomotor (vluchtige instelling)

myServo.maxForce(ID_NUM)

ID_NUM

Leest de maximale kracht van de servomotor (niet‑vluchtige instelling)

Schrijffuncties

Schrijffunctie

Variabele

Beschrijving

myServo(&Serial, enable_pin, Tx Level)

Seriële poortnummer, enable‑pin, zendpin

Instelling van de communicatiepoort

myServo.begin(*Baud Setting Value*)

Baud‑instelwaarde (zie tabel)

Baudrate van seriële communicatie

myServo.ServoID(ID_NUM, ID_Sel)

ID_NUM, ID_Sel

Wijzig servo‑ID‑waarde

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

ID_NUM, LED‑RGB‑waarde (zie tabel)

Schakelt een opgegeven LED in

myServo.MaxTemperature(ID_NUM, Temperature)

ID_NUM, Temperature

Schrijf de maximale temperatuurgrens

myServo.goalPosition(ID_NUM, *Position Value*)

ID_NUM, Positiewaarde (zie tabel)

Stel een gewenste slaglengtepositie in

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

ID_NUM, Hogere waarde = Hoogste of Lagere waarde = Laagste, LimitVolt

Stel de hoog- of laagspanninginstelling in

myServo.alarmLed(ID_NUM, *Alarm Variable*)

ID_NUM, Alarmbit

Instelling voor alarm‑LED. Zie tabel voor meer info.

myServo.alarmShutdown(ID_NUM, *enable*)

ID_NUM, Enable: 0 = uit, 1 = aan

Instelling voor motor‑alarmuitschakeling. Als het alarm is geactiveerd, kan de motor worden uitgeschakeld

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

ID_NUM, Uitschuiflimiet = Lang of Inschuiflimiet = Kort, Positiewaarde (zie tabel)

Schrijft de maximale en minimale slaglengte‑limieten

myServo.ResolutionFactor(ID_NUM, *Resolution Factor*)

ID_NUM, Resolutiefactor (zie tabel)

Stelt de resolutiewaarde in voor positionering van de slaglengte van de actuator.

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

ID_NUM, Waarde bewegingssnelheid (zie tabel)

Stelt de snelheid van de servomotor in

myServo.forceLimit(ID_NUM, *Force Value*)

ID_NUM, Krachtwaarde (zie tabel)

Stelt de maximale kracht van de servomotor in (vluchtige instelling)

myServo.maxForce(ID_NUM, *Force Value*)

ID_NUM, Krachtwaarde (zie tabel)

Stelt de maximale kracht van de servomotor in (niet‑vluchtige instelling)


Variabele instellingen

De tabellen hieronder bevatten de variabele waarde die in de functies wordt ingevoerd.

Baudrate

Waarde van de baudvariabele

Baudrate

16

115200

32

57600

64

19200

128

9600


LED‑waarde

LED‑RGB‑waarde

ROOD

GROEN

BLAUW


Servo‑ID

Servo‑ID‑waarde

0

1 - 253

254


Voor servo‑motor‑ID‑variabele ID_NUM: Er zijn in totaal 255 opties beschikbaar. De waarde 0 is de standaardinstelling. U kunt voor een individuele ID een waarde van 1 tot 253 selecteren. De waarde 254 is gereserveerd voor een broadcast‑ID en activeert daarmee alle PA‑12’s binnen een netwerk.

Alarminstellingen

Alarminstelling

Waarde van alarminstelling

Ingangsspanningsfout

0

Slaglengtebegrenzingsfout

1

Bereikfout

3

Controlesomfout

4

Overbelastingsfout

5

Instructiefout

6

*Gereserveerd*

7

Slaglengte‑resolutiefactor

Waarde van de resolutiefactor

Resolutie

1

4096

2

2048

3

1024

4

512


Hoe hoger de resolutiewaarde, hoe hoger de positioneringsnauwkeurigheid. 

Bewegingssnelheid

Waarde bewegingssnelheid

Snelheidsinstelling

0

Maximale snelheid

1 - 1023

1 = Laagste, 1023 = Hoogste


Krachtwaarde

Krachtwaarde

Krachtinstelling

0 - 1023

1 = Laagste, 1023 = Hoogste


Positiewaarde

Positiewaarde

Positie

0 - 4095

0 = Volledig ingetrokken, 4095 = Volledig uitgeschoven


Bedradingsgids

De PA-12 is verbonden met de RS‑485‑module, die vervolgens direct met de Arduino is verbonden. Deze versie van de PA-12 vereist een 12VDC‑voeding voor de servomotor.

Servomotor

RS-485 zijde A Arduino
DI Pin 1
DE Pin 2
RE Pin 2
R0 Pin 0

 

Pin 0 op de Arduino is de TTL‑ontvangst. Pin 1 op de Arduino Leonardo is de TTL‑zending. Pin 2 in de voorbeeldcodes is zo ingesteld dat deze wordt gebruikt als de enable‑pin.

PA-12 4‑pins connector

Waarde

Zwart

GND

Rood

Servomotor +VDC

Wit

Communicatiepin A

Geel

Communicatiepin B

 

Poortaansluitingen - PA-12

Figuur 3- PA-12 poortaansluitingen

RS-485 zijde B

Verbinding

VCC1

+5VDC (Arduino)

A

PA-12 witte draad

B

PA-12 gele draad

GND2

Voedings‑GND en PA‑12 GND

1De RS‑485‑module ontvangt voeding van de +5VDC‑uitgang van de Arduino.

2De massa wordt gedeeld tussen de PA‑12, voeding en RS‑485‑module.

Voorbeeldcode

In deze tutorial laten we drie voorbeeldcodes zien die een eerste inzicht geven in enkele functies van de PA‑12 en hoe schrijf- en leesfuncties in uw eigen code kunnen worden geïmplementeerd.

  1. PA12_PresentPosition
  2. PA12_StrokeLimit
  3. PA12_ForceLimit

1. Huidige positie

In deze code voert de gebruiker de gewenste positiewaarde tussen 0 en 4095 in via de seriële monitor. Na invoer wordt de opdracht naar de PA‑12 gestuurd, die vervolgens de servomotor activeert om de stang naar de gewenste positie te bewegen. Terwijl de motor beweegt, wordt de huidige positie weergegeven totdat de eindpositie is bereikt. 

Arduino‑code

2. Slaglengte‑limiet

In deze code doorloopt de PA‑12 elke 1000 ms de opgegeven parameters voor uitschuif- en inschuiflimiet. De aanduidingen Long en Short bevinden zich in de functie voor slaglimiet

Arduino‑code

3. Krachtlimiet

De hier getoonde krachtlimiet‑code is de vluchtige versie. Dit betekent dat telkens wanneer de PA‑12 de voeding verliest, de krachtlimietwaarde wordt teruggezet naar de standaardinstelling. De gebruiker voert de krachtlimietwaarde in via de seriële monitor. In dit geval duidt de maximale krachtwaarde van 0 op een lage krachtwaarde en 1023 op een maximale krachtwaarde.

Arduino‑code

Toekomstige tutorials

In toekomstige tutorials behandelen we:

  • Implementatie van geavanceerde functies
  • TTL‑ en PWM‑versie PA‑12 besturing
  • Technieken voor probleemoplossing
  • Externe besturingsmethoden

De PA‑12 is een veelzijdige en zeer nauwkeurige actuator waarmee de eindgebruiker directe controle over zijn toepassing kan krijgen. Met de juiste implementatie kan de PA‑12 precies voldoen aan uw systeemvereisten.

Voor aanvullende informatie kunt u ons een e‑mail sturen op sales@progressiveautomations.com, of ons team bellen op 1-800-676-6123.