1. 曝光值的计算&快门光圈的确定
曝光值(Exposure Value,EV)代表能够给出同样曝光的所有相机光圈快门组合。曝光值是传感器测量到的亮度(单位:Lux)的对数函数。下表给出常见环境的曝光值:
计算得到曝光值后,可以通过下表得到应该使用的快门和光圈:
2. 测光传感器的驱动
开发板上连接了一颗BH-1750芯片,可以得到环境的光线强度,单位为lux。经查阅数据手册,它有多种测试模式包含不同的测试分辨率,使用I2C通信。
Datasheet:https://www.mouser.com/datasheet/2/348/bh1750fvi-e-186247.pdf
3.代码 & 测试视频
项目代码:https://github.com/RoboBachelor/Exposure-Meter/
代码中包含了LCD驱动,BH1750的I2C驱动,以及按键驱动。在主函数中,程序进入100Hz的主循环等待用户按下对应的按键改变测光表状态。按下“测光”按键后进入连续测光模式,每150ms测量一次得到Lux值,计算得到EV值。程序包含了EV值转换为推荐的快门和光圈的查找表,根据计算的EV值显示对应的预先设定好的文本。
测试视频:见“视频”一栏。
视频中,用户按下测光按键(Key2)后,显示本次测光的Lux值,EV值,和推荐的快门和光圈值。长按则连续测量并显示数值。
后期计划:
由于最近时间较紧,暂时仅完成了测光表的基本功能,后期有如下计划:
增加快门优先,光圈优先模式,实现用户按键调整ISO感光度功能;
增加单次测光,连续测光,用户校准等功能;
优化用户界面,直观曝光值显示,参数显示。
参考代码:
中景园电子LCD显示屏驱动:https://shop73023976.taobao.com/
BH1750FVI驱动:https://github.com/vostrenkov/stm32f103_bh1750/