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.

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
- Arduino Leonardo
- Module TTL vers RS-485
- Actionneur PA-12-10645012R
- Alimentation +12VDC
- Fils de démarrage
- IDE Arduino
- API Arduino PA-12
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.

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.

| 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 |

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.
- PA12_Position actuelle
- PA12_StrokeLimit
- 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.

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.

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.

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.