- Газов сензор MQ6
- Как да се измери PPM с помощта на сензори MQ Gas?
- Необходими компоненти
- Схематично
- MQ сензор с PIC програмиране
Газовите сензори от серията MQ са много често срещани видове сензори, използвани в газовите детектори за откриване или измерване на определени видове газове. Тези сензори се използват широко във всички газови устройства, като от обикновени детектори за дим до промишлени монитори за качество на въздуха. Вече използвахме тези газови сензори MQ с Arduino за измерване на някои вредни газове като амоняк. В тази статия ще научим как да използваме тези газови сензори с PIC микроконтролери, за да измерим PPM стойността на газа и да го покажем на 16x2 LCD.
Както бе споменато по-рано, на пазара се предлагат различни видове сензори от серията MQ и всеки сензор може да измерва различни видове газове, както е показано в таблицата по-долу. Поради тази статия ще използваме сензора за газ MQ6 с PIC, който може да се използва за откриване на присъствие и концентрация на LPG газ. Чрез използване на същия хардуер и фърмуер, други сензори от серия MQ също могат да се използват без значителни промени в кода и хардуерната част.
Сензор | Открива |
MQ-2 | Метан, бутан, пропан-бутан, дим |
MQ-3 | Алкохол, етанол, дим |
MQ-4 | Метан, СПГ газ |
MQ-5 | Природен газ, пропан-бутан |
MQ-6 | Пропан-бутан, газ бутан |
MQ-7 | Въглероден окис |
MQ-8 | Водороден газ |
MQ-9 | Въглероден окис, запалими газове. |
MQ131 | Озон |
MQ135 | Качество на въздуха (бензен, алкохол, дим) |
MQ136 | Водороден сулфиден газ |
MQ137 | Амоняк |
MQ138 | Бензен, толуен, алкохол, ацетон, пропан, газ формалдехид, водород |
MQ214 | Метан, Природен газ |
MQ216 | Природен газ, въглищен газ |
MQ303A | Алкохол, етанол, дим |
MQ306A | Пропан-бутан, газ бутан |
MQ307A | Въглероден окис |
MQ309A | Въглероден окис, запалими газове |
MG811 | Въглероден диоксид (CO2) |
AQ-104 | Качество на въздуха |
Газов сензор MQ6
Долното изображение показва диаграмата на щифтовете на сензора MQ6. Въпреки това, лявото изображение е базиран на модул сензор MQ6 за взаимодействие с микроконтролера, пин схемата на модула също е показана на това изображение.
Pin 1 е VCC, Pin 2 е GND, Pin 3 е Digital out (Logic low при откриване на газ.) И Pin 4 е аналогов изход. Потът се използва за регулиране на чувствителността. Не е RL. RL резисторът е десният резистор на DOUT LED.
Всеки сензор от серия MQ има нагревателен елемент и сензорно съпротивление. В зависимост от концентрацията на газа чувствителното съпротивление се променя и чрез откриване на променящото се съпротивление може да се измери концентрацията на газа. За измерване на концентрацията на газ в PPM всички MQ сензори предоставят логаритмична графика, която е много важна. Графиката предоставя преглед на концентрацията на газ със съотношението на RS и RO.
Как да се измери PPM с помощта на сензори MQ Gas?
RS е чувствителната устойчивост по време на присъствието на определен газ, докато RO е чувствителната устойчивост в чист въздух без конкретен газ. Долната логаритмична графика, взета от листа с данни, предоставя преглед на концентрацията на газ с чувствителното съпротивление на сензора MQ6. Сензорът MQ6 се използва за откриване на концентрация на LPG газ. Следователно сензорът MQ6 ще осигури специално съпротивление по време на чист въздух, когато LPG газът е недостъпен. Също така съпротивлението ще се промени всеки път, когато LPG газът бъде открит от сензора MQ6.
И така, трябва да начертаем тази графика в нашия фърмуер, подобно на това, което направихме в нашия проект за детектор за газ Arduino. Формулата е да има 3 различни точки от данни. Първите две точки с данни са началото на LPG кривата в координати X и Y. Третата информация е наклонът.
Така че, ако изберем дълбоката синя крива, която е кривата на LPG, началото на кривата в координатите X и Y е 200 и 2. И така, първата точка от данните от логаритмичната скала е (log200, log2), което е (2,3, 0,30).
Нека го направим като, X1 и Y1 = (2.3, 0.30). Краят на кривата е втората точка от данни. По същия процес, описан по-горе, X2 и Y2 са (log 10000, log0.4). По този начин X2 и Y2 = (4, -0,40). За да получите наклона на кривата, формулата е
= (Y2-Y1) / (X2-X1) = (- 0,40 - 0,30) / (4 - 2,3) = (-0,70) / (1,7) = -0,41
Графиката, от която се нуждаем, може да бъде дадена като
LPG_Curve = {начална X и начална Y, наклон} LPG_Curve = {2.3, 0.30, -0.41}
За други MQ сензори вземете горните данни от листа с данни и графиката на логаритмичната графика. Стойността ще се различава в зависимост от измерения сензор и газ. За този конкретен модул той има цифров щифт, който предоставя само информация за наличен или не газ. За този проект той също се използва.
Необходими компоненти
Необходимите компоненти за свързване на MQ сензор с PIC микроконтролер са дадени по-долу -
- 5V захранване
- Макет
- 4.7k резистор
- LCD 16x2
- 1k резистор
- 20Mhz кристал
- 33pF кондензатор - 2бр
- Микроконтролер PIC16F877A
- Сензор от серия MQ
- Berg и други свързващи проводници.
Схематично
Схемата за този газов сензор с PIC проект е доста права. Аналоговият щифт е свързан с RA0, а цифровият с RD5 за измерване на аналоговото напрежение, осигурено от модула на газовия сензор. Ако сте напълно нови за PIC, тогава може да искате да разгледате PIC ADC урок и PIC LCD урок, за да разберете по-добре този проект.
Веригата е изградена в макет. След като връзките са завършени, моята настройка изглежда така, показано по-долу.
MQ сензор с PIC програмиране
Основната част на този код е основната функция и други свързани периферни функции. Пълната програма може да бъде намерена в долната част на тази страница, важните кодови фрагменти са обяснени както следва
Функцията по-долу се използва за получаване на стойността на съпротивлението на сензора във свободен въздух. Тъй като се използва аналогов канал 0, той получава данни от аналоговия канал 0. Това е за калибриране на сензора MQ Gas.
float SensorCalibration () { int count; // Тази функция ще калибрира сензора в свободен въздушен поплавък val = 0; за (count = 0; count <50; count ++) {// вземете множество проби и изчислете средната стойност val + = калкулирайте_съпротивление (ADC_Read (0)); __delay_ms (500); } val = val / 50; val = val / RO_VALUE_CLEAN_AIR; // разделено на RO_CLEAN_AIR_FACTOR дава връщащата клапа Ro ; }
Функцията отдолу се използва за отчитане на аналоговите стойности на сензора MQ и усредняването му за изчисляване на стойността на Rs
float read_MQ () { int count; плувка rs = 0; for (count = 0; count <5; count ++) {// вземете няколко показания и го осреднете. rs + = изчисли_съпротивление (ADC_Read (0)); // rs се променя според концентрацията на газ. __забавяне_ms (50); } rs = rs / 5; връщане rs; }
Функцията по-долу се използва за изчисляване на съпротивлението от резистора на делителя на напрежението и съпротивлението на товара.
float изчисли_съпротивление (int adc_channel) {// сензорът и натоварващият резистор образуват делител на напрежението. така че използвайки аналогова стойност и връщане на стойността на зареждане (((с плаващ) RL_VALUE * (1023-adc_channel) / adc_channel)); // ще намерим сензорен резистор. }
RL_VALUE се дефинира в началото на кода, както е показано по-долу
#define RL_VALUE (10) // дефинираме съпротивлението на натоварване на платката, в килооми
Променете тази стойност след проверка на бордовото съпротивление на натоварване. Тя може да бъде различна в други MQ сензорни платки. За да нанесете наличните данни в дневника, се използва функцията по-долу.
int gas_plot_log_scale (float rs_ro_ratio, float * curve) { return pow (10, (((log (rs_ro_ratio)-curve) / curve) + curve)); }
Кривата е LPG кривата, дефинирана по-горе на кода, който преди това е изчислен в нашата статия по-горе.
плаващ MQ6_ крива = {2.3,0.30, -0.41}; // Графичен график, променете това за конкретен сензор
И накрая, основната функция, в която измерваме аналоговата стойност, изчисляваме PPM и я показваме на LCD, е дадена по-долу
void main () { system_init (); clear_screen (); lcd_com (FIRST_LINE); lcd_puts ("Калибриране…."); Ro = SensorCalibration (); // clear_screen (); lcd_com (FIRST_LINE); lcd_puts ("Готово!"); // clear_screen (); lcd_com (FIRST_LINE); lcd_print_number (Ro); lcd_puts ("K ома"); __delay_ms (1500); откриване на газ = 0; while (1) { if (gas_detect == 0) { lcd_com (FIRST_LINE); lcd_puts ("Газът присъства"); lcd_com (SECOND_LINE); lcd_puts ("газ ppm ="); float rs = read_MQ (); съотношение на поплавък = rs / Ro; lcd_print_number (gas_plot_log_scale (съотношение, MQ6_ curve)); __delay_ms (1500); clear_screen (); } друго { lcd_com (FIRST_LINE); lcd_puts ("Не присъства газ"); } } }
Първо, RO се измерва в чист въздух. След това се чете цифровият щифт, за да се провери дали газът присъства или не. Ако газът присъства, той се измерва чрез предоставената крива за пропан-бутан.
Използвал съм запалка, за да проверя дали стойността на PPM се променя при откриване на газ. Тези запалки имат вътре в себе си LPG газ, който при пускане във въздуха ще се отчита от нашия сензор и стойността на PPM на LCD се променя, както е показано по-долу.
Цялата работа може да бъде намерена във видеото, дадено в долната част на тази страница. Ако имате въпроси, оставете ги в раздела за коментари или използвайте форумите ни за други технически въпроси.