0,00 €

V košarici ni izdelkov.

0,00 €

V košarici ni izdelkov.

More
    DomovRevijaProgramiranjeDetektor dima z uporabo MQ2 senzorja plina in Arduina

    Detektor dima z uporabo MQ2 senzorja plina in Arduina

    Circuit Digest

    Detektorji dima so zelo uporabni pri zaznavanju dima ali požara v stavbah, prav tako pa so pomembni varnostni parametri.

    V tem članku bomo izdelali vezje detektorja dima, ki ne zaznava le dima v zraku, temveč tudi odčitava in prikazuje raven dima v zraku v PPM (delcih na milijon). To vezje sproži zvočni signal, ko je raven dima višja od 1000 ppm, to mejno vrednost pa lahko v programu spremenite glede na zahteve. To vezje uporablja predvsem senzor dima/plina MQ2 in Arduino za zaznavanje in izračunavanje ravni dima. Senzor plina MQ2 je občutljiv tudi za LPG, alkohol in metan itd.

    Ta detektor dima je mogoče preprosto zgraditi na ploščici za kruh ali ploščici za pike, vendar smo se odločili, da ga zgradimo kot Arduino shield na tiskanem vezju. Za izdelavo tega shielda detektorja dima za Arduino smo uporabili spletni simulator in PCB program EasyEDA. V tem članku je razložen celoten postopek in podana tudi postavitev PCB za ta Arduino shield, tako da lahko naročite tudi ta shield, če ga potrebujete.

    Potrebne komponente:
    Arduino UNO
    Arduino shield za detektor dima (lastna izdelava)
    napajalnik

    Komponente za Arduino shield za detektor dima:
    Senzor dima (MQ2)
    Upora (10k in 1k)
    Buzzer
    16×2 LCD
    10k POT
    LED
    LM358
    trakovi Burg

    Načrtovanje Arduino shielda za detektor dima
    Za načrtovanje Arduino shielda detektorja dima za smo uporabili program EasyEDA, v katerem smo najprej izdelali shemo in jo nato pretvorili v postavitev tiskanega vezja s funkcijo Auto Routing v EasyEDA programu.

    Za načrtovanje sheme in tiskanega vezja za ta shield detektorja dima smo izbrali EasyEDA [1], ki je brezplačno spletno orodje in rešitev na enem mestu za enostaven razvoj projektov elektronike. Ponuja brezplačno izdelavo shem, spice simulacijo, načrtovanje tiskanih vezij in tudi visokokakovostno, a nizkocenovno storitev PCB po meri. V urejevalniku je na voljo veliko število knjižnic komponent, zato lahko enostavno in hitro najdete želene komponente. Tukaj si oglejte celoten priročnik o tem, kako uporabljati Easy EDA [2] za izdelavo shem, postavitev PCB, simulacijo vezij itd.

    Načrtovanje vezja in PCB tega shielda detektorja dima smo objavili, zato lahko sledite povezavi za dostop do sheme vezja in postavitve PCB [3]:

    Na sliki 2 je posnetek zgornjega sloja postavitve PCB iz programa EasyEDA, z izbiro sloja v oknu “Layers” si lahko ogledate kateri koli sloj (Top, Bottom, Topsilk, bottomsilk itd.) PCB.

    Izgled izdelanega PCB vidite na sliki 3.

    Zdaj moramo na shield pritrditi LCD-zaslon in postaviti ta shield detektorja dima na Arduino Nano. Priključke tega shielda poravnajte z Arduinom in ga trdno pritisnite na Arduino. Zdaj samo naložite kodo na Arduino in vklopite vezje in končano je! Vaš detektor dima je pripravljen za testiranje.

    Opis vezja
    V tem vezju detektorja dima z Arduinom smo uporabili senzor plina MQ2 za zaznavanje vnaprej nastavljenega dima v zraku. Za prikaz vrednosti PPM dima se uporablja 16×2 LCD. Za pretvorbo izhodnega signala senzorja dima v digitalno obliko pa uporabljamo integrirano vezje LM358 (ta funkcija ni obvezna). Piskač je nameščen kot alarm, ki se sproži, ko raven dima preseže 1000 PPM.

    Povezave vezja za ta projekt so zelo preproste, imamo vezje komparatorja za primerjavo izhodne napetosti senzorja dima z nastavljeno napetostjo (izhod je priključen na priključek D7). Prav tako je izhod senzorja dima priključen na analogni priključek Arduina (A0). Zvočni signal je priključen na priključek D9. Priključki LCD-ja so enaki kot pri primerih LCD-ja Arduino, ki so na voljo v Arduino IDE (12, 11, 5, 4, 3, 2). Preostale povezave so prikazane v shemi vezja.

    Opis programa
    Program tega projekta je malo težje pripraviti. Za razumevanje izračunov za ta projekt mora uporabnik natančno prebrati podatkovni list senzorja dima MQ2.

    Pri tem moramo odčitati naklon ali krivuljo koncentracije dima v zraku glede na čisti zrak. Po branju podatkovnega lista dobimo nekaj vrednosti, ki jih bomo potrebovali v kodi za izračun ppm dima v zraku. Tu večinoma potrebujemo vrednosti krivulje (vzamemo dve točki iz krivulje), upornost senzorja (bo izračunana v kodi), konstanto čistega zraka (9,83) in upornost obremenitve (uporabil sem 10k).

    Vrednosti krivulj lahko poiščemo iz podatkovnega lista, obremenitveno upornost pa lahko določimo na 5k-54k, nato pa s temi vrednostmi in vzorci dima izračunamo upornost senzorja.

    Vzemite dve točki s krivulje in ju logaritmirajte, kot sta prva točka: (lg200, lg3,4)=(2,3,0,53) in druga točka: (lg10000,lg0,63)=(4,-0,20).

    Nato poiščite naklon krivulje z uporabo formule: (y2-y1)/(x2-x1), nato vzemite eno točko in naklon (-0,44) ter ju uporabite v programu (x, y, naklon).
    Nadalje preverite spodnjo kodo, da boste razumeli izračun.

    Najprej moramo vključiti header datoteko za LCD in zanj določiti priključke. Nato določite vrednosti krivulj in upor bremena.

    #include <LiquidCrystal.h>
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    #define buzzer 9
    #define sensor A0
    #define load_Res 10
    #define air_factor 9.83
    float SmokeCurve[3] ={2.3,0.53,-0.44};
    float Res=0;

    Zdaj moramo v void setup() umeriti modul z uporabo funkcije SensorCalibration:

    void setup()
    {
    lcd.begin(16,2);
    lcd.print(„Calibrating…..“);
    Res = SensorCalibration();
    lcd.print(„Calibration done.“);
    lcd.setCursor(0,1);
    lcd.print(„Res=“);
    lcd.print(Res);
    lcd.print(„kohm“);
    delay(2000);
    lcd.clear();
    pinMode(buzzer, OUTPUT);
    }

    float SensorCalibration()
    {
    int i;
    float val=0;
    val=resistance(50,500);
    val = val/air_factor;
    return val;
    }

    Nato smo v funkciji void loop() izračunali PPM dima z uporabo funkcije za izračun upornosti:

    void loop()
    {
    lcd.setCursor(0,0);
    lcd.print(„SMOKE:“);
    float res=resistance(5,50);
    res/=Res;
    int result=pow(10,(((log(res)-SmokeCurve[1])/SmokeCurve[2]) + SmokeCurve[0]));
    lcd.print(result);
    lcd.print( „ ppm „);
    if(result>1000)
    {
    digitalWrite(buzzer, HIGH);
    delay(2000);
    }
    else
    digitalWrite(buzzer, LOW);
    delay(500);
    }
    float resistance(int samples, int interval)
    {
    int i;
    float res=0;
    for (i=0;i<samples;i++)
    {
    int adc_value=analogRead(sensor);
    res+=((float)load_Res*(1023-adc_value)/adc_value);
    delay(interval);
    }
    res/=samples;
    return res;
    }

    Opomba: Pred umerjanjem modula pustite projekt 10 minut na čistem zraku z vklopljenim napajanjem in nato začnite umerjanje. Postopek umerjanja bo trajal vsaj 25 sekund.

    Tako smo zgradili vezje detektorja dima z Arduinom, ki izračuna in prikaže stopnjo dima v PPM.

    Za ta projekt smo razvili lasten Arduino shield za detektor dima z uporabo storitev načrtovanja PCB EasyEDA.

    Viri:
    1: https://easyeda.com/
    2: http://circuitdigest.com/article/easyeda-for-circuit-design
    3: https://easyeda.com/circuitdigest/Smoke_Detector_Arduino_Shield-kEQca75rN

    Povzeto po:https://circuitdigest.com/microcon troller-projects/arduino-smoke-detector-on-pcb-using-mq2-gas-sensor

     

    https://circuitdigest.com