Πώς να χρησιμοποιήσετε IR LED και φωτοδίοδο με Arduino
Στο έργο αυτό θα δούμε πως μπορούμε να χρησιμοποιήσουμε και να προγραμματίσουμε ένα IR Led και μια φωτοδίοδο με το Arduino για να ανιχνεύσουμε εμπόδια σε μικρή απόσταση. Ας δούμε στη συνέχεια τι είναι το IR Led και η φωτοδίοδος.
IR LED:
Το IR LED σημαίνει δίοδος εκπομπής φωτός υπέρυθρης ακτινοβολίας. Το IR LED εκπέμπει υπέρυθρο φως το οποίο δεν είναι ορατό στο ανθρώπινο μάτι. μπορούμε να βρούμε αυτά τα IR LEDs στα τηλεχειριστήρια της τηλεόρασής μας. Το IR LED λειτουργεί όπως τα κανονικά LED, αλλά το υλικό που χρησιμοποιείται στον πυρήνα είναι διαφορετικό, εκπέμπει Υπέρυθρο Φως όταν το ρεύμα περνά μέσα από αυτό. Αυτά τα IR LED χρησιμοποιούνται για την ανίχνευση εμποδίων μπροστά από το ρομπότ. Το IR LED εκπέμπει φωτισμό IR, το οποίο αντανακλάται εάν υπάρχει κάποιο εμπόδιο στην κατεύθυνση της ακτινοβολίας IR που εκπέμπεται, η ανακλώμενη ακτίνα IR που συλλαμβάνεται από τη φωτοδίοδο υπολογίζει την ένταση του ανακλώμενου φωτός. Όσο υψηλότερη είναι η ανακλώμενη IR
ακτινοβολία δύναμη, τόσο πιο κοντά είναι το εμπόδιο και το αντίστροφο.
Φωτοδίοδος:
Η
φωτοδίοδος είναι μια φωτοευαίσθητη δίοδος ημιαγωγών η οποία μετατρέπει την
φωτεινή ενέργεια σε τάση ή ρεύμα ανάλογα με τον τρόπο λειτουργίας. Γενικά οι
φωτοδιόδοι λειτουργούν σε κατάσταση αντίστροφης πόλωσης. Η καθαρή φωτοδίοδος
μπορεί να ανιχνεύσει ορατές και ακτίνες IR. Για να περιορίσουμε τη φωτοδίοδο
να ανιχνεύει μόνο τις υπέρυθρες ακτίνες εφαρμόζεται μια μαύρη επικάλυψη στο
ποτήρι της φωτοδιόδου. Η φωτοδίοδος επιτρέπει στο ρεύμα να περάσει διαμέσου
αυτού εάν η φωτοδίοδος εκτίθεται σε υπέρυθρες ακτίνες (IR) και δεν επιτρέπει τη
διέλευση ρεύματος μέσω αυτού εάν δεν πέσουν υπέρυθρες ακτίνες πάνω σε αυτήν. Η
ένταση του ρεύματος που διέρχεται από τη φωτοδίοδο είναι ανάλογη με την ποσότητα
των υπέρυθρων ακτίνων που πέφτουν επάνω σε αυτήν.
Έργο IR LED και φωτοδιόδου:
Σε αυτό το έργο θα δούμε πώς να χρησιμοποιήσουμε το ζεύγος IR LED και φωτοδιόδου για να ανιχνεύσουμε ένα εμπόδιο μπροστά του. Πρόκειται να προγραμματίσουμε το Arduino έτσι ώστε, εάν υπάρχει ένα εμπόδιο πριν από το ζεύγος IR LED και φωτοδιόδου σε ένα συγκεκριμένο εύρος κατωφλίου, να ακουστεί ένας βομβητής.
Απαιτούμενα υλικά:
1) Arduino 2) IR LED 3) Piezo βομβητής 4) μερικά καλώδια.
Γράφημα κυκλώματος:
Πώς λειτουργεί το κύκλωμα:
Στο παραπάνω κύκλωμα η φωτοδίοδος λειτουργεί σε κατάσταση αντίστροφης πόλωσης, δηλαδή το μακρύ σκέλος της φωτοδιόδου πηγαίνει στη γείωση το κοντό πόδι συνδέεται με τροφοδοσία 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.