Getting Started with Arduino and PA-12

Premiers pas avec Arduino et le PA-12

Anna Sapiga
Anna Sapiga
PA Engineer

Le PA-12 est un actionneur haute précision qui peut être piloté avec Arduino. Ce guide d’introduction au PA-12 présentera des méthodes de contrôle et leur mise en œuvre avec l’API Arduino du PA-12.

Il existe deux versions du PA-12. Le PA-12-R dispose d’un servomoteur CC sans noyau et d’un protocole de communication RS-485. Le PA-12-T possède un servomoteur CC avec noyau et un protocole de communication TTL/PWM.

La prise en main du PA-12 avec Arduino dépend de la version du PA-12 mise en œuvre. Dans ce tutoriel, le PA-12-10645012R est utilisé – Course de 1,06”, 4,50 lb de force, servomoteur CC 12VDC sans noyau. Le moteur sans noyau signifie que le protocole de communication de cet actionneur est le RS-485.

L’Arduino Leonardo/Uno n’intègre pas de protocole RS-485, mais il propose du TTL. Nous utiliserons un module TTL vers RS-485 pour communiquer avec le vérin linéaire via Arduino dans ce tutoriel.

Module Arduino

Figure 1 - Module Arduino RS-485 vers TTL


Fonctionnement du contrôle du PA-12

Le PA-12 est contrôlé directement par des paquets de données envoyés via la communication TTL ou RS-485. Chaque paquet contient des informations utilisées pour exécuter une fonction précise du PA-12 ou pour recevoir l’état actuel de l’appareil. L’état actuel de l’appareil peut être, par exemple, l’ID du servo, la valeur de tension, la position de la tige de l’actionneur, etc.

Équipement et logiciels

API du PA-12

L’API du PA-12 peut être téléchargée ici. Cette API contient les fichiers et dossiers suivants :

  • PA12.ino
    • Contient les structures de commandes du PA-12 et les fonctions qui transmettent et reçoivent des données vers/depuis le PA-12
    • Toutes les fonctions utilisées dans les exemples de code ou destinées à être intégrées dans votre code sont stockées dans ce fichier
  • PA12.h
    • Le fichier d’en-tête contient le protocole de communication et les fichiers d’en-tête pour la communication série
    • Contient les déclarations de fonctions et de variables pour toutes les fonctionnalités du PA-12
    • setPosition, ServoID, presentSpeed, forceEnable
  • Fichiers utilitaires
  • Exemples de code
    • Le code d’exemple peut être utilisé pour intégrer facilement le contrôle du PA-12 dans votre propre système
    • Tous les exemples sont programmés pour être utilisés avec Arduino Leonardo, toutefois, les variables utilisées pour les broches d’émission et de réception peuvent être modifiées pour être compatibles avec le microcontrôleur/Arduino que vous possédez déjà

Pour importer la bibliothèque PA12

Sélectionnez « Sketch » --> Inclure une bibliothèque --> Ajouter une bibliothèque .ZIP. Tous les fichiers situés dans le dossier PA12 seront importés directement dans la bibliothèque Arduino du vérin linéaire. Vous pourrez ensuite utiliser les fonctions PA12 pour piloter l’actionneur.

Bibliothèque Arduino

Figure 2 - Import de la bibliothèque Arduino


Commandes disponibles pour le PA-12

Un tableau des commandes est affiché ci-dessous. Pour plus d’informations sur les commandes, consultez le fichier PA12.ino pour les détails de codage. Nous couvrirons les commandes de base dans ce tutoriel. De futurs tutoriels incluront des fonctions et techniques de contrôle plus avancées.

Fonctions de lecture

Les fonctions du tableau ci-dessous sont en lecture seule et renvoient une valeur.

Fonction de lecture

Variable

Description

myServo.getModelNumber(ID_NUM)

ID_NUM

Numéro de modèle du PA-12

myServo.Version(ID_NUM)

ID_NUM

Numéro de version du moteur du PA-12

myServo.CalStroke (ID_NUM, *Length*)

ID_NUM, Length = Courte, Longue ou Centre

Vérification de l’étalonnage de la position de Course

myServo.presentVolt((ID_NUM)/10)

ID_NUM

Vérification de la tension d’entrée

myServo.presentTemperature(ID_NUM)

ID_NUM

