Arduino en la industria

En más de una ocasión me han preguntado, con mayor o menor delicadeza, si, además de para jugar y hacerse el artista, el Arduino podía servir para algo serio, como ser una aplicación industrial, algo profesional, etc., algo “de verdá”. Naturalmente, la respuesta es afirmativa, pero antes que entrar en la justificación teórica de tal aserto, me gustaría mostrarles un hermoso proyecto que me tocó desarrollar, con una aplicación concreta en la industria lanera.

Mi socio trabaja en una lanera en la ciudad de Florida, en la que venían teniendo problemas con un regularímetro. El regularímetro –me enteré oportunamente– es un instrumento de laboratorio usado en la industria textil, dentro de lo que son los controles de calidad de hilos y fibras, más concretamente, para analizar las variaciones de masa de éstos, de acuerdo a unos índices de regularidad estándar. Es un aparato bastante vital, y obviamente muy caro.

El equipo que tenían allí les estaba dando algunos dolores de cabeza, y entonces los técnicos del establecimiento tuvieron una interesante idea: “hackear” el aparato, aprovechar el sistema de transporte y el sensor, y sustituir únicamente la “computadora” que procesa los datos. Veámoslo más claramente en el siguiente esquema:

Esquema básico de la aplicación, en su forma más simple.

Como vemos, hay un sistema de transporte movido por un motor, que se encarga de hacer pasar el hilo –en nuestro caso, una mecha de lana– por adentro de un sensor capacitivo, y una computadora que recoge los datos, los procesa y muestra los resultados en una pantalla. Algo conceptualmente sencillo, pero que, tratándose de un equipo aplicado a la industria, debe cumplir ciertas exigencias y garantizar un funcionamiento “a prueba de balas”. Tiene que ser sólido, no puede fallar, no puede mentir.

Primera versión

En la primera versión, el sistema de captura y procesamiento era independiente del sistema de transporte, exactamente como aparece en la figura. Dentro del Arduino se ejecuta un programa muy simple, que muestrea la entrada analógica a una frecuencia de 83,3Hz y envía cada lectura –de 10 bits– a través de Serial/USB hacia una PC. En la PC, una aplicación hecha en Java toma esos valores y los guarda en la memoria, para luego calcular con ellos el promedio, el coeficiente de variación (C.V.) y el valor “Uster” (U). Este último no es más que otra manera de medir la irregularidad, muy usada en la industria textil.

Fragmento del instructivo que recibí para calcular el C.V.

Dentro de la aplicación Java, una sub-ventana de Processing muestra la gráfica de masa en función de distancia, y permite interactuar con ella (achicarla, agrandarla, inspeccionar el valor de cada muestra, cambiar el rango de muestras, etc.). Finalmente, gracias a las bibliotecas de Processing, es posible también exportar la ventana en formato gráfico, o exportar los valores en un archivo binario o de texto.

El programa implementa, además, dos rutinas de calibración que este sistema necesita: “ajuste del 0” que se efectúa midiendo la entrada con la pinza vacía (la “pinza” es el sensor capacitivo) e “ingresar peso real” que permite ajustar los valores mostrados en la gráfica a la realidad (el coeficiente de variación y el valor “U” son, de cualquier manera, independientes del peso absoluto de la mecha).

Captura de la ventana principal de la aplicación Java

Algunos detalles técnicos

  • El sistema de transporte y el sensor capacitivo son los originales, de la máquina Uster Tester 3. Gracias a esto nos ahorramos buena parte del trabajo, justamente la parte delicada del mismo.
  • La frecuencia de muestreo de 83,3Hz está en sincronía con la velocidad del motor, de modo que el sistema efectúa, en teoría, exactamente 1 muestra por centímetro de mecha. El total de muestras que se procesan es 12.500, o sea 125 metros de mecha.
  • Entre la pinza Uster y el Arduino, existe un preamplificador hecho con amplificadores operacionales, que acondiciona la señal del sensor a la escala de 0-5V. Su diseño estuvo íntegramente a cargo de los técnicos de la lanera.
  • Asimismo, es de suma importancia el filtro pasa-bajo que actúa en el dominio analógico, cortando más o menos a 40Hz, para evitar que se produzca aliasing en el muestreo. Su diseño también estuvo a cargo de la gente de la lanera, concretamente su técnico, Gabriel.
  • Para desarrollar la aplicación, usé una técnica que ya había empleado en otros casos: creé un interfaz gráfico con NetBeans y luego exporté el código y seguí programando en Eclipse. La parte de la gráfica la hice con Processing, usándolo como una clase más de Java, aprovechando la enorme facilidad que brinda este entorno (originalmente pensado para artistas).

Aspecto del regularímetro Uster Tester 3

Diagrama de masa del UT3

Segunda versión

