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.