Température actuelle du moteur

myServo.MaxTemperature(ID_NUM)

ID_NUM

Lecture de la limite de température maximale

myServo.presentPosition(ID_NUM)

ID_NUM

Position actuelle de l’actionneur

myServo.moving(ID_NUM)

ID_NUM

Valeur renvoyée de l’état du moteur. 1 = En mouvement, 0 = Arrêté

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

ID_NUM, Niveau de haute tension = Plus élevé ou Niveau de basse tension = Plus bas

Lit le réglage de haute ou basse tension

myServo.alarmLed(ID_NUM)

ID_NUM

Lit l’état de la LED d’alarme. 1 = ON, 0 = Off

myServo.alarmShutdown(ID_NUM)

ID_NUM

Lit l’état du mode d’arrêt sur alarme

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

ID_NUM, Limite d’extension = Long ou Limite de rétraction = Short

Lit les limites de Course max et min

myServo.ResolutionFactor(ID_NUM)

ID_NUM

Lit le facteur de résolution du servomoteur

myServo.movingSpeed(ID_NUM)

ID_NUM

Lit la valeur de la vitesse du servomoteur

myServo.forceLimit(ID_NUM)

ID_NUM

Lit la force maximale du servomoteur (réglage volatile)

myServo.maxForce(ID_NUM)

ID_NUM

Lit la force maximale du servomoteur (réglage non volatile)

Fonctions d’écriture

Fonction d’écriture

Variable

Description

myServo(&Serial, enable_pin, Tx Level)

Numéro de port série, broche d’activation, broche de transmission

Paramétrage du port de communication

myServo.begin(*Baud Setting Value*)

Valeur de réglage du débit (voir tableau)

Débit en bauds de la communication série

myServo.ServoID(ID_NUM, ID_Sel)

ID_NUM, ID_Sel

Modifier la valeur de l’ID du servo

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

ID_NUM, Valeur LED RBB (voir tableau)

Allume une LED spécifiée

myServo.MaxTemperature(ID_NUM, Temperature)

ID_NUM, Temperature

Écrire la limite de température maximale

myServo.goalPosition(ID_NUM, *Position Value*)

ID_NUM, Valeur de position (voir tableau)

Définir une position de Course souhaitée

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

ID_NUM, Valeur plus élevée = Highest ou Valeur plus basse = Lowest, LimitVolt

Définir le réglage de haute ou basse tension

myServo.alarmLed(ID_NUM, *Alarm Variable*)

ID_NUM, Bit d’alarme

Réglage de la LED d’alarme. Voir le tableau pour plus d’infos.

myServo.alarmShutdown(ID_NUM, *enable*)

ID_NUM, Enable : 0 = off, 1 = on

Réglage d’arrêt d’alarme du moteur. Si l’alarme est activée, le moteur peut être arrêté

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

ID_NUM, Limite d’extension = Long ou Limite de rétraction = Short, Valeur de position (voir tableau)

Écrit les limites de Course max et min

myServo.ResolutionFactor(ID_NUM, *Resolution Factor*)

ID_NUM, Facteur de résolution (voir tableau)

Définit la valeur de résolution pour le positionnement de la Course de l’actionneur.

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

ID_NUM, Valeur de vitesse de déplacement (voir tableau)

Définit la vitesse du servomoteur

myServo.forceLimit(ID_NUM, *Force Value*)

ID_NUM, Valeur de force (voir tableau)

Définit la force maximale du servomoteur (réglage volatile)

myServo.maxForce(ID_NUM, *Force Value*)

ID_NUM, Valeur de force (voir tableau)

Définit la force maximale du servomoteur (réglage non volatile)


Paramètres des variables

Les tableaux ci-dessous indiquent la valeur de variable à entrer dans les fonctions.

Débit en bauds

Valeur de variable de débit

Débit en bauds

16

115200

32

57600

64

19200

128

9600


Valeur de LED

Valeur RVB de la LED

ROUGE

VERT

BLEU


ID du servo

Valeur d’ID du servo

0

1 - 253

254


Pour la variable d’ID de servomoteur ID_NUM : 255 options sont disponibles au total. La valeur 0 est le réglage par défaut. Vous pouvez choisir une valeur de 1 à 253 pour un ID individuel. La valeur 254 est réservée à un ID de diffusion, activant ainsi tous les PA-12 présents dans un réseau.

