- Αισθητήρας αερίου MQ6
- Πώς να μετρήσετε το PPM χρησιμοποιώντας αισθητήρες MQ Gas;
- Απαιτούμενα στοιχεία
- Σχηματικός
- Αισθητήρας MQ με προγραμματισμό PIC
Οι σειρές MQ αισθητήρες αερίου είναι πολύ συνηθισμένοι τύποι αισθητήρων που χρησιμοποιούνται στους ανιχνευτές αερίου για την ανίχνευση ή τη μέτρηση ορισμένων τύπων αερίων. Αυτοί οι αισθητήρες χρησιμοποιούνται ευρέως σε όλες τις συσκευές που σχετίζονται με το αέριο, όπως από απλούς ανιχνευτές καπνού έως βιομηχανικές οθόνες ποιότητας αέρα. Έχουμε ήδη χρησιμοποιήσει αυτούς τους αισθητήρες αερίου MQ με το Arduino για τη μέτρηση ορισμένων επιβλαβών αερίων όπως η Αμμωνία. Σε αυτό το άρθρο, θα μάθουμε πώς να χρησιμοποιούμε αυτούς τους αισθητήρες αερίου με μικροελεγκτές PIC, για να μετρήσουμε την τιμή PPM του αερίου και να το εμφανίσουμε σε οθόνη LCD 16x2.
Όπως αναφέρθηκε προηγουμένως, υπάρχουν διάφορα είδη αισθητήρων σειρών MQ που διατίθενται στην αγορά και κάθε αισθητήρας μπορεί να μετρήσει διαφορετικούς τύπους αερίων όπως φαίνεται στον παρακάτω πίνακα. Για χάρη αυτού του άρθρου, θα χρησιμοποιήσουμε τον αισθητήρα αερίου MQ6 με PIC που μπορεί να χρησιμοποιηθεί για την ανίχνευση της παρουσίας και της συγκέντρωσης αερίου LPG. Ωστόσο, με τη χρήση του ίδιου υλικού και υλικολογισμικού, άλλοι αισθητήρες σειράς MQ μπορούν επίσης να χρησιμοποιηθούν χωρίς σημαντική τροποποίηση στο τμήμα κώδικα και υλικού.
Αισθητήρας | Ανιχνεύει |
MQ-2 | Μεθάνιο, βουτάνιο, υγραέριο, καπνός |
MQ-3 | Αλκοόλ, αιθανόλη, καπνός |
MQ-4 | Μεθάνιο, CNG Gas |
MQ-5 | Φυσικό αέριο, LPG |
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 (Λογική χαμηλή όταν ανιχνεύεται αέριο.) Και το Pin 4 είναι η αναλογική έξοδος. Το δοχείο χρησιμοποιείται για τη ρύθμιση της ευαισθησίας. Δεν είναι RL. Η αντίσταση RL είναι η σωστή αντίσταση του LED DOUT.
Κάθε αισθητήρας σειράς MQ έχει ένα στοιχείο θέρμανσης και αντίσταση ανίχνευσης. Ανάλογα με τη συγκέντρωση του αερίου, η αντίσταση ανίχνευσης αλλάζει και ανιχνεύοντας την μεταβαλλόμενη αντίσταση, μπορεί να μετρηθεί η συγκέντρωση του αερίου. Για τη μέτρηση της συγκέντρωσης αερίου σε PPM όλοι οι αισθητήρες MQ παρέχουν ένα λογαριθμικό γράφημα που είναι πολύ σημαντικό. Το γράφημα παρέχει μια επισκόπηση της συγκέντρωσης αερίου με την αναλογία RS και RO.
Πώς να μετρήσετε το PPM χρησιμοποιώντας αισθητήρες MQ Gas;
Το RS είναι η αντίσταση της αίσθησης κατά την παρουσία ενός συγκεκριμένου αερίου, ενώ το RO είναι η αντίσταση της αίσθησης στον καθαρό αέρα χωρίς ιδιαίτερο αέριο. Το παρακάτω λογαριθμικό γράφημα που λαμβάνεται από το φύλλο δεδομένων παρέχει μια επισκόπηση της συγκέντρωσης αερίου με την αντίσταση αίσθησης του αισθητήρα MQ6. Ο αισθητήρας MQ6 χρησιμοποιείται για την ανίχνευση της συγκέντρωσης αερίου LPG. Επομένως, ο αισθητήρας MQ6 θα παρέχει μια ιδιαίτερη αντίσταση κατά τη διάρκεια του καθαρού αέρα όταν το αέριο LPG δεν είναι διαθέσιμο. Επίσης, η αντίσταση θα αλλάζει κάθε φορά που το αέριο LPG ανιχνεύεται από τον αισθητήρα MQ6.
Επομένως, πρέπει να σχεδιάσουμε αυτό το γράφημα στο υλικολογισμικό μας παρόμοιο με αυτό που κάναμε στο Έργο ανιχνευτή αερίου Arduino. Ο τύπος είναι να υπάρχουν 3 διαφορετικά σημεία δεδομένων. Τα δύο πρώτα σημεία δεδομένων είναι η αρχή της καμπύλης LPG, σε συντεταγμένες Χ και Υ. Τα τρίτα δεδομένα είναι η κλίση.
Έτσι, εάν επιλέξουμε τη βαθιά μπλε καμπύλη που είναι η καμπύλη LPG, η αρχή της καμπύλης σε συντεταγμένες X και Y είναι το 200 και το 2. Έτσι, το πρώτο σημείο δεδομένων από τη λογαριθμική κλίμακα είναι (log200, log2) που είναι (2.3, 0.30).
Ας το κάνουμε ως, X1 και Y1 = (2.3, 0.30). Το τέλος της καμπύλης είναι το δεύτερο σημείο δεδομένων. Με την ίδια διαδικασία που περιγράφεται παραπάνω, τα Χ2 και Υ2 είναι (log 10000, log0.4). Έτσι, Χ2 και Υ2 = (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
- 1 k αντίσταση
- 20Mhz κρύσταλλο
- Πυκνωτής 33pF - 2τμχ
- Μικροελεγκτής PIC16F877A
- Αισθητήρας σειράς MQ
- Berg και άλλα καλώδια σύνδεσης.
Σχηματικός
Το σχήμα για αυτόν τον αισθητήρα αερίου με ένα έργο PIC είναι αρκετά απλό. Ο αναλογικός πείρος συνδέεται με τον RA0 και τον ψηφιακό με τον RD5 για τη μέτρηση της αναλογικής τάσης που παρέχεται από τη μονάδα αισθητήρα αερίου. Εάν είστε εντελώς νέοι στο PIC, τότε ίσως θελήσετε να εξετάσετε το PIC ADC tutorial και το PIC LCD tutorial για να κατανοήσετε καλύτερα αυτό το έργο.
Το κύκλωμα είναι κατασκευασμένο σε ένα breadboard. Μόλις ολοκληρώθηκαν οι συνδέσεις, η ρύθμιση μου μοιάζει με αυτήν, που φαίνεται παρακάτω.
Αισθητήρας MQ με προγραμματισμό PIC
Το κύριο μέρος αυτού του κώδικα είναι η κύρια λειτουργία και άλλες συναφείς περιφερειακές λειτουργίες. Το πλήρες πρόγραμμα βρίσκεται στο κάτω μέρος αυτής της σελίδας, τα σημαντικά αποσπάσματα κώδικα εξηγούνται ως εξής
Η παρακάτω λειτουργία χρησιμοποιείται για τη λήψη της τιμής αντίστασης του αισθητήρα στον ελεύθερο αέρα. Καθώς χρησιμοποιείται το αναλογικό κανάλι 0, λαμβάνει δεδομένα από το αναλογικό κανάλι 0. Αυτό είναι για τη βαθμονόμηση του αισθητήρα MQ Gas.
Float SensorCalibration () { int count; // Αυτή η λειτουργία βαθμονομεί τον αισθητήρα σε ελεύθερο αέρα float val = 0; για (count = 0; count <50; count ++) {// πάρτε πολλά δείγματα και υπολογίστε τη μέση τιμή val + = calcul_resistance (ADC_Read (0)); __delay_ms (500); } val = val / 50; val = val / RO_VALUE_CLEAN_AIR; // διαιρούμενο με RO_CLEAN_AIR_FACTOR αποδίδει το Ro return val. }
Το Function παρακάτω χρησιμοποιείται για την ανάγνωση των αναλογικών τιμών του αισθητήρα MQ και τον μέσο όρο για τον υπολογισμό της τιμής Rs
float read_MQ () { int count; float rs = 0; για (count = 0; count <5; count ++) {// πάρτε πολλές αναγνώσεις και μετρήστε το. rs + = calcul_resistance (ADC_Read (0)); // rs αλλάζει ανάλογα με τη συγκέντρωση αερίου. __delay_ms (50); } rs = rs / 5; επιστροφή rs; }
Η παρακάτω συνάρτηση χρησιμοποιείται για τον υπολογισμό της αντίστασης από την αντίσταση διαχωριστή τάσης και την αντίσταση φορτίου.
float calcul_resistance (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) + καμπύλη)); }
Η καμπύλη είναι η καμπύλη LPG που ορίζεται παραπάνω από τον κώδικα που υπολογίστηκε προηγουμένως στο παραπάνω άρθρο μας.
float MQ6_curve = {2.3,0.30, -0.41}; // Γραφική παράσταση, αλλάξτε αυτό για συγκεκριμένο αισθητήρα
Τέλος, η κύρια λειτουργία μέσα στην οποία μετράμε την αναλογική τιμή, υπολογίζουμε το PPM και την εμφανίζουμε στην οθόνη LCD δίνεται παρακάτω
void 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"); __delay_ms (1500); gas_detect = 0; ενώ (1) { if (gas_detect == 0) { lcd_com (FIRST_LINE); lcd_puts ("Υπάρχει αέριο"); lcd_com (SECOND_LINE); lcd_puts ("Αέριο ppm ="); float rs = read_MQ (); λόγος float = rs / Ro; lcd_print_number (gas_plot_log_scale (λόγος, MQ6_curve)); __delay_ms (1500); καθαρή οθόνη(); } αλλιώς { lcd_com (FIRST_LINE); lcd_puts ("Δεν υπάρχει αέριο"); } } }
Πρώτον, το RO του αισθητήρα μετράται σε καθαρό αέρα. Στη συνέχεια, διαβάζεται ο ψηφιακός πείρος για να ελέγξει αν το αέριο υπάρχει ή όχι. Εάν υπάρχει αέριο, το αέριο μετριέται με την παρεχόμενη καμπύλη LPG.
Έχω χρησιμοποιήσει έναν αναπτήρα για να ελέγξω αν η τιμή PPM αλλάζει όταν ανιχνεύεται το αέριο. Αυτοί οι αναπτήρες πούρων έχουν αέριο LPG μέσα τους, το οποίο όταν απελευθερώνεται στον αέρα θα διαβάζεται από τον αισθητήρα μας και η τιμή PPM στην οθόνη LCD αλλάζει όπως φαίνεται παρακάτω.
Η πλήρης εργασία βρίσκεται στο βίντεο που δίνεται στο κάτω μέρος αυτής της σελίδας. Εάν έχετε οποιεσδήποτε ερωτήσεις, αφήστε τις στην ενότητα σχολίων ή χρησιμοποιήστε τα φόρουμ μας για άλλες τεχνικές ερωτήσεις.