Τίτλος: Υλοποίηση συστήματος ηλεκτρονικής μύτης για την ανίχνευση και ταξινόμηση πτητικών οργανικών ενώσεων. Εφαρμογή στην αναγνώριση φυσικών αρωμάτων Επιβλέπων: Ιωάννης Kαλόμοιρος, Αναπληρωτής Καθηγητής Φοιτητής: Καρούτης Νικηφόρος, ΑΕΜ: 2685
Στην παρούσα μελέτη υλοποιείται ένα σύστημα ηλεκτρονικής μύτης για την ανίχνευση αρωμάτων. Χρησιμοποιείται ένα σύνολο 6 αισθητήρων που ανιχνεύουν πτητικές ουσίες (VOCs). Κατασκευάστηκε ειδικός θάλαμος αισθητήρων, από αλουμίνιο, ειδικά προστατευμένος από τους θορύβους. Η έξοδος των αισθητήρων συνδέεται με τις αναλογικές εισόδους ενός μικροελεγκτή PIC16F877A, που ψηφιοποιεί τα δεδομένα και τα στέλνει μέσω της σειριακής επικοινωνίας στον υπολογιστή. Ο υπολογιστής εκτελεί μία εφαρμογή που προβάλει και καταγράφει τα δεδομένα.
Οι «ηλεκτρονικές μύτες» αποτελούνται από αισθητήρες που δημιουργούν ψηφιακά αποτυπώματα των οσμών. Χρησιμοποιούνται από έναν αυξανόμενο αριθμό βιομηχανιών για τον ποιοτικό έλεγχο και την ανάπτυξη προϊόντων.
Ένα σύστημα ηλεκτρονικής μύτης αποτελείται ως επί το πλείστον από 4 τμήματα: 1. Τους Αισθητήρες ηλεκτρονικής μύτης 2. Ένα χώρο όπου συγκεντρώνεται η οσμή (θάλαμος αισθητήρων) 3. Ένα σύστημα όπου διαμορφώνεται κατάλληλα και ψηφιοποιήται το αναλογικό σήμα των αισθητήρων(πλακέτα μικροελεγκτή) 4. Μια εφαρμογή στον υπολογιστή, η οποία συνδέεται με το προηγούμενο τμήμα, συλλέγει τα δεδομένα από αυτό και τα καταγράφει.(εφαρμογή LabView)
Οι αισθητήρες που χρησιμοποιήσαμε ήταν οι εξής: 1. Gas sensor MQ2 2. Gas sensor MQ3 3. Figaro TGS Figaro TGS Gas sensor MQ4 6. Gas sensor MQ5
Ο Θάλαμος αισθητήρων αποτελείται από: Καπάκι από πλεξιγκλάς Πλακέτα με τους αισθητήρες Καλώδια τροφοδοσίας και αποστολής σήματος των αισθητήρων 8 βύσματα BNC μεταφοράς σήματος (από αυτά χρησιμοποιούνται τα 6) 2 βύσματα τροφοδοσίας (από αυτά χρησιμοποιείται το 1) Φλάντζα με φλαντζόκολλα Δύο διόδους αέρα (σωλήνες) Δύο βάνες αέρα
Εξαρτήματα πλακέτας: Μικροελεγκτής PIC16F877A MAX232 9 αντιστάσεις 9 πυκνωτές 7 ποτενσιόμετρα 6 Leds 2 LS7805 push-button
Ο μικροελεγκτής PIC16F877A που χρησιμοποιήθηκε στην κατασκευή παίρνει το αναλογικό σήμα των 6 αισθητήρων από τα pins 2,3 και 7 έως 10. Το ψηφιοποιεί μέσω του ADC(analog to digital converter) και στη συνέχεια το στέλνει μέσω της σειριακής θύρας στον υπολογιστή.
Η εφαρμογή χωρίζεται σε δύο τμήματα: 1. Το «front panel» είναι η οθόνη που φαίνεται στο χρήστη και δείχνει τις ενδείξεις των μετρήσεων. 2. Το «block diagram» είναι στην ουσία το κυρίως πρόγραμμα που καθορίζει το τι θα φαίνεται στο «front panel» και τι θα γίνεται στις λειτουργίες της εφαρμογής.
Eικόνα του Front panel της εφαρμογής
Το «block diagram» αποτελείται από μία κεντρική δομή ακολουθίας με τέσσερα πλαίσια. Κάθε ένα από αυτά τα πλαίσια παίζει το δικό του σημαντικό ρόλο και σκοπό, συμβάλλοντας στη λειτουργία του συνολικού προγράμματος. Το κάθε πλαίσιο τρέχει με σειρά προτεραιότητας.
Στο πρώτο πλαίσιο (frame 0) γίνεται η αρχικοποίηση της σειριακής επικοινωνίας. Baud rate = 9600bps Data bits = 8 (1 byte) parity bit = none stop bits =1 flow control = none.
Στο δεύτερο πλαίσιο (frame 1) γίνεται λήψη και απεικόνιση των δεδομένων
Στο τρίτο πλαίσιο (frame 2) γίνεται η αποθήκευση των τιμών του κάθε αισθητήρα σε ένα αρχείο (.txt).
Στο τέταρτο πλαίσιο (frame 3) υπολογίζεται ο συνολικός χρόνος που έτρεχε το πρόγραμμα και κλείνει η σειριακή επικοινωνία.
Στο πειραματικό τμήμα της εργασίας μετρήθηκαν από το σύστημα ηλεκτρονικής μύτης τα 3 εξής αρώματα : 1. Φράουλα 2. Κεράσι 3. Κασσίς (μαύρο φραγκοστάφυλο)
1. Προθέρμανση των αισθητήρων. 2. Ρύθμιση της αντίστασης των ποτενσιομέτρων. 3. Έναρξη του προγράμματος μέτρησης στο Labview. 4. Εισαγωγή αερίων του αρώματος στο θάλαμο αισθητήρων. 5. Άνοιγμα του θαλάμου αισθητήρων. 6. Τερματισμός του προγράμματος μέτρησης.
Τιμή σταθερής κατάστασης (Steady state value) Κλίση ανόδου (grad1) Κλίση καθόδου (grad2)
Η τιμή της σταθερής κατάστασης (Steady state value) st υπολογίζεται από το μέσο όρο των μετρήσεων κατά τη διάρκεια που το άρωμα βρίσκεται μέσα στο θάλαμο αισθητήρων.
Η κλίση ανόδου (grad1) λαμβάνεται, με τον υπολογισμό του Δy1/Δt1. Δy1 είναι το 70% της τιμής σταθερής κατάστασης. Δt1 είναι το χρονικό διάστημα που χρειάστηκε για να φτάσουν οι τιμές από την τιμή βάσης στην τιμή του Δy1.
Η κλίση καθόδου (grad2) λαμβάνεται, με τον υπολογισμό του Δy2/Δt2. Δy2 είναι το 30% της τιμής σταθερής κατάστασης. Δt2 είναι το χρονικό διάστημα από την στιγμή που ανοίχτηκε ο θάλαμος αισθητήρων μέχρι τη στιγμή που οι τιμές μειώθηκαν κατά Δy2.
Μια νέα μελέτη θα μπορούσε να είναι η καταγραφή περισσότερων αρωμάτων και η δημιουργία ενός προγράμματος αναγνώρισης προτύπων έτσι ώστε να μας λέει το πρόγραμμα ποιο άρωμα είναι αυτό που τοποθετήσαμε στο θάλαμο των αισθητήρων.
ΕΥΧΑΡΙΣΤΩ!!
#define _XTAL_FREQ #include void convert_adc_send(char); void test_patern(); void main(void) { unsigned int a,i; TRISA=0b ; //6 analog channels, two pins for reference PORTA=0; TRISC=0b ;//Make RC7 input PORTC=0; TRISD=0x00; PORTD=0; ADCON1=0b ; //left justified, 0 Dig 6 Analog ch, 2 ref ADCON0=0b ; //10 Fosc/32, ch0, ADON TX9=0;//8 bits transmit TXEN=1; //Transmit enable SYNC=0; //synchronous mode BRGH=1; //high speed baud rate SPBRG=129; //9600 bps with fosc=20MHz RX9=0; //8-bit receive SPEN=1; //port is on CREN=0; CREN=1; //Continuous Receive Enable
__delay_ms(2); test_patern(); while(1) { __delay_ms(2); a=42; while(!TXIF); //Wait until TXIF is set TXREG=a; __delay_ms(2); a=67; while(!TXIF); //Wait until TXIF is set TXREG=a; for(i=0;i<6;i++) convert_adc_send(i); } while(1); }
void convert_adc_send(char ch) { char temp; if(ch>1) ch=ch+2; temp=ADCON0 & 0b ; //AND with 0xC1: clear channel ADCON0=temp | ((ch & 0x07)<<3); //Set channel __delay_ms(1); ADCON0bits.GO = 1; while (ADCON0bits.nDONE); __delay_ms(1); while(!TXIF); //Wait until TXIF is set TXREG=ADRESH; } void test_patern() { PORTD=1; PORTC=5; __delay_ms(1000); PORTD=2; PORTC=10; __delay_ms(1000); PORTD=3; PORTC=15; __delay_ms(1000); PORTD=0; PORTC=0; }