La primera versión estuvo pronta en marzo de 2012. Me llevó poco tiempo desarrollar mi parte, que era, por demás, muy sencilla. Durante los siguientes 8 meses, el personal de la lanera lo fue probando, fueron perfeccionando la electrónica analógica y armando una prolija carcasa para albergar el sistema, a la vez que seguían intentando, sin mucho éxito, arreglar la máquina original. Poco a poco, este regularímetro “hackeado” fue sustituyendo al original en los ensayos de laboratorio, hasta finalmente reemplazarlo por completo. Una vez alcanzado este punto, la empresa decidió continuar con la segunda etapa del desarrollo.

Esquema de la segunda versión, donde el Arduino cumple un rol más activo.

Para esta nueva versión, los cambios fueron los siguientes:

  • El arranque y detención del motor se controlan desde el software, mediante unos relés conectados al Arduino.
  • El muestreo está gobernado por un encoder acoplado al sistema de transporte; de esta manera se logra obtener exactamente 1 muestra por centímetro, con independencia de la velocidad concreta del motor, la cual ahora puede fluctuar libremente sin afectar al muestreo.
  • Se puede configurar la parada automática del motor al cabo de cierta cantidad de muestras (12.500 por defecto).
  • Diversas mejoras en el programa, más opciones a nivel del interfaz usuario, mejor gestión de la comunicación serial –con la biblioteca serialcomm.jar–, etc.
  • Y lo más interesante de todo: el espectrograma.
Primeras pruebas con la versión 2.

El espectrograma

El espectrograma fue la parte más interesante de todo el proyecto, ya que me permitió poner en práctica algunas nociones elementales de DSP, un tema que me apasiona, no obstante las grandes lagunas teóricas que me limitan en su abordaje.

El espectrograma es otra de las funciones del Uster Tester; se trata de un gráfico que muestra las variaciones de masa distribuidas según su periodicidad, lo que permite diagnosticar fallas mecánicas en el proceso de la lana. Por ejemplo, un cilindro gastado en la maquinaria, puede hacer que aparezca en la mecha una irregularidad periódica, cuyo período sea justamente la circunferencia de ese cilindro, etc.

Debido a esta relación entre el período de la variación y su posible causa mecánica, es que en el espectrograma del regularímetro Uster, el eje de las abscisas está en unidades de distancia, y no de frecuencia. Vale decir que se trata de una escala de períodos, o sea de 1/f. De hecho, para complicar un poquito más las cosas, es una escala logarítmica de períodos. Como ya veremos, esto vino a generar una pequeña dificultad, debido a que la resolución en frecuencia que brinda la herramienta matemática elegida –la FFT–, resulta ser distinta para distintas zonas de esta escala.

Espectrograma del UT3

Para resolver el espectrograma acudimos, primero que nada, a la Transformada de Fourier Discreta, calculada con el algoritmo FFT, de lo cual se encarga la excelente biblioteca libre JTransforms. Antes de hacer la FFT directa, aplicamos una ventana Hamming al conjunto de muestras, para reducir los artificios inherentes al enventanado. Luego de hacer la FFT, escalamos y convertimos los valores a su representación polar (de la cual nos interesa únicamente la magnitud). Utilizamos la FFT real, lo más simple en materia de FFT.

La parte complicada del proceso, como dije antes, fue convertir la escala lineal de frecuencias que devuelve la FFT, en una escala logarítmica de períodos igual a la del espectrograma Uster, con 17 barras por década. La clave es, ante todo, interpretar correctamente lo que la FFT nos está entregando. Nótese, por ejemplo, que en nuestra aplicación el llamado dominio del tiempo es, en realidad, la distancia. Los períodos son distancias, y las frecuencias se miden en ciclos/cm en lugar de ciclos/segundo (Hz). A la izquierda de la gráfica se encuentran las distancias cortas, es decir las frecuencias altas, cuyo extremo es la mitad de la frecuencia de muestreo (frecuencia Nyquist), o sea 0,5 ciclos/cm o 2 cm de período. En el extremo derecho, sin contar el componente DC, cuyo período es infinito, la frecuencia más baja que nos devuelve la FFT es Fs/N, o sea, la frecuencia de muestreo dividida por la cantidad de muestras procesadas. El período correspondiente, en nuestra escala, es N cm, es decir, la distancia de mecha total introducida en el algoritmo.

Una vez resuelta la matemática que permite mapear cada barra del espectrograma (o “chimenea”, como se las conoce en la jerga especializada) a las correspondientes bandas de la FFT –lo que a mí me llevó varios días aunque en realidad se trataba de algo sencillo– tuve que enfrentarme al problema de que cada una de estas barras recibe información de un número distinto de bandas de la FFT. En la zona izquierda (altas frecuencias, períodos cortos) la resolución de la FFT es mayor que la de la gráfica, mientras que en la parte derecha ocurre exactamente lo contrario.

Espectrograma de nuestra aplicación. El análisis corresponde a una señal de prueba generada con el Arduino, formada por ruido blanco, ruido 1/f y cuatro sinusoides conocidas.

Be Sociable, Share!

14 Comentarios »

  1. avatar Hector Fuentes Dice:

    Felicidades por el éxito de tu proyecto, nos das ánimos a los que nos gusta usar los arduinos para todo, es una maravillosa plataforma.
    Éxito.

  2. avatar pabloxid Dice:

    Muchas gracias.

  3. avatar Manuel Dice:

    Te felicito muy bueno. Me encanta todos estos temas.

  4. avatar pabloxid Dice:

    Muchas gracias, Manuel.

  5. avatar Opiron Dice:

    Este proyecto es maravilloso. Muchas felicidades!

  6. avatar Albert Dice:

    ei, fantastico el proyecto. Prueba de mirar un Ardbox Relay, de industrialshields. ya lleva el modulo de relé incorporado y no tienes que añadir ninguno extra. A parte hay mas equipos que pueden ser interesantes. No se si para tu proyecto actual o otro.

  7. avatar Hamter Dice:

    Buscando informacion, sobre si era posible aplicar el Arduino a otra aplicacion, mas que la de prender lucesitas y jugar, me encuentro con este muy interesante proyecto, lo que me entusiasma y me hace re-pensar, en meterme de lleno en su mundo. Muy bueno que hayas compartido esta experiencia, es un punto de partida. Saludos.

  8. avatar pabloxid Dice:

    Gracias por tu comentario. Definitivamente el Arduino sirve para mucho más que prender lucesitas y jugar, aunque su principal uso sigue siendo ése. Es, de última, una herramienta maravillosa para aprender informática y electrónica. Te cuento que tengo otros proyectos aplicados a la industria con Arduino, que han salido bien, pero lamentablemente hace años que ya no me da el tiempo para documentar ni publicar nada. Date una vuelta por http://www.mvdrobotics.com, ahí estamos laburando, dando cursos y desarrollando proyectos.

    Saludos,
    P.G.

  9. avatar Kare Dice:

    Hola, Muy interesante el post. Estoy trabajando con una aplicación industrial muy sencilla y se me ocurrió el uso de un arduino, mi duda es si el arduino puede trabajar las 24 horas del día, los 365 días del año sin fallar ademas de ser instalada en ambientes no controlados…
    Espero muy atenta su respuesta…

  10. avatar pabloxid Dice:

    Hola.
    El Arduino no está pensado para ese tipo de aplicación, pero en realidad, si se toman las precauciones del caso, se puede usar perfectamente.
    De última no es más que un circuito electrónico, y como tal no es nada malo. El microcontrolador en sí soporta amplios márgenes de temperatura, por ejemplo, y el resto de los componentes seguramente también. El PCB es mejor que cualquier PCB que puedas fabricar acá en tu vida.
    Ahora bien, el diseño en sí no tiene ninguna protección contra interferencias, ruidos, y todo eso que abunda en una fábrica, pero es cuestión de dotarlo de tales cosas.
    Si bien no tengo una gran experiencia en industria, precisamente dentro de un rato voy a viajar a un aserradero donde hicieron una instalación con Arduino, y todo esto que te estoy comentando es a su vez lo que hablé con el ingeniero que estuvo a cargo de ese proyecto.

    Saludos.

  11. avatar julio Dice:

    felicitaciones, realmente interesante la aplicación en la industria. Estimula para buscar otras alternativas industriales

  12. avatar Albert Dice:

    Hola, utilizar arduino las 24h del dia es 100% fiable!! Lo tengo controlado con un cliente mio que tiene 4 arduinos montados con un M-duino PLC en una planta industrial de fabricación de piezas de plastico. Y desde el mes de septiembre del 2014 tienen estos equipos trabajando sin descanso para monitorizar toda la planta y enviar datos a una base de datos para el analisis de toda la planta. 
    La semana pasada vi la aplicación por primera vez y esta fabrica de plasticos lo tiene todo muy controlado. Es muy interesante esto de monitorizar toda la planta!!! 🙂
    Saludos.

  13. avatar pabloxid Dice:

    Gracias Albert por compartir tu experiencia. Cuando tenga tiempo voy a publicar también el otro trabajo que hice en un aserradero, que hasta el momento también es exitoso. Saludos!

  14. avatar Curso “Sistemas Embebidos con Arduino” | Palmera blog Dice:

    […] Java, front-end del regularímetro (instrumento que mide la regularidad de la lana) que desarrollamos para Lanera Piedra Alta en […]

RSS alimentación de los comentarios de esta entrada. TrackBack URL

Dejar un comentario