Σκοπός Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 8 Μετρώντας Επιτάχυνση με το Accelerόμετρο (ADXL 335). Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων Βασική δομή ενός προγράμματος στο LabVIEW. Εμπρόσθιο Πλαίσιο (front panel). Σχεδίαση του front panel για ένα πρόγραμμα Συλλογής & Επεξεργασίας Μετρήσεων. Δομικό Διάγραμμα (block diagram). Δομές προγραμματισμού. Η δομή Επανάληψης. Συνάρτηση δημιουργίας τυχαίων αριθμών. 1
8.1 ΕΠΙΔΙΩΞΗ ΤΗΣ ΑΣΚΗΣΗΣ Σ αυτή την άσκηση, εξετάζουμε έναν ακόμα αισθητήρα, το accelerόμετρο ή ορθότερα, επιταχυνσιόμετρο. Το accelerόμετρο ή επιταχυσνσιόμετρο μετράει επιτάχυνση, σε καθένα από τρείς άξονες κίνησης. Αυτή η δυνατότητα είναι χρήσιμη σε πολλές ρομποτικές εφαρμογές. Όμως, το accelerόμετρο ο αισθητήρας επιτάχυνσης υπάρχει σε πολλά κινητά και χρησιμεύει, για να εντοπίζει και να υπολογίζει τη θέση ενός κινητού, αν δηλαδή το κινητό μετράει τη κίνηση ενός κινητού τηλεφώνου. Η βαρύτητα προκαλεί μία επιτάχυνση προς τα κάτω Στην άσκηση, εξετάζουμε τη λειτουργία του accelerόμετρου. Χρησιμοποιούμε το ADX335 accelerόμετρο της Sparkfun και της Adafruit αυτό είναι το accelerόμετρο που ευρύτερα χρησιμοποιείται, όμως άλλα επιταχυνσιόμετρα λειτουργούν ανάλογα, για να δούμε πως: Συνδέουμε το accelerόμετρο σ ένα μικροελεγκτή, όπως ο Arduino. Γράφουμε ένα πρόγραμμα που να παίρνει / διαβάζει μετρήσεις επιτάχυνσης από το accelerόμετρο και να επεξεργάζεται και να στέλνει αυτές τις μετρήσεις, στον υπολογιστή. 8.2 Accelerόμετρο: Η Λειτουργία του Το accelerόμετρο είναι μία συσκευή / αισθητήρας που μπορεί να μετράει επιτάχυνση. Αρχικά, τα accelerόμετρα ή επιταχυνσιόμετρα σχεδιάστηκαν και χρησιμοποιούνταν σε αεροσκάφη και ρουκέτες, αλλά τώρα, υπάρχουν σε πολλές συσκευές καθημερινής χρήσης, όπως κινητά, laptops, ακόμα και σε παιχνίδια. Μετρώντας την επιτάχυνση, κατ αρχήν, μπορούμε να προσδιορίζουμε αν ένα αντικείμενο κινείται. Για ένα αντικείμενο / σώμα που κινείται, μπορούμε να προσδιορίζουμε τη κατεύθυνση / φορά της κίνησης του και πόσο γρήγορα αλλάζει κατεύθυνση κίνησης. Τελευταία, μία αρκετά δημοφιλής και χρήσιμη εφαρμογή του επιταχυνσιόμετρου, είναι να υπολογίζουμε το προσανατολισμό ενός αντικειμένου, για παράδειγμα το προσανατολισμό ενός κινητού, αν αυτό δηλαδή, βλέπει προς τα επάνω ή προς τα κάτω. Υπάρχουν διάφοροι τύποι επιταχυνσιόμετρων. Τελευταία, όλα σχεδόν μπορούν να μετρούν την επιτάχυνση σε τρείς άξονες. Έτσι, αν τοποθετήσουμε ένα accelerόμετρο επάνω σ ένα κινητό, η μέτρηση της επιτάχυνσης σε κάθε άξονα κίνησης, καθώς μετακινούμε το κινητό, θα επιτρέψει να προσδιορίσουμε τη θέση του κινητού. Σ αυτή την άσκηση, θα συνδέσουμε ένα accelerόμετρο στον Arduino και θα γράψουμε ένα πρόγραμμα, για να διαβάζει τη μέτρηση της επιτάχυνσης, από το accelerόμετρο, σε κάθε άξονα / κατεύθυνση κίνησης. To πρόγραμμα θα στέλνει αυτές τις μετρήσεις στη σειριακή οθόνη του υπολογιστή και θα χρησιμοποιεί αυτές 2
Εικόνα 1: Ο αισθητήρας επιτάχυνσης ADXL 335 (της Sparkfun, αριστερά). Ένας παρόμοιος accelerόμετρο από την Adafruit (δεξιά). τις μετρήσεις, για προσδιορίζει τη θέση / προσανατολισμό ενός κινητού. 8.3 Σχηματικό Διάγραμμα του Κυκλώματος Συνδέοντας έναν αισθητήρα υπερήχων είναι μία πολύ απλή διαδικασία που περιλαμβάνει τρία βήματα: 8.3.1 Στο accelerόμετρο, πρώτα, προσδιορίζουμε τον ακροδέκτη τροφοδοσίας που ονομάζεται Vcc ή 5 V. Συνδέουμε αυτό τον ακροδέκτη στα 5 V του Arduino, όπως παριστάνεται στο σχηματικό διάγραμμα της συνδεσμολογίας, στις Εικόνες 2 και 3. 8.3.2 Χρειάζεται ακόμα να προσδιορίσουμε τον ακροδέκτη γείωσης GND του accelerόμετρου και να συνδέσουμε αυτό τον ακροδέκτη στο GND του Arduino. 8.3.3 Κάθε άξονας κίνησης έχει ένα αντίστοιχο ακροδέκτη. Συνδέουμε κάθε έναν από αυτούς τους ακροδέκτες που δίνουν την επιτάχυνση σε κάθε ένα από τους x, y και z άξονες κίνησης, σε μία αντίστοιχη αναλογική θύρα του Arduino, έστω στις A0, A1και A2. 8.4 Αισθητήρες Υπερήχων: Η Αρχή Λειτουργίας τους Τα επιταχυνσιόμετρα (Εικόνα 1)έχουν / χρησιμοποιούν διάφορες τεχνολογίες / τεχνικές, για να μετρούν επιτάχυνση. Η τεχνική που συνηθέστερα χρησιμοποιείται είναι / 3
Εικόνα 2: Το σχηματικό διάγραμμα του κυκλώματος, για την μέτρηση της επιτάχυνσης, χρησιμοποιώντας το ADXL 335. βασίζεται σε πολύ μικρά σώματα (MEMS) που κινούνται ελεύθερα, μέσα στον αισθητήρα. Καθώς αυτά κινούνται, αλλάζει η εσωτερική τους αντίσταση και έτσι, δημιουργούν στην έξοδο του αισθητήρα μία διαφορετική τιμή τάσης, στη βάση της συνολικής κίνησης του αισθητήρα. 8.5 Ανάπτυξη του Προγράμματος Γράψτε ένα πρόγραμμα που να διαβάζει τη μέτρηση της επιτάχυνσης, από το accelerόμετρο, σε κάθε έναν από τους τρείς άξονες κίνησης. Το πρόγραμμα θα πρέπει να διαβάζει τη μέτρηση από κάθε ακροδέκτη εξόδου του αισθητήρα, διαβάζοντας τη τάση στην αντίστοιχη θύρα του Arduino, με την εντολή analogread(). 4
Εικόνα 3: Αναλυτικό διάγραμμα της συνδεσμολογίας του κυκλώματος. 5
Μετά, το πρόγραμμα θα πρέπει να εμφανίζει αυτές τις τιμές στη σειριακή οθόνη, χρησιμοποιώντας την Serial.print(). Όταν ο αισθητήρας είναι ακίνητος σε μία επίπεδη επιφάνεια, τότε επιστρέφει τιμές που είναι περίπου 330, 330 και 400 για τους άξονες x, y και z, αντίστοιχα. Όμως, αν μετακινήσουμε τον αισθητήρα, αυτές οι τιμές γρήγορα αλλάζουν. Έτσι, θα πρέπει να χρησιμοποιήσουμε τη παρακάτω εντολή if στο πρόγραμμα, για να ελέγχουμε τη τιμή / αν η τιμή σε κάθε ακροδέκτη του accelerόμετρου που συνδέεται σε μία αντίστοιχη αναλογική θύρα του Arduino, έχει αλλάξει, από τη τιμή αναφοράς, όταν ο αισθητήρας είναι ακίνητος. Τότε, αν έτσι το πρόγραμμα εντοπίσει κίνηση, θα ανάψει τη LED. if (xval < 310 xval > 350 yval < 310 yval > 350 zval < 380 zval > 420){ digitalwrite(led, HIGH); delay(300); digitalwrite(led, LOW); } 8.6 Εντοπίζοντας τη Θέση ενός Κινητού Τροποποιείστε το παραπάνω πρόγραμμα, για να εντοπίζει τη θέση ενός κινητού, αν τοποθετήσουμε τη διάταξη του κυκλώματος, επάνω σ ένα κινητό. Το πρόγραμμα θα πρέπει να εκτυπώνει αυτή τη θέση, στη σειριακή οθόνη. 6