חיישני גז מסדרת MQ הם סוגים נפוצים מאוד של חיישנים המשמשים בגלאי גז לאיתור או מדידה של סוגים מסוימים של גזים. חיישנים אלה נמצאים בשימוש נרחב בכל המכשירים הקשורים לגז, כמו מגלאי עשן פשוטים ועד צגי איכות אוויר תעשייתיים. כבר השתמשנו בחיישני גז MQ אלה עם ארדואינו למדידת כמה גזים מזיקים כמו אמוניה. במאמר זה נלמד כיצד להשתמש בחיישני גז אלה עם מיקרו-בקרים של PIC, כדי למדוד את ערך ה- PPM של הגז ולהציג אותו על גבי LCD בגודל 16x2.
כאמור, ישנם סוגים שונים של חיישני סדרת MQ הזמינים בשוק וכל חיישן יכול למדוד סוגים שונים של גזים כפי שמוצג בטבלה שלהלן. לצורך מאמר זה נשתמש בחיישן הגז MQ6 עם PIC שניתן להשתמש בו לגילוי נוכחות גז גפ"מ וריכוזם. עם זאת, באמצעות אותה חומרה וקושחה ניתן להשתמש בחיישנים אחרים מסדרת MQ ללא שינוי משמעותי בחלק הקוד והחומרה.
חיישן | מגלה |
MQ-2 | מתאן, בוטאן, גפ"מ, עשן |
MQ-3 | אלכוהול, אתנול, עשן |
MQ-4 | מתאן, CNG Gas |
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 מבוסס מודול להתממשקות ליחידת המיקרו-בקר, דיאגרמת הסיכות של המודול מוצגת גם באותה תמונה.
סיכה 1 היא VCC, סיכה 2 היא GND, סיכה 3 היא יציאה דיגיטלית (לוגיקה נמוכה כאשר מתגלה גז.) וסיכה 4 היא פלט אנלוגי. הסיר משמש להתאמת הרגישות. זה לא RL. הנגד RL הוא הנגד הנכון של נורית ה- DOUT.
כל חיישן סדרת MQ יש גוף חימום לבין התנגדות חישה. בהתאם לריכוז הגז, עמידות החישה משתנה ועל ידי גילוי ההתנגדות המשתנה ניתן למדוד את ריכוז הגז. כדי למדוד את ריכוז הגז ב- PPM כל חיישני ה- MQ מספקים גרף לוגריתמי שחשוב מאוד. הגרף מספק סקירה של ריכוז הגז ביחס RS ו- RO.
כיצד למדוד PPM באמצעות חיישני MQ Gas?
ה- RS הוא התנגדות החישה בזמן נוכחות של גז מסוים ואילו ה- RO הוא התנגדות החישה באוויר נקי ללא שום גז מסוים. הגרף הלוגריתמי להלן שנלקח מגליון הנתונים מספק סקירה של ריכוז הגז עם עמידות החישה של חיישן MQ6. חיישן MQ6 משמש לזיהוי ריכוז גז גפ"מ. לכן חיישן MQ6 יספק התנגדות מסוימת במהלך מצב האוויר הנקי שבו גז הגפ"מ אינו זמין. כמו כן, ההתנגדות תשתנה בכל פעם שמתגלה גז הגפ"מ על ידי חיישן MQ6.
אז עלינו לשרטט את הגרף הזה לקושחה שלנו בדומה למה שעשינו בפרויקט גלאי הגז של ארדואינו. הנוסחה היא שיהיו 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
- ברג וחוטי חיבור אחרים.
סכמטי
התרשים עבור חיישן הגז הזה עם פרויקט PIC הוא די ישר קדימה. הפין האנלוגי מחובר ל- RA0 ולדיגיטלי עם ה- RD5 למדידת המתח האנלוגי שמספק מודול חיישן הגז. אם אתה חדש לגמרי ב- PIC, כדאי לך לבחון את ההדרכה של PIC ADC והדרכה של PIC LCD כדי להבין טוב יותר את הפרויקט הזה.
המעגל בנוי על קרש לחם. לאחר השלמת החיבורים, ההתקנה שלי נראית כך, המוצגת למטה.
חיישן MQ עם תכנות PIC
החלק העיקרי של קוד זה הוא הפונקציה העיקרית ופונקציות היקפיות אחרות הקשורות. את התוכנית השלם ניתן למצוא בתחתית דף זה, קטעי הקוד החשובים מוסברים כדלקמן
הפונקציה שלהלן משמשת להשגת ערך התנגדות החיישן באוויר חופשי. כאשר משתמשים בערוץ אנלוגי 0, הוא מקבל נתונים מערוץ אנלוגי 0. זה מיועד לכיול חיישן הגז MQ.
float SensorCalibration () { int count; // פונקציה זו תכייל את החיישן בצף אוויר חופשי val = 0; עבור (count = 0; count <50; count ++) {// קח מספר דגימות וחשב את הערך הממוצע val + = calc_resistance (ADC_Read (0)); __השהיית_מס (500); } val = val / 50; val = val / RO_VALUE_CLEAN_AIR; // חלקי RO_CLEAN_AIR_FACTOR מניב את ערך ההחזר Ro ; }
למטה פונקציה משמש לקריאת ערכי אנלוגי חיישן MQ ולממוצע לחישוב ערך Rs
לצוף read_MQ () { ספירת int; צף rs = 0; עבור (count = 0; count <5; count ++) {// קח מספר קריאות וממוצע. rs + = חישוב_התנגדות (ADC_Read (0)); // rs משתנה בהתאם לריכוז הגז. __השהיית_מס (50); } rs = rs / 5; החזר rs; }
הפונקציה שלהלן משמשת לחישוב ההתנגדות מנגד מחלק המתח והתנגדות העומס.
צף חישוב_התנגדות (int adc_channel) {// חיישן ונגד עומס יוצרים מחלק מתח. כך שמשתמשים בערך אנלוגי ובהחזרת ערך העומס (((float) 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_curve = {2.3,0.30, -0.41}; // גרף גרף, שנה זאת עבור חיישן מסוים
לבסוף, הפונקציה העיקרית שבתוכה אנו מודדים את הערך האנלוגי, מחשבים את ה- PPM ומציגים אותו על גבי ה- LCD ניתנת להלן
בטל main () { system_init (); מסך נקי(); lcd_com (FIRST_LINE); lcd_puts ("כיול…."); Ro = כיול חיישנים (); //מסך נקי(); lcd_com (FIRST_LINE); lcd_puts ("בוצע!"); //מסך נקי(); lcd_com (FIRST_LINE); lcd_print_number (Ro); lcd_puts ("K Ohms"); __השהיית_מס (1500); gas_detect = 0; בעוד (1) { אם (gas_detect == 0) { lcd_com (FIRST_LINE); lcd_puts ("גז קיים"); lcd_com (SECOND_LINE); lcd_puts ("גז עמודים לדקה ="); צף rs = read_MQ (); יחס צף = rs / Ro; lcd_print_number (gas_plot_log_scale (ratio, MQ6_curve)); __השהיית_מס (1500); מסך נקי(); } אחר { lcd_com (FIRST_LINE); lcd_puts ("גז לא קיים"); } } }
ראשית, ה- RO של החיישן נמדד באוויר נקי. ואז קוראים את הסיכה הדיגיטלית כדי לבדוק אם הגז קיים או לא. אם הגז קיים, הגז נמדד על ידי עקומת ה- LPG המסופקת.
השתמשתי במצת כדי לבדוק אם ערך ה- PPM משתנה כאשר מתגלה הגז. במצתי סיגרים אלה יש גז גפ"מ, שכאשר ישוחרר באוויר יקרא החיישן שלנו וערך ה- PPM על גבי ה- LCD משתנה כמוצג להלן.
את העבודה המלאה תוכלו למצוא בסרטון המופיע בתחתית עמוד זה. אם יש לך שאלות אנא השאר אותן בסעיף ההערות, או השתמש בפורומים שלנו לשאלות טכניות אחרות.