Μετάβαση στο κύριο περιεχόμενο

 

ΠΩΣ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΣΕΤΕ ΦΩΤΟΑΝΤΙΣΤΑΣΕΙΣ ΓΙΑ ΝΑ ΑΝΙΧΝΕΥΣΕΤΕ ΦΩΣ ΣΕ ΕΝΑ ARDUINO
















Οι φωτοαντιστάσεις είναι αναλογικοί αισθητήρες που μπορούν να μετρήσουν το φως. Είναι αντιστάσεις εξαρτώμενες από το φως που αλλάζουν αντίσταση με την ποσότητα φωτός που χτυπά τον αισθητήρα.


Οι φωτοαντιστάσεις είναι ιδανικές για την κατασκευή διακοπτών με έλεγχο φωτός. Μια κοινή εφαρμογή των φωτοαντιστάσεων είναι ο έλεγχος ρελέ 5 volt για να ανάβουν μια λάμπα όταν πέφτει το σκοτάδι. Χρησιμοποιούνται επίσης για την παρακολούθηση του φωτός της ημέρας σε μετεωρολογικούς σταθμούς και συστήματα περιβαλλοντικής παρακολούθησης.

ΠΩΣ ΛΕΙΤΟΥΡΓΟΥΝ ΟΙ ΦΩΤΟΑΝΤΙΣΤΑΣΕΙΣ

Οι φωτοαντιστάσεις έχουν δύο ξεχωριστά ηλεκτρόδια στο αισθητήριο στοιχείο. Η κόκκινη γραμμή είναι ένα στρώμα ημιαγώγιμου υλικού μεταξύ των δύο ηλεκτροδίων:

Ηλεκτρόδια φωτοαντίστασης και ανθεκτικό υλικό.jpg

Το ημιαγώγιμο υλικό αυξάνει την αγωγιμότητα όταν το χτυπά περισσότερο φως. Όταν αυξάνεται η αγωγιμότητα, η αντίσταση μειώνεται. Επομένως η αντίσταση μιας φωτοαντίστασης μειώνεται με την αύξηση της έντασης του φωτός. Αντίθετα, η αντίσταση μιας φωτοαντίστασης αυξάνεται με τη μείωση της έντασης του φωτός.

ΠΩΣ ΝΑ ΡΥΘΜΙΣΕΤΕ ΜΙΑ ΦΩΤΟΑΝΤΙΣΤΑΣΗ ΣΤΟ ARDUINO

Το Arduino δεν μπορεί να μετρήσει απευθείας την αντίσταση, μπορεί μόνο να μετρήσει την τάση. Πρέπει λοιπόν να χρησιμοποιήσουμε ένα διαιρέτη τάσης για να συνδέσουμε φωτοαντιστάσεις στο Arduino. Ακολουθεί ένα σχηματικό σχήμα του κυκλώματος διαιρέτη τάσης φωτοαντίστασης που πρόκειται να κατασκευάσουμε:

Διαιρέτης τάσης φωτοαντίστασης Schematic.png

