Pular para o conteúdo principal

Grove - Amplificador de Termopar I2C (MCP9600)

O Grove - I2C Thermocouple Amplifier (MCP9600) é um conversor de termopar para digital com compensação de junta fria integrada e protocolo de comunicação I2C. Este módulo foi projetado para ser usado em conjunto com um termopar tipo K. Os termopares têm uma faixa de medição muito maior do que os termistores. Por exemplo, este termopar tipo K em nosso site tem uma faixa de medição de -50℃ a +600℃.

Também fornecemos a função de alerta para este módulo; você pode usar o pino de alerta programável para fornecer um sinal de interrupção ao controlador.

Novamente, este módulo não pode funcionar sozinho, ele deve funcionar com um termopar tipo K. Se você não tiver um, pode considerar o Thermocouple Temperature Sensor K Type-1M em nosso bazar.

Versão

Versão do ProdutoAlteraçõesData de Lançamento
Grove - I2C Thermocouple Amplifier (MCP9600)InicialAgo 2018

Recursos

  • Compensação de Junta Fria Integrada
  • Tipos Suportados (designados por NIST ITS-90): Tipo K, J, T, N, S, E, B e R
  • Quatro Saídas de Alerta de Temperatura Programáveis:
    • Monitorar a junta quente ou fria
    • temperaturas
    • Detectar temperaturas ascendentes ou descendentes
    • Até 255°C de histerese programável
  • Filtro digital programável para temperatura
  • Baixo consumo de energia
nota

O Grove - I2C Thermocouple Amplifier (MCP9600) suporta os tipos K, J, T, N, S, E, B e R em hardware, porém, no momento, nossa biblioteca não suporta nenhum outro tipo de termopar exceto o tipo K.

Especificação

ItemValor
Tensão de Operação3.3V/5V
Temperatura Ambiente-40℃ ~ +125℃
Temperatura de Armazenamento-65℃ ~ +150℃
Temperatura Máx. da Junta+150℃
Precisão da Junta Quente±1.5°C (Máx.)
Resolução de MediçãoJuntas quente e fria: 0.0625°C (típica)
InterfaceI2C
Endereço I2C0x60(padrão) / 0x67(opcional)
TamanhoC: 40mm L: 20mm A: 18mm
Peso4.8g
Tamanho da EmbalagemC: 130mm L: 85mm A: 20mm
Peso Bruto11g

Aplicações

  • Gestão térmica petroquímica
  • Equipamentos de medição portáteis
  • Gestão térmica de equipamentos industriais
  • Fornos
  • Monitor térmico de motores industriais
  • Racks de detecção de temperatura

Visão Geral de Hardware

Mapa de Pinos

Esquemático

Alimentação

A faixa de tensão de operação do MCP9600 é de 2.7V ~ 5.5V, usamos um chip de conversão de energia XC6206P332MR-G para fornecer 3.3V estáveis para o MCP9600.

Conector de Entrada

Devido aos pequenos níveis de sinal envolvidos, tomamos muitas medidas para filtrar o ruído.

  • 1--L1,L2 Usamos termopar de até 1 metro de comprimento. Fios tão longos podem ser considerados antenas, que receberão interferência de campo elétrico espacial e gerarão ruído de alta frequência. Portanto, usamos duas indutâncias para filtrar o ruído de alta frequência.

  • 2--C1 É fortemente recomendado pelo fabricante do chip adicionar um capacitor diferencial cerâmico SMD de 100nF, colocado entre os pinos T+ e T-, para filtrar o ruído nas linhas do termopar.

  • 3--D1 Usamos o supressor de tensão bidirecional duplo SZNUP2105LT3G para proteger este módulo contra ESD (descarga eletrostática).

Circuito de conversor de nível bidirecional

Este é um circuito típico de conversor de nível bidirecional para conectar duas seções de tensão diferentes de um barramento I2C. O barramento I2C deste sensor usa 3.3V; se o barramento I2C do Arduino usar 5V, este circuito será necessário. No esquemático acima, Q1 e Q5 são MOSFETs de canal N 2N7002A, que atuam como chaves bidirecionais. Para entender melhor esta parte, você pode consultar o AN10441

Plataformas Suportadas

ArduinoRaspberry Pi
cuidado

As plataformas mencionadas acima como suportadas são uma indicação da compatibilidade de software ou teórica do módulo. Na maioria dos casos, fornecemos apenas biblioteca de software ou exemplos de código para a plataforma Arduino. Não é possível fornecer biblioteca de software / código de demonstração para todas as possíveis plataformas de MCU. Portanto, os usuários precisam escrever sua própria biblioteca de software.

Primeiros Passos

Brincar com Arduino

Hardware

Materiais necessários

Seeeduino V4.2Base ShieldGrove - I2C Thermocouple Amplifier
Adquira agoraAdquira agoraAdquira agora
nota

1 Conecte o cabo USB com cuidado, caso contrário você pode danificar a porta. Use o cabo USB com 4 fios internos; o cabo de 2 fios não pode transferir dados. Se você não tiver certeza sobre o cabo que possui, pode clicar aqui para comprar.

2 Cada módulo Grove vem com um cabo Grove quando você o compra. Caso você perca o cabo Grove, pode clicar aqui para comprar.

  • Passo 1. Conecte o Grove - I2C Thermocouple Amplifier (MCP9600) à porta I2C do Grove-Base Shield.

  • Passo 2. Conecte o Grove - Base Shield ao Seeeduino.

  • Passo 3. Conecte o Seeeduino ao PC via cabo USB.

nota

Se não tivermos o Grove Base Shield, também podemos conectar diretamente este módulo ao Seeeduino como abaixo.

SeeeduinoCabo GroveGrove - I2C Thermocouple Amplifier
GNDPretoGND
5V / 3.3VVermelhoVCC
SDABrancoSDA
SCLAmareloSCL

Software

nota

Se esta é a primeira vez que você trabalha com Arduino, recomendamos fortemente que veja Getting Started with Arduino antes de começar.

  • Passo 1. Baixe a biblioteca Seeed_MCP9600 do Github.

  • Passo 2. Consulte How to install library para instalar a biblioteca para Arduino.

  • Passo 3. Reinicie a IDE do Arduino. Abra o exemplo; você pode abri‑lo das três maneiras a seguir:

    1. Abra-o diretamente na IDE do Arduino pelo caminho: File --> Examples --> Grove Temperature sensor MCP9600 --> MCP9600_4channel_INT_demo.
    1. Abra-o no seu computador clicando em MCP9600_4channel_INT_demo.ino, que você pode encontrar na pasta XXXX\Arduino\libraries\Seeed_MCP9600-master\examples\MCP9600_4channel_INT_demo, em que XXXX é o local onde você instalou a IDE do Arduino.
    1. Ou você pode simplesmente clicar no ícone no canto superior direito do bloco de código para copiar o código a seguir para um novo sketch na IDE do Arduino.
#include "Seeed_MCP9600.h"

#ifdef ARDUINO_SAMD_VARIANT_COMPLIANCE
#define SERIAL SerialUSB
#else
#define SERIAL Serial
#endif

MCP9600 sensor;

/**@brief interruption cfg.
*
*
* */
err_t sensor_INT_config()
{
err_t ret=NO_ERROR;
CHECK_RESULT(ret,sensor.set_filt_coefficients(FILT_MID));

for(int i=0;i<4;i++)
{
/*Conver temp num to 16bit data*/
CHECK_RESULT(ret,sensor.set_alert_limit(i,sensor.covert_temp_to_reg_form(28+i)));
/*Set hysteresis.for example,set hysteresis to 2℃,when the INT limitation is 30℃,interruption will be generated when
the temp ecceed limitation,and the interruption flag will stay unless the temp below 30-2(limitation-hysteresis) 28℃. */
CHECK_RESULT(ret,sensor.set_alert_hys(i,2));

/*Set when interruption generated the pin's status*/
CHECK_RESULT(ret,sensor.set_alert_bit(i,ACTIVE_LOW));

CHECK_RESULT(ret,sensor.clear_int_flag(i));

/*default is comparator mode*/
CHECK_RESULT(ret,sensor.set_alert_mode_bit(i,COMPARE_MODE));

/*Set alert pin ENABLE.*/
CHECK_RESULT(ret,sensor.set_alert_enable(i,ENABLE));



}

/*device cfg*/
CHECK_RESULT(ret,sensor.set_cold_junc_resolution(COLD_JUNC_RESOLUTION_0_25));
CHECK_RESULT(ret,sensor.set_ADC_meas_resolution(ADC_14BIT_RESOLUTION));
CHECK_RESULT(ret,sensor.set_burst_mode_samp(BURST_32_SAMPLE));
CHECK_RESULT(ret,sensor.set_sensor_mode(NORMAL_OPERATION));

return NO_ERROR;
}


err_t get_temperature(float *value)
{
err_t ret=NO_ERROR;
float hot_junc=0;
float junc_delta=0;
float cold_junc=0;
bool stat=true;

CHECK_RESULT(ret,sensor.check_data_update(&stat));
if(stat)
{
CHECK_RESULT(ret,sensor.read_hot_junc(&hot_junc));
CHECK_RESULT(ret,sensor.read_junc_temp_delta(&junc_delta));

CHECK_RESULT(ret,sensor.read_cold_junc(&cold_junc));

*value=hot_junc;
}
else
{
SERIAL.println("data not ready!!");
}

return NO_ERROR;
}


