Getting Started with Arduino and PA-12

Premiers pas avec Arduino et PA-12

David Eidelshtein
David Eidelshtein
PA Engineer

Le PA-12 est un actionneur de haute précision contrôlable par Arduino. Ce guide d'introduction au PA-12 présente les méthodes de contrôle et la mise en œuvre avec l'API Arduino du PA-12.

Il existe deux versions du PA-12. Le PA-12-R est équipé d'un servomoteur CC sans noyau et d'un protocole de communication RS-485. Le PA-12-T est équipé d'un servomoteur CC avec noyau et d'un protocole de communication TTL/PWM.

La prise en main du PA-12 et de l'Arduino dépend de la version du PA-12 utilisée. Dans ce tutoriel, nous utilisons le moteur CC sans noyau PA-12-10645012R , d'une course de 2,75 cm (1,06") et d'une force de 2 kg (4,50 lb), 12 V CC. Ce moteur sans noyau indique que le protocole de communication de cet actionneur est RS-485.

L'Arduino Leonardo/Uno ne dispose pas du protocole de communication RS-485, mais du TTL. Dans ce tutoriel, nous utiliserons un module TTL vers RS-485 pour communiquer avec l'actionneur linéaire Arduino.

Module Arduino

Figure 1 - Module Arduino RS-485 vers TTL


Fonctionnement du contrôle PA-12

Le PA-12 est contrôlé directement par des paquets de données envoyés via une communication TTL ou RS-485. Chaque paquet de données contient des informations permettant d'exécuter une fonction spécifique du PA-12 ou de connaître l'état actuel de l'appareil. Cet état peut être, par exemple, l'identifiant du servomoteur, la valeur de la tension, la position de la tige de l'actionneur, etc.

Équipement et logiciels

API PA-12

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

  • PA12.ino
    • Contient les structures de commande et les fonctions PA-12 qui transfèrent et reçoivent des données vers/depuis le PA-12
    • Toutes les fonctions utilisées dans les exemples de codes ou qui seront implémenté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 de communication série
    • Contient des déclarations de fonctions et de variables pour toutes les fonctionnalités et fonctionnalités de PA12
    • setPosition, ServoID, presentSpeed, forceEnable
  • Fichiers utilitaires
  • Exemples de codes
    • L'exemple de code peut être utilisé pour implémenter facilement le contrôle PA-12 dans votre propre système
    • Tous les exemples de codes sont programmés pour être utilisés avec Arduino Leonardo , cependant, les variables utilisées pour les broches de transmission 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 « Croquis » --> Inclure la bibliothèque --> Ajouter une bibliothèque .ZIP. Tous les fichiers du dossier PA12 seront importés directement dans la bibliothèque Arduino de l'actionneur linéaire. Vous pourrez ainsi utiliser les fonctions PA12 pour contrôler l'actionneur.

Bibliothèque Arduino

Figure 2 - Importation de la bibliothèque Arduion


Commandes disponibles pour PA-12

Un tableau des commandes est présenté ci-dessous. Pour plus d'informations sur les commandes, consultez le fichier PA12.ino pour plus d'informations sur le codage. Ce tutoriel abordera les commandes de base. Les prochains tutoriels aborderont des fonctions et des techniques de contrôle plus avancées.

Fonctions de lecture

Les fonctions situées dans le 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 PA-12

monServo.Version(ID_NUM)

ID_NUM

Numéro de version du moteur PA-12

myServo.CalStroke (ID_NUM, *Longueur*)

ID_NUM, Longueur = Court, Long ou Centre

Vérification de l'étalonnage de la position de course

monServo.presentVolt((ID_NUM)/10)

ID_NUM

Vérification de la tension d'entrée

monServo.presentTemperature(ID_NUM)

ID_NUM

Température actuelle du moteur

monServo.MaxTemperature (ID_NUM)

ID_NUM

Lire la limite de température maximale

myServo.presentPosition(ID_NUM)

ID_NUM

Position actuelle de l'actionneur

monServo.moving(ID_NUM)

ID_NUM

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

myServo.limitVolt(ID_NUM, *Le plus haut/le plus bas*)

ID_NUM, Niveau de tension élevé = le plus élevé ou Niveau de tension faible = le plus bas

Lire le réglage de tension haute ou basse

monServo.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 de l'alarme

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

ID_NUM, Limite d'extension = Longue ou Limite de rétraction = Courte

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)

monServo.maxForce(ID_NUM)

ID_NUM

Lit la force maximale du servomoteur (paramètre non volatil)

Fonctions d'écriture

Fonction d'écriture

Variable

Description

myServo(&Série, enable_pin, Niveau Tx)

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

Paramètre du port de communication

myServo.begin(*Valeur de réglage en bauds*)

Valeur de réglage en bauds (voir le tableau)

Débit en bauds de communication série

monServo.ServoID(ID_NUM, ID_Sel)

ID_NUM, ID_Sel

Modifier la valeur d'identification du servo

myServo.ledOn(ID_NUM, *Valeur LED RVB*)

ID_NUM, valeur LED RBB (voir tableau)

Allume une LED spécifiée

myServo.MaxTemperature(ID_NUM, Température)

ID_NUM, Température

Écrivez la limite de température maximale

myServo.goalPosition(ID_NUM, *Valeur de position*)

ID_NUM, valeur de position (voir tableau)

Définir la position de trait souhaitée

myServo.limitVolt(ID_NUM, *Le plus haut/le plus bas*, LimitVolt)

