Μέθοδος ανάγνωσης αναλογικής τάσης
Ο ευκολότερος τρόπος μέτρησης ενός αισθητήρα αντίστασης είναι να συνδέσετε το
ένα άκρο με την τροφοδοσία και το άλλο με την αντίσταση pull-down στη γείωση. Στη
συνέχεια, το σημείο μεταξύ της σταθερής αντίστασης pull
down και της μεταβλητής φωτοαντίστασης
συνδέεται με την αναλογική είσοδο ενός μικροελεγκτή
όπως ένα Arduino
Aυτό το παράδειγμα το δείχνoυμε με 5V τάση, αλλά
σημειώστε ότι μπορείτε να το χρησιμοποιήσετε με τροφοδοσία 3.3 V εξίσου εύκολα.
Σε αυτή τη διαμόρφωση η αναλογική ένδειξη τάσης κυμαίνεται από 0V (γείωση) έως
περίπου 5V (ή περίπου ίδια με την τάση τροφοδοσίας).
Ο τρόπος με τον οποίο λειτουργεί αυτό είναι ότι καθώς η αντίσταση του φωτοαντιστάτη (LDR) μειώνεται, η συνολική αντίσταση του φωτοαντιστάτη (LDR) και της pull down αντίστασης μειώνεται από πάνω από 600KΩ σε 10KΩ. Αυτό
σημαίνει ότι αυξάνεται η ένταση του ρεύματος που διέρχεται και από τους δύο
αντιστάτες, γεγονός που με τη σειρά του αυξάνει την τάση στην σταθερή αντίσταση
10KΩ.
Φως περιβάλλοντος … |
|
LDR
(Ω) |
LDR + R
(Ω) |
Ένταση
ρεύματος
LDR +R |
Τάση στην
R |
χαμηλός φωτισμός |
0.1 lux |
600KΩ |
610 KΩ |
0.008 mA |
0.1 V |
φεγγαρόφως |
1 lux |
70 KΩ |
80 KΩ |
0.07 mA |
0.6 V |
σκοτεινό δωμάτιο |
10 lux |
10 KΩ |
20 KΩ |
0.25 mA |
2.5 V |
συννεφιασμένη ημέρα/φωτεινό δωμάτιο |
100 lux |
1.5 KΩ |
11.5 KΩ |
0.43 mA |
4.3 V |
συννεφιασμένη ημέρα |
1000 lux |
300 Ω |
10.03 KΩ |
0.5 mA |
5V |
Αυτός ο πίνακας δείχνει την κατά προσέγγιση αναλογική τάση που βασίζεται
στον φωτισμό / αντίσταση αισθητήρα με 5V τάση και 10KΩ pull
down αντιστάτη.
Εάν σχεδιάζετε να έχετε τον αισθητήρα σε μια φωτεινή περιοχή και
χρησιμοποιήσετε ένα αντιστάτη 10KΩ, θα κορεστεί
γρήγορα. Αυτό σημαίνει ότι θα χτυπήσει το «ανώτατο όριο» του 5V και δεν θα
είναι σε θέση να διαφοροποιήσει μεταξύ κάπως φωτεινού και πραγματικά φωτεινού.
Σε αυτή την περίπτωση, θα πρέπει να αντικαταστήσετε τον αντιστάτη των 10KΩ με
αντιστάτη 1KΩ. Σε αυτή την περίπτωση, δεν θα είναι σε θέση να ανιχνεύσει και
διαφορές σκούρου επιπέδου τόσο καλά, αλλά θα είναι σε θέση να ανιχνεύσει
καλύτερα τις διαφορές φωτεινού φωτός. Αυτό είναι ένα θέμα που θα πρέπει να
αποφασίσετε!
Μπορείτε επίσης να χρησιμοποιήσετε τον τύπο "Axel Benz", μετρώντας την τιμή ελάχιστης και μέγιστης αντίστασης με το πολύμετρο και στη συνέχεια να βρείτε την τιμή της αντίστασης με τη σχέση : Pull-Down αντιστάτης = √(Rmin * Rmax), αυτό σας δίνει ελαφρώς καλύτερη περιοχή υπολογισμών
Φως περιβάλλοντος … |
|
LDR
(Ω) |
LDR + R
(Ω) |
Ένταση
ρεύματος
LDR +R |
Τάση στην
R |
φεγγαρόφως |
1 lux |
70 KΩ |
71 KΩ |
0.07 mA |
0.1 V |
σκοτεινό δωμάτιο |
10 lux |
10 KΩ |
11 KΩ |
0.45 mA |
0.5 V |
συννεφιασμένη ημέρα/φωτεινό δωμάτιο |
100 lux |
1.5 KΩ |
2.5 KΩ |
2 mA |
2.0 V |
συννεφιασμένη ημέρα |
1000 lux |
300 Ω |
1.3 KΩ |
3.8 mA |
3.8 V |
Πλήρες φως ημέρας |
10,000 lux |
100 Ω |
1.1 KΩ |
4.5 mA |
4.5 V |
Αυτός ο πίνακας δείχνει την κατά προσέγγιση αναλογική
τάση που βασίζεται στον φωτισμό αισθητήρα / αντίσταση με 5V παροχή και
αντίσταση παλμού 1Κ.
Σημειώστε ότι η μέθοδος μας δεν παρέχει γραμμική τάση
σε σχέση με τη φωτεινότητα! Επίσης, κάθε αισθητήρας θα είναι διαφορετικός.
Καθώς αυξάνεται η στάθμη του φωτός, η αναλογική τάση ανεβαίνει ακόμα και αν η
αντίσταση μειωθεί:
Vo = Vcc (R / (R + LDR))
Δηλαδή, η τάση είναι ανάλογη προς το αντίστροφο της
αντοχής των φωτοκυττάρων που είναι αντιστρόφως
ανάλογο προς τα επίπεδα φωτός.
Ο κώδικας που ακολουθεί ελέγχει και ένα led συνδεδεμένο σε σειρά με την φωτοαντίσταση έτσι ώστε αυτό να ανάβει όταν ο φωτισμός του περιβάλλοντος είναι χαμηλός.
/* Συνδέουμε το ένα άκρο του φωτοαντιστάτη με το
αναλογικό A0 και το άλλο με την τάση 5V.
Στη συνέχεια συνδέουμε το ένα άκρο του αντιστάτη των 10KΩ με το Α0 και το άλλο
με τη γείωση
*/
int photocellPin = 0; // Ο φωτοαντιστάτης και ένας 10K pulldown αντιστάτης είναι
συνδεδεμένοι στο a0
int photocellReading; // όνομα αναλογικού σήματος από τον διαιρέτη του αντιστάτη
int pinled = 7; // lights when photocellReading < 200
void setup(void) {
// Τα αποτελέσματα θα εμφανιστούν στη σειριακή οθόνη
Serial.begin(9600);
pinMode(pinled, OUTPUT);
// digitalWrite(pinled,HIGH);
}
void loop(void) {
photocellReading = analogRead(photocellPin);
Serial.print("Analog reading = ");
Serial.print(photocellReading); // η αναλογική είσοδος
// Ανάλογα με την ένταση της εισόδου θα έχουμε
if (photocellReading < 200) {
digitalWrite(pinled,HIGH); }
else { digitalWrite(pinled,LOW);}
if (photocellReading < 10) {
Serial.println(" - Dark");}
else if (photocellReading < 200) {
Serial.println(" - Dim");}
else if (photocellReading < 500) {
Serial.println(" - Light");}
else if (photocellReading < 800) {
Serial.println(" - Bright");}
else { Serial.println(" - Very bright");
}
delay(1000); }
Για να το ελέγξετε ξεκινήστε σε ένα δωμάτιο με φως του
ήλιου και στη συνέχεια καλύψτε την φωτοαντίσταση πρώτα
με το χέρι σας και μετά με ένα σκούρο ύφασμα.