Η πόλη μας, το Αργοστόλι, υδρεύεται από πηγές οι οποίες βρίσκονται κοντά στην θάλασσα στην περιοχή του Κουτάβου. Τις τελευταίες δεκαετίες ο πληθυσμός της πόλης μας έχει αυξηθεί, το δίκτυο ύδρευσης έχει επεκταθεί σε παρακείμενα χωριά και η τουριστική κίνηση έχει αυξηθεί κατακόρυφα.
Στο σχολείο μας, με βλέψη να συνεισφέρουμε στην εξοικονόμηση του πολύτιμου αλλά και ακριβού πλέον (λόγω αφαλάτωσης) νερού σκεφτήκαμε την κατασκευή μιας φιλικής συσκευής, την οποία θα μπορεί να την αποκτήσει ο καθένας και να την τοποθετήσει στη βρύση του νεροχύτη και του νιπτήρα του σπιτιού του ή του μαγαζιού του, με σκοπό να σταματά την ροή του νερού αυτόματα όταν δεν το χρησιμοποιούμε. Πολλές φορές όταν ανοίγουμε την βρύση χρησιμοποιούμε το νερό κατά διαστήματα χωρίς όμως να κλείνουμε την βρύση τα ενδιάμεσα χρονικά διαστήματα με αποτέλεσμα σημαντική ποσότητα νερού να ξοδεύεται άσκοπα. Η διάταξή μας βιδώνεται-προσαρμόζεται στο στόμιο σχεδόν κάθε υπάρχουσας βρύσης και χρησιμοποιώντας έναν αισθητήρα υπερύθρων ενεργοποιείται αυτόματα, ανοίγοντας τη βρύση, όταν ανιχνεύει το χέρι του χρήστη, και διακόπτει τη ροή του νερού όταν δεν υπάρχει κάποιος να το χρησιμοποιεί. Η διάταξη αυτή υλοποιήθηκε στα πλαίσια του 2ου διαγωνισμού αλλά κατατέθηκε καθυστερημένα λόγω ενός τεχνικού προβλήματος και έτσι την υποβάλλουμε στον φετινό διαγωνισμό. Θεωρήσαμε χρήσιμο, στα πλαίσια του φετινού διαγωνισμού, να βελτιώσουμε την συσκευή μας προσθέτοντας την επιπλέον δυνατότητα φωνητικών εντολών για το άνοιγμα και κλείσιμο της βρύσης.
1ο ΒΗΜΑ ΥΛΟΠΟΙΗΣΗΣ: ηλεκτροβάνα
Το πρώτο μας βήμα ήταν να γνωρίσουμε και να πειραματιστούμε με την λειτουργία της ηλεκτροβάνας. Η ηλεκτροβάνα λειτουργεί με την βοήθεια ενός πηνίου με σιδερένιο πυρήνα ο οποίος μπορεί να μετακινείται. Διαπιστώσαμε ότι όταν δεν περνάει ηλεκτρικό ρεύμα από το πηνίο η ηλεκροβάνα είναι κλειστή και δεν επιτρέπει να περνά νερό. Προφανώς ο σιδερένιος πυρήνας πιέζεται από ένα ελατήριο και «κλείνει» το στόμιο της εξόδου της ηλεκτροβάνας. Όταν το πηνίο διαρρέεται από συνεχές ηλεκτρικό ρεύμα δημιουργεί σταθερό μαγνητικό πεδίο το οποίο έλκει τον σιδερένιο πυρήνα και έτσι «ελευθερώνεται» το στόμιο εξόδου της ηλεκτροβάνας. Δοκιμάσαμε να τροφοδοτήσουμε το πηνίο με διάφορες τιμές τάσης (προφανώς συνεχής – DC). Παρατηρήσαμε ότι η ηλεκτροβάνα που διαθέτουμε (ονομαστικής τάσης λειτουργίας 12V) λειτουργεί για τιμές τάσης τροφοδοσίας του πηνίου από 9V έως 12V. Άρα, η λειτουργία της μπορεί να ελεγχθεί με μια μπαταρία των 9V. Επιπλέον, μετρήσαμε ότι η ένταση του ρεύματος που διαρρέει το πηνίο, όταν στα άκρα του εφαρμόζεται τάση 9V, είναι 275mA.
2ο ΒΗΜΑ ΥΛΟΠΟΙΗΣΗΣ: αισθητήρας απόστασης υπέρυθρης (IR) ακτινοβολίας
Το δεύτερο βήμα ήταν ο έλεγχος της λειτουργίας του αισθητήρα υπερύθρων Sharp 2Y0A02 F7Z. Η διάταξη του αισθητήρα εκπέμπει υπέρυθρη (IR) ακτινοβολία η οποία ανακλώμενη σε ένα αντικείμενο επιστρέφει και απορροφάται από έναν αισθητήρα (διάταξη επαφής ημιαγωγών) στην οποία δημιουργείται μία τάση που ονομάζουμε τάση εξόδου.
Τοποθετήσαμε τον αισθητήρα κάτω από ένα πέτασμα, τον συνδέσαμε με κατάλληλη τροφοδοσία 5V και ένα βολτόμετρο μετρά την τάση εξόδου. Μετακινούσαμε το πέτασμα σε διαφορετικές αποστάσεις και καταγράψαμε την τάση της αναλογικής εξόδου του αισθητήρα ως συνάρτηση της απόστασης του πετάσματος από τον αισθητήρα.
Πραγματοποιήσαμε σειρές μετρήσεων αλλάζοντας διάφορες παραμέτρους. Σειρές μετρήσεων που καταγράψαμε: εντός του εργαστηρίου με τα φώτα ανοιχτά, εντός εργαστηρίου με τα φώτα σβηστά, με λευκό πέτασμα, με μαύρο πέτασμα, με ημιδιαφανές και διαφανές πέτασμα και εκτός του εργαστηρίου με τον αισθητήρα εκτεθειμένο στο ηλιακό φως.
Διαπιστώσαμε ότι για απόσταση 10-20cm στην οποία συνήθως βρίσκονται τα χέρια μας από το στόμιο μιας βρύσης η τάση εξόδου είναι μεγαλύτερη από 2,5V.
Η τάση εξόδου του αισθητήρα οδηγείται στην αναλογική θύρα εισόδου Α0 του κυκλώματος ελέγχου arduino. Όταν το arduino διαβάζει (στην θύρα Α0) τάση μεγαλύτερη των 2,5V τότε θα μπορούσε να δίνει ρεύμα στο πηνίο της ηλεκτροβάνας ώστε αυτή να «ανοίγει» δηλαδή να αφήνει να περνά νερό. Όμως το κύκλωμα του arduino δεν αντέχει στις θύρες του ρεύματα μεγαλύτερα των 20mA και ακόμη η ηλεκτροβάνα μας για να λειτουργήσει απαιτεί τάση γύρω στα 9-12V. Συνεπώς, η ηλεκτροβάνα μας δεν μπορεί να τροφοδοτηθεί απευθείας από το arduino και απαιτείται ένα κύκλωμα οδήγησης (ρελέ) μέσω του οποίου θα ελεγχθεί η λειτουργία της από το arduino.
3ο ΒΗΜΑ ΥΛΟΠΟΙΗΣΗΣ: κύκλωμα οδήγησης ηλεκτροβάνας
Το τρίτο βήμα ήταν πιο επίπονο. Αρχικά χρησιμοποιήσαμε ένα έτοιμο κύκλωμα το IRF520 βασισμένο σε MOSFET. Όμως παρότι η διάταξη μας λειτουργούσε κανονικά οι μπαταρία τροφοδοσίας εξαντλούταν πολύ γρήγορα.
Έτσι αναζητήσαμε άλλη λύση και καταλήξαμε στο Darlington TIP120 που φαίνεται εξωτερικά σαν να είναι ένα τρανζίστορ (όπως φαίνεται στην διπλανή φωτογραφία) αλλά στην πραγματικότητα είναι δύο τρανζίστορ. Οι τρεις ακροδέκτες του, όπως το κοιτάμε στη φωτογραφία, από τα αριστερά προς τα δεξιά είναι Β (βάση), C (συλλέκτης), E (εκπομπός). Ο εκπομπός συνδέεται με την γείωση. Το κύκλωμα μεταξύ βάσης – εκπομπού είναι χαμηλής τάσης και ρεύματος και οδηγεί το κύκλωμα μεταξύ συλλέκτη – εκπομπού που είναι υψηλότερης τάσης και ρεύματος. Δηλαδή στην περίπτωσή μας μεταξύ C-E συνδέεται η ηλεκτροβάνα ενώ στη βάση καταλήγει το σήμα της ψηφιακής θύρας 4 του arduino που “ανοίγει“, δηλαδή εφαρμόζει τάση 5V, όταν η τάση εξόδου του αισθητήρα είναι μεγαλύτερη των 2,5V.
4ο ΒΗΜΑ ΥΛΟΠΟΙΗΣΗΣ: προγραμματισμός arduino
Int a=; // δήλωση παραμέτρου α [που είναι η τιμή της τάσης εξόδου του αισθητήρα την οποία «λαμβάνει» το arduino στη θύρα εισόδου Α0] και θα έχει ακέραιες τιμές από 0 (για 0V) έως 1024 (για 5V)
Void setup () {
pinMode (4, OUTPUT); } // η ψηφιακή θύρα D4 του arduino θα χρησιμοποιηθεί ως έξοδος [έτσι ώστε, όταν η ηλεκτροβάνα πρέπει να ανοίξει, να στέλνεται μία τάση στον ηλεκτρονόμο]
void loop () {
a=analogRead (A0); // το arduino διαβάζει την τάση στην αναλογική θύρα εισόδου Α0 [που λαμβάνει από τον αισθητήρα]
if (a>512) { // αν η τάση που στέλνει ο αισθητήρας είναι άνω των 2,5V
digitalWrite (4, HIGH); // η θύρα δίνει τάση 5V στον ηλεκτρονόμο [ώστε να επιτραπεί να περάσει νερό από την ηλεκτροβάνα]
delay (1000);} // η θύρα D4 συνεχίζει να δίνει τάση 5V για ακόμα 1 δευτερόλεπτο αφού σταματήσει ο αισθητήρας να στέλνει σήμα άνω των 2,5V [για να επιτρέπει τη διέλευση νερού για στιγμιαία απομάκρυνση των χεριών από τον αισθητήρα]
else { // αν η τάση είναι μικρότερη των 2,5V
digitalWrite(4, LOW);} // η θύρα D4 δεν στέλνει καμία τάση [η ηλεκτροβάνα παραμένει κλειστή]
}
5ο ΒΗΜΑ ΥΛΟΠΟΙΗΣΗΣ: ολοκλήρωση κυκλώματος
Συγκεντρώνοντας όσα έχουμε αναφέρει παραπάνω είμαστε έτοιμοι να ολοκληρώσουμε την κατασκευή του κυκλώματος, που φαίνεται στο παρακάτω σχήμα. Η δοκιμαστική λειτουργία της διάταξης έγινε με arduino uno. Όμως για την τελική κατασκευή επιλέξαμε να χρησιμοποιήσουμε το arduino nano λόγω του μικρού μεγέθους του και δεδομένου ότι καλύπτει πλήρως τις ανάγκες του συγκεκριμένου προγράμματος. Η τροφοδοσία του arduino καλύπτεται από την μπαταρία των 9V, που τροφοδοτεί και την ηλεκτροβάνα. Εμείς τελικά χρησιμοποιήσαμε δύο μπαταρίες των 9V, μια για την τροφοδοσία του arduino και μια για την ηλεκτροβάνα. Η τροφοδοσία του arduino nano συνδέεται στο pin Vin της πλακέτας του.
Στη διάταξή μας έχουμε ένα γενικό διακόπτη που ελέγχει τις μια ή δύο (για μεγαλύτερο διάστημα απροβλημάτιστης λειτουργίας) μπαταρίες των 9V. Οι αντιστάτες R=2,2kΩ χρησιμοποιούνται πριν την είσοδο στη βάση του TIP120 για μείωση του ρεύματος στο κύκλωμα ΒΕ χαμηλής τάσης-ρεύματος του τρανζίστορ. Η δίοδος 1Ν4001 συνδέεται κατάλληλα στα άκρα του πηνίου της ηλεκτροβάνας για προστασία του κυκλώματος από τα επαγωγικά ρεύματα που αναπτύσσονται λόγω ηλεκτρεγερτικής δύναμης από αυτεπαγωγή στο πηνίο κατά το άνοιγμα και κλείσιμο του κυκλώματος του πηνίου.
Δοκιμάσαμε τη λειτουργία του κυκλώματος στις βρύσες της αυλής του σχολείου μας και μετρήσαμε την τάση και το ρεύμα στο πηνίο της ηλεκτροβάνας. Στις επόμενες φωτογραφίες αμέσως παρακάτω στην πρώτη δεν υπάρχει αντικείμενο να ανιχνεύσει ο αισθητήρας και το πηνίο δεν διαρρέεται από ρεύμα και δεν επιτρέπεται ροή του νερού ενώ στην επόμενη συμβαίνει το αντίθετο.
Τέλος, αφού ελέγξαμε τη λειτουργία του κυκλώματος, το τοποθετήσαμε στο πλαστικό κουτί που κατασκευάσαμε από διαφανές πλαστικό διαστάσεων 16cm×6cm×5cm, ώστε να είναι ορατά όλα τα στοιχεία του. Σε εμπορική μορφή η διάταξη μας μπορεί και πρέπει να συμπτυχθεί ώστε να προσφέρεται σε κουτί πολύ μικρότερων διαστάσεων για να είναι εύχρηστη και λειτουργική.
Η συσκευή όπως φαίνεται παραπάνω είχε συνδεθεί στο σπείρωμα του φίλτρου της μπαταρίας του νεροχύτη και λειτούργησε πολύ καλά.
6ο ΒΗΜΑ ΥΛΟΠΟΙΗΣΗΣ: συμπλήρωση αισθητήρα ήχου για φωνητικό έλεγχο
Για τον φωνητικό έλεγχο της διάταξης μας διαπιστώσαμε ότι στην αγορά κυκλοφορούν έτοιμες διατάξεις οι οποίες συνεργάζονται με τον επεξεργαστή arduino και παρέχουν την δυνατότητα αναγνώρισης μιας σειράς φωνητικών εντολών. Προτιμήσαμε όμως να ακολουθήσουμε το δυσκολότερο δρόμο της δημιουργίας μιας τέτοιας διάταξης έστω και αν οι δυνατότητές μας δεν θα μας επέτρεπαν κάτι περισσότερο από μια εντελώς “πρωτόγονη” συσκευή.
Χρησιμοποιήσαμε τον ανιχνευτή ήχου της Waveshare V2. Ελέγξαμε τη λειτουργία του με την βοήθεια παλμογράφου. Τον συνδέσαμε με το arduino: με την τροφοδοσία των 3V, τη γείωση και την αναλογική έξοδό του με την αναλογική είσοδο Α1 του arduino. Για τον έλεγχο της λειτουργίας του τις τιμές που διάβαζε η αναλογική είσοδος Α1 τις παρακολουθούσαμε στην οθόνη του υπολογιστή μέσω της σειριακής επικοινωνίας υπολογιστή-arduino.
Διαπιστώσαμε ότι όταν δεν υπήρχε ηχητικό σήμα η σειριακή έξοδος είχε τιμές 240-300 ενώ όταν ο αισθητήρας λάμβανε ήχο οι τιμές της σειριακής εξόδου ήταν μικρότερες. Μετρήσαμε ότι η εκφορά της λέξης «άνοιξε» διαρκεί περίπου 300ms. Προσπαθήσαμε λοιπόν, μέσω του προγραμματισμού του επεξεργαστή arduino, όταν ο αισθητήρας ήχου στέλνει αναλογικό σήμα μικρότερο του 200 να εκτελείται για τα επόμενα 300ms μια διαδικασία άθροισης των καταγραφών v του αισθητήρα σε μια μεταβλητή c. Έτσι, μέσω της τιμής της c καταγράφεται κατά κάποιο τρόπο το ενεργειακό περιεχόμενο της λέξης και εκτιμήσαμε ότι με αυτό τον τρόπο θα αναγνωρίζεται. Παρατηρήσαμε βέβαια ότι η τιμή της c διαφοροποιείται ανάλογα τον εκφωνητή, το αν φορά μάσκα ή όχι, από την απόσταση εκφωνητή-αισθητήρα. Επιπλέον, η τιμή της c είναι άλλη όταν ο αισθητήρας βρίσκεται εκτός της συσκευασίας της διάταξης και άλλη όταν (στην τελική μορφή) κλείνεται μέσα στο προστατευτικό πλαστικό κουτί.
Διαπιστώσαμε ότι όταν ο αισθητήρας ήταν εκτός της συσκευασίας οι τιμές του αθροιστή c ήταν διαφορετικές για τις εντολές «άνοιξε» (για το άνοιγμα της βρύσης) και «ώπα» (που χρησιμοποιούσαμε για να ενεργοποιείται το κλείσιμο της ηλεκτροβάνας που ελέγχεται από την ψηφιακή έξοδο D4 του arduino). Όμως όταν ο αισθητήρας κλείστηκε εντός της συσκευασίας η διαφοροποίηση μεταξύ των δύο εντολών (ή όποιου άλλου ζεύγους εντολών δοκιμάσαμε) ήταν δύσκολη. Για αυτό αποφασίσαμε να χρησιμοποιείται η φωνητική εντολή για να ενεργοποιείται το άνοιγμα της βρύσης και να παραμένει ανοικτή για τα επόμενα 10s (που χρονομετρήσαμε ότι απαιτούνται για το ξέπλυμα ενός πιάτου) και μετά η βρύση να κλείνει. Έτσι ο χρήστης θα πρέπει κάθε φορά που θέλει να ανοίξει η βρύση να δίνει την εντολή «άνοιξε».
Στο πρόγραμμα που ακολουθεί οι τιμές της c αφορούν εκφορά της εντολής «άνοιξε» όταν ο αισθητήρας είναι κλεισμένος μέσα στο πλαστικό κουτί της διάταξης.
const int duration = 300;
unsigned int v;
unsigned int c;
void setup()
{
Serial.begin(9600);
pinMode(4,OUTPUT);
}
void loop()
{
c=0;
v=analogRead(A1);
if (v<200)
unsigned long t0=millis();
while (millis() – t0 < duration)
{
v=analogRead(A1);
c = c+v;
}
if ((c>26000) && (c<35000))
{
digitalWrite(4, HIGH);
delay(10000);
digitalWrite(4,LOW);
}
}
ΜΕΛΛΟΝΤΙΚΕΣ ΕΝΕΡΓΕΙΕΣ
Για την ολοκλήρωση αυτού του προγράμματος σκεφτόμαστε:
- Να ελέγξουμε τη λειτουργία της διάταξης για μεγάλο χρονικό διάστημα σε πραγματικές συνθήκες ενός νεροχύτη κουζίνας.
- Να σμικρύνουμε το μέγεθος της συσκευής αρκετά σε σχέση με τη σημερινή της εικόνα ώστε να είναι κομψή και λειτουργική.
- Να βελτιώσουμε την διάταξη φωνητικού ελέγχου της βρύσης και να περιλαμβάνει και το κλείσιμό της την στιγμή που επιθυμεί ο χρήστης.