MQ-serien gassdeteksjon

I dette eksemplet vil vi lære hvordan du oppdager gasser ved hjelp av sensorer i MQ-serien.

I dette eksemplet vil vi lese av sensorens analoge utgangsspenning, og når røyken når et visst nivå vil den røde LED-en lyse. Når utgangsspenningen er under dette nivået, vil en grønn LED være på.

Dette eksemplet skal fungere for alle sensorer i MQ-serien.

Motstanden til sensoren er avhengig av type gass. Disse gassensorene har et innebygd potensiometer som tillater justering av sensorens følsomhet i henhold til nødvendig nøyaktighet.

Hvordan virker det?

Spenningen som sensoren sender ut endres i henhold til røyk-/gassnivået som finnes i atmosfæren. Sensoren gir ut en spenning som er proporsjonal med konsentrasjonen av røyk/gass.

Med andre ord er forholdet mellom spenning og gasskonsentrasjon følgende:

  • Jo høyere gasskonsentrasjon, jo større utgangsspenning
  • Jo lavere gasskonsentrasjon, jo lavere utgangsspenning

Utgangen kan være et analogt signal (A0) som kan leses med en analog inngang på Arduino, ESP eller en hvilken som helst programmerbar mikrokontroller, eller en digital utgang (D0) som er enten høy eller lav avhengig av tilstedeværelsen av gass.

Pin ledninger

  • Alle MQ gasssensorer har 4 pinner:
  • A0: Analog utgang
  • D0: Digitale pinner
  • GND
  • VCC: 5V

Se gjerne på koblingsskjemaet under. Etter at du har koblet til alle komponentene riktig, er det på tide å laste opp den nødvendige koden.

Etter å ha satt opp komponentene, flash denne koden inn i mikrokontrolleren. Juster gjerne verdien av «treskelVerdi» med en annen terskelverdi.

// https://www.fibel.no

int rodLed = 2;
int gronnLed = 1;
int sensorA0 = A0;
// Terskelverdi
int treskelVerdi = 400;

void setup() {
  pinMode(rodLed, OUTPUT);
  pinMode(gronnLed, OUTPUT);
  pinMode(sensorA0, INPUT);
  Serial.begin(115200);
}

void loop() {
  int sensorVerdig = analogRead(sensorA0);

  Serial.print("Pin A0: ");
  Serial.println(sensorVerdig);
  // Sjekker verdien om har nådd terskelverdien
  if (sensorVerdig > treskelVerdi) {
    digitalWrite(rodLed, HIGH);
    digitalWrite(gronnLed, LOW);
  } else {
    digitalWrite(rodLed, LOW);
    digitalWrite(gronnLed, HIGH);
  }
  delay(100);
}

Og følgende er den samme koden skrevet i micropython. Last opp koden til mikrokontrolleren og kjør den. Hvis du er fornøyd med resultatene, endre navn på filen til main.py slik at den kjører automatisk ved oppstart.

from machine import Pin, ADC
from time import sleep

sensorA0 = ADC(Pin(A0))
rod_led = Pin(2, Pin.OUT)
gronn_led = Pin(1, Pin.OUT)
treskelVerdi = 400

while True:
  sensor_verdig = sensorA0.read()
  print("Pin A0:", sensor_value)
  if (sensor_verdig > treskelVerdi):
      rod_led.value(0)
      gronn_led.value(1)
  else:
      rod_led.value(1)
      gronn_led.value(0)
  sleep(0.1)
Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *