ΠΕΡΙΓΡΑΦΗ

Θεωρία / Εκπαιδευτικοί Στόχοι

Λογισμικό: Χρήση κεφαλίδων 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 με ένα βηματικό κινητήρα που θα αλλάζει την κλίση περσίδων αναλόγως του φωτός του γύρω χώρου.

ΠΕΡΙΕΧΟΜΕΝΑ

ΕΙΣΗΓΗΤHΣ