Índice:

Medição de temperatura usando XinaBox e um termistor: 8 etapas
Medição de temperatura usando XinaBox e um termistor: 8 etapas
Anonim
Medição de temperatura usando XinaBox e um termistor
Medição de temperatura usando XinaBox e um termistor

Meça a temperatura de um líquido usando uma entrada analógica xChip da XinaBox e uma sonda termistor.

Etapa 1: Coisas usadas neste projeto

Componentes de hardware

  • Sensor de entrada analógica XinaBox SX02 x 1 xChip com ADC
  • XinaBox CC01 x 1 versão xChip do Arduino Uno baseada em ATmega328P
  • Resistor de 10k ohm x 1 resistor de 10k para rede divisora de tensão
  • Sonda termistor x 1 10k a 25 ° C Sonda termistor impermeável NTC
  • Programador XinaBox IP01 x 1 xChip USB baseado em FT232R da FTDI Limited
  • Display OLED XinaBox OD01 x 1 xChip 128x64 Pixel
  • XinaBox XC10 x 4 conectores de barramento xChip
  • Fonte de alimentação XinaBox PU01 x 1 xChip USB (Tipo A)
  • Fonte de alimentação USB 5V x 1 banco de energia ou similar

Aplicativos de software e serviços online

IDE Arduino

Ferramentas manuais e máquinas de fabricação

Chave de fenda de cabeça chata Para apertar ou afrouxar a braçadeira do terminal de parafuso

Etapa 2: História

Introdução

Eu queria medir a temperatura de um líquido criando um termômetro simples. Usando o XinaBox xChips, eu poderia fazer isso com relativa simplicidade. Eu usei a entrada analógica SX02 xChip que aceita 0 - 3,3V, o CC01 xChip baseado no ATmega328P e o display OD01 OLED xChip para ver meus resultados de temperatura.

Termistor medindo a temperatura da água em um copo

Etapa 3: Baixe os arquivos necessários

Você precisará das seguintes bibliotecas e software:

  • xSX0X- Biblioteca de sensores de entrada analógica
  • xOD01 - biblioteca de exibição OLED
  • Arduino IDE - ambiente de desenvolvimento

Clique aqui para ver como instalar as bibliotecas.

Depois de instalar o Arduino IDE, abra-o e selecione "Arduino Pro ou Pro Mini" como a placa para fazer o upload do seu programa. Verifique também se o processador ATmega328P (5V, 16MHz) está selecionado. Veja a imagem abaixo.

Selecione a placa Arduino Pro ou Pro Mini e o processador ATmega328P (5V, 16MHz)

Etapa 4: montar

Clique no programador xChip, IP01 e no xChip CC01 baseado em ATmega328P juntos usando conectores de barramento XC10 conforme mostrado abaixo. Para fazer o upload para o CC01, você precisará colocar as chaves nas posições 'A' e 'DCE', respectivamente.

IP01 e CC01 clicaram juntos

Em seguida, pegue seu resistor de 10kΩ e aparafuse uma extremidade no terminal marcado "IN" e a outra extremidade no terminal de aterramento, "GND", no SX02. Pegue as pontas de prova do termistor e aparafuse uma extremidade em Vcc, "3,3 V", e a outra extremidade no terminal "IN". Veja o gráfico abaixo.

Conexões SX02

Agora combine OD01 e SX02 com CC01 simplesmente clicando neles usando os conectores de barramento XC10. Veja abaixo. O elemento prateado na imagem é a ponta de prova do termistor.

Unidade completa para programação

Etapa 5: Programa

Insira a unidade na porta USB do seu computador. Baixe ou copie e cole o código abaixo em seu IDE Arduino. Compile e carregue o código em sua placa. Depois de carregado, seu programa deve começar a funcionar. Se a sonda estiver em condições de temperatura ambiente, você deve observar ± 25 ° C no display OLED conforme mostrado abaixo.

Após o upload, observe a temperatura ambiente no display OLED

Etapa 6: termômetro portátil

Remova a unidade do seu computador. Desmonte a unidade e remonte-a usando PU01 em vez de IP01. Agora pegue sua fonte de alimentação portátil USB de 5 V, como um banco de energia ou similar, e insira o novo conjunto nela. Agora você tem seu próprio termômetro portátil com boa precisão. Veja a imagem da capa para ver em funcionamento. Medi a água quente em um copo. As imagens abaixo mostram sua unidade completa.

Unidade completa composta por CC01, OD01, SX02 e PU02.

Etapa 7: Conclusão

Este projeto levou menos de 10 minutos para montar e outros 20 minutos para programar. o único componente passivo necessário era um resistor. Os xChips são apenas clicáveis, o que os torna muito convenientes.

Etapa 8: Código

ThermTemp_Display.ino Arduino Pesquise termistores para entender os cálculos no código.

#include // inclui biblioteca central para xCHIPs

#include // inclui biblioteca de sensor de entrada analógica #include // inclui biblioteca de exibição OLED #include // inclui funções matemáticas # define C_Kelvin 273,15 // para conversão de Kelvin para Celsius # define series_res 10000 // valor do resistor em série em ohms #define B 3950 // parâmetro B para termistor #define room_tempK 298.15 // temperatura ambiente em Kelvin #define room_res 10000 // resistência à temperatura ambiente em ohms #define vcc 3.3 // tensão de alimentação xSX01 SX01 (0x55); // define o endereço i2c float voltage; // variável contendo a tensão medida (0 - 3,3V) float therm_res; // resistência do termistor float act_tempK; // temperatura real kelvin float act_tempC; // temperatura real em celsius void setup () {// coloque seu código de configuração aqui, para rodar uma vez: // inicialize as variáveis para 0 voltagem = 0; term_res = 0; act_tempK = 0; act_tempC = 0; // inicia a comunicação serial Serial.begin (115200); // inicia a comunicação i2c Wire.begin (); // inicia o sensor de entrada analógica SX01.begin (); // inicia o display OLED OLED.begin (); // limpa o display OD01.clear (); // atraso para normalizar delay (1000); } void loop () {// coloque seu código principal aqui, para rodar repetidamente: // leia a voltagem SX01.poll (); // armazena a voltagem do volatge = SX01.getVoltage (); // calcula a resistência do termistor therm_res = ((vcc * series_res) / voltage) - series_res; // calcula a temperatura real em Kelvin act_tempK = (room_tempK * B) / (B + room_tempK * log (therm_res / room_res)); // converter Kelvin para Celsius act_tempC = act_tempK - C_Kelvin; // imprime a temperatura no display OLED // formatação manual para exibir no centro OD01.set2X (); OD01.println (""); OD01.println (""); OD01.print (""); OD01.print (act_tempC); OD01.print ("C"); OD01.println (""); atraso (2000); // atualiza a tela a cada 2 segundos}

Recomendado: