Πώς να χρησιμοποιήσετε IR LED και φωτοδίοδο με Arduino

Στο έργο αυτό θα δούμε πως μπορούμε να χρησιμοποιήσουμε και να προγραμματίσουμε ένα IR Led και μια φωτοδίοδο με το Arduino για να ανιχνεύσουμε εμπόδια σε μικρή απόσταση. Ας δούμε στη συνέχεια τι είναι το IR Led και η φωτοδίοδος.

 

IR LED:

How-to-Use-IR-LED-and-Photodiode-with-Arduino                 Το IR LED σημαίνει δίοδος εκπομπής φωτός υπέρυθρης ακτινοβολίας. Το IR LED εκπέμπει υπέρυθρο φως το οποίο δεν είναι ορατό στο ανθρώπινο μάτι. μπορούμε να βρούμε αυτά τα IR LEDs στα τηλεχειριστήρια της τηλεόρασής μας. Το IR LED λειτουργεί όπως τα κανονικά LED, αλλά το υλικό που χρησιμοποιείται στον πυρήνα είναι διαφορετικό, εκπέμπει Υπέρυθρο Φως όταν το ρεύμα περνά μέσα από αυτό. Αυτά τα IR LED χρησιμοποιούνται για την ανίχνευση εμποδίων μπροστά από το ρομπότ. Το IR LED εκπέμπει φωτισμό IR, το οποίο αντανακλάται εάν υπάρχει κάποιο εμπόδιο στην κατεύθυνση της ακτινοβολίας IR που εκπέμπεται, η ανακλώμενη ακτίνα IR που συλλαμβάνεται από τη φωτοδίοδο υπολογίζει την ένταση του ανακλώμενου φωτός. Όσο υψηλότερη είναι η ανακλώμενη IR

ακτινοβολία δύναμη, τόσο πιο κοντά είναι το εμπόδιο και το αντίστροφο.

 

Φωτοδίοδος:

How-to-Use-IR-LED-and-Photodiode-with-Arduino                 Η φωτοδίοδος είναι μια φωτοευαίσθητη δίοδος ημιαγωγών η οποία μετατρέπει την φωτεινή ενέργεια σε τάση ή ρεύμα ανάλογα με τον τρόπο λειτουργίας. Γενικά οι φωτοδιόδοι λειτουργούν σε κατάσταση αντίστροφης πόλωσης. Η καθαρή φωτοδίοδος μπορεί να ανιχνεύσει ορατές και ακτίνες IR. Για να περιορίσουμε  τη φωτοδίοδο  να ανιχνεύει μόνο τις υπέρυθρες ακτίνες εφαρμόζεται μια μαύρη επικάλυψη στο ποτήρι της φωτοδιόδου. Η φωτοδίοδος επιτρέπει στο ρεύμα να περάσει διαμέσου αυτού εάν η φωτοδίοδος εκτίθεται σε υπέρυθρες ακτίνες (IR) και δεν επιτρέπει τη διέλευση ρεύματος μέσω αυτού εάν δεν πέσουν υπέρυθρες ακτίνες πάνω σε αυτήν. Η ένταση του ρεύματος που διέρχεται από τη φωτοδίοδο είναι ανάλογη με την ποσότητα των υπέρυθρων ακτίνων που πέφτουν επάνω σε αυτήν.

Έργο  IR LED και φωτοδιόδου:

 

Σε αυτό το έργο θα δούμε πώς να χρησιμοποιήσουμε το ζεύγος  IR LED και φωτοδιόδου για να ανιχνεύσουμε ένα εμπόδιο μπροστά  του. Πρόκειται να προγραμματίσουμε  το Arduino έτσι ώστε, εάν υπάρχει ένα εμπόδιο πριν από το ζεύγος IR LED και φωτοδιόδου σε ένα συγκεκριμένο  εύρος κατωφλίου, να ακουστεί ένας βομβητής.

 

Απαιτούμενα υλικά:

1) Arduino 2) IR LED 3) Piezo βομβητής 4) μερικά καλώδια.

 

Γράφημα κυκλώματος:

How-to-Use-IR-LED-and-Photodiode-with-Arduino

 

               

 

Πώς λειτουργεί το κύκλωμα:

    Στο παραπάνω κύκλωμα η φωτοδίοδος λειτουργεί σε κατάσταση αντίστροφης πόλωσης, δηλαδή το μακρύ σκέλος της φωτοδιόδου πηγαίνει στη γείωση το κοντό πόδι συνδέεται με τροφοδοσία 5 Volt μέσω αντίστασης 3.3 ΚΩ. Όταν η φωτοδίοδος ανιχνεύει ακτίνες IR από το IR LED που αντανακλάται από ένα εμπόδιο,η φωτοδίοδος άγει, τότε το ρεύμα πηγαίνει στο έδαφος μέσω της φωτοδίοδου έτσι ώστε το ρεύμα προς τον αναλογικό ακροδέκτη A0 του Arduino να είναι χαμηλό και να έχουμε χαμηλή τιμή (περίπου 500) από την αναλογική θύρα A0 του arduino. Σε περίπτωση που δεν πέσουν οι ακτίνες IR στη φωτοδίοδο, η φωτοδίοδος δεν άγει με αποτέλεσμα  το ρεύμα από τον ψηφιακό ακροδέκτη 2 πηγαίνει στον αναλογικό ακροδέκτη Α0 μέσω της αντίστασης των 3.3 KΩ, και η τιμή από τον αναλογικό ακροδέκτη A0 του Arduino θα είναι περίπου 900 .

 

 

 

 

 

 

Πρόγραμμα :

  int pd=2;                      //Photodiode to digital pin 2

 int buzz=13;                   //piezo buzzer to digital pin 13 

 int senRead=0;                 //Readings from sensor to analog pin 0 

 int limit=850;                 //Threshold range of an obstacle  

 void setup()   

 { 

  pinMode(pd,OUTPUT); 

  pinMode(buzz,OUTPUT); 

  digitalWrite(pd,HIGH);       //supply 5 volts to photodiode 

  digitalWrite(buzz,LOW);      //set the buzzer in off mode (initial condition) 

  Serial.begin(9600);          //setting serial monitor at a default baund rate of 9600  

 } 

 void loop() 

 { 

  int val=analogRead(senRead);  //variable to store values from the photodiode 

  Serial.println(val);          // prints the values from the sensor in serial monitor 

  if(val <= limit)              //If obstacle is nearer than the Threshold range 

  { 

   digitalWrite(buzz,HIGH);     // Buzzer will be in ON state  

   delay(20); 

  } 

  else if(val > limit)          //If obstacle is not in Threshold range 

  { 

   digitalWrite(buzz,LOW);      //Buzzer will be in OFF state 

   delay(20); 

  } 

 } 

 

Πώς λειτουργεί το πρόγραμμα:

                 

Το πρόγραμμα ξεκινά με την αρχικοποίηση των μεταβλητών φωτοδιόδου «pd» με ψηφιακό ακροδέκτη 2, buzzer «buzz» με ψηφιακό ακροδέκτη 13, μετρήσεις αισθητήρων «senRead» σε αναλογική ακίδα 0 και η μεταβλητή ορίου είναι 500 (ανάγνωση από τον αισθητήρα). Στη μέθοδο 'void setup ()' η κατάσταση του pin καθορίζεται με τη συνάρτηση 'pinMode (μεταβλητή, OUTPUT / INPUT)'. Στη μέθοδο 'void loop ()' η μεταβλητή 'val' αποθηκεύει τις μετρήσεις από τον αισθητήρα. Το 'Serial.println (val)' χρησιμοποιείται για την εκτύπωση των τιμών από τον αισθητήρα στη σειριακή οθόνη. Έχουμε χρησιμοποιήσει μια σκάλα if-else για να ρυθμίσετε το βομβητή σε κατάσταση ON όταν το εμπόδιο βρίσκεται στην περιοχή Threshold, διαφορετικά ο βομβητής θα βρίσκεται στην κατάσταση OFF.