Taula de continguts:
- Pas 1: càlculs bàsics | Lux a EV
- Pas 2: Presentació dels valors a la pantalla | Biblioteca AdFruit GFX
- Pas 3: Lectura i compensació dels valors Lux VEML7700
- Pas 4: Arduino / C-code
- Pas 5: ajuntar-lo
Vídeo: Mesurador fotogràfic de bricolatge: 5 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
Aquesta instrucció comparteix algunes idees sobre la construcció d’un mesurador de llum incident senzill, petit i barat.
Com que Instructables no em permet inserir els meus propis vídeos, proveu aquest enllaç:
www.youtube.com/embed/avQD10fd52s
L’objectiu per a mi era un mesurador de llum per acompanyar la meva càmera de cinema de format mitjà Bronica ETRSi.
Coses que volia que figuressin:
- sola ASA (100) perquè gairebé només faig servir la pel·lícula ASA 100
- el més petit possible
- només doneu-me combinacions que la meva Bronica pugui reproduir, cosa que significa f2.8-f22 i 1 segons a 1/500 segons
- sense funcions de disbarats, excepte els temps normals i els valors d'obertura
Coses que he utilitzat:
- Adafruit (Vishay) Lux-meter digital VEML 7700 (al voltant de 5 $)
- Microcontrolador Adafruit Trinket M0 (al voltant de 9 $)
- Pantalla OLED de 128x32 (al voltant de 10 $)
- un polsador per engegar-lo temporalment (alguns cèntims)
- un petit tros de tauler de tires, perquè intento no utilitzar cables, però segur que també els podeu utilitzar
Pas 1: càlculs bàsics | Lux a EV
El sensor que he comprat fa servir dues funcions que em permeten decidir-me:
- emet valors de lux de 16 bits en lloc de valors de llum "sense dimensions"
- emet els valors mitjançant I2C
Un mesurador fotogràfic utilitza Valors d’exposició (EV), el sensor que he comprat utilitza valors Lux, que és una escala totalment diferent. Per tant, el primer pas és obtenir EVs a partir dels valors Lux proporcionats pel sensor.
Un cop d'ull ràpid a la viquipèdia i podeu trobar una fórmula per mesurar incidents i convertir EV a Lux:
E = 2,5 * 2 ^ EV
on E es mesura en lux.
Com que ja hem obtingut el valor Lux del sensor i volem el valor EV, hem de tornar a formar la fórmula, que ens porta a:
EV = log2 (E / 2.5)
Per tant, aquest és el primer càlcul que s’ha de fer per treure valors fotogràfics del mesurador de llum.
A la taula de cerca adjunta podeu veure tots els valors que s’utilitzaran en aquest mesurador de llum, juntament amb els valors Lux i EV d’acord.
Pas 2: Presentació dels valors a la pantalla | Biblioteca AdFruit GFX
Primer vaig intentar presentar els valors en passos sencers, perquè això és el que puc configurar la meva Bronica, però això em porta a un problema:
Suposem que el sensor Lux produeix un valor exactament de 20480, això significaria que és exactament el seu EV 13, de manera que podria, per exemple, posar la meva càmera en f4 i 1/500 de segon i estaria bé
A continuació, suposem que el sensor Lux produiria 20479 Lux, 1 Lux en EV13, que produiria un valor EV de 12, però és només un Lux de EV13
Per tant, posaria la meva càmera a f2.8 i 1/500 de segon, la qual cosa sobreexposaria una parada sense que jo sapigués fins a quin punt estava a prop de EV13.
Conclusió: necessitem algun tipus de visualització analògica dels valors per, almenys, veure a quina distància o distància es troba el mesurador del pas EV següent o anterior.
Després d'intentar utilitzar les lletres i el tipus de lletra incorporats de la biblioteca GFX, vaig decidir utilitzar dos gràfics personalitzats que es desplaçaran per la pantalla OLED.
Un per als valors d'obertura, un per als temps.
La biblioteca GFX utilitza valors de 8 bits per presentar gràfics, de manera que he fet un full xls (vegeu la imatge superior).
- cada valor té exactament la mateixa quantitat de píxels per valor
- els temps i les obertures tenen exactament la mateixa quantitat de valors per fila
- He afegit el necessari "B" al principi de cada byte i el "," al final
- Aleshores el vaig exportar a un text pla i voilà: tinc adjunt el tercer gràfic
Els valors de temps comencen un 1/8 de segon i els valors d'obertura comencen per f2.8
Utilitzant la taula de cerca del pas anterior sabem que representa 160 Lux o EV6.
Els valors més foscos serien llavors f22 i 1/500 de segon
De nou a través de la taula de cerca, podem veure que significa 655360 Lux o EV18
Fins ara, tot bé.
Així doncs, a EV6, el gràfic d'obertura ha de situar-se a l'extrem esquerre, els temps a l'extrema dreta i viceversa a EV18.
Pas 3: Lectura i compensació dels valors Lux VEML7700
Mentre es desplaçava pel full de dades del Vishay VEML7700 que Adafruit utilitza per al seu tauler, he trobat un avís força inquietant:
El sensor només funciona linealment entre 0 i 1000Lux (!)
vegeu la captura de pantalla amb la línia taronja (lineal) i la línia blava (sortida real del sensor)
La llum del sol (EV15) ronda els 80.000 lux, el que significa que sense compensació de la part no lineal del sensor seria inútil com a mesurador de llum.
Vishay ho sap, de manera que van proporcionar als seus clients un altre pdf anomenat Dissenyar el VEML7700 en una aplicació.
En aquest pdf podeu trobar una fórmula per compensar la no linealitat dels sensors:
LUX_CORR = 6.0135e-13 * pow (LUX, 4) -9.3924e-9 * pow (LUX, 3) + 8.1488e-5 * pow (LUX, 2) + 1.0023 * LUX
On LUX_CORR és el valor Lux corregit i LUX és el valor que emet el sensor.
Aquestes són les variables que he fet servir, les diferents que he utilitzat al seu full.
El que em molesta una mica és que Adafruit no ho menciona amb una sola paraula a la seva pàgina, a la seva documentació, a la seva biblioteca o a qualsevol altre lloc.
Així doncs, els primers dies em preguntava per què el meu mesurador de llum només emet 20.000 Lux màxim fins i tot amb llum solar directa.
Si mireu el gràfic amb la línia vermella i blava podeu veure per què: perquè no pot anar més amunt sense la fórmula de compensació.
Però hi ha un altre indici amagat a la documentació del sensor:
Aquesta fórmula de compensació només funciona si configureu el sensor a 25 ms i una proporció de guany de 1/8.
Això es fa fàcilment amb la biblioteca d'Adafruits afegint:
veml.setGain (VEML7700_GAIN_1_8); veml.setIntegrationTime (VEML7700_IT_25MS);
a la configuració buida ()
Per tant, després d’establir-lo a 1/8 i 25 ms i afegir la fórmula de compensació, podeu mesurar fins a 120000 lux, suficientment per cobrir la llum solar de 80-100k Lux
Pas 4: Arduino / C-code
Com que depèn de la pantalla que utilitzeu i del controlador preferit, no aprofundiré en els detalls, només cal afegir algunes idees i suggeriments, sobretot quan s'utilitzen les biblioteques Adafruit i el OLED de 128x32 px:
a la configuració buida:
He configurat la part de la biblioteca VEML en:
veml.setGain (VEML7700_GAIN_1_8);
veml.setIntegrationTime (VEML7700_IT_25MS);
veml.setLowThreshold (10000);
veml.setHighThreshold (20000);
veml.interruptEnable (true);
al bucle buit:
assegureu-vos d'afegir la compensació:
int LUX_CORR = 6.0135e-13 * pow (LUX, 4) -9.3924e-9 * pow (LUX, 3) + 8.1488e-5 * pow (LUX, 2) + 1.0023 * LUX;
per obtenir vehicles elèctrics de Lux, utilitzeu aquesta línia:
float EV = log2 ((LUX_CORR / 2.5));
movent els mapes de bits
per assegurar-vos que els mapes de bits només es mouen quan els valors es troben entre 160Lux i 655360Lux tal com es va indicar en un pas anterior, emboliqueu-lo en una clàusula if així:
if (LUX_CORR> 159 && LUX_CORR <655361)
A continuació, hem de mapar els valors EV a coordenades, ja que el rang dels EVs són de dos dígits i els volem moure des de la pantalla més de 128 px a tota la pantalla, necessitem valors més grans.
Com que ja tenim un número flotant, només multiplicem per 100 i fem servir aquest nombre enter per assignar les coordenades
int EV_DSPL = EV * 100;
i:
TEMPS = mapa (EV_DSPL, 600, 1900, -260, 39); APERTURE = mapa (EV_DSPL, 600, 1900, 39, -260);
Com podeu veure en el meu cas, la posició mínima del mapa de bits seria de -260 px i la màxima seria de 39 px
El que també es pot veure aquí és que vaig canviar les coordenades de manera que els dos mapes de bits es moguessin en la direcció oposada
A continuació, hem de moure els mapes de bits segons les coordenades:
display.drawBitmap ((TIME), (0), TIMES_bmp, 352, 16, 1); display.drawBitmap ((APERTURE), (15), APERTURES_bmp, 352, 16, 1);
I això és tot el que cal fer
Com a bonificació, mostro valors EV i Lux rectes quan el sensor emet valors inferiors a 160 Lux, només perquè volia veure coses en provar-lo.
Pas 5: ajuntar-lo
Tant la pantalla com el sensor utilitzen I2C per comunicar-se, la construcció del maquinari real és tan senzill com pot ser.
Només cal que connecteu les dades, la terra del rellotge i les línies de 3V amb l’Arduino i estareu a punt.
Vaig afegir un gràfic de com ho vaig fer amb un tauler de fusta, però, com es va dir anteriorment, podeu utilitzar cables o fins i tot construir-ne una ala, tot depèn del controlador i de la pantalla que utilitzeu.
Al meu gràfic, se suposa que els punts blancs estan connectats a la pantalla i al sensor i que els punts grocs es connecten al Trinket.
L'única excepció seria el pin de dades de la línia I2C que es connecta a la pantalla, aquest pin també es connecta al pin de dades Trinkets.
Vaig optar per no utilitzar un interruptor d’encès / apagat, sinó utilitzar un polsador i dues cel·les de botó de 3V per engegar-lo temporalment sempre que premés el botó. S’encén en menys d’un 1/10 de segon perquè sigui prou ràpid com per poder estalviar un botó i fer-lo més petit.
Recomanat:
Mesurador d'oxigen sanguini de bricolatge: 5 passos (amb imatges)
Mesurador d’oxigen sanguini de bricolatge: el 2020, el món es va enfrontar a un monstre invisible anomenat Corona Virus. Aquest virus va fer que les persones estiguessin molt malaltes & feble. Moltes persones van perdre les seves bones. Inicialment hi va haver un gran problema, el problema era la indisponibilitat d’un equip mèdic adequat com
Quadre fotogràfic de bricolatge barat: 5 passos
Quadre fotogràfic de bricolatge barat: Alguna vegada heu necessitat alguna cosa per fer que les vostres fotos tinguessin un aspecte millor per al vostre projecte instructiu o simplement necessiteu una il·luminació adequada per a les vostres fotografies, així que podeu fer servir una caixa de fotos fàcilment a casa. El meu aquí no és el millor, però és barat i
Mesurador de freqüència Arduino senzill de bricolatge fins a 6,5 MHz: 3 passos
Mesurador de freqüència Arduino simple de bricolatge fins a 6,5 MHz: Avui us mostraré com construir un comptador de freqüències senzill capaç de mesurar freqüències de senyals reactangulars, sinusoïdals o triangulars de fins a 6,5 MHz
Mesurador de distància de bricolatge amb pantalla OLED: 4 passos
Mesurador de distància de bricolatge amb pantalla OLED: en aquest tutorial construirem un mesurador de distància digital que generarà els valors en una pantalla OLED. Per a aquest projecte podeu optar per utilitzar un mòdul ardiuno o ESP8266 i us proporcionaré codi per a tots dos. Si utilitzeu un ESP826
Mesurador de capacitat / mesurador de capacitats Autorange simple amb Arduino i a mà: 4 passos
Mesurador de capacitat / mesurador de capacitància Autorange simple amb Arduino i a mà: Hola! Per a aquesta unitat de física necessiteu: * una font d'alimentació amb 0-12V * un o més condensadors * un o més resistents de càrrega * un cronòmetre * un multímetre per a la tensió mesurament * un arduino nano * una pantalla de 16x2 I²C * resistències 1 / 4W amb 220, 10k, 4,7M i