Πίνακας περιεχομένων:

Βαθμονόμηση Φωτεινότητας LED: 5 βήματα
Βαθμονόμηση Φωτεινότητας LED: 5 βήματα

Βίντεο: Βαθμονόμηση Φωτεινότητας LED: 5 βήματα

Βίντεο: Βαθμονόμηση Φωτεινότητας LED: 5 βήματα
Βίντεο: Lesson 98: Arduino 10 LED Push button Projects, Potentiometer LED Voltmeter and Traffic Light 2024, Νοέμβριος
Anonim
Βαθμονόμηση Φωτεινότητας LED
Βαθμονόμηση Φωτεινότητας LED

Ενώ έβγαζα ένα φως νεράιδας, συνειδητοποίησα ότι η τιμή PWM είναι μη γραμμικά ανάλογη με τη φωτεινότητα του LED. Με απλά λόγια, εάν η τιμή PWM είναι διπλή, η φωτεινότητα δεν είναι διπλή. ειδικά όταν το PWM είναι κοντά στο μέγιστο, οποιαδήποτε αλλαγή δεν είναι αναγνωρίσιμη από τα μάτια μου. Νόμιζα ότι πρέπει να είναι ένα απλό ζήτημα βαθμονόμησης! και έτσι έφτιαξα αυτό το έργο! Η ιδέα είναι να μετρήσετε τη φωτεινότητα ενός LED με κάποια συσκευή (αισθητήρας φωτεινότητας ή φωτοαντίσταση) και να βρείτε μια συσχέτιση μεταξύ της τιμής PWM και της φωτεινότητας. Στη συνέχεια αργότερα Εάν ορίσω τη φωτεινότητα στο 50%, το Arduino θα υπολογίσει το αντίστοιχο PWM και θα μειώσει το LED ανάλογα.

Επομένως, χρειάζομαι έναν αισθητήρα φωτεινότητας και ένα LED για τη μέτρηση της φωτεινότητας. Χρησιμοποιώντας μια κάρτα SD, θα αποθηκεύσω τα δεδομένα για μεταγενέστερη διαδικασία προσαρμογής. Η προσαρμογή θα γίνει στο Excel (ή σε οποιοδήποτε άλλο πρόγραμμα). Το out put θα χρησιμοποιηθεί στον κώδικα Arduino, και αυτό είναι όλο! Θα πρέπει να γίνει μία φορά. Στη συνέχεια, μπορείτε να χρησιμοποιήσετε την παράμετρο βαθμονόμησης για πάντα!

Βήμα 1: Μέρη

1- WEMOS mini D1: Aliexpress 3 €

2- TSL 2561 (Αισθητήρας φωτεινότητας): Aliexpress 3 €

3- Ενότητα κάρτας SD: Aliexpress 1 €

4- LED

5- Αντίσταση 220 ohm

6- σύρματα

συνολικό κόστος: 8 -10 €

Βήμα 2: Καλωδίωση

Καλωδίωση
Καλωδίωση
Καλωδίωση
Καλωδίωση
Καλωδίωση
Καλωδίωση

Η μονάδα κάρτας SD και τα καλώδια του αισθητήρα φωτεινότητας δεν πρέπει να αλλάξουν (τα περισσότερα). Το led πρέπει να συνδεθεί σε ακίδα PWM.

Βήμα 3: Κωδικός

Κώδικας
Κώδικας

Συνδύασα τρία κομμάτια κωδικών:

Κάρτα SD: χρησιμοποιείται παράδειγμα> SD> ReadWrite στο Arduino IDE

TSL 2561: χρησιμοποιείται παράδειγμα βιβλιοθήκης Adafruit TSL2561 (sensorapi). θα το βρείτε σε παραδείγματα, εάν εγκαταστήσετε τη βιβλιοθήκη (υποθέτω ότι γνωρίζετε πώς να εγκαταστήσετε μια βιβλιοθήκη στο Arduino IDE).

Ξεθώριασμα LED: χρησιμοποιημένα παραδείγματα> Αναλογικό> ξεθώριασμα

Ο κώδικας, μετά την προετοιμασία των μονάδων, θα μειώσει το led και θα διαβάσει τη φωτεινότητα και θα το αποθηκεύσει στην κάρτα SD. με αυτόν τον τρόπο θα συλλέξω κάποια δεδομένα για βαθμονόμηση.

Άλλαξα καθένα από τους κωδικούς σύμφωνα με τις ανάγκες μου. επισυνάπτεται ο τελικός κωδικός.

Το σήμα πρέπει να μοιάζει με τη συνημμένη εικόνα. Δυστυχώς ξέχασα να τραβήξω μια φωτογραφία, οπότε την ξαναβάζω στο excel για να σας δείξω πώς πρέπει να είναι.

ΣΗΜΕΙΩΣΗ: Χρησιμοποιώ wemo mini D1 αντί για Arduino. για κάποιο λόγο που δεν γνωρίζω, το PWM είναι μεταξύ 0 και 1023. Στο Arduino θα πρέπει να είναι μεταξύ 0-255. Εάν θέλετε να χρησιμοποιήσετε τον κωδικό για το arduino, θα πρέπει να τον φροντίσετε (γραμμή 90).

Βήμα 4: Τοποθέτηση και χρήση

Τοποθέτηση και χρήση
Τοποθέτηση και χρήση
Τοποθέτηση και χρήση
Τοποθέτηση και χρήση

μετά τη συλλογή δεδομένων, άνοιξα το αρχείο στο excel και σχεδίασα τα δεδομένα (δείτε την εικόνα). η πρώτη στήλη είναι τιμή PWM και η δεύτερη είναι lux (ανάγνωση του αισθητήρα, η μονάδα δεν έχει μεγάλη σημασία). Επομένως, σχεδιάστε το lux (άξονας y) έναντι PWM (άξονας x). Όπως μπορείτε να δείτε, η φωτεινότητα είναι γραμμικά ανάλογη με την τιμή PWM. Προσάρμοσα μια γραμμή σε αυτό.

Για να χωρέσετε μια γραμμή ακολουθήστε τα εξής:

1- σχεδιάστε τα δεδομένα (εισαγάγετε> διάγραμμα διασποράς) υποθέτω ότι ξέρετε πώς.

2- Κάντε δεξί κλικ στα γραφικά δεδομένα

3- Κάντε κλικ στο trendline.

4- (στο excel 2013) στη δεξιά πλευρά εμφανίζεται ένας πίνακας. Επιλέξτε γραμμική. Στο κάτω μέρος επιλέξτε "εμφάνιση εξίσωσης στο γράφημα".

Η γραμμική σχέση είναι διαφορετική από την αντίληψή μου. Επομένως, πιστεύω ότι πρέπει να υπάρχει λογαριθμική σχέση μεταξύ της αντίληψής μου και της φωτεινότητας (αυτός είναι ο πιο απλός τρόπος που μου ήρθε στο μυαλό!). Έτσι πήρα την κλίση της προσαρμογής. Η αναχαίτιση δεν είναι σημαντική, διότι εξαρτάται από τη φωτορύπανση του περιβάλλοντος! Αντ 'αυτού, πρόσθεσα 1. Επειδή το Log10 (0) είναι άπειρο. Οπότε χρειάζομαι μια αναχαίτιση για να λύσω το πρόβλημα. Στην περίπτωσή μου η εξίσωση μοιάζει με αυτήν:

y = Log10 (0,08 x +1), y είναι η φωτεινότητα και x είναι η τιμή PWM (0-1023)

Ομαλοποίησα την εξίσωση στη μέγιστη τιμή. τότε η έξοδος είναι πάντα μεταξύ 0-100. Με αυτόν τον τρόπο μπορώ να ζητήσω από το arduino μια σχετική φωτεινότητα, χωρίς να αφορά τη μέγιστη απόλυτη φωτεινότητα.

y = Log10 (0,08 x +1)*100/1,914

Επειδή στο arduino η είσοδός μου είναι η σχετική φωτεινότητα, πρέπει να αναδιατάξω την εξίσωση για το x (PWM):

x = (10^(y*1.914 / 100) - 1) / 0.08

χρησιμοποιώντας αυτήν την εξίσωση στον κώδικα είμαστε σε θέση να λάβουμε μια γραμμική αλλαγή φωτεινότητας. Έτσι, ζητάτε από το arduino μια φωτεινότητα (y) μεταξύ 0-100 και το arduino υπολογίζει την αντίστοιχη τιμή PWM. με αυτόν τον τρόπο, εάν διπλασιάσετε τη φωτεινότητα, η αντίληψή σας είναι επίσης η ίδια.

αν θέλετε να το χρησιμοποιήσετε στον κώδικά σας, προσθέστε καλύτερα αυτές τις γραμμές:

φωτεινότητα = 50; // σε ποσοστό

PWM = pow (10, φωτεινότητα*1.914/100) -1) /0.0793;

analogWrite (ledpin, PWM);

ΣΗΜΕΙΩΣΗ: η κανονικοποίηση γίνεται για μέγιστο PWM 1023 (για Wemos mini D1). Για το Arduino το PWM είναι μεταξύ 0-255. πρέπει να το υπολογίσεις ανάλογα.

ΣΗΜΕΙΩΣΗ 2: Πρόσθεσα ένα γραμμικό διάγραμμα καταγραφής για να δείξω πώς σχετίζονται η αντίληψή μας και η τιμή PWM. δεν πρέπει να το χρησιμοποιείτε για τοποθέτηση!

Βήμα 5: Συμπέρασμα

η βαθμονόμηση λειτουργεί καλά για μένα. Όταν οι τιμές PWM είναι μεγάλες, μπορώ να δω τη διαφορά. Πριν ως μεγάλες τιμές δεν μπορούσα να δω την επίδραση του dimming. Βασικά οι περισσότερες αλλαγές έγιναν σε ένα μικρό εύρος PWM. τώρα έχει βαθμονομηθεί!

κάθε LED, ειδικά διαφορετικά χρώματα, θα πρέπει να έχει τις δικές του παραμέτρους βαθμονόμησης. Ωστόσο, βαθμονόμησα ένα μπλε LED και χρησιμοποίησα την παράμετρο για ένα λευκό LED και το αποτέλεσμα ήταν αποδεκτό. οπότε ίσως μπορείτε να χρησιμοποιήσετε την παράμετρο βαθμονόμησής μου χωρίς να ενοχλείτε τον εαυτό σας !!

Συνιστάται: