Σκοπός Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 1 Arduino + LabVIEW: Μέτρηση Έντασης Φωτός με Φωτοαντίσταση. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων Βασική δομή ενός προγράμματος στο LabVIEW. Εμπρόσθιο Πλαίσιο (front panel). Σχεδίαση του front panel για ένα πρόγραμμα Συλλογής & Επεξεργασίας Μετρήσεων. Δομικό Διάγραμμα (block diagram). Δομές προγραμματισμού. Η δομή Επανάληψης. Συνάρτηση δημιουργίας τυχαίων αριθμών. 1
Μέρος Α : Σκοπός και Περιγραφή της Άσκησης 1.1 ΕΠΙΔΙΩΞΗ ΤΗΣ ΑΣΚΗΣΗΣ Σ αυτή την άσκηση, εξετάζουμε την επικοινωνία του υπολογιστή με αισθητήρες, μέσα από έναν μικροελεγκτή, μετρώντας ένταση φωτός με μία φωτοαντίσταση και παριστάνοντας / αναλύοντας, αυτές τις τιμές φωτός. Μέσα από τη μέτρηση θερμοκρασίας / τη διάταξη που δημιουργούμε για να μετρούμε θερμοκρασία και τώρα ένταση φωτός και αυτόματα, να παίρνουμε στον υπολογιστή τις τιμές θερμοκρασίας και έντασης φωτός, δημιουργούμε ένα απλό, αλλά ολοκληρωμένο Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων και βλέπουμε στη πράξη την επικοινωνία του υπολογιστή με αισθητήρες και γενικά, με αναλογικές συσκευές που περιλαμβάνει: Την μετάδοση των τιμών / αναλογικών τιμών από τον αισθητήρα (ες) στον υπολογιστή και την επεξεργασία τους, στον υπολογιστή. Την επίδραση / τη δυνατότητα της επίδρασης του υπολογιστή στο εξωτερικό περιβάλλον, στη βάση της ανάλυσης των μετρήσεων από τους αισθητήρες, εκτελώντας λειτουργίες, όπως η περιστροφή ενός κινητήρα που σ αυτή την άσκηση παριστάνονται από το αναβόσβημα μίας LED. Τη διαρκή / συνεχή μετάδοση σημάτων από τους αισθητήρες στον υπολογιστή και εντολών από τον υπολογιστή στους αισθητήρες / κινητήρες σε πραγματικό χρόνο. 1.2 To Πείραμα Σ αυτή την άσκηση, επιχειρούμε να μετρήσουμε την ένταση του εξωτερικού φωτός, χρησιμοποιώντας μία φωτοαντίσταση. 1.3 Πειραματική Διάταξη Στη σχεδίαση αυτού του συστήματος, βλέπουμε / χρειάζεται να λύσουμε κάποια βασικά σχεδιαστικά προβλήματα των συνθετότερων συστημάτων μέτρησης. Το πρώτο από αυτά τα προβλήματα είναι πως λειτουργεί μία φωτονατίσταση, μεταβάλλοντας την αντίστασή της, ανάλογα με την ένταση του εξωτερικού φωτός και πως ο υπολογιστής / ο μικροεπεξεργαστής που επεξεργάζεται μόνον ψηφιακά σήματα / ψηφιακή πληροφορία, στη μορφή παλμών 0 V ή 5 V, μπορεί να διαβάζει μεταβολές στη τιμη μίας αντίστασης? Υπάρχουν διαφορετικοί τρόποι για να συνδέουμε αναλογικές συσκευές στον υπολογιστή και να μετατρέπουμε τα σήματα αυτών των συσκευών σε μία μορφή που ο υπολογιστής μπορεί να διαβάζει, επιτρέποντας την επικοινωνία του υπολογιστή με αυτές τις συσκευές. Σ αυτή την άσκηση, για την επικοινωνία του υπολογιστή με αναλογικ- 2
Εικόνα 1: Πειραματική διάταξη, για τη μέτρηση της έντασης φωτός. ές συσκευές αισθητήρες και τη μετάδοση των σημάτων αυτών των συσκευών στον υπολογιστή, χρησιμοποιούμε τον Arduino. Ο Arduino αποτελεί έναν απλό και πρακτικό σύστημα / τρόπο, για να συνδέουμε τον υπολογιστή σε αναλογικές συσκευές που μετρούν τον εξωτερικό κόσμο. Λειτουργεί σαν πηγή τροφοδοσίας, παρέχοντας σ αυτές τις αναλογικές συσκευές, συνεχή τάση V cc = 5 V, μέσα από τη θύρα (output pin) V cc, ground (GND) και έχει αναλογικές εισόδους, όπου μπορούμε να συνδέουμε τον ακροδέκτη εξόδου των αναλογικών συσκευών. 3
Εικόνα 2: Το πρόγραμμα, για τη μέτρηση της έντασης του φωτός Συνδέεται πολύ εύκολα στον υπολογιστή. Μπορεί να μετατρέπει τις αναλογικές τάσεις στις εισόδους του σε ψηφιακές και να μεταφέρει τις ψηφιοποιημένες τάσεις, στον υπολογιστή, μέσα από την σύνδεση του, στη USB θύρα του υπολογιστή που λειτουργεί σαν σειριακή θύρα. 1.4 Η Πειραματική Διάταξη Η φωτοαντίσταση, όπως πολλοί άλλοι αισθητήρες είναι μία αντίσταση που όμως, έχει την ιδιότητα να μεταβάλλει τη τιμή της, σαν συνάρτηση του εξωτερικού φωτός. Αρκετοί άλλοι αισθητήρες, όπως το θερμίστορ και οι αισθητήρες δύναμης λειτουργούν 4
με παρόμοιο τρόπο. Το θερμίστορ δηλαδή μεταβάλλει την αντίσταση του, όταν θερμαίνεται, ενώ ο αισθητήρας δύναμης μεταβάλλει την αντίσταση του όταν δέχεται πίεση ή παραμόρφωση, από την άσκηση δύναμης. Επειδή αυτοί οι αισθητήρες μεταβάλλουν την αντίστασή τους και όχι τάση, για να μετρούμε τη μεταβολή της αντίστασής τους, χρειάζεται να τους συνδέουμε σε κύκλωμα διαιρέτη τάσης (Εικόνα 3). Η τάση εξόδου σ ένα διαιρέτη τάσης είναι ανάλογη / εξαρτάται από τις τιμές των αντιστάσεων στο κύκλωμα. Έτσι, αν η μία από τις δύο αντιστάσεις είναι σταθερή, μπορούμε να εντοπίζουμε και να μετρούμε μεταβολές στη τιμή της δεύτερης αντίστασης, μετρώντας τη μεταβολή της τάσης εξόδου V out Η τιμή της σταθερής αντίστασης ρυθμίζει / καθορίζει την ευαισθησία του κυκλώματος. Η εξίσωση για το διαιρέτη τάσης είναι: V in = I R 1 + I R 2 = I (R 1 + R 2 ) = = (V out / R 2 ) (R 1 + R 2 ) Εικόνα 3: Το κύκλωμα του διαιρέτη τάσης. Άρα, V out = V in R 2 / (R 1 + R 2 ) H V out θα είναι αυτή που θα διαβάζουμε, αν συνδέσουμε την έξοδό V out στην αναλογική είσοδο Α0 του Arduino. Στο κύκλωμα του διαιρέτη τάσης, θα αντικαταστήσουμε τη μία από τις δύο αντιστάσεις, την R 1 με μία φωτοαντίσταση, ενώ για την R 2, θα χρησιμοποιήσουμε μία αντίσταση R 2 = 10 kω. Οι φωτοαντιστάσεις αλλάζουν την αντίστασή τους, ανάλογα με την ένταση του φωτός, επάνω τους. Σ αυτό το πείραμα, χρησιμοποιούμε μία φωτοαντίσταση R 1 = 200 kω. Στο απόλυτο σκοτάδι, η φωτοαντίσταση έχει τη μέγιστη τιμή της που είναι 200 kω. Σε πολύ φως, η τιμή της φωτοαντίστασης πλησιάσει στο μηδέν 5
R 1 0 Άρα, στη βάση της εξίσωσης του διαιρέτη τάσης, σε πολύ φώς, όταν R 1 0, V out = V in. = 5 V. Αντίθετα, στο απόλυτο σκοτάδι, όταν R 1 = 220 kω, η V out θα έχει μία μικρή τιμή. Η συνδεσμολογία της μέτρησης έντασης του φωτός είναι πολύ απλή και παριστάνεται στην Εικόνα 1. 1.5 Το Πρόγραμμα Όλη η διαδικασία της μέτρησης της εξωτερικής θερμοκρασίας με τη φωτοαντίσταση και της μετάδοσης των τιμών θερμοκρασίας, δηλαδή της ψηφιοποιημένης τάσης από τον αισθητήρα, στον υπολογιστή, ρυθμίζεται από ένα πρόγραμμα που εκτελείται στον μικροεπεξεργαστή του Arduino. Το πρόγραμμα για τη μέτρηση της έντασης του φωτός και οι βασικές λειτουργίες του προγράμματος, παριστάνονται στην Εικόνα 2. Η διαδικασία εκτέλεσης του προγράμματος είναι απλή. Αφού γράψουμε το πρόγραμμα στο αναπτυξιακό περιβάλλον του Arduino, το φορτώνουμε στον Arduino, επιλέγοντας την εντολή: Αρχείο Φόρτωση Τότε το πρόγραμμα θα αρχίσει να εκτελείται, εμφανίζοντας στη σειριακή οθόνη του υπολογιστή τις τιμές έντασης του φωτός που παίρνει / διαβάζει από τη φωτοαντίσταση (Εικόνα ). Όμως, οι τιμές που παίρνουμε στη σειριακή οθόνη του υπολογιστή δεν είναι ούτε τιμές θερμοκρασίας, ούτε τιμές τάσης. Η εντολή analogread διαβάζει τη τάση στην είσοδο 0 του Arduino, κάθε 500 ms και μετατρέπει αυτή τη τάση σε μία τιμή στο πεδίο τιμών [0, 1023]. Έτσι, για παράδειγμα η τιμή 900 που παίρνουμε στην σειριακή οθόνη του υπολογιστή, στο πολύ φώς, αντιστοιχεί σε μία τάση: V in = (900 / 1023) * 5 V = 4,4 V 6
Εικόνα 4: Το πρόγραμμα για τη λειτουργία της LED, ανάλογα με τη μέτρηση της έντασης του φωτός.. Εφαρμογή 1.2 Τροποποιείστε τη διάταξη μέτρησης φωτεινότητας, συνδέοντας μία LED, σ αυτή τη διάταξη, όπως παριστάνεται στην Εικόνα 1. Το πρόγραμμα μέτρησης φωτεινότητας, θα πρέπει να ανάβει τη LED, όταν η ένταση του φωτός πέφτει κάτω από ένα καθορισμένο όριο, έστω κάτω από τη τιμή 300. Για τη λειτουργία της LED, μπορούμε να χρησιμοποιήσουμε το πρόγραμμα, στην Εικόνα 4. Συνδέουμε τo ένα άκρο της LED, έστω την άνοδο σε σειρά με μία αντίσταση R = 220 Ω. Συνδέουμε τη κάθοδο της LED στο GND και το άλλο άκρο της αντίστασης στη ψηφιακή θύρα 9 του Arduino. Έτσι, το κύκλωμα της LED, τροφοδοτείται με τάση, από τη ψηφιακή θύρα του Arduino (Εικόνα 1). 7
Στο πρόγραμμα, ορίζουμε τη θύρα 9, σα θύρα εξόδου. Σ αυτή,τη θύρα, μπορούμε να δημιουργούμε τάσεις από 0 ή 5 V, χρησιμοποιώντας την εντολή: digitalwrite(led, HIGH); 8