ΠΩΣ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΣΕΤΕ ΦΩΤΟΑΝΤΙΣΤΑΣΕΙΣ ΓΙΑ ΝΑ ΑΝΙΧΝΕΥΣΕΤΕ ΦΩΣ ΣΕ ΕΝΑ ARDUINO
Οι φωτοαντιστάσεις είναι αναλογικοί αισθητήρες που μπορούν να μετρήσουν το φως. Είναι αντιστάσεις εξαρτώμενες από το φως που αλλάζουν αντίσταση με την ποσότητα φωτός που χτυπά τον αισθητήρα.
Οι φωτοαντιστάσεις είναι ιδανικές για την κατασκευή διακοπτών με έλεγχο φωτός. Μια κοινή εφαρμογή των φωτοαντιστάσεων είναι ο έλεγχος ρελέ 5 volt για να ανάβουν μια λάμπα όταν πέφτει το σκοτάδι. Χρησιμοποιούνται επίσης για την παρακολούθηση του φωτός της ημέρας σε μετεωρολογικούς σταθμούς και συστήματα περιβαλλοντικής παρακολούθησης.
ΠΩΣ ΛΕΙΤΟΥΡΓΟΥΝ ΟΙ ΦΩΤΟΑΝΤΙΣΤΑΣΕΙΣ
Οι φωτοαντιστάσεις έχουν δύο ξεχωριστά ηλεκτρόδια στο αισθητήριο στοιχείο. Η κόκκινη γραμμή είναι ένα στρώμα ημιαγώγιμου υλικού μεταξύ των δύο ηλεκτροδίων:

Το ημιαγώγιμο υλικό αυξάνει την αγωγιμότητα όταν το χτυπά περισσότερο φως. Όταν αυξάνεται η αγωγιμότητα, η αντίσταση μειώνεται. Επομένως η αντίσταση μιας φωτοαντίστασης μειώνεται με την αύξηση της έντασης του φωτός. Αντίθετα, η αντίσταση μιας φωτοαντίστασης αυξάνεται με τη μείωση της έντασης του φωτός.
ΠΩΣ ΝΑ ΡΥΘΜΙΣΕΤΕ ΜΙΑ ΦΩΤΟΑΝΤΙΣΤΑΣΗ ΣΤΟ ARDUINO
Το Arduino δεν μπορεί να μετρήσει απευθείας την αντίσταση, μπορεί μόνο να μετρήσει την τάση. Πρέπει λοιπόν να χρησιμοποιήσουμε ένα διαιρέτη τάσης για να συνδέσουμε φωτοαντιστάσεις στο Arduino. Ακολουθεί ένα σχηματικό σχήμα του κυκλώματος διαιρέτη τάσης φωτοαντίστασης που πρόκειται να κατασκευάσουμε:

Η τάση εξόδου (V out ) του διαιρέτη τάσης αλλάζει όταν αλλάζει η αντίσταση της φωτοαντίστασης. Χωρίς φως να χτυπά τη φωτοαντίσταση, η αντίσταση της φωτοαντίστασης είναι υψηλή, επομένως η τάση εξόδου είναι χαμηλή. Όταν το φως χτυπά τη φωτοαντίσταση, η αντίσταση μειώνεται και η τάση εξόδου αυξάνεται.
Αυτά είναι τα μέρη που θα χρειαστείτε για να συνδέσετε μια φωτοαντίσταση σε ένα Arduino:
Ακολουθήστε αυτό το διάγραμμα καλωδίωσης για να συνδέσετε το διαιρέτη τάσης φωτοαντίστασης στο Arduino:

ΠΩΣ ΝΑ ΠΡΟΓΡΑΜΜΑΤΙΣΕΤΕ ΜΙΑ ΦΩΤΟΑΝΤΙΣΤΑΣΗ ΣΤΟ ARDUINO
Ας δούμε τώρα ένα σκίτσο που θα εξάγει τις μετρήσεις ακατέργαστου φωτός από τη φωτοαντίσταση στη σειριακή οθόνη. Μόλις συνδεθεί το κύκλωμα, ανεβάστε αυτόν τον κωδικό στο Arduino:
int photoPin = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int light = analogRead(photoPin);
Serial.println(light);
delay(100);
}ΕΠΕΞΗΓΗΣΗ ΤΟΥ ΚΩΔΙΚΑ
Αρχικά, δηλώνουμε μια μεταβλητή int που ονομάζεται photoPinκαι την ορίζουμε ίση με την αναλογική ακίδα A0. Αυτή είναι η ακίδα που συνδέεται στο κέντρο του διαιρέτη τάσης.
Στην setup()ενότητα, αρχικοποιούμε τη σειριακή οθόνη. Στην loop()ενότητα, δηλώνουμε μια τοπική μεταβλητή int που ονομάζεται lightκαι την ορίζουμε ίση με την αναλογική ανάγνωση του photoPin. Στη συνέχεια εκτυπώνουμε σειριακά τη lightμεταβλητή στη σειριακή οθόνη και καθυστερούμε για 100 χιλιοστά του δευτερολέπτου για να κάνουμε την έξοδο πιο ευανάγνωστη. Έτσι, το πρόγραμμα θα χρησιμοποιήσει τη analogRead()συνάρτηση για να μετρήσει την τάση εξόδου στο κέντρο του διαιρέτη τάσης, να τη μετατρέψει σε ακέραιο αριθμό μεταξύ 0 και 1023 και να εκτυπώσει αυτόν τον αριθμό στη σειριακή οθόνη.
Μόλις συνδεθεί το κύκλωμα και ανέβει ο κωδικός στο Arduino, τοποθετήστε τη φωτοαντίσταση στο σκοτάδι. Οι analogRead()τιμές στη σειριακή οθόνη θα πρέπει να μειωθούν. Όταν τοποθετείτε τη φωτοαντίσταση στο φως, οι analogRead()τιμές θα πρέπει να αυξηθούν:

ΠΩΣ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΣΕΤΕ ΜΙΑ ΦΩΤΟΑΝΤΙΣΤΑΣΗ ΓΙΑ ΝΑ ΕΛΕΓΞΕΤΕ ΠΡΑΓΜΑΤΑ
Οι φωτοαντιστάσεις είναι ιδανικές για την κατασκευή διακοπτών με έλεγχο φωτός. Ας δημιουργήσουμε λοιπόν έναν διακόπτη ελεγχόμενου φωτός που ανάβει ένα LED όταν είναι σκοτάδι και σβήνει το LED στο φως.
Αυτά είναι τα μέρη που θα χρειαστείτε:
Συνδέστε το κύκλωμα ως εξής:

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΦΩΤΟΑΝΤΙΣΤΑΣΗΣ ΓΙΑ ΕΛΕΓΧΟ ΠΡΑΓΜΑΤΩΝ
Μόλις συνδεθεί το κύκλωμα, ανεβάστε αυτόν τον κωδικό στο Arduino:
int photoPin = A0;
int ledPin = 7;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
int lightRaw = analogRead(photoPin);
int light = map(lightRaw, 1023, 0, 10, 0);
if (light < 5) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}ΕΠΕΞΗΓΗΣΗ ΤΟΥ ΚΩΔΙΚΑ
Ξεκινάμε δηλώνοντας μια μεταβλητή για το photoPin, και την ορίζουμε ίση με την αναλογική ακίδα A0. Στη συνέχεια, δηλώνουμε μια μεταβλητή για το ledPinκαι την ορίζουμε ίση με την ψηφιακή ακίδα 7.
Στην setup()ενότητα, ορίσαμε τη λειτουργία pin του ledPinως OUTPUT. Στην loop()ενότητα, παίρνουμε μια αναλογική ανάγνωση του photoPin, και αποθηκεύουμε την ανάγνωση σε μια τοπική μεταβλητή που ονομάζεται lightRaw. Για να κάνουμε τις ακατέργαστες τιμές ADC από τη φωτοαντίσταση λίγο πιο εύκολο να απεικονιστούν, χρησιμοποιούμε τη map()συνάρτηση για να μετατρέψουμε τις τιμές σε αριθμούς μεταξύ μηδέν και δέκα. Οι αντιστοιχισμένες τιμές αποθηκεύονται σε μια νέα τοπική μεταβλητή που ονομάζεται light.
Η if elseδήλωση ορίζει μια τιμή κατωφλίου που καθορίζει πότε θα ανάβει και θα σβήνει το LED. Όταν η τιμή που είναι αποθηκευμένη στο lightείναι μικρότερη από 5, ο κώδικας στη ifδήλωση θα εκτελεστεί. Εφόσον θέλουμε το LED να ανάβει όταν το φως πέσει κάτω από το κατώφλι, γράφουμε ψηφιακά το ledPinυψηλό.
Η elseεντολή εκτελείται όταν lightδεν είναι μικρότερη από 5. Έτσι στην elseεντολή γράφουμε ψηφιακά το ledPinχαμηλό για να το απενεργοποιήσουμε.
Αφού φτιάξετε το κύκλωμα και ανεβάσετε το σκίτσο, θα πρέπει να δείτε το LED να ανάβει στο σκοτάδι και να σβήνει στο φως.

Αυτό είναι ένα απλό παράδειγμα, αλλά είναι ένας λειτουργικός διακόπτης ελεγχόμενου φωτός. Μπορείτε να απενεργοποιήσετε το LED με οποιαδήποτε άλλη συσκευή που μπορεί να ελεγχθεί με το σήμα 5V από το Arduino. Φροντίστε να αφήσετε ένα σχόλιο εάν έχετε ερωτήσεις για οτιδήποτε!

Σχόλια
Δημοσίευση σχολίου