Saltar al contenido

Linealizar una Termocupla

Hace unos días fue necesario diseñar un circuito que me permitiera linealizar la temperatura de una termocupla, esto con el fin de implementarla en un sencillo control PID integrando además un PLC S7-300. El circuito lee la temperatura de un termopar J o K y luego escribe este valor en la entrada analógica de un PLC.

El sistema funciona amplificando el voltaje del termopar (en mV) usando un amplificador operacional LM358, luego el voltaje amplificado es leído por el ADC del microcontrolador. Sin embargo, el voltaje del termopar no se relaciona linealmente con la temperatura medida, por esto se usa una regresión lineal en el PIC para calcular la temperatura correspondiente; se usa una regresión lineal de quinto grado para la termocupla tipo J, y una de octavo grado para la termocupla tipo K. Luego, el valor de temperatura es enviado al PLC usando un DAC de 8 bits usando un puerto completo del microcontrolador y un arreglo de resistencias. La temperatura entra a ser la variable de proceso de un controlador PIC en el PLC, la planta está compuesta por una resistencia (que genera calor) y un ventilador; el proceso deberá ser monitoreado desde una HMI.

En el circuito se utilizan un PIC16F877 para leer la temperatura, linealizarla y enviar el valor al ADC del PLC; un amplificador LM358 para amplificar el voltaje de la termocupla, un amplificador LM324 para amplificar el voltaje del DAC al ADC (x2), el circuito tiene bornes para alimentación de 5V para el PIC y el LM358, y de 12V para el LM324, un borne para conectar la termocupla y un borne para la salida al PLC, tiene conectores para programación ICSP, un jumper para seleccionar el tipo de termocupla (J o K) y un conector para comunicación Serial (UART).

Para escribir el código del PIC es necesario tener en cuenta ciertos valores relacionados con el voltaje de la termocupla, el ADC del PIC, el ADC del PLC.

  • El voltaje de la termocupla está entre los 0mV (0 ºC) y los 42.92mV (760 ºC)
  • La resolución del ADC del PIC es de 10 bits así que el paso será de 4.8mV (5/1024)
  • La resolución del DAC es de 8 bits así que el paso será de 19.5mV (5/256).
  • La resolución del ADC del PLC es de 8 bits así que el paso será de 39mV (10/256)
  • La ganancia del LM358 será de 100
  • La ganancia del LM324 será de 2

En el archivo para descargar se encuentran los planos en EAGLE y el código del PIC.

GitHub: LinTermocupla

Si tienes alguna inquietud no dudes en comentar.

24 comentarios en «Linealizar una Termocupla»

  1. Muy bueno tu proyecto amigo. Todavia no lo he probado. Yo estoy en algo muy similar pero no pude concluirlo todavia pues tengo unos ruidos que interfieren, no en mi pequeño laboratorio sino en el horno donde va ir el circuito. A conectar los contactores se reinicia el programa, ya he probado de todo, filtros, perro guradian, comandos en winpic800, fuentes, programa, y siempre lo mismo, estaba probando con un 18f452 y 16f877, no se porque de la interferencia. Hoy estoy probando con un 16f88 con algun mejor resultado. La interferncia entra por los cables? o por algun campo magnetico? Voy a probarlo con tu codigo a ver que pasa. Alguna sugerencia?? Muchas gracias de antemano.
    Hugo

  2. Muy bueno tu circuito. Es interesante que uses el lm358, lo he visto antes para termocuplas, pero siempre pensé que debía usarse un ao de instrumentación.

    Has pensado en agregarle un sensor de temperatura adicional para hacer la famosa compensación por junta fría?

    Saludos

    1. Para hacer la mediciones básicas utilice el multimetro para verificar el voltaje de entrada y salida del AO, para linealizar el voltaje medido y poder generar su equivalente en voltaje utilicé el sistema de aproximación lineal, un polinomio de 5º grado para la termocupla tipo J y uno de 8º para la tipo K. Para probar que esto funcionaba verifiqué las mediciones con la termocupla de mi multimetro y con un chip (TMP102).

      1. estoy linealizando una termocupla con rango de 0 a 120 , ya hice mediante excel una regresion lineal , despues de alli , que hago con ese excel , que hago con la ecuacion que da el grafico , alguien puede orientarme por favor??

  3. hola una pregunta si el arreglo de resistencias en el puerto b es para el plc pero si yo quiero usas un lcd para mostrar la temperatura puedo omitir ese arreglo o es nesesario

  4. Hola Palma, estoy intentando utilizar el circuito y no puede hacer que funcione. Al circuito lo armo en un placa universal , de esas que es toda agujereada y se sueldan los componentes. Sabes cual puede ser el problema.
    Saludos
    Luciano

  5. hola, me gustaria saber de que forma pudiese mostrar por pantalla ( un lcd pequeno u otro dispositivo ) la temperatura de una serie de termocuplas ( 12 ) pensaba que mediante un pic lo podria hacer. mi pregunta es, se puede? que otros dispositivos necesitaria ? saludos

  6. hola palma el proyecto esta muy interesante y quisiera saber como sacas los valores de los polinomios para cada tipo de termocupla ya que los e estado buscando en las tablas de sus respectivas termocuplas y no coinciden disculpa la ignorancia pero estoy perdido en este punto

    1. he tratado de acondicionar los valores de voltajes de la termocupla k, cuando lo simulo en proteus da perfectamente pero cuando lo llevo al protoboard no me resulta.

    1. Hola Ed, la termocupla no se podía conectar directamente al PLC que estaba usando, así que el circuito era necesario. Adicionalmente, era un proyecto de la universidad, entonces el factor costo no era prioridad.

      Saludos

Deja un comentario