Daftar Isi:

Lightmeter Fotografi DIY: 5 Langkah
Lightmeter Fotografi DIY: 5 Langkah

Video: Lightmeter Fotografi DIY: 5 Langkah

Video: Lightmeter Fotografi DIY: 5 Langkah
Video: How to Use a Light Meter for Film Photography #shorts 2024, Juli
Anonim
Lightmeter Fotografi DIY
Lightmeter Fotografi DIY
Lightmeter Fotografi DIY
Lightmeter Fotografi DIY

Instructable ini membagikan beberapa ide tentang membangun lightmeter insiden kecil dan murah yang sederhana.

Karena Instructables tidak mengizinkan saya memasukkan video saya sendiri, coba tautan ini:

www.youtube.com/embed/avQD10fd52s

Tujuannya bagi saya adalah light-meter untuk menemani kamera film format medium Bronica ETRSi saya.

Hal-hal yang saya inginkan untuk ditampilkan:

  • ASA tunggal (100) karena saya hampir hanya menggunakan film ASA 100
  • sekecil mungkin
  • hanya berikan saya kombinasi yang dapat direproduksi oleh Bronica saya, yang berarti f2.8-f22 dan 1dtk hingga 1/500dtk
  • tidak ada fitur yang tidak masuk akal, kecuali waktu biasa dan nilai aperture

Hal-hal yang saya gunakan:

  • Adafruit(Vishay) VEML 7700 digital Lux-meter (sekitar $5)
  • Pengontrol mikro Adafruit Trinket M0 (sekitar $ 9)
  • Layar OLED 128x32 (sekitar $10)
  • tombol tekan untuk menyalakannya sementara (beberapa sen)
  • sepotong kecil strip-board, karena saya mencoba untuk tidak menggunakan kabel, tetapi Anda pasti dapat menggunakan kabel juga

Langkah 1: Perhitungan Dasar | Lux ke EV

Perhitungan Dasar | Lux ke EV
Perhitungan Dasar | Lux ke EV
Perhitungan Dasar | Lux ke EV
Perhitungan Dasar | Lux ke EV

Sensor yang saya beli menggunakan dua fitur yang memungkinkan saya memutuskannya:

  • menghasilkan nilai lux 16bit alih-alih nilai cahaya "tanpa dimensi"
  • mengeluarkan nilai melalui I2C

Pengukur cahaya fotografi menggunakan Nilai Eksposur (EV) sensor yang saya beli menggunakan nilai Lux, yang merupakan skala yang sangat berbeda. Jadi langkah pertama adalah mendapatkan EV dari nilai Lux yang disediakan sensor.

Sekilas tentang wikipedia dan Anda dapat menemukan formula untuk pengukuran insiden dan mengonversi EV ke Lux:

E =2,5 * 2^EV

dimana E diukur dalam Lux.

Karena kita sudah mendapatkan nilai Lux dari sensor dan menginginkan nilai EV, kita harus membentuk ulang rumus, yang membuat kita menjadi:

EV = log2 (E/2.5)

Jadi itulah perhitungan pertama yang harus dilakukan untuk mendapatkan nilai fotografi dari lightmeter.

Dalam tabel pencarian terlampir Anda dapat melihat semua nilai yang akan digunakan dalam lightmeter ini, bersama dengan nilai Lux dan EV yang sesuai.

Langkah 2: Menyajikan Nilai pada Tampilan | Perpustakaan Adafruit GFX

Menyajikan Nilai di Layar | Perpustakaan Adafruit GFX
Menyajikan Nilai di Layar | Perpustakaan Adafruit GFX
Menyajikan Nilai di Layar | Perpustakaan Adafruit GFX
Menyajikan Nilai di Layar | Perpustakaan Adafruit GFX
Menyajikan Nilai di Layar | Perpustakaan Adafruit GFX
Menyajikan Nilai di Layar | Perpustakaan Adafruit GFX

Saya pertama kali mencoba menyajikan nilai dalam seluruh langkah, karena itulah yang dapat saya atur untuk Bronica saya, tetapi itu membawa saya ke masalah:

Mari kita asumsikan sensor Lux menghasilkan nilai persis 20480, itu berarti persis EV 13 jadi saya bisa misalnya mengatur kamera saya pada f4 dan 1/500 detik dan akan baik untuk digunakan

