- Componentes Requeridos
- MAX30205 com Arduino - Diagrama de Circuito
- Interface do Arduino com o sensor de temperatura corporal MAX30205
- Programando MAX30205 com Arduino
- Medidor de temperatura corporal Arduino - teste
Para aplicações médicas ou clínicas, medir a temperatura do corpo humano é um parâmetro importante para determinar o estado de saúde de qualquer indivíduo. No entanto, existem muitas maneiras de detectar a temperatura, mas nem tudo tem a precisão para atender às especificações da termometria clínica. O sensor de temperatura MAX30205 é projetado especificamente para esta aplicação. Observe que este sensor não é um sensor de temperatura sem contato; se você estiver procurando por uma medição de temperatura por infravermelho sem contato, verifique o termômetro MLX90614 que projetamos anteriormente.
Neste projeto, faremos interface com um sensor de temperatura do corpo humano MAX30205 que pode ser facilmente conectado a uma faixa de aptidão ou pode ser usado para fins médicos. Usaremos o Arduino Nano como a unidade principal do microcontrolador e também usaremos telas de 7 segmentos para mostrar a temperatura detectada em Fahrenheit. Depois de saber como usar o sensor, você pode usá-lo em qualquer um de seus aplicativos preferidos, você também pode verificar este projeto Arduino Smartwatch que combinado com MAX30205 pode ser usado para monitorar a temperatura de indivíduos.
Componentes Requeridos
- Arduino NANO
- 7-Seg exibe cátodo comum - 3pcs
- 74HC595 - 3 pcs
- Resistor 680R - 24pcs
- Placa do módulo MAX30205
- Fonte de alimentação 5V
- Tábua de pão
- Muitos fios de conexão
- IDE Arduino
- Um cabo micro USB
MAX30205 com Arduino - Diagrama de Circuito
O diagrama de circuito completo para conectar o Arduino ao sensor de temperatura corporal MAX30205 é mostrado abaixo. O circuito é muito simples, mas como usamos telas de 7 segmentos, ele parece um pouco complicado. Monitores de 7 segmentos com Arduino são uma ótima maneira de exibir seu valor em grande e brilhante com custo muito baixo. Mas você também pode exibir esses valores em um OLED ou LCD, se desejar.
O Arduino Nano está conectado a três 74HC595. Três 74HC595 são colocados em cascata para salvar pinos de saída adicionais do Arduino Nano para conectar três monitores de 7 Seg. Anteriormente, usamos o 74HC595 com o Arduino em muitos outros projetos, como o Arduino Clock, LED Board Display, Arduino snake game, etc., para citar alguns.
A placa do módulo MAX30205 requer resistores pull-up adicionais, uma vez que se comunica com o protocolo I2C. No entanto, poucas placas de módulo não requerem pullup adicional, pois os resistores pull-up já são fornecidos dentro do módulo. Portanto, é necessário confirmar se a placa do módulo possui resistores pull-up internos ou se requer um pull-up externo adicional. A placa que é usada neste projeto já tem os resistores pull-up embutidos dentro da placa do módulo.
Interface do Arduino com o sensor de temperatura corporal MAX30205
O sensor que é usado aqui é o MAX30205 da maxim integrado. O sensor de temperatura MAX30205 mede com precisão a temperatura com 0,1 ° C de precisão (37 ° C a 39 ° C). O sensor funciona com o protocolo I2C.
A placa do módulo pode trabalhar com 5 ou 3,3V. No entanto, a placa está configurada para ser usada com tensão de operação de 5V. Ele também inclui um deslocador de nível lógico, já que o próprio sensor suporta um máximo de 3,3 V como alimentação ou fins relacionados à comunicação de dados.
Na saída, três 74HC595, registradores de deslocamento de 8 bits são usados para fazer a interface de três monitores de 7 segmentos com o Arduino NANO. O diagrama de pinos pode ser mostrado na imagem abaixo
A descrição do pino do 74HC595 pode ser vista na tabela abaixo
O QA a QH são os pinos de saída de dados que estão conectados aos visores 7-Seg. Como três 74HC595 estão em cascata, o pino de entrada de dados (PIN14) do primeiro registrador de deslocamento será conectado ao Arduino NANO e o pino de saída de dados serial fornecerá os dados para o próximo registrador de deslocamento. Esta conexão de dados seriais continuará até o terceiro 74HC595.
Programando MAX30205 com Arduino
O programa completo para este tutorial pode ser encontrado na parte inferior desta página. A explicação desse código é a seguinte. Primeiro, incluímos o arquivo de cabeçalho da biblioteca padrão Arduino I2C.
#incluir
A linha acima incluirá a biblioteca de contribuição do Arduino do protocentral. Esta biblioteca possui funções importantes para se comunicar com o sensor MAX30205. A biblioteca é obtida do link GitHub abaixo -
https://github.com/protocentral/ProtoCentral_MAX30205
Depois de importar a biblioteca, definimos os dados do objeto MAX30205 conforme mostrado abaixo-
#include "Protocentral_MAX30205.h" MAX30205 tempSensor;
As próximas duas linhas são importantes para definir os parâmetros. A linha abaixo fornecerá a temperatura em Fahrenheit se definida como verdadeira. Para mostrar o resultado em Celsius, a linha precisa ser definida como falsa.
const bool fahrenheittemp = true; // Estou mostrando a temperatura em Fahrenheit, se você quiser mostrar a temperatura em Celsius, torne essa variável falsa.
A linha abaixo precisa ser configurada se displays de cátodo comum tipo 7 segmentos estiverem sendo usados no hardware. Torne-o falso se o ânodo comum for usado.
const bool commonCathode = true; // Estou usando o cátodo 7segment comum, se você usar o ânodo comum, altere o valor para falso. const byte digit_pattern = {// 74HC595 Conexão Outpin com display de 7 segmentos. // Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 // abcdefg DP 0b11111100, // 0 0b01100000, // 1 0b11011010, // 2 0b11110010, // 3 0b01100110, // 4 0b10110110, // 5 0b10111110, // 6 0b11100000, // 7 0b11111110, // 8 0b11110110, // 9 0b11101110, // A 0b00111110, // b 0b00011010, // C 0b01111010, // d 0b10011110, // E 0b10001110, // F 0b00000001 //. };
A matriz acima é usada para armazenar o padrão de dígito para os visores de 7 segmentos.
Na função de configuração, após definir os modos de pino dos pinos 74HC595, o protocolo I2C e a leitura do sensor de temperatura são inicializados.
void setup () {// coloque seu código de configuração aqui, para ser executado uma vez: // defina a porta serial em 9600 Serial.begin (9600); atraso (1000); // define o pino de controle 74HC595 como saída pinMode (latchPin, OUTPUT); // ST_CP de 74HC595 pinMode (clkPin, OUTPUT); // SH_CP de 74HC595 pinMode (dtPin, OUTPUT); // DS de 74HC595 // inicializa I2C Libs Wire.begin (); // inicia a leitura de temperatura MAX30205 no modo contínuo, modo ativo tempSensor.begin (); }
No loop, a temperatura está sendo lida pela função tempSensor.getTemperature () e armazenada em uma variável flutuante chamada temp . Depois disso, se o modo de temperatura Fahrenheit for selecionado, os dados serão convertidos de Celsius para Fahrenheit. Em seguida, três dígitos dos dados convertidos de temperatura detectada são posteriormente separados em três dígitos individuais. Para fazer isso, as linhas de códigos abaixo são usadas-
// afinar 3 dígitos da temperatura atual (como se temp = 31.23c,) int dispDigit1 = (int) temp / 10; // digit1 3 int dispDigit2 = (int) temp% 10; // digit2 1 int dispDigit3 = (temp * 10) - ((int) temp * 10); // dígito 3 2
Agora, os três dígitos separados são enviados para os visores de 7 segmentos usando os registradores de deslocamento 74HC595. Como o LSB foi mostrado pela primeira vez no terceiro display de 7 segmentos através do terceiro 74HC595, o terceiro dígito é transmitido primeiro. Para fazer isso, o pino travado é puxado para baixo e os dados são enviados ao 74HC595 pela função shiftOut ();
Da mesma forma, o segundo e o primeiro dígitos restantes também são enviados para o respectivo 74HC595, restando assim dois visores de 7 segmentos. Depois de enviar todos os dados, o pino de trava é liberado e puxado para cima para confirmar o fim da transmissão de dados. Os respectivos códigos podem ser vistos abaixo -
// exibe dígitos em 3, 7segment display. digitalWrite (latchPin, LOW); if (commonCathode == true) {shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); shiftOut (dtPin, clkPin, LSBFIRST, digito_padrão-digito_padrão); // 1. (Dígito + DP) shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); } else {shiftOut (dtPin, clkPin, LSBFIRST, ~ (digito_padrão)); shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern-digit_pattern)); // 1. (Dígito + DP) shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); } digitalWrite (latchPin, HIGH);
Medidor de temperatura corporal Arduino - teste
O circuito é construído em dois conjuntos de placas de ensaio, como você pode ver abaixo. Quando colocamos o dedo no sensor, a temperatura é detectada e a saída é mostrada em um display de 7 segmentos, aqui o valor é 92,1 * F.
O funcionamento completo do projeto pode ser encontrado no vídeo no link abaixo. Espero que você tenha gostado de construir o projeto e aprendido algo útil. Se você tiver alguma dúvida, deixe-a na seção de comentários abaixo ou use nossos fóruns.