H τιμή μιας φωτοαντίστασης μεταβάλλεται με το φως. Δηλαδή όσο πέφτει φως πάνω της ελευθερώνονται ηλεκτρόνια, συνεπώς γίνεται πιο αγώγιμη, επομένως η τιμή της (σε Ω)μειώνεται. Αυτό σημαίνει, φυσικά, ότι η τιμή του ρεύματος που την διαρρέει αυξάνει (Ι=V/R). Προφανώς η πτώση τάσης V στην φωτοαντίσταση μειώνεται. Η πτώση τάσης στην κανονική αντίσταση, όμως, αυξάνεται, αφού η αντίσταση διαρρέεται από περισσότερο ρεύμα.
Στο παρακάτω πρόβλημα στόχος είναι να δίνεται εντολή από το Arduino να ανάψει μία LED, όταν η τιμή του ρεύματος πέσει κάτω από μία τιμή.
Στο κύκλωμα ελέγχου βάζουμε μία φωτοαντίσταση και μία αντίσταση 10KΩ σε σειρά.
- Το άκρο της φωτοαντίστασης συνδέεται με τα 5V του Arduino.
- Το κοινό άκρο αντίστασης και φωτοαντίστασης συνδέεται στην αναλογική είσοδο A0 του Arduino.
- Το άκρο της αντίστασης συνδέεται με την γείωση.
Ο παρακάτω κώδικας δίνει εντολή να ανάψει η LED (συνδέστε κύκλωμα LED στο pin 3) όταν η τιμή που διαβάζει η αναλογική είσοδος A0 (αντιστοίχιση τάσης 0-5V σε αριθμό από 0 ως 1024) είναι μικρότερη από 200 (περίπου 0,97V). Μετράμε την πτώση τάσης στην κανονική αντίσταση.
Η τιμή 200 μπορεί να αλλάξει, αναλόγως τη φωτεινότητα που θέλουμε, παρακολουθώντας τις τιμές της σειριακής.
int presistor = A0; // Photoresistor at Arduino analog pin A0
int ledPin=3; // Led pin at Arduino pin 9
//Variables
int value; // Store value from photoresistor (0-1023)
void setup(){
pinMode(ledPin, OUTPUT); // Set lepPin - 9 pin as an output
pinMode(presistor, INPUT);// Set pResistor - A0 pin as an input (optional)
Serial.begin(9600);
}
void loop(){
value = analogRead(presistor);
Serial.print(value);
Serial.println();
//You can change value "25"
if (value > 200
){
digitalWrite(ledPin, LOW); //Turn led off
}
else{
digitalWrite(ledPin, HIGH); //Turn led on
}
}
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου
Σημείωση: Μόνο ένα μέλος αυτού του ιστολογίου μπορεί να αναρτήσει σχόλιο.