Paramètres d’alarme

Paramètre d’alarme

Valeur du paramètre d’alarme

Erreur de tension d’entrée

0

Erreur de limite de Course

1

Erreur de plage

3

Erreur de somme de contrôle

4

Erreur de surcharge

5

Erreur d’instruction

6

*Réservé*

7

Facteur de résolution de Course

Valeur du facteur de résolution

Résolution

1

4096

2

2048

3

1024

4

512


Plus la valeur de résolution est élevée, plus la précision de positionnement est élevée. 

Vitesse de déplacement

Valeur de vitesse de déplacement

Réglage de la vitesse

0

Vitesse maximale

1 - 1023

1 = Plus faible, 1023 = Plus élevée


Valeur de force

Valeur de force

Réglage de la force

0 - 1023

1 = Plus faible, 1023 = Plus élevée


Valeur de position

Valeur de position

Position

0 - 4095

0 = Entièrement rentré, 4095 = Entièrement déployé


Guide de câblage

Le PA-12 est connecté au module RS-485, qui est ensuite directement relié à l’Arduino. Cette version du PA-12 nécessite une alimentation 12VDC pour l’alimentation du servomoteur.

Servomoteur

Côté RS-485 A Arduino
DI Broche 1
DE Broche 2
RE Broche 2
R0 Broche 0

 

La broche 0 de l’Arduino est la réception TTL. La broche 1 de l’Arduino Leonardo est l’émission TTL. La broche 2, dans les exemples de code, est configurée comme broche d’activation.

Connecteur 4 broches du PA-12

Valeur

Noir

GND

Rouge

Servomoteur +VDC

Blanc

Broche de communication A

Jaune

Broche de communication B

 

Connexions des ports - PA-12

Figure 3- Connexions des ports du PA-12

Côté RS-485 B

Connexion

VCC1

+5VDC (Arduino)

A

Fil blanc du PA-12

B

Fil jaune du PA-12

GND2

GND de l’alimentation et GND du PA-12

1Le module RS-485 est alimenté par la sortie +5VDC de l’Arduino.

2La masse est commune entre le PA-12, l’alimentation et le module RS-485.

Exemples de code

Dans ce tutoriel, nous présenterons trois exemples de code qui offrent un aperçu préliminaire de certaines fonctionnalités du PA-12 et montrent comment les fonctions d’écriture et de lecture peuvent être intégrées dans votre propre code.

  1. PA12_PresentPosition
  2. PA12_StrokeLimit
  3. PA12_ForceLimit

1. Position actuelle

Dans ce code, l’utilisateur saisit la valeur de position souhaitée entre 0 et 4095 dans le moniteur série. Une fois saisie, la commande est envoyée au PA-12, qui activera alors le servomoteur pour déplacer la tige à la position souhaitée. Pendant que le moteur est en mouvement, la position actuelle est affichée jusqu’à ce que la position finale soit atteinte. 

Code Arduino

2. Limite de Course

Dans ce code, le PA-12 effectue un cycle toutes les 1000 ms à l’intérieur des paramètres de limites d’extension et de rétraction saisis. Les désignations Long et Short se trouvent dans la fonction de limite de Course

Code Arduino

3. Limite de force

Le code de limite de force présenté ici est la version volatile. Cela signifie qu’à chaque coupure d’alimentation du PA-12, la valeur de limite de force sera réinitialisée à son réglage par défaut. L’utilisateur saisit la valeur de limite de force depuis le moniteur série. Dans ce cas, la valeur de force maximale de 0 signifie une faible force, et 1023 signifie une force maximale.

Code Arduino

Tutoriels à venir

Dans de futurs tutoriels, nous aborderons :

  • Mise en œuvre de fonctions avancées
  • Contrôle du PA-12 en version TTL et PWM
  • Techniques de dépannage
  • Méthodes de contrôle externes

Le PA-12 est un actionneur polyvalent et très précis qui permet à l’utilisateur final d’exercer un contrôle direct sur son application. Avec la bonne mise en œuvre, le PA-12 peut répondre exactement aux exigences de votre système.

Pour plus d’informations, veuillez nous envoyer un e-mail à sales@progressiveautomations.com, ou appeler notre équipe au 1-800-676-6123.