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 funcionamiento del sistema es el siguiente: El voltaje de la termocupla es amplificado para que el ADC (Analog to Digital Converter) del PIC lo pueda leer, luego ese voltaje es convertido a su respectivo valor de temperatura, por medio de una DAC (Digital to Analog Converter) el valor de temperatura es enviado al ADC del PLC donde es leído y entra a ser parte del control PID, 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 (x100), un amplificador LM324 para amplificar el voltaje del DAC al ADC (x2), el circuito tiene borneras para alimentación de 5V para el PIC y el LM358, y de 12V para el LM324, una bornera para conectar la termocupla y una bornera 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 10bits así que el paso será de 4.8mV (5/1024)
  • La resolución del DAC es de 8bits así que el paso será de 19.5mV (5/256).
  • La resolución del ADC del PLC es de 8bits 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.

Para descargar: Termocupla

Si tienes alguna inquietud no dudes en comentar.

19 opiniones 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

  3. esta muy bueno pero en lugar del plc puedo conectar un display directo y tambien puedo controlar dos motores paso a paso con el mismo pic
    es que soy nuevo en esto

    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).

  4. 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

    1. Hola, el arreglo de resistencias funciona como un conversor digital-análogo, esa es la señal que lee el PLC; si solo vas a mostrar la temperatura en el LCD puedes omitir ese arreglo.
      Saludos

  5. 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

  6. 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

  7. 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.

  8. Y como compensas la temperatura ambiente, es decir, la diferencia de voltaje por los empalmes…entre la termocupla y el cableado hacia el PIC?. Saludos

Deja un comentario