El PA-12 es un actuador de alta precisión que se puede controlar con Arduino. Esta guía de introducción al PA-12 presentará métodos de control e implementación con la API Arduino PA-12.
Hay dos versiones del PA-12.El PA-12-R tiene un servomotor CC sin núcleo y un protocolo de comunicación RS-485. El PA-12-T tiene un servomotor CC con núcleo y un protocolo de comunicación TTL/PWM.
Comenzar con PA-12 y Arduino dependerá de la versión de PA-12 que se esté implementando. En este tutorial, se utiliza el PA-12-10645012R : carrera de 1,06”, 4,50 libras de fuerza, motor de CC sin núcleo de 12 VCC. El motor sin núcleo significa que el protocolo de comunicación para este actuador es RS-485.
El Arduino Leonardo/Uno no tiene protocolo de comunicación RS-485, pero sí TTL. Usaremos un módulo TTL a RS-485 para comunicarnos con el actuador lineal Arduino en este tutorial.
Figura 1 - Módulo Arduino RS-485 a TTL
Operación de control PA-12
El PA-12 se controla directamente con paquetes de datos enviados mediante comunicación TTL o RS-485. Cada paquete de datos contiene información que se utiliza para realizar una determinada función del PA-12 o para recibir el estado actual del dispositivo. El estado actual del dispositivo podría ser, por ejemplo, el ID del servo, el valor de voltaje, la posición de la varilla del actuador, etc.
Equipos y software
- arduino leonardo
- Módulo TTL a RS-485
- Actuador PA-12-10645012R
- Fuente de alimentación de +12 VCC
- Cables de puente
- IDE de Arduino
- API PA-12 Arduino
API PA-12
La API PA-12 se puede descargar aquí. Esta API contiene los siguientes archivos y carpetas:
- PA12.ino
- Contiene las estructuras de comando del PA-12 y funciones que transfieren y reciben datos hacia/desde el PA-12.
- Todas las funciones que se utilizan dentro de los códigos de muestra o que se implementarán en su código se almacenan en este archivo
- PA12.h
- El archivo de encabezado contiene el protocolo de comunicación y los archivos de encabezado de comunicación en serie.
- Contiene declaraciones de funciones y variables para todas las características y funcionalidades de PA12.
- setPosition, ServoID, presentSpeed, forceEnable
- Archivos de utilidad
- Códigos de muestra
- El código de muestra se puede utilizar para implementar fácilmente el control PA-12 en su propio sistema.
- Todos los códigos de muestra están programados para su uso con Arduino Leonardo ; sin embargo, las variables utilizadas para los pines de transmisión y recepción se pueden modificar para que sean compatibles con el microcontrolador/Arduino que ya tiene.
Para importar la biblioteca PA12
Seleccione 'Bosquejo' --> Incluir biblioteca --> Agregar biblioteca ZIP. Todos los archivos ubicados en la carpeta PA12 se importarán directamente a la biblioteca Arduino del actuador lineal. Esto le permitirá utilizar las funciones PA12 para controlar el actuador.
Figura 2: Importación de la biblioteca Arduino
Comandos disponibles para PA-12
A continuación se muestra una tabla de comandos. Para obtener más información sobre los comandos, revise PA12.ino para obtener información de codificación. Cubriremos los comandos básicos en este tutorial. Los tutoriales futuros incluirán funciones y técnicas de control más avanzadas.
Leer funciones
Las funciones ubicadas en la siguiente tabla son de solo lectura y devuelven un valor.
Función de lectura |
Variable |
Descripción |
---|---|---|
myServo.getModelNumber(ID_NUM) |
ID_NUM |
Número de modelo PA-12 |
miServo.Versión(ID_NUM) |
ID_NUM |
Número de versión del motor PA-12 |
myServo.CalStroke (ID_NUM, *Longitud*) |
ID_NUM, Longitud = Corto, Largo o Centro |
Comprobación de calibración de posición de carrera |
miServo.presentVolt((ID_NUM)/10) |
ID_NUM |
Verificación del voltaje de entrada |
myServo.presentTemperature(ID_NUM) |
ID_NUM |
Temperatura actual del motor. |
myServo.MaxTemperature(ID_NUM) |
ID_NUM |
Leer el límite máximo de temperatura |
miServo.posiciónpresente(ID_NUM) |
ID_NUM |
Posición actual del actuador |
miServo.movimiento(ID_NUM) |
ID_NUM |
Valor devuelto del estado del motor. 1 = en movimiento, 0 = detenido |
myServo.limitVolt(ID_NUM, *Más alto/Más bajo*) |
ID_NUM, nivel de alto voltaje = más alto o nivel de bajo voltaje = más bajo |
Lea la configuración de alto o bajo voltaje |
myServo.alarmLed(ID_NUM) |
ID_NUM |
Lee el estado del LED de alarma. 1 = ENCENDIDO, 0 = Apagado |
myServo.alarmShutdown(ID_NUM) |
ID_NUM |
Lee el estado del modo de apagado de alarma. |
myServo.StrokeLimit(ID_NUM, *Largo/Corto*) |
ID_NUM, límite de extensión = largo o límite de retracción = corto |
Lee los límites de carrera máximo y mínimo. |
miServo.ResoluciónFactor(ID_NUM) |
ID_NUM |
Lee el factor de resolución del servomotor. |
myServo.movingSpeed(ID_NUM) |
ID_NUM |
Lee el valor de la velocidad del servomotor. |
miServo.forceLimit(ID_NUM) |
ID_NUM |
Lee la fuerza máxima del servomotor (configuración volátil) |
miServo.maxForce(ID_NUM) |
ID_NUM |
Lee la fuerza máxima del servomotor (configuración no volátil) |
Funciones de escritura
Función de escritura |
Variable |
Descripción |
---|---|---|
myServo(&Serial, enable_pin, Nivel Tx) |
Número de puerto serie, pin de habilitación, pin de transmisión |
Configuración del puerto de comunicación |
myServo.begin(*Valor de configuración en baudios*) |
Valor de configuración en baudios (consulte la tabla) |
Velocidad de comunicación en baudios en serie |
miServo.ServoID(ID_NUM, ID_Sel) |
ID_NUM, ID_Sel |
Cambiar el valor de ID del servo |
myServo.ledOn(ID_NUM, *Valor LED RGB*) |
ID_NUM, valor LED RBB (consulte la tabla) |
Enciende un LED específico |
myServo.MaxTemperature(ID_NUM, Temperatura) |
ID_NUM, temperatura |
Escribe el límite máximo de temperatura. |
myServo.goalPosition(ID_NUM, *Valor de posición*) |
ID_NUM, valor de posición (consulte la tabla) |
Establecer una posición de trazo deseada |
myServo.limitVolt(ID_NUM, *Mayor/Bajo*, LimitVolt) |
ID_NUM, Valor superior = Valor más alto o Valor inferior = Más bajo, LimitVolt |
Establezca la configuración de voltaje alto o bajo |
myServo.alarmLed(ID_NUM, *Variable de alarma*) |
ID_NUM, bit de alarma |
Configuración del LED de alarma. Consulte la tabla para obtener más información. |
myServo.alarmShutdown(ID_NUM, *habilitar*) |
ID_NUM, Habilitar: 0 = desactivado, 1 = activado |
Configuración de parada de alarma del motor. Si se activa la alarma, el motor se puede apagar. |
myServo.StrokeLimit(ID_NUM, *Largo/Corto*, *Valor de posición*) |
ID_NUM, límite de extensión = largo o límite de retracción = corto, valor de posición (consulte la tabla) |
Escribe los límites de carrera máximo y mínimo. |
myServo.ResolutionFactor(ID_NUM, *Factor de resolución*) |
ID_NUM, factor de resolución (consulte la tabla) |
Establece el valor de resolución para el posicionamiento de la carrera del actuador. |
myServo.movingSpeed(ID_NUM, *Valor de velocidad de movimiento*) |
ID_NUM, valor de velocidad de movimiento (consulte la tabla) |
Establece la velocidad del servomotor. |
myServo.forceLimit(ID_NUM, *Valor de fuerza*) |
ID_NUM, valor de fuerza (consulte la tabla) |
Establece la fuerza máxima del servomotor (configuración volátil) |
myServo.maxForce(ID_NUM, *Valor de fuerza*) |
ID_NUM, valor de fuerza (consulte la tabla) |
Establece la fuerza máxima del servomotor (configuración no volátil) |
Configuraciones variables
Las siguientes tablas contienen el valor de la variable que se ingresará en las funciones.
Velocidad de baudios
Valor de variable en baudios |
Velocidad de baudios |
dieciséis |
115200 |
32 |
57600 |
64 |
19200 |
128 |
9600 |
Valor LED
Valor LED RGB |
ROJO |
VERDE |
AZUL |
Identificación del servo
Valor de identificación del servo |
0 |
1 - 253 |
254 |
Para la variable ID_NUM de servomotor: hay un total de 255 opciones disponibles. El valor de 0 es la configuración predeterminada. Puede seleccionar un valor del 1 al 253 para una identificación individual. El valor de 254 está reservado para una ID de transmisión, por lo que activa todos los PA-12 ubicados dentro de una red.
Configuración de alarma
Configuración de alarma |
Valor de configuración de alarma |
Error de voltaje de entrada |
0 |
Error de límite de carrera |
1 |
Error de rango |
3 |
Error de suma de comprobación |
4 |
Error de sobrecarga |
5 |
Error de instrucción |
6 |
*Reservado* |
7 |
Factor de resolución de accidente cerebrovascular
Valor del factor de resolución |
Resolución |
1 |
4096 |
2 |
2048 |
3 |
1024 |
4 |
512 |
Cuanto mayor sea el valor de resolución, mayor será la precisión posicional.
Velocidad de movimiento
Valor de velocidad de movimiento |
Ajuste de velocidad |
0 |
Máxima velocidad |
1-1023 |
1 = Más bajo, 1023 = Más alto |
Valor de fuerza
Valor de fuerza |
Ajuste de fuerza |
0 - 1023 |
1 = Más bajo, 1023 = Más alto |
Valor de posición
Valor de posición |
Posición |
0 - 4095 |
0 = Totalmente retraído, 4095 = Totalmente extendido |
Guía de cableado
El PA-12 está conectado al módulo RS-485, que luego se conecta directamente al Arduino. Esta versión del PA-12 requiere una fuente de alimentación de 12 VCC para la alimentación del servomotor.
RS-485 Lado A | arduino |
DI | Pin 1 |
Delaware | Pin 2 |
RE | Pin 2 |
R0 | Marca 0 |
El pin 0 del Arduino es la recepción TTL. El pin 1 del Arduino Leonardo es la transmisión TTL. El pin 2 dentro de los códigos de muestra está configurado de manera que se utilice como pin de habilitación.
Conector PA-12 de 4 pines |
Valor |
Negro |
Tierra |
Rojo |
Servomotor + VCC |
Blanco |
Pin de comunicación A |
Amarillo |
Pin de comunicación B |
Figura 3- Conexiones del puerto PA-12
RS-485 Lado B |
Conexión |
VCC 1 |
+5 VCC (Arduino) |
A |
Cable blanco PA-12 |
B |
Cable amarillo PA-12 |
Tierra 2 |
Fuente de alimentación GND y PA-12 GND |
1 El módulo RS-485 recibe energía de la salida +5VDC del Arduino.
2 La tierra se comparte entre el PA-12, la fuente de alimentación y el módulo RS-485.
Código de muestra
En este tutorial, mostraremos tres códigos de muestra que brindan información preliminar sobre algunas de las características del PA-12 y cómo se pueden implementar las funciones de escritura y lectura en su propio código.
- PA12_PosiciónPresente
- PA12_Límite de carrera
- PA12_ForceLimit
1. Posición actual
En este código, el usuario ingresará el valor de posición deseado entre 0 y 4095 dentro del monitor serie. Una vez ingresado, el comando se envía al PA-12, que luego activará el servomotor para mover la varilla a la posición deseada. Mientras el motor está en movimiento, se mostrará la posición actual hasta alcanzar la posición final.
2. Límite de carrera
Dentro de este código, el PA-12 realiza un ciclo cada 1000 ms dentro de los parámetros de límite de extensión y retracción ingresados. Las designaciones Larga y Corta ubicadas en la función de límite de carrera
3. Límite de fuerza
El código de límite de fuerza que se muestra aquí es la versión volátil. Esto significa que cada vez que el PA-12 pierde energía, el valor límite de fuerza se restablecerá a su configuración predeterminada. El usuario ingresará el valor límite de fuerza desde el monitor en serie. En este caso, el valor de fuerza máximo de 0 significa un valor de fuerza bajo y 1023 significa un valor de fuerza máximo.
Tutoriales futuros
En futuros tutoriales cubriremos:
- Implementación de funciones avanzadas
- Control PA-12 versión TTL y PWM
- Técnicas de resolución de problemas
- Métodos de control externo
El PA-12 es un actuador versátil y de alta precisión que permite al usuario final lograr un control directo sobre su aplicación. Con la implementación correcta, el PA-12 es capaz de cumplir exactamente con los requisitos de su sistema.
Para obtener información adicional, envíenos un correo electrónico a sales@progressiveautomations.com o llame a nuestro equipo al 1-800-676-6123.