Απλός αυτοματισμός με φωταντίσταση
ΠΕΡΙΓΡΑΦΗ
Θεωρία / Εκπαιδευτικοί Στόχοι
Λογισμικό: Χρήση κεφαλίδων pitches.h και σειριακού τερματικού – Serial Monitor
Υλικό: Χρήση ηχείου και αισθητήρα υπερύθρων PIR = passive infrared
Στην παρούσα εργαστηριακή άσκηση θα φτιάξουμε έναν πολύ απλόν αυτοματισμό που θα ανάβει ένα LED όταν πέσει το σκοτάδι.
Υλικά
Τα υλικά που θα χρειαστούμε είναι:
1/ Μια κοινή φωταντίσταση (Εικ. 1). Ανιχνεύει / μετρά το φως του γύρω χώρου.
2/ Μια αντίσταση 10Κ.
3/ LED: θα ανάβει όταν η φωταντίσταση μετρά λίγο φως στον γύρω χώρο. Σε μια κανονική εφαρμογή θα ανάβουν τα φώτα μέσω ρελαί.

Εικόνα 3-1: Φωταντίσταση
Το κύκλωμα
Μπορούμε να δοκιμάσουμε την φωταντίσταση με το παρακάτω απλό κύκλωμα (Εικ. 3-2 – To Arduino απλώς παρέχει τα 5V). Η αντίσταση μιας φωταντίστασης μικραίνει όταν υπάρχει φως στον γύρω χώρο, οπότε το LED ανάβει. Αντίθετα, όταν το φως είναι λίγο, η αντίσταση μεγαλώνει, το ρεύμα μικραίνει και το LED ανάβει λίγο έως καθόλου. Εμείς όμως θέλουμε το αντίθετο, δηλ. να ανάβει το LED όταν είναι σκοτεινά. Αυτό (και πολλά άλλα) μπορούμε να το πετύχουμε με κώδικα.

Εικόνα 3-2: Κύκλωμα δοκιμής φωταντίστασης
Ο κώδικας
To κατώφλι (threshold) είναι η φωτεινότητα που ανιχνεύει η φωτοαντίσταση. Όταν έχει φως ημέρας θα έχει μεγάλες τιμές (πχ 900-1000). Όταν πέσει το σκοτάδι, μειώνεται (πχ 300-600). Αλλάζοντας To κατώφλι ρυθμίζουμε πότε θέλουμε να ανάβει το LED.
/* Using a photoresistor (or photocell) to turn on an LED in the dark Modified from: http://www.ardumotive.com/how-to-use-a-photoresistor-en.html */
//Constants
const int pResistor = A0; // Photoresistor at Arduino analog pin A0 & Vcc
const int ledPin=9; // Led+ pin+ at Arduino pin 9 & GND
const int threshold = 500; // We can change this value at will
// Resistor 10K: Arduino pin 9 – GND
//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); //Initialize serial port
Serial.println(“AA. Code = photoresistor.ino “);
// TEST LED
digitalWrite(ledPin, HIGH); //Turn led on
delay(3000); // delay 3 sec
digitalWrite(ledPin, LOW); //Turn led off
}
void loop(){
value = analogRead(pResistor);
Serial.print(“Value of photoresistor = “);
Serial.println(value);
if (value > threshold){
digitalWrite(ledPin, LOW); //Turn led off
}
else{
digitalWrite(ledPin, HIGH); //Turn led on
}
delay(2000); // delay 2 sec
}
//

Εικόνα 3-3: Το θεωρητικό κύκλωμα
Πηγή: http://www.instructables.com/id/How-to-use-a-photoresistor-or-photocell-Arduino-Tu/

Εικόνα 3-4: Υλοποίηση του κυκλώματος
Εργασία
Το μειονέκτημα της συγκεριμένης υλοποίησης είναι ότι το LED έχει μόνο 2 καταστάσεις λειτουργίας: ON και OFF, ενώ στο απλό κύκλωμα της Εικ. 1 το LED λειτουργεί αναλογικά, δηλ. μεταβάλλεται η φωτεινότητά του αναλόγως του φωτός του γύρω χώρου.
1/ Τροποποιήστε τον κώδικα ούτως ώστε η φωτεινότητα του LED να μεταβάλλεται αντιστρόφως του φωτός του γύρω χώρου. Δηλ: πολύ φως ==> το LED να ακτινοβολεί λίγο, λίγο φως ==> το LED να ακτινοβολεί πολύ.
2/ Αντικαταστήστε το LED με ένα βηματικό κινητήρα που θα αλλάζει την κλίση περσίδων αναλόγως του φωτός του γύρω χώρου.