Modul senzor flacara IR


    Pentru a detecta prezenta unei flacari folosim un modul de detectie a flacarii. Acest modul este realizat cu ajutorul unui circuit integrat LM393, a unui fototranzistor si a catorva componente pasive.
    Acest modul ne ofera atat o iesire digitala cat si o iesire analogica.
    Lungimea de unda detectata este cuprinsa intre 760nm si 1100nm. Unghiul de detectare al fototranzistorului este de 60 de grade. Sensibilitatea acestui modul este realizata prin intermediul rezistorului semireglabil aflat pe modul.
    Acest modul se alimenteaza cu o tensiune cuprinsa intre 3.3V si 5V.
     De asemenea pe modul regasim si 2 diode led. Una dintre ele ne arata prezenta tensiunii de alimentare a modulului iar a doua ne semnalizeaza o iesire in zero logic (LOW) la detectia flacarii.
    Poza cu modulul este mai jos:

    Schema electronica a modului este urmatoarea:

 

    Pentru a folosi iesirea digitala a modulului va trebui sa creem un sketch pentru Arduino. Crearea acestuia este simpla si vom vedea mai jos cum se face.
    Pentru inceput vom declara o variabila care contine pinul digital unde vom conecta iesirea acestui modul. In exemplul nostru vom folosi portul D3 al Arduino.

int senzor = 3;

    In continuare vom crea functia setup() in care vom initializa functia de comunicare seriala si modul de functionare al pinului declarat mai devreme. Aceasta functie are urmatoarea forma:

void setup() {}

    In prima linie vom initializa functia de transfer serial:

Serial.begin(9600);

    In a doua linie vom seta modul de lucru al pinului declarat initial ca si pin de intrare:

pinMode(senzor, INPUT);

    Codul final pentru functia setup() este cel de mai jos:

void setup() {
	Serial.begin(9600);
	pinMOde(senzor, INPUT);
}

    In urmatoarea functie vom adauga codul care se va rula intr-o bucla infinita. Aceasta functie se numeste loop() si are urmatoarea forma:

void loop() {}

    In aceasta functie vom adauga liniile de cod necesare in rularea programului. In prima linie de cod vom citi valoarea aflata la pinul D3 al Arduino:

int val = digitalRead(senzor);

    In aceasta variabila vom avea stocata valoarea returnata de catre modul in formast LOW sau HIGH. Iar pentru a afisa aceasta valoare in consola seriala vom folosi instructiunea conditionala if... else. Aceasta instructiune ne va afisa un mesaj pentru cazul in care detectam prezenta flacarii si un alt mesaj cand nu este detectat nimic.

if (val == LOW) {
	//aici vom rula codul in cazul prezentei flacarii, iesirea modulului fiind, in aceasta situatie, LOW
	Serial.println("Atentie, Flacara detectata!!!");
} else {
	//aici vom rula codul in cazul absentei flacarii, iesirea modulului fiind, in acest caz, HIGH
	Serial.println("Nimic detectat.");
}

    Dupa executarea aceste instructiuni vom seta o intarziere de 1 secunda. Aceasta intarziere pune microcontrolerul sa faca o pauza de 1 secunda inainte de a relua rularea codului de la inceputul functiei loop(). Acesta intarziere o vom scrie in acest mod:

delay(1000);

    Codul complet aflat in interiorul functiei loop() este urmatorul:

void loop() {
	int val = digitalRead(senzor);
	if (val == LOW) {
		Serial.println("Atentie, Flacara detectata!!!");
	} else {
		Serial.println("Nimic detectat.");
	}
	delay(1000);
}

    Sketchul in forma lui finala este cel de mai jos:

int senzor = 3;

void setup() {
  Serial.begin(9600);
  pinMode(senzor, INPUT);
}

void loop() {
  int val = digitalRead(senzor);
  if (val == LOW) {
    Serial.println("Atentie, Flacara detectata!!!");
  } else {
    Serial.println("Nimic detectat.");
  }
  delay(1000);
}

    La rularea acestui sketch in consola seriala vom obtine urmatorul rezultat:

    Pentru a folosi doar iesirea analogia ca acestui modul va trebui sa facem nici modificari ale codului sursa prezentat anterior. De aceea in locul acestei linii de cod:

int senzor = 3;

vom scrie aceasta linie de cod. Aceasta seteaza ca intrare in Arduino pinul Analog 3.

int senzor = A3; 

    Continutul functiei setup() ramane neschimbat. In schimb in functia loop() vom face urmatoarele modificari. In locul acestui cod:

int val = digitalRead(senzor);

vom scrie urmatorul cod. Acest cod va face o citire a valorii analogice aflata la pinul Analog 3 al Arduino:

int val = analogRead(senzor);

    De asemenea vom elimina instructiunea if... else:

if (val == LOW) {
    Serial.println("Atentie, Flacara detectata!!!");
} else {
    Serial.println("Nimic detectat.");
}

si o vom inlocui cu urmatoarele 2 linii de cod. Aceste linii de cod vor afisa in terminalul serial valoarea analogica detectata la pinul fototranzisturului:

Serial.print("Valoare analogica citita: ");
Serial.println(val);

    Forma finala a acestui sketch este cea de mai jos:

int senzor = A3;

void setup() {
  Serial.begin(9600);
  pinMode(senzor, INPUT);
}

void loop() {
  int val = analogRead(senzor);
  Serial.print("Valoare analogica citita: ");
  Serial.println(val);
  delay(1000);
}

    La rularea acestui sketch in consola vom obtine urmatorul rezultat:

Observam ca valorile citite in mod analogic au o valoare mai mica in cazul detectiei flacarii!

Nu sunt comentarii in “Modul senzor flacara IR”

Lasa un comentariu

Raspuns lui Some User

Autentificare