Πίνακας περιεχομένων:
- Βήμα 1: Βασικοί υπολογισμοί | Lux προς EV
- Βήμα 2: Παρουσίαση των τιμών στην οθόνη | Βιβλιοθήκη Adafruit GFX
- Βήμα 3: Ανάγνωση και αντιστάθμιση των τιμών Lux | VEML7700
- Βήμα 4: Κωδικός Arduino / C
- Βήμα 5: Το βάζουμε μαζί
Βίντεο: DIY φωτογραφικό φωτόμετρο: 5 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:33
Αυτό το Instructable μοιράζεται μερικές ιδέες για την κατασκευή ενός απλού μικρού και φθηνού φωτόμετρου προσπίπτοντος.
Καθώς το Instructables δεν θα με αφήσει να βάλω τα δικά μου βίντεο, δοκιμάστε αυτόν τον σύνδεσμο:
www.youtube.com/embed/avQD10fd52s
Ο στόχος για μένα ήταν ένας μετρητής φωτός να συνοδεύσει την κάμερα μεσαίου φορμά Bronica ETRSi.
Πράγματα που ήθελα να έχει:
- single ASA (100) επειδή χρησιμοποιώ σχεδόν μόνο ταινία ASA 100
- όσο το δυνατόν μικρότερο
- Δώστε μου μόνο συνδυασμούς που μπορεί να αναπαράγει η Bronica μου, που σημαίνει f2.8-f22 και 1sec έως 1/500th sec
- χωρίς ανοησίες, εκτός από τους απλούς χρόνους και τις τιμές διαφράγματος
Πράγματα που χρησιμοποίησα:
- Adafruit (Vishay) VEML 7700 digital Lux-meter (περίπου 5 $)
- Μικρός ελεγκτής Adafruit Trinket M0 (περίπου 9 $)
- Οθόνη OLED 128x32 (περίπου 10 $)
- ένα κουμπί για να το ενεργοποιήσετε προσωρινά (μερικά λεπτά)
- ένα μικρό κομμάτι λωρίδας, γιατί προσπαθώ να μην χρησιμοποιώ καλώδια, αλλά σίγουρα μπορείτε επίσης να χρησιμοποιήσετε καλώδια
Βήμα 1: Βασικοί υπολογισμοί | Lux προς EV
Ο αισθητήρας που αγόρασα χρησιμοποιεί δύο δυνατότητες που με επιτρέπουν να αποφασίσω σχετικά:
- εξάγει τιμές lux 16bit αντί τιμών φωτός "χωρίς διάσταση"
- εξάγει τις τιμές μέσω I2C
Ένας φωτογραφικός μετρητής φωτός χρησιμοποιεί Exposure Values (EV) που ο αισθητήρας που αγόρασα χρησιμοποιεί τιμές Lux, η οποία είναι εντελώς διαφορετική κλίμακα. Έτσι, το πρώτο βήμα είναι να αποκτήσετε EV από τις τιμές Lux που παρέχονται από τον αισθητήρα.
Μια γρήγορη ματιά στη wikipedia και μπορείτε να βρείτε έναν τύπο για μέτρηση συμβάντων και να μετατρέψετε το EV σε Lux:
Ε = 2,5 * 2^EV
όπου το E μετριέται σε Lux.
Καθώς έχουμε ήδη πάρει την τιμή Lux από τον αισθητήρα και θέλουμε την τιμή EV, πρέπει να διαμορφώσουμε ξανά τον τύπο, ο οποίος μας οδηγεί σε:
EV = log2 (E/2.5)
Αυτός είναι λοιπόν ο πρώτος υπολογισμός που πρέπει να γίνει για να βγάλουμε τις φωτογραφικές τιμές από το φωτόμετρο.
Στον συνημμένο πίνακα αναζήτησης μπορείτε να δείτε όλες τις τιμές που θα χρησιμοποιηθούν σε αυτό το φωτόμετρο, μαζί με τις αντίστοιχες τιμές Lux και EV.
Βήμα 2: Παρουσίαση των τιμών στην οθόνη | Βιβλιοθήκη Adafruit GFX
Προσπάθησα πρώτα να παρουσιάσω τις τιμές σε ολόκληρα βήματα, γιατί σε αυτό μπορώ να βάλω την Bronica μου, αλλά αυτό με οδηγεί σε ένα πρόβλημα:
Ας υποθέσουμε ότι ο αισθητήρας Lux εξάγει μια τιμή ακριβώς 20480, αυτό θα σήμαινε ότι είναι ακριβώς το EV 13, οπότε θα μπορούσα, για παράδειγμα, να θέσω την κάμερά μου σε f4 και 1/500 του δευτερολέπτου και θα ήταν καλό να πάω
Στη συνέχεια, ας υποθέσουμε ότι ο αισθητήρας Lux θα έβγαζε 20479 Lux, 1 Lux κάτω από το EV13, που θα έβγαζε τιμή EV 12, αλλά απέχει μόλις ένα Lux από το EV13
Έτσι, θα έβαζα τη φωτογραφική μου μηχανή στα f2.8 και στο 1/500 του δευτερολέπτου, κάτι που θα υπερεκθέτει 1 στάση χωρίς να ξέρω καν πόσο κοντά ήμουν στο EV13.
Συμπέρασμα: χρειαζόμαστε κάποιο είδος αναλογικής εμφάνισης των τιμών για να δούμε τουλάχιστον πόσο κοντά ή μακριά είναι ο μετρητής από το επόμενο ή το προηγούμενο βήμα EV.
Αφού προσπάθησα να χρησιμοποιήσω τα ενσωματωμένα γράμματα και γραμματοσειρά της βιβλιοθήκης GFX αποφάσισα να χρησιμοποιήσω δύο προσαρμοσμένα γραφικά που θα μετακινηθούν στην οθόνη OLED.
Ένα για τις τιμές διαφράγματος, ένα για τις φορές.
Η βιβλιοθήκη GFX χρησιμοποιεί τιμές 8bit για την παρουσίαση γραφικών, οπότε έφτιαξα ένα φύλλο xls (δείτε την εικόνα παραπάνω).
- κάθε τιμή έχει την ίδια ακριβώς ποσότητα εικονοστοιχείων ανά τιμή
- οι χρόνοι και τα ανοίγματα έχουν ακριβώς τον ίδιο αριθμό τιμών ανά σειρά
- Πρόσθεσα το απαραίτητο "B" στην αρχή κάθε byte και το "," στο τέλος
- Στη συνέχεια το εξήγαγα σε απλό κείμενο και voila: επισυνάπτω το τρίτο γραφικό
Οι τιμές χρόνου ξεκινούν κατά 1/8 του δευτερολέπτου και οι τιμές διαφράγματος ξεκινούν κατά f2.8
Χρησιμοποιώντας τον πίνακα αναζήτησης του προηγούμενου βήματος γνωρίζουμε ότι αυτό αντιπροσωπεύει 160 Lux ή EV6.
Οι πιο σκοτεινές τιμές θα είναι τότε f22 και 1/500 του δευτερολέπτου
Και πάλι μέσω του πίνακα αναζήτησης μπορούμε να δούμε ότι σημαίνει 655360 Lux ή EV18
Μέχρι εδώ καλά.
Έτσι, στο EV6 το γραφικό διάφραγμα πρέπει να είναι στα αριστερά, οι χρόνοι στα δεξιά και αντίστροφα στο EV18
Βήμα 3: Ανάγνωση και αντιστάθμιση των τιμών Lux | VEML7700
Κατά την περιήγηση στο φύλλο δεδομένων των χρήσεων του Vishay VEML7700 Adafruit για τον πίνακα τους, βρήκα μια μάλλον ανησυχητική ειδοποίηση:
Ο αισθητήρας λειτουργεί μόνο γραμμικά μεταξύ 0 και 1000Lux (!)
δείτε το στιγμιότυπο οθόνης με την πορτοκαλί (γραμμική) γραμμή και το μπλε (πραγματική έξοδο αισθητήρα)
Το ηλιακό φως (EV15) είναι περίπου 80.000 Lux, πράγμα που σημαίνει ότι χωρίς αντιστάθμιση του μη γραμμικού τμήματος του αισθητήρα θα ήταν εντελώς άχρηστο ως φωτόμετρο.
Ο Vishay το γνωρίζει αυτό, οπότε παρείχαν στους πελάτες τους ένα άλλο pdf που ονομάζεται Designing the VEML7700 Into an Application.
Σε αυτό το pdf μπορείτε να βρείτε έναν τύπο για να αντισταθμίσετε τους μη γραμμικούς αισθητήρες:
LUX_CORR = 6.0135e-13*pow (LUX, 4) -9.3924e-9*pow (LUX, 3)+8.1488e-5*pow (LUX, 2)+1.0023*LUX
Όπου LUX_CORR είναι το διορθωμένο Lux-Value και LUX είναι η τιμή που βγάζει ο αισθητήρας.
Αυτές είναι οι μεταβλητές που χρησιμοποίησα, οι διαφορετικές που χρησιμοποιήθηκαν στο φύλλο τους.
Αυτό που με προβληματίζει λίγο είναι ότι το Adafruit δεν το αναφέρει με μία μόνο λέξη στη σελίδα του, την τεκμηρίωσή του, τη βιβλιοθήκη του ή αλλού.
Έτσι τις πρώτες μέρες αναρωτιόμουν γιατί το φωτόμετρό μου βγάζει μόνο 20000 Lux το μέγιστο ακόμη και σε άμεσο ηλιακό φως.
Αν ρίξετε μια ματιά στο γράφημα με την κόκκινη και τη μπλε γραμμή, μπορείτε να δείτε γιατί: επειδή δεν μπορεί να πάει ψηλότερα χωρίς τον τύπο αντιστάθμισης.
Αλλά υπάρχει μια άλλη υπόδειξη που κρύβεται στην τεκμηρίωση του αισθητήρα:
Αυτός ο τύπος αντιστάθμισης λειτουργεί μόνο εάν ορίσετε τον αισθητήρα στα 25ms και λόγο κέρδους 1/8.
Αυτό γίνεται πολύ εύκολα με τη βιβλιοθήκη Adafruits προσθέτοντας:
veml.setGain (VEML7700_GAIN_1_8); veml.setIntegrationTime (VEML7700_IT_25MS);
στο κενό σας setup ()
Έτσι, αφού το ρυθμίσετε σε 1/8 και 25ms και προσθέσετε τον τύπο αντιστάθμισης, μπορείτε να μετρήσετε έως και 120000 lux, αρκετά για να καλύψετε το φως του ήλιου στα 80-100k Lux
Βήμα 4: Κωδικός Arduino / C
Καθώς εξαρτάται από τη χρησιμοποιούμενη οθόνη και τον προτιμώμενο ελεγκτή σας, δεν θα επεκταθώ σε λεπτομέρειες, μόνο μερικές σκέψεις και συμβουλές για προσθήκη, ειδικά όταν χρησιμοποιείτε τις βιβλιοθήκες Adafruit και το OLED 128x32 px:
στο void setup:
έθεσα το μέρος της βιβλιοθήκης VEML σε:
veml.setGain (VEML7700_GAIN_1_8);
veml.setIntegrationTime (VEML7700_IT_25MS);
veml.setLowThreshold (10000);
veml.setHighThreshold (20000);
veml.interruptEnable (true);
στον κενό βρόχο:
φροντίστε να προσθέσετε την αποζημίωση:
int LUX_CORR = 6.0135e-13*pow (LUX, 4) -9.3924e-9*pow (LUX, 3)+8.1488e-5*pow (LUX, 2)+1.0023*LUX;
για να λάβετε ηλεκτρικά οχήματα από την Lux χρησιμοποιήστε αυτήν τη γραμμή:
float EV = log2 ((LUX_CORR/2.5));
μετακίνηση των bitmaps
για να βεβαιωθείτε ότι οι χάρτες bit μετακινούνται μόνο όταν οι τιμές είναι μεταξύ 160Lux και 655360Lux όπως αναφέρθηκε σε προηγούμενο βήμα, τυλίξτε το σε μια ρήτρα if όπως αυτή:
εάν (LUX_CORR> 159 && LUX_CORR <655361)
Στη συνέχεια, πρέπει να αντιστοιχίσουμε τις τιμές EV σε συντεταγμένες, καθώς το εύρος των EV είναι διψήφιο και θέλουμε να τα μετακινήσουμε από την οθόνη πάνω από 128 px σε ολόκληρη την οθόνη, χρειαζόμαστε μεγαλύτερες τιμές.
Καθώς έχουμε ήδη έναν αριθμό πλωτήρα, απλά τον πολλαπλασιάζουμε με 100 και χρησιμοποιούμε αυτόν τον ακέραιο για να χαρτογραφήσουμε τις συντεταγμένες
int EV_DSPL = EV*100;
και:
ΩΡΑ = χάρτης (EV_DSPL, 600, 1900, -260, 39); APERTURE = χάρτης (EV_DSPL, 600, 1900, 39, -260);
Όπως μπορείτε να δείτε στην περίπτωσή μου, η ελάχιστη θέση του bitmap θα είναι -260px και η μέγιστη 39px
Αυτό που μπορεί επίσης να δει εδώ είναι ότι άλλαξα τις συντεταγμένες έτσι ώστε οι δύο χάρτες bit να κινούνται προς την αντίθετη κατεύθυνση
Στη συνέχεια, πρέπει να μετακινήσουμε τους χάρτες bit σύμφωνα με τις συντεταγμένες κατά:
display.drawBitmap ((TIME), (0), TIMES_bmp, 352, 16, 1); display.drawBitmap ((APERTURE), (15), APERTURES_bmp, 352, 16, 1);
Και αυτό είναι το μόνο που πρέπει να γίνει
Ως μπόνους, εμφανίζω ευθείες τιμές EV και Lux όταν ο αισθητήρας εξάγει τιμές κάτω από 160Lux, μόνο και μόνο επειδή ήθελα να βλέπω πράγματα όταν το δοκιμάζω.
Βήμα 5: Το βάζουμε μαζί
Και τα δύο, η οθόνη και ο αισθητήρας χρησιμοποιούν το I2C για επικοινωνία, η δημιουργία του πραγματικού υλικού είναι τόσο απλή όσο μπορεί.
Απλώς συνδέστε τις γραμμές δεδομένων, ρολογιού γείωσης και 3V με το Arduino και είστε έτοιμοι να ξεκινήσετε.
Πρόσθεσα ένα γραφικό πώς το έκανα με ένα stripboard, αλλά όπως προαναφέρθηκε μπορείτε να χρησιμοποιήσετε καλώδια ή ακόμα και να φτιάξετε ένα φτερό για αυτό, όλα εξαρτώνται από το χειριστήριο και την οθόνη που χρησιμοποιείτε.
Στο γραφικό μου, οι λευκές κουκίδες υποτίθεται ότι συνδέονται με την οθόνη και τον αισθητήρα και οι κίτρινες κουκίδες συνδέονται με το Trinket.
Η μόνη εξαίρεση θα ήταν η ακίδα δεδομένων της γραμμής I2C που συνδέεται με την οθόνη, η οποία συνδέεται επίσης με την ακίδα δεδομένων Trinkets.
Επέλεξα να μην χρησιμοποιήσω διακόπτη ενεργοποίησης/απενεργοποίησης, αλλά αντίθετα να χρησιμοποιήσω ένα κουμπί και δύο κυψέλες κουμπιών 3V για να τον ενεργοποιήσω προσωρινά, αρκεί να πατήσω το κουμπί. Δυναμώνει κάτω από το 1/10 του δευτερολέπτου, ώστε να είναι αρκετά γρήγορο για να διαθέσω ένα κουμπί και να το κάνω μικρότερο.
Συνιστάται:
ΦΟΡΗΤΟ MINI MULTI VOLTAGE PSU ΜΕ USB, ΦΩΤΟΓΡΑΦΙΚΟ ΕΛΕΓΧΟ ΚΑΙ ΕΞΟΠΛΙΣΤΙΚΟ ΦΟΡΤΙΣΤΗ: 6 Βήματα
ΦΟΡΗΤΟ MINI MULTI VOLTAGE PSU ΜΕ USB, ΦΩΤΟΓΡΑΦΙΚΟ ΕΛΕΓΧΟ ΚΑΙ ΕΞΟΠΛΙΣΤΙΚΟ ΦΟΡΤΙΣΤΗ: Καλώς ορίσατε στο πρώτο μου εκπαιδευτικό! Με αυτό το διδακτικό μπορείτε να μετατρέψετε μια ακατάλληλη/φθηνή ηλιακή τράπεζα ενέργειας (με κάποια επιπλέον μέρη) σε κάτι χρήσιμο. Κάτι που μπορείτε να χρησιμοποιήσετε κάθε μέρα, όπως εγώ, γιατί είναι πραγματικά υπέροχο να το χρησιμοποιήσετε! Το μεγαλύτερο μέρος της
ΠΩΣ ΝΑ ΓΥΡΙΣΕΤΕ ΠΛΑΣΤΙΚΑ ΜΠΟΥΚΑΛΙΑ ΣΕ ΦΩΤΟΓΡΑΦΙΚΟ ΕΠΙΤΡΑΠΕΖΙΟ: 8 Βήματα
ΠΩΣ ΝΑ ΓΥΡΙΣΕΤΕ ΠΛΑΣΤΙΚΑ ΜΠΟΥΚΑΛΙΑ ΣΕ ΛΑΜΠΑ DESKTOP: σε αυτό το διδακτικό θα σας δείξω πώς να φτιάξετε τη δική σας έξοχη λάμπα επιτραπέζιου υπολογιστή χρησιμοποιώντας άδεια ηλίθια πλαστικά μπουκάλια
Φωτογραφικό περίπτερο γάμου Arduino - τρισδιάστατα τυπωμένα μέρη, αυτόματα και χαμηλού προϋπολογισμού: 22 βήματα (με εικόνες)
Arduino Wedding Photo Booth - 3D Printed Parts, Automated and Low Budget: Πρόσφατα ήμουν καλεσμένος στο γάμο του αδερφού του συντρόφου μου και με ρώτησαν πριν αν θα μπορούσαμε να τους φτιάξουμε ένα φωτογραφικό περίπτερο καθώς κοστίζουν πάρα πολύ για ενοικίαση. Αυτό καταλήξαμε και μετά από πολλά κομπλιμέντα, αποφάσισα να το μετατρέψω σε εκπαιδευτικό
DIY-φωτόμετρο LED με Arduino για μαθήματα φυσικής ή χημείας: 5 βήματα (με εικόνες)
DIY-φωτόμετρο LED με Arduino για μαθήματα φυσικής ή χημείας: Γεια! Τα υγρά ή άλλα αντικείμενα εμφανίζονται χρωματισμένα επειδή αντανακλούν ή μεταδίδουν ορισμένα χρώματα και με τη σειρά τους καταπιούν (απορροφούν) άλλα. Με το λεγόμενο φωτόμετρο, μπορούν να προσδιοριστούν αυτά τα χρώματα (μήκη κύματος), τα οποία απορροφώνται από τα υγρά. Το βασικό πλεονέκτημα
Φωτόμετρο φωτεινότητας TESS-W Night Sky Brightness: 8 βήματα (με εικόνες)
Φωτόμετρο φωτεινότητας νυχτερινού ουρανού TESS-W: Το TESS-W είναι ένα φωτόμετρο σχεδιασμένο για τη μέτρηση και τη συνεχή παρακολούθηση της φωτεινότητας του νυχτερινού ουρανού για μελέτες ρύπανσης από θραύσματα. Δημιουργήθηκε κατά τη διάρκεια του Ευρωπαϊκού Έργου STARS4ALL H2020 με ανοιχτό σχεδιασμό (υλικό και λογισμικό). Το φωτόμετρο TESS-W