Getting Started with Arduino and PA-12

Primeros pasos con Arduino y PA-12

Anna Sapiga
Anna Sapiga
PA Engineer

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.

Módulo Arduino

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

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.

Biblioteca Arduino

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.

Servo motor

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

Conexiones de Puerto - PA-12

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.

  1. PA12_PosiciónPresente
  2. PA12_Límite de carrera
  3. 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.

Código Arduino

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

Código Arduino

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.

Código Arduino

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.