ID_NUM, Valeur supérieure = Valeur la plus élevée ou Valeur inférieure = Valeur la plus basse, LimitVolt

Réglez le réglage de tension haute ou basse

myServo.alarmLed(ID_NUM, *Variable d'alarme*)

ID_NUM, bit d'alarme

Réglage de l'alarme LED. Consultez le tableau pour plus d'informations.

myServo.alarmShutdown(ID_NUM, *activer*)

ID_NUM, Activer : 0 = désactivé, 1 = activé

Réglage de l'arrêt du moteur par alarme. Si l'alarme est activée, le moteur peut être arrêté.

myServo.StrokeLimit(ID_NUM, *Long/Court*, *Valeur de position*)

ID_NUM, Limite d'extension = Longue ou Limite de rétraction = Courte, Valeur de position (Voir le tableau)

Écrit les limites de course max et min

myServo.ResolutionFactor(ID_NUM, *Facteur de résolution*)

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, *Valeur de vitesse de déplacement*)

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

Définit la vitesse du servomoteur

myServo.forceLimit(ID_NUM, *Force Value*)

ID_NUM, valeur forcée (voir tableau)

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

myServo.maxForce(ID_NUM, *Valeur de force*)

ID_NUM, Valeur forcée (voir tableau)

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


Paramètres variables

Les tableaux ci-dessous contiennent la valeur de la variable qui sera saisie dans les fonctions.

Débit en bauds

Valeur de la variable en bauds

Débit en bauds

16

115200

32

57600

64

19200

128

9600


Valeur LED

Valeur LED RVB

ROUGE

VERT

BLEU


ID du servo

Valeur d'identification du servo

0

1 - 253

254


Pour la variable d'identification du servomoteur ID_NUM : 255 options sont disponibles. La valeur par défaut est 0. Vous pouvez sélectionner une valeur comprise entre 1 et 253 pour un identifiant individuel. La valeur 254 est réservée à un identifiant de diffusion, activant ainsi tous les PA-12 d'un réseau.

Paramètres d'alarme

Réglage de l'alarme

Valeur de réglage de l'alarme

Erreur de tension d'entrée

0

Erreur de limite de course

1

Erreur de portée

3

Erreur de somme de contrôle

4

Erreur de surcharge

5

Erreur d'instruction

6

*Réservé*

7

Facteur de résolution des accidents vasculaires cérébraux

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 la vitesse de déplacement

Réglage de la vitesse

0

Vitesse maximale

1 - 1023

1 = le plus bas, 1023 = le plus élevé


Valeur de force

Valeur de force

Réglage de la force

0 - 1023

1 = le plus bas, 1023 = le plus élevé


Valeur de position

Valeur de position

Position

0 - 4095

0 = Complètement rétracté, 4095 = Complètement étendu


Guide de câblage

Le PA-12 est connecté au module RS-485, lui-même directement connecté à l'Arduino. Cette version du PA-12 nécessite une alimentation 12 VCC pour alimenter le servomoteur.

servomoteur

RS-485 côté A Arduino
DI Broche 1
DE Broche 2
CONCERNANT Broche 2
R0 Épingle 0

La broche 0 de l'Arduino est la broche de réception TTL. La broche 1 de l'Arduino Leonardo est la broche de transmission TTL. La broche 2 des exemples de codes est configurée pour servir de broche d'activation.

Connecteur PA-12 à 4 broches

Valeur

Noir

GND

Rouge

Servomoteur +VDC

Blanc

Broche de communication A

Jaune

Broche de communication B

Connexions portuaires - PA-12

Figure 3 - Connexions du port PA-12

RS-485 côté B

Connexion

VCC 1

+5 VCC (Arduino)

UN

Fil blanc PA-12

B

Fil jaune PA-12

GND 2

Alimentation GND et PA-12 GND

1 Le module RS-485 reçoit l'alimentation de la sortie +5VDC de l'Arduino.

2 La terre est partagée entre le PA-12, l'alimentation et le module RS-485.

Exemple de code

Dans ce didacticiel, nous allons afficher trois exemples de codes qui fournissent un aperçu préliminaire de certaines des fonctionnalités du PA-12 et de la manière dont les fonctions d'écriture et de lecture peuvent être implémentées dans votre propre code.

  1. PA12_Position actuelle
  2. PA12_StrokeLimit
  3. PA12_ForceLimit

1. Position actuelle

Dans ce code, l'utilisateur saisit une valeur de position souhaitée comprise entre 0 et 4095 dans le moniteur série. Une fois saisie, la commande est envoyée au PA-12, qui active alors le servomoteur pour déplacer la tige jusqu'à 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 1 000 ms, conformément aux paramètres de limite d'extension et de rétraction saisis. Les désignations « Long » et « Court » se trouvent dans la fonction de limite de course.

Code Arduino

3. Limite de force

Le code de limite de force affiché ici est la version volatile. Cela signifie qu'à chaque coupure de courant du PA-12, la valeur de limite de force est réinitialisée à sa valeur 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 indique une valeur faible et 1023 une valeur maximale.

Code Arduino

Tutoriels futurs

Dans les prochains tutoriels, nous aborderons :

  • Implémentation de fonctions avancées
  • Contrôle PA-12 version TTL et PWM
  • Techniques de dépannage
  • Méthodes de contrôle externe

Le PA-12 est un actionneur polyvalent et extrêmement précis qui permet à l'utilisateur final de contrôler directement son application. Avec une mise en œuvre adaptée, le PA-12 répond parfaitement 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.