Arduino: Sensores

De Wiki Cursos IFPR Foz
Revisão de 12h39min de 17 de setembro de 2021 por Evandro.cantu (discussão | contribs)
Ir para navegaçãoIr para pesquisar

Arduíno: Leitura de Sensores

O Arduíno pode ler sensores através de pinos de entrada digitais e analógicas.

Características do microcontrolador Arduíno

Arduino
Site oficial do Arduíno

Sensores baseados em resistência variável para Arduíno

Sensores de luminosidade (LDR) e sensores de temperatura (como o NTC) possuem um resistor variável em função da grandeza que estão medindo.

Laboratório 6: Sensor de luminosidade LDR

LDR
O LDR (Light Dependent Resistor) é um resistor dependente de luz ou fotoresistor, o qual varia sua resistência em função da luminosidade.

Laboratório 7: Sistema indicador de luminosidade

LDR
  • Montar hardware com sensor LDR utilizando divisor de tensão para o sensor e uma coluna de 5 leds utilizando um resistor de proteção para cada led.
  • Construir programa para ir acendendo os leds a medida que aumenta a luminosidade.
Use o programa exemplo Arquivo/Exemplos/Basic/AnalogReadSerial para verificar como a luminosidade do ambiente interfere no LDR.

Sensor de Temperatura NTC 10k

O sensor de temperatura NTC 10k é um thermistor, isto é, um resistor cuja resistência varia com a temperatura, podendo medir de −90 °C a 130 °C.

Existem dois tipos de thermistores:

  • NTC (Negative Temperature Coefficient), no qual a resistência diminui com o aumento da temperatura;
  • PTC (Positive Temperature Coefficient), no qual a resistência aumenta com o aumento da temperatura.

Para leitura com o Arduíno, o sensor NTC 10k é utilizado numa estrutura com um divisor de tensão com um resistor de 10K Ω.

Esquema de ligação com Arduíno:

