Orodha ya maudhui:

Ufuatiliaji wa Arduino CO Kutumia Sensor ya MQ-7: Hatua 8 (na Picha)
Ufuatiliaji wa Arduino CO Kutumia Sensor ya MQ-7: Hatua 8 (na Picha)

Video: Ufuatiliaji wa Arduino CO Kutumia Sensor ya MQ-7: Hatua 8 (na Picha)

Video: Ufuatiliaji wa Arduino CO Kutumia Sensor ya MQ-7: Hatua 8 (na Picha)
Video: Как использовать оптопару Mosfet HW-532 для управления скоростью двигателя постоянного тока до 30 В или нагрузкой с помощью Arduino 2024, Novemba
Anonim
Ufuatiliaji wa Arduino CO Kutumia Sensorer ya MQ-7
Ufuatiliaji wa Arduino CO Kutumia Sensorer ya MQ-7
Ufuatiliaji wa Arduino CO Kutumia Sensorer ya MQ-7
Ufuatiliaji wa Arduino CO Kutumia Sensorer ya MQ-7

Maneno machache kwa nini hii ya kufundisha iliundwa: siku moja mama ya rafiki yangu wa kike alipiga simu katikati ya usiku kwa sababu alihisi mgonjwa sana - alikuwa na kizunguzungu, tachycardia, kichefuchefu, shinikizo la damu, hata akazimia kwa wakati usiojulikana (labda ~ 5 dakika, lakini hakuna njia ya kusema), yote bila sababu yoyote dhahiri. Anaishi katika kijiji kidogo mbali na hospitali (kilomita 60 kutoka mahali petu, kilomita 30 hadi hospitali ya karibu zaidi, kilomita 10 bila barabara yoyote ya kawaida katikati), kwa hivyo tulimkimbilia na kufika hapo mara tu baada ya gari la wagonjwa. Alilazwa hospitalini na asubuhi alihisi karibu mzima, lakini madaktari hawakuweza kupata sababu yake. Siku iliyofuata tulikuwa na wazo: inaweza kuwa sumu ya CO, kwa kuwa ana boiler ya maji ya gesi (kwenye picha), na alikuwa amekaa karibu nayo kwa jioni nzima wakati ilitokea. Hivi karibuni tulinunua sensa ya MQ-7 CO, lakini hakuwahi kupata wakati wa kukusanya skimu hiyo, kwa hivyo huu ulikuwa wakati mzuri wa kufanya hivyo. Baada ya saa moja ya kutafuta mtandao kwa maagizo yoyote, niligundua kuwa siwezi kupata mwongozo wowote ambao wakati huo huo unafuata maagizo ya mtengenezaji wa sensorer yaliyotolewa kwenye data na kuelezea chochote kabisa (mfano mmoja ulionekana kuwa na nambari nzuri kabisa, lakini haikuwa wazi jinsi ya kuitumia, wengine walirahisishwa na hawangefanya kazi vizuri). Kwa hivyo tulitumia kama masaa 12 kwa kuunda skimu, kutengeneza na kuchapisha kesi 3d, kupima na kupima sensa, na siku iliyofuata tukaenda kwenye boiler inayoshukiwa. Ilibadilika kuwa viwango vya CO kulikuwa na juu sana, na inaweza kuwa mbaya ikiwa wakati wa mfiduo wa CO ulikuwa mrefu zaidi. Kwa hivyo naamini mtu yeyote ambaye ana hali kama hiyo (kama boiler ya gesi au mwako mwingine unaotokea ndani ya nafasi ya kuishi) anapaswa kupata sensorer kama hiyo kuzuia kitu kibaya kutokea.

Yote yaliyotokea wiki mbili zilizopita, tangu wakati huo niliboresha skimu na programu sana, na sasa inaonekana kuwa nzuri na rahisi (sio-3-mistari-ya-nambari rahisi, lakini bado). Ingawa ninatumahi kuwa mtu aliye na mita sahihi ya CO atanipa maoni juu ya usanidi chaguomsingi ambao niliweka kwenye mchoro - nashuku kuwa sio nzuri sana. Hapa kuna mwongozo kamili na data zingine za majaribio.

Hatua ya 1: Muswada wa Vifaa

