sábado, 29 de diciembre de 2012

Vacuómetro digital con Arduino


He adquirido recientemente una bomba rotatoria Edwards E2M8, que tras una pequeña puesta a punto se ha quedado como nueva (tenía rota la transmisión del giro, y los rodamientos del motor por cambiar). Esta bomba es capaz de llegar a vacíos de 7.5·10^-4 mmbar. Tengo en mente varios proyectos para realizar con ella, pero cualquier experimento de vacío necesita conocer con relativa exactitud la presión de trabajo del sistema. Es por ello que me he decidido a construir un medidor de vacío.

El rango de presiones que alcanza esta bomba esta bien cubierto por sensores Pirani y Termopares. De entre los dos, la construcción de un sensor Pirani por parte de un científico amateur es mas sencilla y económica, y suele estar bien documentada.

Las sondas de los sensores pirani están compuestas por una pequeña resistencia de platino (normalmente, una PT100, elemento de un tamaño muy pequeño, unos 2x2 mm) cuya temperatura se eleva a un valor constante entre 200-300ºC mediante el paso de una corriente eléctrica. Dependiendo de la presión del sistema donde se encuentra esta resistencia, su enfriamiento por disipación del calor al gas envolvente será mayor o menor.

El platino varía su resistencia proporcionalmente con la temperatura (resistencia PTC, Positive Temperature Coefficient), y por lo tanto cualquier cambio en la presión modifica su temperatura y es fácilmente medible.

El diseño de los sensores pirani implica que la resistencia de platino forme parte de un puente de Wheatstone que siempre se encuentra equilibrado.

De esta manera, un amplificador operacional detecta cualquier variación de la resistencia de platino y realimenta el puente de Wheatstone positiva o negativamente para mantener la temperatura de la resistencia constante. El voltaje suministrado por el operacional es la señal de medida y es función de la presión.

Circuito sensor

El circuito electrónico empleado es una pequeña variación del propuesto por el Profesor Frank de Copenague y Sergi.

En este circuito, el puente de Wheatstone está conectado a las entradas del operacional (LMC662), que a su vez alimenta al puente. Cualquier variación en la temperatura de la PT100, será detectada por el operacional, que suministrará mas o menos corriente a través del transistor 2N222 con tal de mantener el equilibrio en el puente. La salida del operacional se conecta a la otra mitad del LMC662, con tal de amplificar la señal y permitir una medición con referencia a masa, para poder conectarla al microcontrolador.

Observé que la señal de salida tenía una oscilación de su voltaje, unos 20 mV cada 100 Hz. Esto se solucionó añadiendo un filtro paso-bajo a la salida del circuito:

Señal obtenida sin filtrar
Señal obtenida sin filtra
Construcción de la sonda

Resistencia PT100, 2x2.3mm

Para la construcción de la sonda, he empleado una PT100, una resistencia de platino de pequeñas dimensiones (2x2.3mm) que se puede conseguir en tiendas de electrónica u online por precios alrededor de los 5€ (Ref. RS-Amidata 362-9840)

La resistencia la he situado en el interior de una carcasa de un termopar inservible que tenía, y que me venía perfecto para la ocasión, pues posee el formato de conexiones de vacío estandard (Klein Flange). La resistencia la he fijado y sellado con resina epoxi de dos componentes. Hay que tener especial cuidado en la posición de la resistencia en este momento, pues no puede tocar las paredes del recinto, lo que conllevaría mucho error en la medida por disipación del calor.
Después del montaje y el pulido exterior, así es como ha quedado:
Sonda PT100 terminada
NOTA: Cometí un error en el montaje de la sonda, que ya he solucionado: las patillas de la sonda estaban soldadas a los cables azul y blanco que se ven en la foto. Esto ocasionó dos tipos de problemas 1) la disipación de la temperatura es mucho mas ineficiente, y esto repercute en una respuesta lenta a los cambios de presión. 2) el paso de los filamentos de cobre por dentro de las fundas de plástico no esta sellado completamente, así que experimenté pérdidas de vacío. Como alternativa empleé cable de cobre esmaltado, que solucionó el problema de las pérdidas y de la lenta respuesta.

Procesado de datos y calibrado
El microcontrolador es una placa de Arduino UNO, basado en chip AVR-ATmega328. La salida del circuito sensor de la PT100, la he conectado al conversor analógico digital del Arduino (pin A5). Los potenciómetros del driver los he ajustado de forma que el rango de voltajes varíen entre unos 4800 y 100 mV para presiones de entre 1000 y 1 mbares. De esa forma me aseguro de que entren dentro del rango aceptado por el Arduino (0-5V).



Para hacer la recta de calibrado, he conectando mi sonda, y una comercial (Vacuubrand VAP 5) a la bomba rotatoria mediante una T. Ambas sondas tienen la misma geometría, y están conectadas en horizontal. Tras llegar al máximo vacío que alcanza la rotatoria, y con las dos sondas estabilizadas, he apuntado los valores de presión y mV, y progresivamente he ido cerrando el manorreductor para que la presión fuera aumentando, mientras anotaba los valores durante todo su recorrido.

Tras representar gráficamente los datos, se observa que la curva del sensor tiene dos tramos bien definidos que se pueden ajustar mediante un par de rectas. El primer tramo está entre 0.001 - 0.1 mbar, y el segundo entre 0.1 - 2 mbar. Tras obtener las ecuaciones de las rectas por regresión de mínimos cuadrados, un pequeño código junto con los coeficientes obtenidos me devuelve los valores en unidades de presión.

Los valores de la presión son mostrados a través de un LCD de 16x2 caracteres, basado en el HD44780, bastante conocido en el mundo de los microcontroladores. Para controlar el LCD, se ha empleado la librería LiquidCrystal.h, que viene "de serie" con el IDE del Arduino.

He conectado a la entrada analógica A0, un pulsador que permite seleccionar que unidad de presión a emplear.

Display de barras, con sus shift registers (74HC595)
También he añadido un pequeño display de barras, que indica visualmente la tendencia de la presión del sistema de vacío. Los leds se iluminan gradualmente dependiendo de la velocidad de disminución (del centro hacia abajo) o aumento (del centro hacia arriba) de la presión. Si la presión está estable, se iluminan los del centro.
Como este sistema funciona por un promediado de los últimos valores, es fácil ver si un ligero cambio en los datos es una simple oscilación, o que la presión sigue disminuyendo lentamente.

Parte posterior del LCD y del display de barras 
La iluminación de los leds se hace con un pequeño controlador que simplifica el número de pines a utilizar del arduino. El controlador del display se ha construido con dos registros de desplazamiento de 8-bits conectados en serie al cual se le envía una cadena de bits con la información de que leds debe de encender.

El código para Arduino puede descargarse aquí.

Caja
La caja donde he instalado toda la electrónica es de un filtro de radiofrecuencias obsoleto de un RMN. He aprovechado las salidas coaxiales, una para la sonda de vacío, y la otra pretendo utilizarla en un futuro para una sonda piezoelectrica para presiones de entre 1000 y 1 mbar. A la caja le he añadido un portafusibles, un interruptor general y una salida USB para poder conectar el Arduino al ordenador sin necesidad de abrir el dispositivo.


Arriba a la derecha está el circuito sensor que se encarga de leer la sonda PT100. El voltaje obtenido se transmite al arduino (abajo, circuito azul), que se encarga de hacer la transformación a unidades de presión.

10 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. Soy nuevo en arduino lo intentare realizar

    ResponderEliminar
  3. Yo quiero conocer la cantidad de vació que genera una copa de succión de esas con las que se cargan los vidrios crees que se pueda hacer algo similar?

    ResponderEliminar
  4. Hi,
    it is great project. Congrulations.
    could you send me printed circuit pdf and filter components value?
    Thanks

    ResponderEliminar
  5. Hola que tal buen dia, me acabo de encontrar con tu proyecto, y me parecio demaciado bueno, felicitaciones !!! estoy desarrollando un proyecto de medir la humedad de la tierra por medio de un tensiometro, y estoy buscando medir el espacio de vacio , por medio de un vacuometro digital, me ayudaria mucho tu codigo espero me lo puedas proporcionar mi correo es luis_alfonso133@hotmail.com

    ResponderEliminar
  6. Felicitaciones po tu proyecto
    Yo estoy involucrado en la industria automotriz y me seria útil para medir el vació de motor en funcionamiento.
    Espero me puedas proporcionar el código.
    !!!!!....Exito....¡¡¡¡¡¡¡
    jonh.28_jibv@outlook.com

    ResponderEliminar
  7. oye quue tal no sabes donde puedo conseguir todos los componentes para hacer el sensor pirani

    ResponderEliminar
  8. Hola buenas noches, el circuito sigue tal cual para fabricarlo o hay alguna actualización a la fecha? agradecido

    ResponderEliminar