Cálculo da resistência do NTC
Na temperatura de 25 °C a resistência do NTC é 10 k Ω, variando linearmente com a temperatura.
Portando, quando:
RNTC = 10k Ω (25 °C)
Temos:
leitura_analógica = 512 (Vdivisor = 2,5V) 
Logo, para qualquer leitura analógica temos:
RNTC = 10k . (1023/leitura_analógica - 1)
Equação de Steinhart–Hart
A equação de Steinhart–Hart (https://en.wikipedia.org/wiki/Thermistor), detalha a operação do thermistor NTC relacionando a variação de temperatura (Kelvin) com a resistência (Ω).
onde a, b e c são parâmetros de Steinhart–Hart específicos para cada dispositivo.
Valores típicos para um thermistor com resistência de 10K Ω na temperatura de (25 °C = 298.15 K) é:
  • a = 0.001129148,
  • b = 0.000234125,
  • c = 0.0000000876741.

Laboratório 11: Sensor de Temperatura com NTC

  • Monte o hardware para o sensor de temperatura NTC10k;
  • Carregue e teste o código abaixo (adaptado de [1]):
//Sensor de temperatura NTC10k
#include <math.h>
const double a = 0.001129148;     //
const double b = 0.000234125;     //Parâmetros de Steinhart–Hart
const double c = 0.0000000876741; //
void setup() 
{
  Serial.begin(9600);
}
void loop() 
{
  double R;    //Resistência do NTC
  double T;    //Temperatura em Kelvin
  int leitura; //Leitura analógica (0 a 1023)
  leitura = analogRead(A0);
  R = (10000.0 * ((float)1023/leitura - 1));  //Calcula valor de R em função da leitura
  T = 1 / (a + (b * log(R)) + (c * pow(log(R),3))); //Equação de Steinhart–Hart 
  T = T - 273.15; //Converte Kelvin para Celcius
  Serial.print("Temperatura: "); 
  Serial.print(T);
  Serial.println(" oC");  
  delay(1000);
}

Sensor de temperatura (LM35)

Funcionamento do sensor LM35
O LM35 é um circuito integrado exclusivo para medir temperatura com uma tensão de saída variando linearmente com a temperatura em graus Célsius.
Na configuração básica este sensor mede temperaturas entre 2oC e 150oC, variando a saída em função da temperatura de 0 mV + 10mV por 1oC.
Com a configuração mostrada em [2] é possível medir temperatura de -55oC e 150oC.
Esquema de ligação com Arduíno
            _______
           |       |
           | LM 35 | 
           |_______|
             | | |
   (+5v) ----+ | +---- (Ground)
               |
          Analog Pin 
       0mV + 10mV / oC
Leitura pela entrada analógica do Arduíno
O valor de tensão (entre 0V e 5V) lido pelo Arduíno na entrada analógica é convertido um número digital com 10 bits de magnitude, ou seja, 210 (1024) valores (entre 0 e 1023).
Para obter o valor de tensão, para uso no cálculo da temperatura, multiplica-se o valor digital obtido na leitura por 5/1023.
Como a tensão medida pelo sensor varia de 0 mV + 10mV/1oC, se multiplicarmos por 100, teremos o valor em graus Celsius:

Laboratório 12: Sensor de temperatura LM35

  • Monte o hardware com LM35 conforme a figura, utilizando a entrada analógica A0 para leitura.
  • Carregue o código exemplo abaixo e verifique o funcionamento do sensor:
 //Sensor de temperatura LM35
 float valorSensor;
 float temperatura;
 void setup() {
   Serial.begin(9600);
 }
 void loop() {
   valorSensor = analogRead(A0) * 5.0 / 1023.0;
   temperatura = valorSensor * 100.0;
   Serial.print("Temperatura: ");
   Serial.println(temperatura);
   delay(2000); //Tempo entre as leituras em ms
 }

Sensor de Temperatura e Humidade DHT11

O DHT11 é um sensor de temperatura e humidade. Este sensor inclui um medidor de humidade resistivo e um sensor de temperatura tipo NTC conectado a um microcontrolador de 8 bits [3].

O DHT11 possui uma biblioteca com funções prontas para seu funcionamento, documentada em [4].

Esquema de ligação com Arduíno
            _______
           |       |
           | DHT11 | 
           |_______|
             | | |
(Ground) ----+ | +---- (+5v)
               |
          Analog Pin 1

Laboratório 13: Sensor de temperatura DHT11

  • Monte o hardware com DHT11 conforme a figura, utilizando a entrada analógica A1 para leitura.
  • Baixe a biblioteca DHT11.zip e salve no computador (Última versão disponível em [5]).
    A biblioteca DHT11, contida no arquivo DHT11.zip, é formada por dois arquivos:
    • dht11.h
    • dht11.cpp
  • Insira a biblioteca DHT11.zip no ambiente da IDE do Arduíno:
Sketch -> Incluir Biblioteca -> Adicionar biblioteca .ZIP
  • As bibliotecas são instaladas por padrão no diretório:
~/Arduino/libraries
  • Carregue o código exemplo abaixo e verifique o funcionamento do sensor:
 //Sensor de temperatura LDHT11
 #include <dht11.h>
 dht11 sensor; //Inicializa sensor
 void setup() {
   Serial.begin(9600);
   delay(1000);
 }
 void loop() {
   sensor.read(A1);
   Serial.print("Temperatura (oC): ");
   Serial.println(sensor.temperature);
   Serial.print("Unidade (%): ");
   Serial.println(sensor.humidity);
   delay(2000); //Tempo entre as leituras em ms
 }

Sensor Piezoelétrico

Um sensor piezoelétrico é um dispositivo eletrônico que gera uma tensão quando é atingido por uma vibração, onda sonora ou uma tensão mecânica [6].

Para usar o sensor piezoelétrico com o Arduíno, utiliza-se analogRead() para ler uma tensão de 0 a 5V, a qual será convertida pelo Conversor Analógico Digital para valores digitais 0 a 1023.

Se a tensão lida for maior que um limiar, supõe-se que o sensor piezoelétrico detectou uma vibração.

Circuito
O sensor piezoelétrico tem polaridade. O terminal negativo deve ser ligado a terra, em paralelo com um resistor de 1 M Ω. O terminal positivo deve ser ligado a entrada analógica.

Laboratório 15: Sensor Piezoelétrico

  • Monte o hardware para o sensor piezoelétrico e teste o código abaixo (adaptado de [6]).
    Pode ser necessário testar vários valores para o limiar para definir o melhor funcionamento do sensor piezoelétrico.
//Sensor Piezoelétrico

const int limiar = 100;     // tensão de limiar
int leituraSensor = 0;      // veriável com leitura do se==Acionamento de Cargas com Relés==
Um '''relé''' é um '''interruptor eletromecânico''' ou '''eletrônico''' que pode ser utilizado para ligar ou desligar '''cargas''' conectadas em '''127/220V CA''' ([[Corrente Contínua e Corrente Alternada|Corrente Alternada]]).

O '''acionamento do relé''' pelo '''Arduíno''' é realizado a partir de uma '''saída digital''', além do fornecimento das tensões 5V e GNG para alimentar o relé. 

[[Arquivo:Rele.png]]

A '''carga CA''' é conectada nos terminais de potência do relé, o qual geralmente apresenta três terminais:
*NA - Normalmente Aberto
*COM - Comum
*NF - Normalmente Fechado

Para acionamento de uma '''carga simples''', como uma '''lâmpada''', utilizar '''NA-COM''' como '''chave liga-desliga'''.

===Laboratório 14: Acionamento de uma lâmpada com relé===
;LDR e relé: 
*Montar hardware com '''sensor LDR''' e um '''relé''' para acionamento pelo Arduíno de uma '''lâmpada 127/220V'''. 
*O circuito da '''lâmpada''' na '''rede 127/220 V CA''' é mostrado na figura abaixo.
[[Arquivo:LampadaRele.png]]
nsor
int estadoLed = LOW;        // estado inicial do led

void setup() {
  pinMode(13, OUTPUT); 
  Serial.begin(9600);
}       

void loop() {
  leituraSensor = analogRead(A0);
  if (leituraSensor >= limiar) {
    estadoLed = !estadoLed; //inverte estado do led
    digitalWrite(13, estadoLed);
    Serial.println("Vibração detectada!");
  } 
  delay(100);
}

Referências



Evandro.cantu (discussão) 09h35min de 17 de setembro de 2021 (-03)