Muswada wa Vifaa
Muswada wa Vifaa

Utahitaji: 0. Bodi ya Arduino. Ninapendelea aina ya Kichina ya Arduino Nano kwa bei yake bora ya $ 3, lakini arduino yoyote ya 8-bit itafanya kazi hapa. Mchoro hutumia operesheni ya muda wa hali ya juu, na ilijaribiwa tu kwa mdhibiti mdogo wa atmega328 - ingawa labda itafanya kazi vizuri kwa wengine pia. Sensor ya MQ-7 CO. Inapatikana sana na moduli hii ya sensa ya Samaki ya Kuruka, inapaswa kupitia muundo mdogo, maelezo katika hatua inayofuata, au unaweza kutumia chombo cha kutenganisha cha MQ-7sensor.

2. transistor ya bipolar ya NPN. Karibu transistor yoyote ya NPN inayoweza kushughulikia 300 mA au zaidi itafanya kazi hapa. Transistor ya PNP haifanyi kazi na moduli ya Samaki ya Kuruka ya Ndege (kwa sababu ina pini ya heater iliyouzwa kwa pato la sensorer), lakini inaweza kutumika na sensa ya MQ-7.

3. Resistors: 2 x 1k (kutoka 0.5k hadi 1.2k itafanya kazi vizuri), na 1 x 10k (hiyo inahifadhiwa vizuri zaidi - ingawa ikiwa lazima utumie thamani tofauti, rekebisha kutofautisha kwa reference_resistor_kOhm kwenye mchoro ipasavyo).

4. Capacitors: 2 x 10uF au zaidi. Tantalum au kauri zinahitajika, umeme hautafanya kazi vizuri kwa sababu ya kiwango cha juu cha ESR (hawataweza kutoa sasa ya kutosha kulainisha mteremko wa hali ya juu).5. LED za kijani na nyekundu kuonyesha kiwango cha sasa cha CO (unaweza pia kutumia LED moja-rangi mbili na vituo 3, kama tulivyotumia kwenye mfano wa sanduku la manjano).6. Buzzer ya piezo kuonyesha kiwango cha juu cha CO.7. Bodi ya mkate na waya (unaweza pia kuuzia kila kitu kwenye pini za Nano au kubana kwenye soketi za Uno, lakini ni rahisi kufanya makosa kwa njia hii).

Hatua ya 2: Marekebisho ya Moduli au Wiring ya Sura ya Diski

Marekebisho ya Moduli au Wiring ya Sura ya Diski
Marekebisho ya Moduli au Wiring ya Sura ya Diski

Kwa moduli, lazima ubadilishe kipimaji na capacitor, kama inavyoonyeshwa kwenye picha. Unaweza kufuta kila kitu kimsingi ikiwa unataka - moduli ya umeme haina maana kabisa, tunaitumia tu kama mmiliki wa sensa yenyewe, lakini vifaa hivi viwili vitakuzuia kupata usomaji sahihi, Ikiwa unatumia sensorer discrete, ambatanisha pini za heater (H1 na H2) kwa 5V na mtoza ushuru sawa. Ambatisha upande mmoja wa kuhisi (yoyote ya pini A) hadi 5V, upande mwingine wa kuhisi (yoyote ya pini B) kwa kontena la 10k, kama pini ya analog ya moduli katika skimu.

Hatua ya 3: Kanuni ya Uendeshaji

Kanuni ya Uendeshaji
Kanuni ya Uendeshaji
Kanuni ya Uendeshaji
Kanuni ya Uendeshaji

Kwa nini tunahitaji shida hizi kabisa, kwanini tusiambatanishe 5V, ardhi, na upate usomaji tu? Kwa kweli, hautapata chochote muhimu kwa njia hii, kwa bahati mbaya. na mzunguko wa joto la chini ili kupata vipimo sahihi. Wakati wa joto la chini, CO huingizwa kwenye bamba, ikitoa data yenye maana. Wakati wa joto la juu, CO iliyofyonzwa na misombo mingine hupuka kutoka sahani ya sensorer, kuitakasa kwa kipimo kinachofuata.

Kwa hivyo katika utendaji wa jumla ni rahisi:

1. Tumia 5V kwa sekunde 60, usitumie usomaji huu kwa kipimo cha CO.

2. Tumia 1.4V kwa sekunde 90, tumia usomaji huu kwa kipimo cha CO.

3. Nenda hatua ya 1.

Lakini hapa kuna shida: Arduino haiwezi kutoa nguvu ya kutosha kuendesha sensor hii kutoka kwa pini zake - hita ya sensorer inahitaji 150 mA, wakati pini ya Arduino haiwezi kutoa zaidi ya 40 mA, kwa hivyo ikiwa ikiambatanishwa moja kwa moja, pini ya Arduino itawaka na sensa bado imeshinda kazi. Kwa hivyo lazima tutumie aina fulani ya kipaza sauti cha sasa ambacho kinachukua sasa pembejeo ndogo kudhibiti pato kubwa la sasa. Shida nyingine ni kupata 1.4V. Njia pekee ya kupata kwa uaminifu thamani hii bila kuanzisha vifaa vingi vya analog ni kutumia njia ya PWM (Pulse Width Modulation) na maoni ambayo yatadhibiti voltage ya pato.

Transistor ya NPN hutatua shida zote mbili: wakati inawashwa kila wakati, voltage kwenye sensor ni 5V na inapokanzwa kwa awamu ya joto la juu. Tunapotumia PWM kwa pembejeo yake, sasa ni kusukuma, basi husafishwa na capacitor, na wastani wa voltage huwekwa kila wakati. Ikiwa tunatumia masafa ya juu PWM (katika mchoro ina masafa ya 62.5KHz) na wastani wa usomaji mwingi wa analogi (katika mchoro tuna wastani wa usomaji ~ 1000), basi matokeo ni ya kuaminika kabisa.

Ni muhimu kuongeza capacitors kulingana na hesabu. Picha hapa zinaonyesha tofauti ya ishara na bila C2 capacitor: bila hiyo, PWM ripple inaonekana wazi na inaharibu sana usomaji.

Hatua ya 4: Skematiki na ubao wa mkate

Skimu na ubao wa mkate
Skimu na ubao wa mkate
Skimu na ubao wa mkate
Skimu na ubao wa mkate
Skimu na ubao wa mkate
Skimu na ubao wa mkate

Hapa kuna mkutano wa skimu na mkate.

ONYO! Marekebisho ya moduli ya kuzuka ya kawaida inahitajika! Bila moduli ya kubadilisha haina maana. Marekebisho yameelezewa katika hatua ya pili

Ni muhimu kutumia pini D9 na D10 kwa LED, kwani huko tuna matokeo ya vifaa vya Timer1, itaruhusu kubadilisha rangi zao vizuri. Pini D5 na D6 hutumiwa kwa buzzer, kwa sababu D5 na D6 ni matokeo ya Timer0 ya vifaa. Tutazisanidi zigeuke kuwa moja kwa moja, kwa hivyo zitabadilika kati ya (5V, 0V) na (0V, 5V), na hivyo kutoa sauti kwenye buzzer. Onyo: hii inathiri usumbufu kuu wa wakati wa Arduino, kwa hivyo kazi zote zinazotegemea wakati (kama millis ()) hazitatoa matokeo sahihi katika mchoro huu (zaidi juu ya hii baadaye). D11 - lakini sio rahisi kuweka waya kwenye D11 kuliko kwa D3) - kwa hivyo tunaitumia kutoa PWM kwa transistor inayodhibiti voltage. Resistor R1 hutumiwa kudhibiti mwangaza wa LED. Inaweza kuwa mahali popote kutoka 300 hadi 3000 Ohm, 1k ni bora katika mwangaza / matumizi ya nguvu. Resistor R2 hutumiwa kupunguza msingi wa sasa wa transistor. Haipaswi kuwa chini ya 300 Ohms (usipakie pini ya Arduino), na sio juu kuliko 1500 Ohms. 1k kuna chaguo salama.

Resistor R3 hutumiwa kwa safu na sahani ya sensa ili kuunda mgawanyiko wa voltage. Voltage juu ya pato la sensa ni sawa na R3 / (R3 + Rs) * 5V, ambapo Rs ni upinzani wa sensa ya sasa. Upinzani wa sensorer hutegemea mkusanyiko wa CO, kwa hivyo voltage hubadilika ipasavyo. Capacitor C1 hutumiwa kulainisha umeme wa PWM kwenye sensorer ya MQ-7, juu ni uwezo wake bora, lakini pia inapaswa kuwa na ESR ya chini - hivyo kauri (au tantalum). capacitor inapendelea hapa, elektroliti moja haitafanya vizuri.

Capacitor C2 hutumiwa kulainisha pato la analoji ya sensorer (voltage ya pato inategemea voltage ya pembejeo - na tuna PWM ya hali ya juu hapa, ambayo inaathiri skimu zote, kwa hivyo tunahitaji C2). Suluhisho rahisi ni kutumia capacitor sawa na C1. NPN transistor inaweza kufanya sasa wakati wote kutoa hali ya juu kwenye hita ya sensa, au inafanya kazi katika hali ya PWM na hivyo kupunguza joto la sasa.

Hatua ya 5: Programu ya Arduino

Programu ya Arduino
Programu ya Arduino

ONYO: SENSOR INAHITAJI HALI YA MWONGOZO KWA MATUMIZI YOYOTE YENYE MAZOEZI. BILA KULIBANISHA, K kutegemeana na vielelezo vya SENSOR YAKO HABARI, Mchoro HUU UNAWEZA KUGEUKA KWA ALARM KWENYE HEWA SAFI AU SI KUGUNDUA KONKONESI YA MONOXIDE YA SONI

Usawazishaji umeelezewa katika hatua zifuatazo. Upimaji mbaya ni rahisi sana, sahihi ni ngumu sana.

Kwa kiwango cha jumla, mpango ni rahisi:

Kwanza tunarekebisha PWM yetu ili kutoa 1.4V thabiti inayohitajika na sensorer (upana sahihi wa PWM inategemea vigezo vingi kama maadili halisi ya kipinga, upinzani huu wa sensa, mkondo wa VA wa transistor nk nk - kwa hivyo njia bora ni kujaribu maadili anuwai na tunatumia moja inayofaa zaidi. Halafu, tunaendelea kukimbia kwa mzunguko wa sekunde 60 inapokanzwa na kipimo cha sekunde 90. Katika utekelezaji inakuwa ngumu sana. Tunapaswa kutumia vipima muda kwa sababu kila kitu tunacho hapa kinahitaji PWM thabiti ya masafa ya juu ili kufanya kazi vizuri. Nambari imeambatanishwa hapa na inaweza kupakuliwa kutoka kwa github yetu, na pia chanzo cha skimu huko Fritzing. Kazi 3 ambazo zinashughulikia vipima muda: shughulikia kila kitu ndani. na weka maadili sahihi ya muda wa kubadilisha kati ya 5V na 1.4V inapokanzwa. Hali ya LED imewekwa na setLEDs ya kazi ambayo inakubali mwangaza wa kijani na nyekundu kwenye pembejeo yake (kwa kiwango cha 1-100) na kuibadilisha kuwa mpangilio wa timer unaofanana.

Hali ya Buzzer inadhibitiwa kwa kutumia kazi buzz_on, buzz_off, buzz_beep. Zima / zima kazi za kuwasha na kuzima sauti, kazi ya beep hutoa mlolongo maalum wa kulia na kipindi cha sekunde 1.5 ikiwa inaitwa mara kwa mara (kazi hii inarudi mara moja kwa hivyo haisitishi programu kuu - lakini lazima uiita mara kwa mara kutoa muundo wa kulia).

Mpango wa kwanza hufanya kazi pwm_rekebisha ambayo hupata upana sahihi wa mzunguko wa PWM ili kufikia 1.4V wakati wa awamu ya kipimo. Halafu inalia mara chache kuonyesha kwamba sensa iko tayari, inabadilika kuwa awamu ya kipimo, na huanza kitanzi kuu.

Katika kitanzi kuu, mpango unakagua ikiwa tulitumia muda wa kutosha katika awamu ya sasa (sekunde 90 kwa awamu ya kipimo, sekunde 60 kwa awamu ya kupokanzwa) na ikiwa ndio, basi hubadilisha awamu ya sasa. Pia inasasisha usomaji wa sensa kila mara kwa kutumia uboreshaji wa kielelezo: new_value = 0.999 * old_value + 0.001 * new_reading. Na vigezo vile na mzunguko wa kupimia, ni wastani wa ishara zaidi ya millisekunde 300 za mwisho. BILA KULIBANISHA, K kutegemeana na vielelezo vya SENSOR YAKO HABARI, Mchoro HUU UNAWEZA KUGEUKA KWA ALARM KWENYE HEWA SAFI AU SI KUGUNDUA KONKONESI YA MONOXIDE YA SONI.

Hatua ya 6: Kwanza Run: Nini cha Kutarajia

Kwanza Run: Nini cha Kutarajia
Kwanza Run: Nini cha Kutarajia

Ikiwa umekusanya kila kitu vizuri, baada ya kutumia mchoro utaona kitu kama hiki katika ufuatiliaji wa Serial:

kurekebisha PWM w = 0, V = 4.93

kurekebisha PWM w = 17, V = 3.57PWM matokeo: upana 17, voltage 3.57

na kisha safu ya nambari zinazowakilisha usomaji wa sensorer ya sasa. Sehemu hii inarekebisha upana wa PWM ili kutoa voltage ya hita ya sensorer karibu na 1.4V iwezekanavyo, voltage iliyopimwa hutolewa kutoka 5V, kwa hivyo thamani yetu bora ni 3.6V. Ikiwa mchakato huu hautaisha au kuishia baada ya hatua moja (na kusababisha upana sawa na 0 au 254) - basi kuna kitu kibaya. Angalia ikiwa transistor yako ni NPN kweli na imeunganishwa vizuri (hakikisha umetumia msingi, mtoza, emitter pini kulia - msingi huenda kwa D3, mtoza kwa MQ-7 na emitter chini, usitegemee mtazamo wa Fritzing wa bodi ya mkate - ni vibaya kwa transistors zingine) na hakikisha umeunganisha pembejeo ya sensa kwa uingizaji wa Arduino A1. Ikiwa kila kitu ni sawa, unapaswa kuona katika Serial Plotter kutoka Arduino IDE kitu sawa na picha. Inapokanzwa na kupima mizunguko ya urefu wa sekunde 60 na 90 zinaendesha moja baada ya nyingine, na CO ppm imepimwa na kusasishwa mwishoni mwa kila mzunguko. Unaweza kuchukua moto wazi karibu na kihisi wakati mzunguko wa kipimo umekaribia kumaliza na uone jinsi itaathiri usomaji (kulingana na aina ya moto, inaweza kutoa hadi mkusanyiko wa 2000 ppm CO katika hewa wazi - kwa hivyo ingawa ni sehemu ndogo tu ya inaingia kwenye sensorer, bado itawasha kengele, na haitazima hadi mwisho wa mzunguko unaofuata). Niliionyesha kwenye picha, na pia majibu ya moto kutoka kwa nyepesi.

Hatua ya 7: Usawazishaji wa Sensorer

Usawazishaji wa Sensorer
Usawazishaji wa Sensorer
Usawazishaji wa Sensorer
Usawazishaji wa Sensorer

Kulingana na data ya mtengenezaji, sensa inapaswa kuendesha mizunguko ya kupokanzwa-baridi kwa masaa 48 mfululizo kabla ya kuwekewa kipimo. Na unapaswa kuifanya ikiwa unakusudia kuitumia kwa muda mrefu: kwa upande wangu, kusoma kwa sensa katika hewa safi ilibadilika kwa karibu 30% kwa masaa 10. Ikiwa hautazingatia hili, unaweza kupata matokeo ya 0 ppm ambapo kwa kweli kuna 100 ppm ya CO. Ikiwa hautaki kusubiri kwa masaa 48, unaweza kufuatilia pato la sensa mwishoni mwa mzunguko wa kipimo. Wakati zaidi ya saa haitabadilika kwa zaidi ya alama 1-2 - unaweza kuacha kupasha moto hapo.

Upimaji mbaya:

Baada ya kutumia mchoro kwa angalau masaa 10 katika hewa safi, chukua thamani ya sensoji mbichi mwishoni mwa mzunguko wa kipimo, sekunde 2-3 kabla ya awamu ya kupokanzwa kuanza, na uiandike katika utaftaji wa sensor_reading_clean_air (mstari 100). Hiyo ndio. Programu itakadiria vigezo vingine vya sensorer, haitakuwa sahihi, lakini inapaswa kuwa ya kutosha kutofautisha kati ya mkusanyiko wa 10 na 100 ppm.

Usahihi sahihi:

Ninapendekeza kupata mita ya sanifu ya CO, fanya sampuli 100 ppm CO (hii inaweza kufanywa kwa kuchukua gesi ya flue kwenye sindano - mkusanyiko wa CO kunaweza kuwa katika anuwai ya maelfu kadhaa ppm - na kuiweka polepole kwenye jar iliyofungwa na mita iliyosawazishwa na sensa ya MQ-7), chukua usomaji wa sensa ghafi kwenye mkusanyiko huu na uweke katika utaftaji wa sensor_reading_100_ppm_CO. Bila hatua hii, kipimo chako cha ppm kinaweza kuwa kibaya mara kadhaa katika mwelekeo wowote (bado ni sawa ikiwa unahitaji kengele kwa mkusanyiko hatari wa CO nyumbani, ambapo kawaida haipaswi kuwa na CO kabisa, lakini sio nzuri kwa matumizi yoyote ya viwandani).

Kwa kuwa sikuwa na mita yoyote ya CO, nilitumia njia ya kisasa zaidi. Kwanza niliandaa mkusanyiko mkubwa wa CO kwa kutumia mwako kwa sauti iliyotengwa (picha ya kwanza). Katika jarida hili nimepata data muhimu zaidi, pamoja na mavuno ya CO kwa aina tofauti za moto - haiko kwenye picha, lakini jaribio la mwisho lilitumia mwako wa gesi ya propane, na usanidi huo huo, na kusababisha mkusanyiko wa ~ 5000 ppm CO. Kisha ikapunguzwa 1:50 ili kufikia 100 ppm, kama inavyoonyeshwa kwenye picha ya pili, na ilitumika kuamua sehemu ya kumbukumbu ya sensorer.

Hatua ya 8: Takwimu zingine za Majaribio

Takwimu zingine za Majaribio
Takwimu zingine za Majaribio

Kwa upande wangu, sensor ilifanya kazi vizuri - sio nyeti sana kwa viwango vya chini sana, lakini inatosha kugundua kitu chochote cha juu kuliko 50ppm. Nilijaribu kuongeza mkusanyiko hatua kwa hatua, kuchukua vipimo, na kujenga seti ya chati. Kuna seti mbili za mistari ya 0ppm - kijani safi kabla ya mfiduo wa CO na kijani kibichi baada. Sensorer inaonekana kubadilisha kidogo upinzani wake safi wa hewa baada ya kufichuliwa, lakini athari hii ni ndogo. Haionekani kuwa na uwezo wa kutofautisha wazi kati ya mkusanyiko wa 8 na 15, 15 na 26, 26 na 45 ppm - lakini mwelekeo ni wazi sana, kwa hivyo inaweza kujua ikiwa mkusanyiko uko katika anuwai ya 0-20 au 40-60 ppm. Kwa utegemezi wa viwango vya juu ni tofauti zaidi - unapofichuliwa na moto wazi, curve huenda juu kutoka mwanzo bila kushuka kabisa, na mienendo yake ni tofauti kabisa. Kwa hivyo kwa viwango vya juu hakuna shaka kuwa inafanya kazi kwa uaminifu, ingawa siwezi kuthibitisha usahihi wake kwani sina mita yoyote ya CO iliyokadiriwa. Pia, seti hii ya majaribio ilifanywa kwa kutumia kontena la mzigo wa 20k - na baada ya hapo niliamua kupendekeza 10k kama thamani chaguo-msingi, inapaswa kuwa nyeti zaidi kwa njia hii. Ikiwa una mita ya kuaminika ya CO na utakuwa umekusanya bodi hii, tafadhali shiriki maoni kadhaa juu ya usahihi wa sensorer - itakuwa nzuri kukusanya takwimu juu ya sensorer anuwai na kuboresha mawazo ya mchoro chaguomsingi.

Ilipendekeza: