Introducción: En la actualidad la automatización y el control es una de las cosas más fundamentales e importantes en la industria y en cualquier proceso, la tecnología a tenido gran avance que es una de las partes fundamentales que permite lograr esto del control y la automatización. En esta ocasión elegimos el pequeño proyecto del control automático del llenado de un tanque el cual en la industria siempre está presente, para lograr esto del control hicimos uso del microcontrolador Atmel AVR y puertos de entrada/salida llamado Arduino, en nuestro caso hicimos uso del Arduino 2560 Mega, que es una herramienta que facilita el uso de la electrónica para proyectos. Esta tarjeta Arduino tiene diferentes puertos de comunicación de salida y entrada, entre estos puertos tenemos analógicos, digitales, PWM.
Desarrollo En esta parte, analizamos los elementos y dispositivos que
utilizamos
principalmente, los cuales fueron:
Arduino MEGA 2560 R3
Sensor de Presión
Motor(Bomba Para Inyectar El Liquido Agua Al Tanque)
Mangueras, cables para conexión
Fuente de 12 V
Protoboard, Driver Para Controlar El Motor (Bomba)
Laptop
Estructura que soporta a los Tanques De Llenado y Alimentacion.
Primero lo que hicimos fue cargar un programa al Arduino el cual permite que el Programa LabVIEW lo reconozca y podamos leer, capturar, manipular y escribir datos a las salidas, el programa se llama LIFA_BASE. Como el sensor censara la presión que se tenga en el tanque, tendremos una señal de CD la cual variara en forma que varié la presión del tanque a consecuencia del nivel del líquido en este caso agua, entonces con esto sabemos que leeremos una señal analógica, este es un dato importante, ubicamos los puertos analógicos y ubicamos uno de ellos en nuestro caso es el A0. Después, como ya tenemos la variable que estaremos monitoreando la señal la cual es la referencia para que pueda actuar el control sobre el tanque. Mostrando El Diagrama de Bloques Completo y El Diagrama Grafico, El Cual Permite El Llenado Del Tanque:
La señal analógica que entra al Arduino por el puerto Analógico A0 y que es señal del sensor de presión, tiene un rango de 0.9 a 1.5Vcd. Esta señal la lee el bloque READ ARDUINO ANALOGIC es la encargada de leerla, entonces enseguida pasa por una bloque Multiply que es el siguiente:
El cual le permite obtener una ganancia con la señal original, ‘x’ es la señal que entra y ‘y’ es la ganancia que tendrá esta.
Enseguida esta señal ya con la ganancia, en nuestro caso fue de 550, a esta misma se le conecta unos medidores los cuales nos indican en nivel del liquido tanto en forma numérica como gráfica y son los siguientes:
Algo importante en estos, es que al decir que son medidores obtienen datos y viendo los bloques los bordes son delgados en comparación con los de control que son más gruesos, también el tipo de dato, los azules son enteros y los naranjas DBL doublé de doble precisión. Enseguida colocamos lo que son los indicadores, los cuales nos muestran si el tanque esta en nivel: critico, llenando o lleno, el cual la estructura es la siguiente:
En donde vemos diferentes bloques los cuales, en una forma clara son condiciones, explicando los bloques:
El cual Tiene un Tipo De dato Boleano 0 o FALSE cuando ‘x’ es menor a y, siendo
estas las que entran al bloque, y es TRUE o 1, cuando ‘y’ es menor a ‘x’. Enseguida tenemos otro bloquecito que es el siguiente:
Este bloque Select consiste de una condición ternaria s? t: f, ejecutando s, si es verdadero toma el valor de t que en este proyecto es el Tipo Boleano TRUE, y cuando s es Falso toma el valor de f siendo aquí el FALSE, s tiene los estados 0 FALSE y 1 TRUE dados por la ejecución del bloque anterior. Enseguida este Valor de 0 o 1 hace efecto en un indicador decirlo así un led Boleano, el cual enciende cuando su entrada es 1 y está apagado cuando es 0 y es el siguiente:
Otro bloque importante es el siguiente:
El cual a diferente de los anteriores este trabaja en un rango determinado que son upper limit y lower limit los extremos de este rango, y si x esta dentro de esta rango en ? se tendrá 1 o TRUE y si esta fuera el rango se tendrá 0 o FALSE. Si en un cierto rango o nivel de liquido se requiere hacer una acción la cual nosotros necesitamos la acción de encender un motor utilizamos una estructura la cual es la siguiente:
Este bloque es una estructura de casos, la cual es TRUE y FALSE uno cada caso, si en la entrada tenemos TRUE se ejecuta lo que hay dentro de este caso, la cual en este proyecto consiste en generar una señal PWM que podemos manipular desde 0 a 255 de valor para manipular la velocidad del motor, cuando es FALSE en la entrada de la estructura se ejecuta lo que hay dentro del FALSE que nosotros colocamos 0 en PWM o sea esta que la salida será de 0, en TRUE coloque un control el cual puedo mover su valor en tiempo de la ejecución, este valor controla la velocidad del motor o bomba que llenar el tanque, cuando este en 255 estara a toda velocidad y en 0 estara apagado, asi en niveles intermedios la velocidad será mediana. En si el control es el ciclo de trabajo del motor que cuando esta en 255 esta al 100% y 0 a 0%. En si la función de este pequeño proyecto es el siguiente: Tenemos un sensor que censa el nivel del Tanque , la salida del sensor es una señal analógica que va de 0.9 a 1.5 Vcd, claro que el sensor es alimentado con 5 Volts, enseguida el Arduino la lee como una señal analógica en el Puerto A0, y el programa LabVIEW procesa la información, el cual el proceso consiste en el programa que hicimos, esta señal entra y pasa por un bloque para tener una ganancia de 550, enseguida hay unos medidores que leen esta señal y graduados los medidores de 0 -1750ml de su escala completa determina en qué nivel estemos, estos medidores se clasifican por tres niveles, que son nivel crítico que va de 0 a 500 ml, enseguida nivel llenando que tiene un rango de 520 a 1590 ml y el indicador l leno que se activa cuando el nivel es mayor a 1600 y como limite el tanque lleno que se llena con 1750 ml aproximadamente. Los anteriores solo nos indican en el nivel que este el Tanque, para llenarlo coloque un bloque el cual si el nivel está dentro del rango que tiene este bloque condicional genera una Dato Boleano siendo un TRUE y cuando esta fuera del rango es FALSE o 0, este bloque está conectado a una estructura condicional de casos, para este proyecto son 2 casos los que incluí, que son TRUE y FALSE, cuando el bloque condicional genera una TRUE se va al caso TRUE y ejecuta lo que está dentro de él, el cual es un control que tiene como fin el controlar la salida PWM este control tiene un rango graduado de 0 a 255, esto quiere decir
que cuando estemos en el caso TRUE en la salida PWM podemos controlar de 0 a 255 que se refiere al ciclo de trabajo del motor y esta salida es la que alimenta al motor entonces controlaremos la velocidad siendo 255 la máxima y 0 la mínima velocidad que sería apagado cuando este en 0 de la salida PWM, esta condición termina cuando el tanque se llena y pasaría al FALSE. Cuando en el bloque condicional se tiene un 0 o FALSE, ahora se ejecuta el case FALSE que en esta parte tenemos que la salida del PWM es 0 que tenemos que el motor este apagado. Lo anterior es la parte más importante del programa ya que es el objetivo del mismo. También algo que no debe faltar es la estructura de las veces que se ejecutara este programa, y las componentes y bloques del Arduino, utilizamos un ciclo While Loop que se repite n veces las cuales dependen del recurso de la computadora, aunque podemos poner un bloquecito que podemos controlar las veces que se repite el programa, además este ciclo While Loop tiene un control llamado STOP para pararlo cuando querramos. En la siguiente Figura, están las componentes que utiliza el programa y hablare un poco de cada una de ellas:
Siempre debemos colocar el INIT y el CLOSE para cerrar la conexión en el Arduino, el Arduino WRITE escribe una señal PWM y para utilizar este bloque necesitamos el bloque I/O en donde coloque 2 controles que son el pin que utilizare para esta señal y que es señal de salida Output ya que puede ser también de entrada, vemos aquí el ciclo While Loop que lo controla el STOP que antes mencione, también en el INIT coloque 2 controles que son el VISA que el cual utilizaremos para indicar el
puerto que utiliza el Arduino y en el Board Type, indicaremos el tipo de Arduino que estemos utilizando. En esta última parte se muestra el panel frontal del programa que es el siguiente:
En donde vemos que la parte izquierda tenemos la etapa de comunicación con el Arduino, tenemos el VISA que en nuestro caso utiliza el puerto COM12, el Board Type, el cual indica el tipo de Arduino que estemos utilizando el cual es el MEGA, enseguida tenemos Analogic Input Pin el cual es una entrada Analógica que lee del Puerto 0 o físicamente es el A0 que es el bloque de Read Analogic, la figura que dice Digital I/O Pin nos dice que es una Señal Digital que puede ser de entrada o salida nosotros la colocamos de salida y en el Pin 13, después tenemos los medidores analógicos, numéricos los cuales son llamados Nivel De Tanque, Tanque y Medidor Analogico, en la Parte superior del Medidor Analogico se colocó un Control el cual su escala completa es de 0 a 255 y con esto controlamos el ciclo de trabajo del motor o velocidad del motor el cual lo podemos estar haciendo en tiempo real , ya por ultimo en la parte derecha tenemos los indicadores que nos indican el nivel en el que se encuentra el Tanque.
Conclusión; Al llevar acabo este proyecto aprendimos muchas cosas, lo cual es muy importante porque al llegar a una industria esto nos puede ser muy útil, entre las cosas que aprendimos fue el conocer y trabajar un poco con LabVIEW que es una herram ienta muy poderosa es estos de instrumentos virtuales, asimismo el utilizar el Arduino MEGA junto con LabVIEW lo cual despertó la inquietud de empezar a hacer nuevos proyectos con él, con este proyecto englobamos un poco de todo lo que hemos aprendido a lo largo de nuestra formación como lo es la programación y la electrónica, nos resultó muy interesante el proyecto.