Utilizando el integrado max6675 y un termopar tipo K, podemos medir falcilemente temperatura de 0° a 1024°C. Ademas, el chip max6675 utiliza en protocolo spi, esto permite que se pueda utilizar cualquier microcontrolador. Estos sensores de temperatura son muy utilizados en el campo industrial, ya que permite al usuario medir grandes intervalos de temperatura. Ademas, son utilizados para una variedad de aplicaciones como medir la temperatura en hornos, motores, hornos industriales, dataloggers, termostato, proyectos ambientales, etc.

Efecto Seebeck
Se forma un termopar a partir de dos metales diferentes soldados entre sí en el extremo de detección de temperatura. El otro extremo debe sumergirse en un baño de hielo para que se mantenga a 0 ° C. Si esto se hace, la diferencia de temperatura a través del cable del termopar de extremo a extremo hace que se genere un voltaje (el efecto Seebeck, descubierto alrededor de 1821 por Thomas Seebeck) que es proporcional a la diferencia de temperatura. El voltaje generado es extremadamente pequeño (~ 41uV / ° C), y es diferente para diferentes tipos de termopar, por lo que se requiere un amplificador para convertir la lectura en una forma utilizable.

Aquí es donde entra en juego el MAX6675, ya que tiene todo incorporado para usted; un amplificador incorporado, Cold-Junction-Compensator (CJC) y un ADC. De hecho, el chip hace que el uso de un termopar tipo K sea trivial, ya que los anteriores están incluidos en el chip y ni siquiera tiene que recuperar el valor analógico, el ADC genera una salida digital que se transmite como una secuencia serial TTL de 12 bits
- Alimentación: 3-5v
- Rango: 0-1024°C
- Resolución: 12bits
- Precisión:0.25°C
Esquemático y conexión
En este ejemplo controlaremos el max6675 con el pic16f1824

Programación
#include <xc.h>
#include "fuses.h"
#include "oscillator.h"
#include "max7219.h"
#include "max6675.h"
unsigned long i = 0;
unsigned int f = 0, temp = 1, last_temp = 0;
void main(void) {
oscillator_config(OSCILLATOR_32MHZ);
max7219_config(MAX7219_BRILLO_MEDIO);
max6675_config();
while (1) {
temp = max6675_read();
if (last_temp != temp) {
last_temp = temp;
max7219_writeInteger(MAX7219_NIVEL_DOWN, temp);
}
for (i = 0; i < 100000; i++);
}
}
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.