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

 

ΠΩΣ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΣΕΤΕ ΦΩΤΟΑΝΤΙΣΤΑΣΕΙΣ ΓΙΑ ΝΑ ΑΝΙΧΝΕΥΣΕΤΕ ΦΩΣ ΣΕ ΕΝΑ 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. Φροντίστε να αφήσετε ένα σχόλιο εάν έχετε ερωτήσεις για οτιδήποτε!




Σχόλια

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

PWM στο Arduino

  PWM στο Arduino Εισαγωγή στο PWM Η διαμόρφωση πλάτους παλμού (PWM)   είναι μια τεχνική με την οποία το πλάτος ενός παλμού μεταβάλλεται διατηρώντας τη συχνότητα του κύματος σταθερή. Είναι μια μέθοδος παραγωγής αναλογικού σήματος με χρήση ψηφιακής πηγής. Γενιά PWM   Ένα σήμα PWM αποτελείται από δύο κύρια στοιχεία που καθορίζουν τη συμπεριφορά του: έναν  κύκλο λειτουργίας  και μια  συχνότητα  .   Τι είναι ο κύκλος λειτουργίας του σήματος Η περίοδος ενός παλμού αποτελείται από έναν  κύκλο  ON   (5V) και έναν    κύκλο  OFF  (0V). Το κλάσμα για το οποίο το σήμα είναι ενεργοποιημένο για μια περίοδο είναι γνωστό ως   κύκλος λειτουργίας  . Π.χ.  Ένας παλμός με περίοδο 10 ms θα παραμείνει ενεργός (υψηλό) για 2 ms. Επομένως, ο κύκλος λειτουργίας θα είναι D = 2ms / 10ms = 20%   Μέσω της τεχνικής PWM, μπορούμε να ελέγξουμε την ισχύ που παρέχεται στο φορτίο χρησιμοποιώντας το σήμα ON-O...

Tmp36GZ θερμόμετρο με LCD οθόνη

 Tmp36GZ με LCD οθόνη // Define to which pin of the Arduino the output of the TMP36 is connected: #include <LiquidCrystal_I2C.h> // Look for LiquidCrystal I2C library by Marco Schwartz LiquidCrystal_I2C lcd ( 0x 27 , 16 , 2 ) ;  // set the LCD address to 0x3F for a 16 chars and 2 line display #define sensorPin A0 void setup () {   // Begin serial communication at a baud rate of 9600:   Serial . begin ( 9600 ) ;   lcd . init () ;   lcd . clear () ;           lcd . backlight () ;      // Make sure backlight is on     // Print a message on both lines of the LCD.   lcd . setCursor ( 2 , 0 ) ;   //Set cursor to character 2 on line 0   lcd . print ( "Hello world!" ) ;     lcd . setCursor ( 2 , 1 ) ;   //Move cursor to character 2 on line 1   lcd . print ( "LCD Tutorial" ) ; } void loop () {   // Get a reading from the temperature sensor:   int reading ...

Θερμόμετρο LM35

  // Θερμόμετρο LM35 // Needs library  on  https://github.com/wilmouths/LM35 #include <LM35.h> LM35 sensor ( 0 ) ; void setup () {   Serial . begin ( 9600 ) ; } void loop () {   Serial . println ( sensor . getTemp ()) ; // Temp in celcius }