Selanjutnya, mari kita asumsikan sensor Lux akan menghasilkan 20479 Lux, 1 Lux di bawah EV13, yang akan menghasilkan nilai EV 12, tetapi hanya berjarak satu Lux dari EV13

Jadi saya akan mengatur kamera saya pada f2.8 dan 1/500 detik yang akan membuat overexpose 1 stop tanpa saya tahu seberapa dekat saya dengan EV13.

Kesimpulan: kita memerlukan semacam tampilan analog dari nilai-nilai untuk setidaknya melihat seberapa dekat atau jauh meteran dari langkah EV berikutnya atau sebelumnya.

Setelah mencoba menggunakan huruf dan font bawaan dari pustaka GFX, saya memutuskan untuk menggunakan dua grafik khusus yang akan bergerak melintasi layar OLED.

Satu untuk nilai aperture, satu untuk waktu.

Perpustakaan GFX menggunakan nilai 8bit untuk menyajikan grafik, jadi saya membuat lembar xls (lihat gambar di atas).

  • setiap nilai memiliki jumlah piksel yang sama persis per nilai
  • kali dan bukaan memiliki jumlah nilai yang persis sama per baris
  • Saya menambahkan "B" yang diperlukan di awal setiap byte dan "," di akhir
  • Saya kemudian mengekspornya ke teks biasa dan voila: saya mendapatkan grafik ketiga terlampir

Nilai waktu dimulai dengan 1/8 detik dan nilai bukaan dimulai dari f2.8

Menggunakan tabel pencarian dari langkah sebelumnya kita tahu ini mewakili 160 Lux atau EV6.

Nilai paling gelap kemudian adalah f22 dan 1/500 detik

Sekali lagi melalui tabel pencarian kita dapat melihat itu berarti 655360 Lux atau EV18

Sejauh ini baik.

Jadi pada EV6 grafik aperture harus di paling kiri, waktu di paling kanan, dan sebaliknya di EV18

Langkah 3: Membaca dan Mengkompensasi Nilai Lux | VEML7700

Membaca dan Mengkompensasi Nilai Lux | VEML7700
Membaca dan Mengkompensasi Nilai Lux | VEML7700
Membaca dan Mengkompensasi Nilai Lux | VEML7700
Membaca dan Mengkompensasi Nilai Lux | VEML7700

Saat menelusuri lembar data penggunaan Adafruit Vishay VEML7700 untuk papan mereka, saya menemukan pemberitahuan yang agak mengganggu:

Sensor hanya bekerja linier antara 0 dan 1000Lux (!)

lihat tangkapan layar dengan garis oranye (linier) dan garis biru (output sensor aktual)

Sinar matahari (EV15) adalah sekitar 80.000 Lux, yang berarti tanpa kompensasi dari bagian non-linier dari sensor itu akan menjadi tidak berguna sebagai pengukur cahaya.

Vishay tahu itu, jadi mereka memberi pelanggan mereka pdf lain yang disebut Merancang VEML7700 Menjadi Aplikasi.

Dalam pdf ini Anda dapat menemukan rumus untuk mengkompensasi sensor non-linier:

LUX_CORR = 6.0135e-13*pow(LUX, 4)-9.3924e-9*pow(LUX, 3)+8.1488e-5*pow(LUX, 2)+1.0023*LUX

Dimana LUX_CORR adalah Nilai-Lux yang dikoreksi dan LUX adalah nilai keluaran sensor.

Itu adalah variabel yang saya gunakan, yang berbeda digunakan di lembar mereka.

Yang sedikit mengganggu saya adalah Adafruit tidak menyebutkan ini dengan satu kata di halaman mereka, dokumentasi mereka, perpustakaan mereka atau di tempat lain.

Jadi beberapa hari pertama saya bertanya-tanya mengapa lightmeter saya hanya menghasilkan 20000 Lux maksimum bahkan di bawah sinar matahari langsung.

Jika Anda melihat grafik dengan garis merah dan biru, Anda dapat melihat alasannya: karena tidak dapat naik lebih tinggi tanpa formula kompensasi.

Tetapi ada petunjuk lain yang tersembunyi dalam dokumentasi sensor:

Formula kompensasi ini hanya berfungsi jika Anda mengatur sensor ke 25ms dan rasio penguatan 1/8.

Itu dilakukan dengan cukup mudah dengan perpustakaan Adafruits dengan menambahkan:

veml.setGain(VEML7700_GAIN_1_8);veml.setIntegrationTime(VEML7700_IT_25MS);

di pengaturan kosong Anda()

Jadi setelah mengaturnya ke 1/8 dan 25ms dan menambahkan formula kompensasi, Anda dapat mengukur hingga 120000 lux, cukup untuk menutupi sinar matahari pada 80-100k Lux

Langkah 4: Arduino / C-code

Karena itu tergantung pada tampilan yang Anda gunakan dan pengontrol pilihan, saya tidak akan terlalu detail, hanya beberapa pemikiran dan petunjuk untuk ditambahkan, terutama saat menggunakan perpustakaan Adafruit dan OLED 128x32 px:

dalam pengaturan kosong:

saya mengatur bagian perpustakaan VEML ke:

veml.setGain(VEML7700_GAIN_1_8);

veml.setIntegrationTime(VEML7700_IT_25MS);

veml.setLowThreshold(10000);

veml.setHighThreshold (20000);

veml.interruptEnable(benar);

dalam lingkaran kosong:

pastikan untuk menambahkan kompensasi:

int LUX_CORR = 6.0135e-13*pow(LUX, 4)-9.3924e-9*pow(LUX, 3)+8.1488e-5*pow(LUX, 2)+1.0023*LUX;

untuk mendapatkan EV dari Lux gunakan baris ini:

float EV = log2((LUX_CORR/2.5));

memindahkan bitmap

untuk memastikan bitmap hanya bergerak ketika nilainya antara 160Lux dan 655360Lux seperti yang dinyatakan pada langkah sebelumnya, bungkus dalam klausa if seperti itu:

jika (LUX_CORR > 159 && LUX_CORR <655361)

Selanjutnya kita perlu memetakan nilai EV ke koordinat, karena rentang EV adalah dua digit dan kita ingin memindahkannya dari tampilan lebih dari 128px di seluruh tampilan, kita membutuhkan nilai yang lebih besar.

Karena kita sudah mendapatkan bilangan float, kita tinggal mengalikannya dengan 100 dan menggunakan bilangan bulat itu untuk memetakan koordinat

int EV_DSPL = EV*100;

dan:

WAKTU = peta(EV_DSPL, 600, 1900, -260, 39);APERTURE = peta(EV_DSPL, 600, 1900, 39, -260);

Seperti yang Anda lihat dalam kasus saya, posisi minimum bitmap adalah -260px dan maksimum adalah 39px

Yang juga bisa dilihat di sini adalah saya mengganti koordinat sehingga kedua bitmap bergerak ke arah yang berlawanan

Selanjutnya kita perlu memindahkan bitmap sesuai dengan koordinat dengan cara:

display.drawBitmap((TIME), (0), TIMES_bmp, 352, 16, 1);display.drawBitmap((APERTURE), (15), APERTURES_bmp, 352, 16, 1);

Dan hanya itu yang perlu dilakukan

Sebagai bonus saya menampilkan nilai EV dan Lux langsung ketika sensor mengeluarkan Nilai di bawah 160Lux, hanya karena saya ingin melihat hal-hal saat mengujinya.

Langkah 5: Menyatukannya

Menyatukannya
Menyatukannya
Menyatukannya
Menyatukannya

Karena keduanya, layar dan sensor menggunakan I2C untuk berkomunikasi, membangun perangkat keras sebenarnya sesederhana mungkin.

Cukup hubungkan jalur Data, Clock ground dan 3V dengan Arduino dan Anda siap untuk pergi.

Saya menambahkan grafik bagaimana saya melakukannya dengan stripboard, tetapi seperti yang dikatakan sebelumnya Anda dapat menggunakan kabel atau bahkan membuat sayap untuk itu, semuanya tergantung pengontrol dan tampilan yang Anda gunakan.

Pada grafik saya, titik-titik putih seharusnya terhubung ke layar dan sensor dan titik-titik kuning terhubung ke Trinket.

Satu-satunya pengecualian adalah pin data dari jalur I2C yang terhubung ke layar, pin itu juga terhubung ke pin data Trinkets.

Saya memilih untuk tidak menggunakan tombol on/off tetapi menggunakan tombol tekan dan dua sel tombol 3V untuk menyalakannya sementara selama saya menekan tombol. Ini menyala di bawah 1/10 detik sehingga cukup cepat bagi saya untuk menyisihkan tombol dan membuatnya lebih kecil.

Direkomendasikan: