- Απαιτούμενο υλικό
- Διάγραμμα κυκλώματος
- Κωδικός και επεξήγηση
- Πώς ελέγχει αυτόματα την ένταση του φωτός:
«Γίνε μια φωτεινή σπίθα, σβήνει μέχρι να είναι σκοτεινή!» Μερικές φορές ξεχνάμε να σβήνουμε τα φώτα και να σπαταλάμε ηλεκτρικό ρεύμα και πρέπει επίσης να είχατε δει το φως του δρόμου να ανάβει την ημέρα. Έχουμε ήδη δημιουργήσει λίγα κυκλώματα στον ανιχνευτή Dark όπου τα φώτα σβήνουν αυτόματα εάν είναι φωτεινό έξω και ανάβει εάν είναι σκοτεινό έξω. Αλλά αυτή τη φορά, σε αυτό το κύκλωμα όχι μόνο ανάβουμε και σβήνουμε τα φώτα βάσει των συνθηκών φωτός, αλλά επίσης αλλάζουμε την ένταση του φωτός ανάλογα με τις εξωτερικές συνθήκες φωτισμού. Εδώ έχουμε χρησιμοποιήσει το LDR και το PWM concept με το Arduino για μείωση ή αύξηση της φωτεινότητας του 1 Watt Power LED αυτόματα.
Βασικά, το PWM αναφέρεται σε Pulse Width Modulation, το σήμα εξόδου μέσω ενός pin PWM θα είναι ένα αναλογικό σήμα και θα ληφθεί ως ψηφιακό σήμα από το Arduino. Χρησιμοποιεί τον κύκλο λειτουργίας του ψηφιακού κύματος για να δημιουργήσει τη διαδοχική αναλογική τιμή για το σήμα. Και, αυτό το σήμα χρησιμοποιείται περαιτέρω για τον έλεγχο της φωτεινότητας του Power LED.
Απαιτούμενο υλικό
- Arduino UNO
- LDR
- Αντίσταση (510, 100k ohm)
- Πυκνωτής (0.1uF)
- Τρανζίστορ 2N2222
- LED ισχύος 1 watt
- Σύνδεση καλωδίων
- Ψωμί
Διάγραμμα κυκλώματος
Κωδικός και επεξήγηση
Ο πλήρης κωδικός Arduino για αυτόματο dimmer LED δίνεται στο τέλος.
Στον παρακάτω κώδικα, ορίζουμε τον ακροδέκτη PWM και τις μεταβλητές που θα χρησιμοποιηθούν στον κώδικα.
int pwmPin = 2; // εκχωρεί τον ακροδέκτη 12 στη μεταβλητή pwm int LDR = A0; // εκχωρεί αναλογική είσοδο A0 σε μεταβλητό δοχείο int c1 = 0; // δηλώνει τη μεταβλητή c1 int c2 = 0; // δηλώνει τη μεταβλητή c2
Τώρα, στο βρόχο, διαβάζουμε πρώτα την τιμή χρησιμοποιώντας την εντολή «analogRead (LDR)» και μετά αποθηκεύουμε την αναλογική είσοδο σε μια μεταβλητή που ονομάζεται «τιμή» . Κάνοντας κάποιο μαθηματικό υπολογισμό παράγουμε το σήμα PWM. Εδώ, ελέγχουμε την ένταση του φωτός χρησιμοποιώντας PWM μόνο εάν η αναλογική τιμή είναι μικρότερη από 500, και εάν είναι μεγαλύτερη από 500, σβήνουμε εντελώς τα φώτα.
int value = analogRead (LDR); Serial.println (τιμή); c1 = τιμή; c2 = 500-c1; // αφαιρεί το c2 από 1000 ans αποθηκεύει το αποτέλεσμα σε c1 εάν (τιμή <500) { digitalWrite (pwmPin, HIGH); καθυστέρηση Μικροδευτερόλεπτα (c2); digitalWrite (pwmPin, LOW); καθυστέρηση μικροδευτερόλεπτα (c1); } εάν (τιμή> 500) { digitalWrite (2, LOW); } }
Μπορείτε να μάθετε περισσότερα για το PWM στο Arduino από εδώ.
Πώς ελέγχει αυτόματα την ένταση του φωτός:
Σύμφωνα με το διάγραμμα κυκλώματος, έχουμε κάνει ένα κύκλωμα διαχωριστή τάσης χρησιμοποιώντας LDR και αντίσταση 100k. Η έξοδος διαχωριστή τάσης τροφοδοτείται στον αναλογικό πείρο του Arduino. Το αναλογικό Pin ανιχνεύει την τάση και δίνει κάποια αναλογική τιμή στο Arduino. Η αναλογική τιμή αλλάζει ανάλογα με την αντίσταση του LDR. Έτσι, εάν είναι σκοτεινό πάνω από το LDR, η αντίστασή του αυξάνεται και ως εκ τούτου η τιμή τάσης (αναλογική τιμή) μειώνεται. Ως εκ τούτου, η αναλογική τιμή ποικίλλει την έξοδο PWM ή τον κύκλο λειτουργίας, και ο κύκλος λειτουργίας είναι περαιτέρω ανάλογος με την ένταση του φωτός LED ισχύος. Έτσι, το φως πάνω από το LDR θα ελέγχει αυτόματα την ένταση του LED ισχύος. Ακολουθεί το διάγραμμα ροής με ποιον τρόπο θα λειτουργήσει, το πάνω βέλος υποδεικνύει "αύξηση" και το κάτω βέλος υποδεικνύει "μείωση".
Ένταση φωτός (σε LDR) ↓ - Αντίσταση ↑ - Τάση σε αναλογικό πείρο ↓ - Κύκλος λειτουργίας (PWM) ↑ - Φωτεινότητα LED ισχύος ↑
Εάν είναι πλήρως φωτεινό εξωτερικό (όταν η αναλογική τιμή αυξάνεται περισσότερο από 500), το LED ισχύος σβήνει
Έτσι μπορείτε να ελέγχετε αυτόματα την ένταση του φωτός χρησιμοποιώντας LDR.
Δείτε παρακάτω όλα τα κυκλώματα που σχετίζονται με το LDR εδώ.