miércoles, 17 de junio de 2020

Automatización de un limpiarreja. El automata con Arduino. (Parte IV)



Para la automatización del limpiarreja es necesario un automata que tenga varias entradas digitales, que a su vez puedan ser usadas como analógicas. Ademas debe poder manejar a su salida contactores, y estos pueden ser de corriente alterna y distintas tensiones o incluso puede que haya que usar otro tipo de funcionalidad, por lo que sus salidas deben ser a relé. También es necesario que disponga de una pantalla con botones para poder configurar parametros como los tiempos. Y por último debe incorporar un puerto de comunicaciones ModBus.

Por todo ello se decidió realizar un automata a medida para el limpiarreja pero que fácilmente puede ser usado para otra función.

Pantalla.




Se opto por una pantalla gráfica LCD de 128x64 pixels de color blanco sobre fondo azul de basada en el chip ST7920. Esta pantalla tiene la opción de ser controlada de manera paralela con un consumo elevado de pins por parte del controlador o via serie usando simplemente el puerto SPI.

Esta pantalla hace uso de las librerias ST7920_SPI y de la libreria PropFonts del usuario cbm80amiga de GitHub. La elección de estas libreria es debido a la facilidad de uso de estas y de su rendimiento a la hora de representación gráfica.



Debido al tamaño de la pantalla y al hecho de que era necesario añadir botones para interactuar con el usuario, se diseño el automata de tal manera que se compone de dos partes: la parte superior que se corresponde a la pantalla/botones y la parte inferior que es el resto de este (micrcontrolador, entradas, salidas, fuente y comunicaciones. Ambas placas estan unidas por una tira de pines rectos.

El número de botones se eligió para dotar de una minima funcionalidad a un menú: con botones subir, bajar, izquierda, derecha, entrar y seleccionar. Esto nos da un total de seis botones, pero se pueden usar para cualquier otra función que no sea la de un menú.


Se aprovecha la resistencia interna PULL-UP de los pines del microcontrolador con lo que el circuito se reduce tan solo al botón y a un condensador para limitar el debounce del pulsador.

Microcontrolador

El mayor problema que tienen las pantallas gráficas es que necesitan generalmente un bufer de memoria para poder dibujar los gráficos y luego pasarlos a la pantalla. Dependiendo del tamaño de la pantalla, será el tamaño del bufer. En este caso al ser la pantalla de 128x64 pixels monocromo será necesario un bufer de 1024 bytes.

Teniendo en cuenta que el atMega328p del Arduino solo dispone de 2048 bytes de RAM, la pantalla hace uso de la mitad de la memoria RAM, dejando muy poca RAM para el programa.




Por eso se eligió el microcontrolador atMega1284p, que ademas de poseer mas entradas que un atMega328p tiene mucha más memoria (128KB de flash y 16K de SRAM).

Para la programación del chip hay que añadir al IDE de Arduino el nuevo hardware usando el gestor de tarjetas. Se puede conseguir el nuevo core en la siguiente página MightyCore.


El circuito usa el bus SPI para la pantalla por lo que esos pins ya estan usados; los botones necesitan 6 pins; el bus I2C se ha dejado disponible en el conector para de la pantalla para una posible expansión y/o ampliacion y son dos pins mas; el puerto de comunicaciones ModBus necesita de otros 3 pins mas. Esto hace que nos queden un total de pins 18 pines libres para utilizar como entradas/salidas, así que a la hora de organizar se ha quedado en un automata de 10 entradas de las cuales las ocho primeras pueden ser tanto analógicas como digitales y 5 salidas.

Entradas.

Para poder utilizar el ADC del microcontrolador no podemos usar optoacopladores en las entradas, así que la técnica utilizada es la de divisor de tensión.

El circuito es el siquiente:



Las resistencias R1 y R2 son el divisor de tensión. El automata ha sido diseñado para ser alimentado entre una tensión de 12 y 13.8V, siendo esta tensión de alimentación también usada para alimentar las entradas del automata. El divisor de tensión ha sido calculado de tal forma que haya un compromiso de tensión que nos permita usar el ADC para usarla como entrada analógica y que también sirva para entrada digital.

Se ha aprovechado la flexibilidad de las entradas de los micrcontroladores cuyos niveles de tensión no son TTL puros. Así una tensión de 2.7 voltios será una valor lógico HIGH y una tensión inferior a 2.4V será un valor lógico LOW.

La resistencia R3 baja la impedancia del circuito y el condensador C1 es un simple filtro para reducir un posible rebote en la entrada o ruidos.

Salidas.

Para las salidas se ha utilizado un relé HK4100F. Pese a su pequeño tamaño es capaz de controlar tensiones de 250V y corrientes de hasta 3A con una potencia entre contactos de 750VA en alterna y 90W en continua. No es aconsejable darle ese uso tan extremo pero si para poder excitar otros relé de mayor potencia o condensadores. Se han utilizado los contactos normalmente abierto y cerrado (además del comun), lo cual nos permite algún arreglo y no solo por programación. Para que el microcontrolador sea capaz de excitar dicho rele se ha utilizado un transistor NPN BC547 y para evitar problemas con la bobina del rele se ha utilizado un diodo antiparalelo UF4003.


Fuente de alimentación.

El microcontrolador funciona a 5 voltios con lo que tenemos que reducir la tensión de alimentación de 12V a esa tensión. Para ello se ha utilizado un regulador 7805 con algunas consideraciones:
  • Diodo de protección inversa.
  • Diodo TVS bidireccional para evitar transitorios.
  • Filtro RC a la entrada para reducir interferencias de alta frecuencia.
  • Varios condensadores de filtrado.


Es importante el uso de una buena fuente, ya que estamos trabajando con motores y contactores, que son generadores de señales extrañas y pueden dañar nuestro microcontrolador.

Comunicaciones.

Para las comunicaciones se usa el puerto serie del microcontrolador. Dado que su principal cometido va a ser la comunicación modbus a traves de RS485, estan disponibles tanto el pin TX como el RX, asi como un tercer pin para permitir dedicir la dirección de envio/recepción. Esto permite usar un chip MAX485 o equivalente para dotar al equipo de comunicación ModBus.

Al lado del puerto de comunicaciones existe otro puerto más pequeño que permite la programación del microcontrolador via BOOTLOADER, incluye las señales RX, TX, RESET y GND.

Vista de componentes.

El automata ha sido construido de manera totalmente casera, usando una impresora laser y el método de la plancha.

Se han soldado los componentes en la placa de menor a mayor tamaño y revisando cada una de las soldaduras.



Durante el diseño del circuito se intentó minimizar el número de puentes ya que se utiliza una placa de cara simple, pero no siempre es posible eliminar un cruze de pista, así que son inevitables.

En la siguiente imagen se puede apreciar como se ensamblan ambas placas (pantalla y microcontrolador).


Curiosidades.


No disponia de más reles HK4100F así que para el limpiarreja no se instaló para la última salida, así que esa salida se dejó sin conectar y se usó para visualizar el led parpadeando.

Hay un fallo de diseño en el automata, debido a que la pantalla es muy grande, la placa base se diseño con el mismo tamaño de placa de la pantalla. Eso presenta un problema y es que las clemas atornillables quedan justo debajo de la pantalla. Por lo tanto, para hacer la instalación del automata primero hay que poner la placa base y una vez atornillados todos los cables colocar la pantalla. No es un mayor problema y se corregirá en próximas actualizaciones.




No hay comentarios:

Publicar un comentario