Η τάση εξόδου (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()τιμές θα πρέπει να αυξηθούν:

Δεδομένα φωτοαντίστασης στο Serial Monitor.png

ΠΩΣ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΣΕΤΕ ΜΙΑ ΦΩΤΟΑΝΤΙΣΤΑΣΗ ΓΙΑ ΝΑ ΕΛΕΓΞΕΤΕ ΠΡΑΓΜΑΤΑ

Οι φωτοαντιστάσεις είναι ιδανικές για την κατασκευή διακοπτών με έλεγχο φωτός. Ας δημιουργήσουμε λοιπόν έναν διακόπτη ελεγχόμενου φωτός που ανάβει ένα LED όταν είναι σκοτάδι και σβήνει το 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 Circuit.jpg

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




Σχόλια

Δημοφιλείς αναρτήσεις από αυτό το ιστολόγιο

Σερβοκινητήρας

  Βασικός έλεγχος σερβομηχανισμού Θα μάθουμε πώς να ελέγχετε έναν τυπικό σερβοκινητήρα, να πηγαίνει εμπρός και πίσω κατά 180 μοίρες, χρησιμοποιώντας ένα «βρόχο for()». Αυτό γίνεται με τη βοήθεια της βιβλιοθήκης Servo, η οποία είναι προεγκατεστημένη βιβλιοθήκη στο Arduino IDE (τόσο εκτός σύνδεσης όσο και σε ηλεκτρονική έκδοση). . Αυτό γίνεται με τη βοήθεια της βιβλιοθήκης  Servo     , η οποία είναι προεγκατεστημένη βιβλιοθήκη στο Arduino IDE (τόσο εκτός σύνδεσης όσο και σε ηλεκτρονική έκδοση).      Χρειαζόμαστε τα παρακάτω:     Arduino IDE Arduino UNO  Σερβοκινητήρας 4,8V - 6V  Καλώδια βραχυκυκλωτήρα. Τυπικοί σερβοκινητήρες Οι τυπικοί σερβοκινητήρες είναι ενεργοποιητές που επιτρέπουν τον ακριβή έλεγχο της θέσης (γωνία). Χαρακτηριστικό  είναι ότι η γωνία του κινητήρα είναι 0 - 180 μοίρες. Με άλλα λόγια, μπορεί να κάνει το μισό μιας περιστροφής. Ένας τυπικός σερβοκινητήρας, όπως και άλλοι κινητήρες, είναι ουσιαστικά απλώς ένας...

Αντιστάσεις pull up, pull down

  Αντιστάσεις pull up (Pull up resistors) Οι αντιστάσεις pull up  είναι πολύ συνηθισμένες όταν χρησιμοποιούνται μικροελεγκτές (MCU) ή οποιαδήποτε συσκευή ψηφιακής λογικής. Θα εξηγήσουμε πότε και πού να χρησιμοποιήσετε αντιστάσεις pull up και, στη συνέχεια, θα κάνουμε έναν απλό υπολογισμό για να δείξουμε γιατί είναι σημαντικά τα pull-ups. Τι είναι μια αντίσταση  Pull up Ας υποθέσουμε ότι έχετε ένα MCU με ένα pin διαμορφωμένο ως είσοδο. Εάν δεν υπάρχει τίποτα συνδεδεμένο με τον ακροδέκτη και το πρόγραμμά σας διαβάζει την κατάσταση του ακροδέκτη, θα είναι ψηλά (τραβηγμένο στο VCC) ή χαμηλό (τραβηγμένο στη γείωση);  Αυτό το φαινόμενο αναφέρεται ως  αιωρούμενο  (floating). Για να αποφευχθεί αυτή η άγνωστη κατάσταση, μια αντίσταση pull-up ή pull-down θα διασφαλίσει ότι η ακίδα βρίσκεται είτε σε υψηλή είτε σε χαμηλή κατάσταση, ενώ χρησιμοποιεί επίσης χαμηλή ποσότητα ρεύματος. Για απλότητα, θα εστιάσουμε στα pull-ups καθώς είναι πιο συνηθισμένα από τα pull-down. Λε...

Πώς να χρησιμοποιήσετε ένα Breadboard

  Πώς να χρησιμοποιήσετε ένα Breadboard Το breadboard έχει εσωτερικές συνδέσεις μεταξύ των οπών του. Μερικές κάθετες συνδέσεις και μερικές οριζόντιες συνδέσεις. Κανονικά, χρησιμοποιείτε τις κολώνες στα πλάγια για να συνδέσετε το τροφοδοτικό σας. Και χρησιμοποιείτε τις σειρές στη μέση για να συνδέσετε τα στοιχεία σας. Στήλες Τροφοδοτικού Είναι σύνηθες να χρησιμοποιείτε τις στήλες στα αριστερά και δεξιά για τη σύνδεση του τροφοδοτικού. Αυτές οι στήλες συνδέονται κάθετα. Έτσι, εάν συνδέσετε 5 βολτ στην επάνω οπή μιας από τις πλευρικές κολώνες, θα έχετε 5 βολτ σε όλες τις οπές αυτής της στήλης. Χρησιμοποιήστε τις στήλες που επισημαίνονται με κόκκινη γραμμή για το συν και τη στήλη με μπλε γραμμή για το μείον. Τέλος φόρμας Σημείωση: Μερικές μεγαλύτερες πλάκες   breadboard χωρίζονται στα δύο έτσι ώστε το πάνω μισό να αποσυνδεθεί από το κάτω μισό. Αυτό υποδεικνύεται από τις κατακόρυφες μπλε και κόκκινες γραμμές που χωρίζονται στα δύο.   Περιοχή Συστατικού Σ...