Χρησιμοποιώντας μια φωτοαντίσταση

 

Μέθοδος ανάγνωσης αναλογικής τάσης
Ο ευκολότερος τρόπος μέτρησης ενός αισθητήρα αντίστασης είναι να συνδέσετε το ένα άκρο με την τροφοδοσία και το άλλο με την αντίσταση pull-down  στη γείωση. Στη συνέχεια, το σημείο μεταξύ της σταθερής αντίστασης pull down και της μεταβλητής  φωτοαντίστασης συνδέεται με την αναλογική είσοδο ενός μικροελεγκτή όπως ένα Arduino
light_cdspulldowndiag.gif

light_cdsanasch.gif

 

 

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))

Δηλαδή, η τάση είναι ανάλογη προς το αντίστροφο της αντοχής των φωτοκυττάρων που είναι αντιστρόφως ανάλογο προς τα επίπεδα φωτός.

 

light_cdspulldowndiag.gif

 

Ο κώδικας που ακολουθεί ελέγχει και ένα 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); }

 

Για να το ελέγξετε ξεκινήστε σε ένα δωμάτιο με φως του ήλιου και στη συνέχεια καλύψτε την φωτοαντίσταση πρώτα με το χέρι σας και μετά με ένα σκούρο ύφασμα.