terça-feira, setembro 15, 2020

Sensor Infra-vermelho de Chama

 Já faz algum tempo que não escrevo um post sobre sensores... Vamos ver hoje um sensor bastante simples: o sensor infra-vermelho (IR) de chama.



Os sensores IR de chama são bastante fáceis de achar e a maioria tem o mesmo layout independente da origem. 


A principal diferença que você vai achar são modelos com apenas três pinos, neste caso a saída analógica não está disponível. O circuito típico é o abaixo:


O funcionamento é simples. O sensor em si é um fototransistor, que irá conduzir quando receber luz na frequência correta (tipicamente 760nm to 1100nm, que está na faixa do infravermelho). A saída analógica estará mais perto do nível zero conforme a intensidade da luz detectada. Este sinal entra também em um comparador, a saída digital será zero ou um conforme o sinal for abaixo (fogo!) ou acima de uma referência determinada através de um potenciômetro. Dois LEDs na plaquinha indicam que o sensor está alimentado e se foi detectado "fogo".

O sensor funciona com qualquer tensão de 3,3 a 5V, lembrando que o valor da alimentação será o valor máximo da saída analógica.

A ligação a um Arduino é trivial: a saída analógica do sensor deve ser ligado a uma entrada analógica do Arduino e/ou a saída digital do sensor é ligada a uma entrada do Arduino. A conexão digital é mais fácil de ser usada, mas requer ajustar adequadamente o potenciômetro. Você pode fazer este ajuste alimentando o sensor, colocando uma chama na frente e ir virando o potenciômetro até o LED no sensor acender.

Para uma pequena demonstração vamos usar a montagem e o código abaixo (o buzzer deve ser um buzzer de 5V com oscilador interno):

Atenção: O módulo no Fritzing tem uma pinagem diferente!


/**
 * Teste do Sensor de Chama
 * DQ - 13/09/20
 * https://dqsoft.blogspot.com
 */

// Conexões
const int pinBuzzer = 3;
const int pinChamaD = 4;
const int pinChamaA = A0;

// Iniciação
void setup() {
  Serial.begin(115200);
  pinMode (pinBuzzer, OUTPUT);
  digitalWrite (pinBuzzer, LOW);
  pinMode (pinChamaD, INPUT);
}

// Laco eterno
void loop() {
  // Envia para a serial a leitura analógica
  Serial.println(analogRead (pinChamaA));
  // Aciona o Buzzer se sensor digital indicar chama
  if (digitalRead(pinChamaD) == LOW) {
    digitalWrite (pinBuzzer, HIGH);
  } else {
    digitalWrite (pinBuzzer, LOW);
  }
  // Dá um tempo entre as leituras
  delay (200);
}

Você pode usar o plotter da IDE do Arduino (com velocidade 115200) para ver um gráfico com o valor da saída analógica e ver como ele baixa conforme a intensidade de infra-vermelho detectada. O buzzer será acionado quando a saída digital do sensor indicar chama. 

Nenhum comentário: