Blog posts How an Arduino or Raspberry Pi Communicates with our Hall effect actuator: the PA-04-HS

Cómo se comunica un Arduino o Raspberry Pi con nuestro actuador de efecto Hall: el PA-04-HS

Guest Writer
Guest Writer
PA Engineer

¡Bienvenido a otro blog técnico de Progressive Automations! Hoy explicaremos cómo un Arduino puede comunicarse con nuestro PA-04-HS.

Un sensor de efecto Hall es un componente electrónico que permite un control preciso de un actuador lineal. Suele estar ubicado dentro de la caja de engranajes junto a un disco magnético. A medida que el actuador lineal se mueve, el disco magnético gira, creando un campo magnético que atraviesa el sensor de efecto Hall. Esto genera un pulso de voltaje que puede contarse para determinar la posición, la velocidad o la dirección del actuador lineal. Sin embargo, para aprovechar estas señales es necesario usar un microcontrolador, como un Arduino o una Raspberry Pi. En este artículo profundizaremos en el uso de un actuador con una Raspberry Pi y en cómo controlar un actuador lineal con Arduino. Como se mencionó, ambos microcontroladores se mostrarán con un Actuador lineal con sensor de efecto Hall PA-04-HS.

¡El PA-04-HS incluye retroalimentación de efecto Hall integrada!

Cálculos de posición, velocidad y dirección

Antes de entrar en detalles, lo primero es entender cómo se utilizan las señales del sensor de efecto Hall para calcular la posición, la velocidad y la dirección del actuador lineal. En el PA-04-HS, el sensor de efecto Hall está diseñado para producir dos señales en uno de dos estados binarios: encendido o apagado. Estas dos señales suben y bajan a medida que gira el motor eléctrico, con una diferencia de fase de 90 grados entre ellas. No te preocupes si no sabes cómo implementar esto en código que pueda leer un microcontrolador; más adelante en este artículo te lo mostraremos.

Posición

La posición del actuador lineal requiere algunos cálculos a partir de las señales de efecto Hall y de ciertas mediciones del propio actuador. La ecuación para la posición de la varilla del actuador necesita la longitud de carrera del actuador y el número total de flancos detectados desde totalmente retraído hasta totalmente extendido. Con estas medidas, puede usarse la siguiente ecuación:

Ecuación 1

 

En la ecuación anterior, los flancos detectados desde la posición totalmente retraída comienzan en cero y aumentan en uno cuando se detecta un flanco en el sentido de avance y disminuyen en uno cuando se detecta en el sentido inverso.

 

Velocidad

La velocidad de un actuador puede medirse utilizando las señales de efecto Hall implementando un temporizador en el programa. Este temporizador se empleará para medir el tiempo entre flancos detectados. Además, se requiere el valor calculado de la variación de carrera por flanco detectado. Con estos valores, puede usarse la siguiente ecuación:

Ecuación 2

 

Dirección

La dirección del movimiento de un actuador puede determinarse observando el estado actual de las dos señales (señales A y B) y comparándolo con el último estado de ambas. Esto se debe a que, según la dirección del movimiento del actuador, las dos señales intercambian cuál adelanta y cuál retrasa.

Esquema del estado de las dos señales (señal A y B)

 

Tabla del estado de las dos señales (señal A y B)

 

¿Qué es mejor, un microcontrolador Arduino o Raspberry Pi?

No se trata de cuál es mejor en general, sino de cuál se adapta mejor a tu aplicación. Conviene elegir un Arduino si la tarea principal de tu aplicación es leer los datos del sensor de efecto Hall y ejecutar un conjunto específico de instrucciones.

Por otro lado, la Raspberry Pi será más práctica para resolver tareas que normalmente realizaría un ordenador personal. Además, la Raspberry Pi simplifica la gestión del flujo de trabajo en diversos escenarios, como conectarse a Internet o controlar un actuador lineal desde un dispositivo móvil.

También puede ser conveniente usar ambos microcontroladores para resolver tareas distintas. La Raspberry Pi puede acceder al código y ajustar varios parámetros que luego se envían a un Arduino para controlar el actuador lineal en función de la información que recoge.

Entremos en los detalles y veamos cómo controlar un actuador lineal con Arduino.

 

Arduino con actuadores lineales

Arduino Uno Rev3

 

De nuevo, según tu aplicación, puedes elegir entre usar un método de sondeo (polling) o una interrupción con un microcontrolador al trabajar con señales digitales. El sondeo es un método programado en el que un microcontrolador verifica periódicamente el estado de una entrada para ver si ha habido un cambio. Las interrupciones son un mecanismo de hardware que desvía inmediatamente la ejecución del programa del microcontrolador cuando cambia el estado de una entrada.

Para fines de demostración, optaremos por el método de interrupciones para conocer el momento exacto en que una señal cambia de estado. En un microcontrolador Arduino, se utiliza una interrupción creando una Rutina de Servicio de Interrupción (ISP).

Esto es lo que necesitarás:

 

Cableado de Arduino y componentes del shield

Los sensores de efecto Hall tienen 4 cables: 5V, GND y 2 cables de señal. Cada cable de señal emite pulsos a medida que gira el motor. También hay dos cables del actuador para conectar al MegaMoto. Solo usaremos una de las señales de efecto Hall.

Conecta el actuador lineal al Arduino y al MegaMoto de la siguiente manera:

  • Cable rojo del sensor al pin de 5V del Arduino.
  • Cable negro del sensor al pin GND del Arduino.
  • Cable amarillo/naranja al pin 2 o 3 del Arduino (si usas un Arduino diferente, asegúrate de que los pines admitan interrupciones).
  • Cable rojo del actuador a MOTA del MegaMoto.
  • Cable negro del actuador a MOTB del MegaMoto.

Una vez que los motores estén conectados correctamente a las placas, conecta la fuente de alimentación de la siguiente manera:

  • Conecta 12V a BAT+.
  • Conecta GND a BAT-.
  • Conecta 12V a Vin en el Arduino.
  • Cablea dos botones a los pines 7 y 8 del Arduino y conéctalos a GND.

Existen 4 tipos de disparo para la interrupción: Rising, Falling, High y Low. Al cambiar el tipo de disparo, puedes ajustar cuándo ocurre la interrupción. Rising es cuando el pin pasa de bajo a alto; Falling, cuando pasa de alto a bajo; Low, cuando el pin está en bajo; y High, cuando el pin está en alto.

Para ver el código completo de Arduino, visita nuestra guía aquí: Código de Arduino para actuador lineal con efecto Hall

El código moverá el actuador hacia adelante o hacia atrás una cantidad fijada cuando presiones los botones en el pin 7 o 8 (activo en LOW). También incluye una rutina de referencia (homing). Esto es importante porque, si haces funcionar el motor hacia adelante y hacia atrás durante mucho tiempo, puedes perder algún conteo y dejar de saber con precisión dónde estás. La rutina de referencia lleva el actuador lineal a una posición conocida para que el contador pueda reiniciarse.

 

Actuador con Raspberry Pi

Entonces, ¿cómo se conecta un actuador a una Raspberry Pi 2, 4 o un modelo más reciente? Controlar un actuador lineal con una Raspberry Pi es sencillo y puede hacerse a través de Internet, permitiendo el control inalámbrico. Sigue los pasos de la siguiente guía para ver exactamente cómo: Control de actuador lineal con Raspberry Pi.

La Raspberry Pi 4 se utiliza para ejecutar el software del servidor y recibir comandos para el control del actuador lineal. Sin embargo, esta guía no utiliza un sensor de efecto Hall. Para hacerlo, puede conectarse una placa Arduino al actuador lineal y a la Raspberry Pi para enviar/recibir datos de forma inalámbrica. Aunque la Raspberry Pi también puede usarse directamente para leer datos del sensor, al igual que el Arduino, puede ser excesivo si solo estás controlando unos pocos actuadores lineales.

 

Control de múltiples actuadores lineales

Actuador con sensor de efecto Hall IP66 Modelo: PA-04-HS

 

Si necesitas controlar varios actuadores lineales con una Raspberry Pi o un Arduino, necesitarás algunos componentes adicionales y habrá que ajustar el código. Dos o más actuadores lineales pueden sincronizarse siguiendo los conteos del sensor de efecto Hall y, si los conteos de los actuadores se separan demasiado, cada actuador reducirá la velocidad para igualar las posiciones.

Consulta el conjunto completo de instrucciones aquí: Controla múltiples actuadores lineales con un microcontrolador

Como alternativa, si la sincronización no forma parte de tu aplicación, simplemente usa un Arduino para uno o dos actuadores, según el número de pines de interrupción disponibles. Para controlar más actuadores, puedes usar más placas Arduino u obtener un shield para Arduino con más pines de interrupción.

¡Explora nuestra gama de microcontroladores para un control total del actuador!

Conclusión

Si te animas, hay métodos adicionales que puedes probar con Arduino y actuadores lineales para controlar el movimiento, como usar un práctico código PID, que puedes ver aquí: Control PID para actuador lineal. Un sensor de efecto Hall dentro de un actuador lineal, como el PA-04-HS, ofrece un nivel adicional de control que puede configurarse fácilmente con la ayuda de un Arduino o una Raspberry Pi. Tanto si tu aplicación solo requiere leer datos del sensor como si quieres llevar tu actuador lineal al siguiente nivel poniéndolo en línea, un sensor de efecto Hall, combinado con un microcontrolador de tu preferencia, es el camino a seguir.

Si tienes alguna consulta sobre el contenido de este artículo, o simplemente deseas comentar posibles soluciones de producto, por favor contáctanos y estaremos encantados de ayudarte!