void setup()
{
SERIAL.begin(115200);
delay(10);
SERIAL.println("serial start!!");
if(sensor.init(THER_TYPE_K))
{
SERIAL.println("sensor init failed!!");
}
sensor_INT_config();
}



void loop()
{
float temp=0;
u8 byte=0;
u8 stat=0;


get_temperature(&temp);
SERIAL.print("temperature ==============================>>");
SERIAL.println(temp);

sensor.read_INT_stat(&stat);

SERIAL.println(" ");
SERIAL.println(" ");

delay(1000);
}
nota

Existem 2 demos na biblioteca:
MCP9600_basic_demo.ino

Este exemplo é um uso básico do sensor de temperatura, em que você precisa fazer polling para obter os dados.

MCP9600_4channel_INT_demo.ino

há quatro pads de alerta no módulo do sensor que se conectam ao pino de alerta. Você pode definir limites de temperatura chamando a API que fornecemos. O pino de alerta gera nível baixo quando o valor de temperatura ultrapassa o limite. Você pode conectar o pino de alerta a um pino de interrupção do host para melhorar a eficiência da operação do programa.

  • Passo 4. Faça o upload do demo. Se você não souber como fazer o upload do código, consulte How to upload code.

  • Passo 5. Abra o Serial Monitor da IDE do Arduino clicando em Tool-> Serial Monitor. Ou pressione as teclas ++ctrl+shift+m++ ao mesmo tempo. Defina a taxa de transmissão para 115200.

dica

Se tudo correr bem, quando você abrir o Serial Monitor, verá o valor da temperatura e as informações de alerta.

serial start!!
version =4011

temperature ==============================>>25.81


temperature ==============================>>27.62


temperature ==============================>>29.37
channel 0generate interruption!!!
channel 1generate interruption!!!


temperature ==============================>>30.81
channel 0generate interruption!!!
channel 1generate interruption!!!
channel 2generate interruption!!!


temperature ==============================>>31.56
channel 0generate interruption!!!
channel 1generate interruption!!!
channel 2generate interruption!!!
channel 3generate interruption!!!


temperature ==============================>>28.56
channel 0generate interruption!!!
channel 1generate interruption!!!
channel 2generate interruption!!!


temperature ==============================>>27.33
channel 0generate interruption!!!
channel 1generate interruption!!!


temperature ==============================>>26.71
channel 0generate interruption!!!

Função de Alerta

Como você pode ver, há uma histerese quando o aumento e a queda da temperatura disparam uma interrupção. Por exemplo, quando a temperatura sobe e atinge 28 ℃, o pino de alerta 0 será disparado, e quando a temperatura cai, o ponto limite se torna 26 ℃. Somente quando a temperatura ficar abaixo de 26 ℃ o pino de alerta 0 será liberado.

hysteresis= 28℃-26℃ = 2℃

Os pinos de alerta 1, 2 e 3 seguem o mesmo princípio. Você pode alterar o valor de histerese e o limite modificando a linha 23 e a linha 26.

CHECK_RESULT(ret,sensor.set_alert_limit(i,sensor.covert_temp_to_reg_form(28+i)));

/*Set hysteresis.for example,set hysteresis to 2℃,when the INT limitation is 30℃,interruption will be generated when
the temp ecceed limitation,and the interruption flag will stay unless the temp below 30-2(limitation-hysteresis) 28℃. */

CHECK_RESULT(ret,sensor.set_alert_hys(i,2));

Use o parâmetro i para escolher o número do pino de alerta, e o parâmetro 28 é o valor limite; quanto à histerese, usamos a função sensor.set_alert_hys(i,2). O parâmetro 2 é o valor de histerese.

Visualizador de Esquemático Online

Recursos

Projeto

Este é o vídeo de introdução deste produto, com demos simples que você pode experimentar.

Suporte Técnico & Discussão de Produto

Atualizável para Sensores Industriais

Com o controlador S2110 SenseCAP e o data logger S2100, você pode facilmente transformar o Grove em um sensor LoRaWAN®. A Seeed não apenas ajuda você na prototipagem, mas também oferece a possibilidade de expandir seu projeto com a série SenseCAP de robustos sensores industriais.

O invólucro IP66, a configuração via Bluetooth, a compatibilidade com a rede global LoRaWAN®, a bateria interna de 19 Ah e o forte suporte do APP fazem do SenseCAP S210x a melhor escolha para aplicações industriais. A série inclui sensores para umidade do solo, temperatura e umidade do ar, intensidade de luz, CO2, EC e uma estação meteorológica 8 em 1. Experimente o mais recente SenseCAP S210x no seu próximo projeto industrial de sucesso.

Loading Comments...