ΠΩΣ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΣΕΤΕ ΦΩΤΟΑΝΤΙΣΤΑΣΕΙΣ ΓΙΑ ΝΑ ΑΝΙΧΝΕΥΣΕΤΕ ΦΩΣ ΣΕ ΕΝΑ ARDUINO
Οι φωτοαντιστάσεις είναι αναλογικοί αισθητήρες που μπορούν να μετρήσουν το φως. Είναι αντιστάσεις εξαρτώμενες από το φως που αλλάζουν αντίσταση με την ποσότητα φωτός που χτυπά τον αισθητήρα.
Οι φωτοαντιστάσεις είναι ιδανικές για την κατασκευή διακοπτών με έλεγχο φωτός. Μια κοινή εφαρμογή των φωτοαντιστάσεων είναι ο έλεγχος ρελέ 5 volt για να ανάβουν μια λάμπα όταν πέφτει το σκοτάδι. Χρησιμοποιούνται επίσης για την παρακολούθηση του φωτός της ημέρας σε μετεωρολογικούς σταθμούς και συστήματα περιβαλλοντικής παρακολούθησης.
ΠΩΣ ΛΕΙΤΟΥΡΓΟΥΝ ΟΙ ΦΩΤΟΑΝΤΙΣΤΑΣΕΙΣ
Οι φωτοαντιστάσεις έχουν δύο ξεχωριστά ηλεκτρόδια στο αισθητήριο στοιχείο. Η κόκκινη γραμμή είναι ένα στρώμα ημιαγώγιμου υλικού μεταξύ των δύο ηλεκτροδίων:
![Ηλεκτρόδια φωτοαντίστασης και ανθεκτικό υλικό.jpg](https://www.circuitbasics.com/wp-content/uploads/2020/06/Photoresistor-Electrodes-and-Resistive-Material.jpg)
Το ημιαγώγιμο υλικό αυξάνει την αγωγιμότητα όταν το χτυπά περισσότερο φως. Όταν αυξάνεται η αγωγιμότητα, η αντίσταση μειώνεται. Επομένως η αντίσταση μιας φωτοαντίστασης μειώνεται με την αύξηση της έντασης του φωτός. Αντίθετα, η αντίσταση μιας φωτοαντίστασης αυξάνεται με τη μείωση της έντασης του φωτός.
ΠΩΣ ΝΑ ΡΥΘΜΙΣΕΤΕ ΜΙΑ ΦΩΤΟΑΝΤΙΣΤΑΣΗ ΣΤΟ ARDUINO
Το Arduino δεν μπορεί να μετρήσει απευθείας την αντίσταση, μπορεί μόνο να μετρήσει την τάση. Πρέπει λοιπόν να χρησιμοποιήσουμε ένα διαιρέτη τάσης για να συνδέσουμε φωτοαντιστάσεις στο Arduino. Ακολουθεί ένα σχηματικό σχήμα του κυκλώματος διαιρέτη τάσης φωτοαντίστασης που πρόκειται να κατασκευάσουμε:
![Διαιρέτης τάσης φωτοαντίστασης Schematic.png](https://www.circuitbasics.com/wp-content/uploads/2020/06/Photoresistor-Voltage-Divider-Schematic.png)
Η τάση εξόδου (V out ) του διαιρέτη τάσης αλλάζει όταν αλλάζει η αντίσταση της φωτοαντίστασης. Χωρίς φως να χτυπά τη φωτοαντίσταση, η αντίσταση της φωτοαντίστασης είναι υψηλή, επομένως η τάση εξόδου είναι χαμηλή. Όταν το φως χτυπά τη φωτοαντίσταση, η αντίσταση μειώνεται και η τάση εξόδου αυξάνεται.
Αυτά είναι τα μέρη που θα χρειαστείτε για να συνδέσετε μια φωτοαντίσταση σε ένα Arduino:
Ακολουθήστε αυτό το διάγραμμα καλωδίωσης για να συνδέσετε το διαιρέτη τάσης φωτοαντίστασης στο Arduino:
![ΔΙΑΓΡΑΜΜΑ ΚΑΛΩΔΙΩΣΗΣ Φωτοαντίστασης](https://www.circuitbasics.com/wp-content/uploads/2021/09/Photoresistor-WIRING-DIAGRAM-2-774x1024.png)
ΠΩΣ ΝΑ ΠΡΟΓΡΑΜΜΑΤΙΣΕΤΕ ΜΙΑ ΦΩΤΟΑΝΤΙΣΤΑΣΗ ΣΤΟ 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()
τιμές θα πρέπει να αυξηθούν:
![Δεδομένα φωτοαντίστασης στο Serial Monitor.png](https://www.circuitbasics.com/wp-content/uploads/2020/06/Photoresistor-Data-on-Serial-Monitor-758x1024.png)
ΠΩΣ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΣΕΤΕ ΜΙΑ ΦΩΤΟΑΝΤΙΣΤΑΣΗ ΓΙΑ ΝΑ ΕΛΕΓΞΕΤΕ ΠΡΑΓΜΑΤΑ
Οι φωτοαντιστάσεις είναι ιδανικές για την κατασκευή διακοπτών με έλεγχο φωτός. Ας δημιουργήσουμε λοιπόν έναν διακόπτη ελεγχόμενου φωτός που ανάβει ένα LED όταν είναι σκοτάδι και σβήνει το LED στο φως.
Αυτά είναι τα μέρη που θα χρειαστείτε:
Συνδέστε το κύκλωμα ως εξής:
![Φωτοαντίσταση και ΔΙΑΓΡΑΜΜΑ ΚΑΛΩΔΙΩΣΗΣ LED](https://www.circuitbasics.com/wp-content/uploads/2021/09/Photoresistor-and-LED-WIRING-DIAGRAM-2-745x1024.png)
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΦΩΤΟΑΝΤΙΣΤΑΣΗΣ ΓΙΑ ΕΛΕΓΧΟ ΠΡΑΓΜΑΤΩΝ
Μόλις συνδεθεί το κύκλωμα, ανεβάστε αυτόν τον κωδικό στο 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 Circuit.jpg](https://www.circuitbasics.com/wp-content/uploads/2020/06/Photoresistor-and-LED-Circuit-1024x711.jpg)
Αυτό είναι ένα απλό παράδειγμα, αλλά είναι ένας λειτουργικός διακόπτης ελεγχόμενου φωτός. Μπορείτε να απενεργοποιήσετε το LED με οποιαδήποτε άλλη συσκευή που μπορεί να ελεγχθεί με το σήμα 5V από το Arduino. Φροντίστε να αφήσετε ένα σχόλιο εάν έχετε ερωτήσεις για οτιδήποτε!
Σχόλια
Δημοσίευση σχολίου