Χρειάστηκα πριν λίγο καιρό ένα σύστημα το οποίο θα ενεργοποιούσε ένα ρελέ με κάποια καθυστέρηση, η οποία θα -έπρεπε να- ήταν ρυθμιζόμενη με κάποιο ποτενσιόμετρο, ανάλογα τις ανάγκες που θα υπήρχαν κάθε φορά (πχ 1" μια φορά και 2" την άλλη κλπ).
Θα μπορούσα να χρησιμοποιήσω κάποιο από τα σχέδια του 555 timer ή κάτι πιο απλό, όπως τα παρακάτω (τα οποία τα προσθέτω για όποιον ενδιαφέρετε να φτιάξει κάτι απλό), αλλά δεν μου έκανε κάτι, οπότε επέλεξα την χρήση του Arduino (συγκεκριμένα του Teensy με την χρήση του addon Teensyduino).
Στις παρακάτω εικόνες βλέπουμε δύο απλά κυκλώματα έναρξης ενός ρελέ με καθυστέρηση. Ο χρόνος έναρξης είναι ανάλογος με το μέγεθος του πυκνωτή C1 (C2 στην 2η). Το παρακάτω κύκλωμα μπορεί να χρησιμοποιηθεί και σε προστασία ηχείων.
Και ακόμη ένα πιο απλό
Δεν ήθελα απλώς ένα σύστημα να καθυστερεί την έναρξη ενός μοτέρ (του ρελέ δηλαδή, το οποίο θα έδινε την "εντολή" στο τριφασικό μοτέρ), αλλά να κάνει και άλλα πράγματα έπειτα από το κλείσιμο του ρελέ (πχ να δίνει εντολή σε ένα άλλο ρελέ, το οποίο θα έδινε ανάποδες στροφές στο μοτέρ και άλλες επιλογές, κάτι που δεν θα αναφερθεί εδώ και ο οδηγός θα βασιστεί απλά στην καθυστέρηση έναρξης ενός ρελέ που ίσως να ενδιαφέρει κάποιους).
Ο τρόπος σύνδεσης ενός ρελέ στο Arduino (Photo από : makezine.com) |
Συνήθως οι απλές κατασκευές σε Arduino δεν απαιτούν ιδιαίτερα υλικά, πλην μερικών αντιστάσεων και τρανζίστορ. Στην δική μου έκδοση έπρεπε να μειώσω την τάση μόνο στο Teensy και όχι προς το ρελέ (αφού θα ήταν αρκετά χαμηλή και δεν θα το άνοιγε), οπότε χρειάστηκε και επιπλέον υλικά, όπως ένας σταθεροποιητής τάσης στα 5V.
Για το ποτενσιόμετρο δεν έχει ιδιαίτερη σημασία η αντίσταση του, μπορεί να χρησιμοποιηθεί οποιοδήποτε σας βολεύει και υπολογίζετε τον χρόνο έναρξης ανάλογα με το τι διαβάζει το Arduino (στον κώδικα ο υπολογισμός της έναρξης έγινε με βάση τα δεδομένα του συγκεκριμένου ποτενσιόμετρου). Η σύνδεση του είναι απλή, συνδέεται το ένα άκρο του στο (+)(5V), το άλλο στο (-) και το μεσαίο στην υποδοχή του Arduino/Teensy.
Η χρήση ενός ρελέ για την κίνηση του μοτέρ. Στο μέλλον θα προστεθούν και επιπλέον ρελέ για επιπλέον χρήσεις. |
Πλέον το σύστημα μας είναι έτοιμο. Κάθε φορά που θα δέχεται ρεύμα το Arduino, θα "τρέχει" το σύστημα και αφού διαβάσει το ποτενσιόμετρο, θα μας καθυστερεί και ανάλογα την έναρξη του ρελέ.
Ο κώδικας που χρησιμοποίησα στο Teensy (κάνει και για Arduino). Εδώ είναι "πετσοκομμένος" μιας και κράτησα την απλή του χρήση.
/*
TimeDelay Power ON and OFF
Turns on a Relay for a specified time.
By Kraken (https://homebrewgr.info/)
*/
int FrontPin = 0; //Το αρχικό ρελέ
//int BackPin = 2; Για το άλλο ρελέ, δεν χρειάζεται εδώ
int MiddlePin = 0; //Η είσοδος του trimmer
//int StartPin = 3; //Για την προσθήκη διακόπτη έναρξης του κυκλώματος, δεν χρειάζεται εδώ
int LedPin = 11; //Το onboard led στο teensy είναι στο pin 11
// the setup function runs once when you power the board
void setup() {
//Serial.begin(38400);
// initialize pins as input-output.
pinMode(FrontPin, OUTPUT);
//pinMode(BackPin, OUTPUT);
pinMode(LedPin, OUTPUT);
//pinMode(StartPin, INPUT);
pinMode(MiddlePin, INPUT);
}
float Delaytime; //int Delaytime = 0;
int mode = 0;
// the loop function
void loop() {
//if (analogRead(StartPin) == LOW) { //Επιλογή για να τρέχει όταν πατηθεί ένας διακόπτης - Δεν χρειάζεται εδώ
if (mode == 0) { //Για να τρέχει μόνο μια φορά
//Υπολογισμός του χρόνου με βάση το μεσαίο pin του trimmer
Delaytime = analogRead(MiddlePin) * 0.5;
delay(Delaytime);
digitalWrite(FrontPin, HIGH); // turn the Front Relay on (HIGH is the voltage level)
digitalWrite(LedPin, HIGH); // turn the Front Relay on (HIGH is the voltage level)
// Αυξάνουμε την τιμή του mode, ώστε να μην τρέξει ξανά εκτός αν κλείσει η μονάδα
mode = mode + 1;
}
}