DIY定时摄影装置

缘由

有一个朋友问我可不可以帮他做一个尼康单反相机遥控快门,而且他提出了额外的设计要求,就是增加定时定量拍摄照片的功能,因为他是个园艺爱好者,希望拍摄植物生长过程的照片。根据他的要求,我设计了一个电路(见图10.1),可以设置要拍摄的张数和间隔的时间,使用4位的数码管进行显示,通过4个按键进行操作,并且有声音提示,有理光格式的红外遥控信号输出,还有继电器接口可以接入各式相机的快门线。

图10.1定时摄影装置

原理

电路原理图如图10.2所示,主要使用了一片单片机进行控制,型号可以是AT89C或STC12CAD等,只要是51架构就可以。电源通过IN后进入LM被稳压成5V,为电路板提供5V电源。晶体使用12MHz,能使程序更精确地定时。电路使用4位的共阳极7段式数码管,位控制分别连接在三极管上,段控制连接在4-10线译码器74HC42上,不仅可以节约I/O口,还起到缓冲的作用,保护单片机不受损坏。5V继电器和蜂鸣器都是使用三极管控制的。4个按键和数码管的位控制共用I/O口。

这次制作中的程序编制最大特点就是使用了时间触发的嵌入式系统,这种系统原理是把需要执行的任务按所需要的周期时间来调度执行。程序使用中的定时器来定时计算时标,本程序设定的时标是10ms,也就是每10ms检查一次是否有任务需要执行。有的任务到了设定时间需要执行则执行该任务,有的任务没有到定时时间则在任务的时标变量中减去一个值,直到到达任务执行时间为止。在笔者提供的源代码中已包含了一个完整的时间触发系统,只要增加修改其任务子程序,就可以方便制作自己所需要的时间触发嵌入式系统。如在主函数main中,我们编写以下一段代码:

SCH_Add_Task(Key_GetCode,0,7);

意思就是把扫描按键的子程序Key_GetCode()加入到任务中,在间隔0个时标后执行,以后每隔7个时标(70ms)执行一次扫描按键子程序。

制作

此电路的制作并没有特殊要求,只需按电路图制作电路板,焊接好元件,把固件程序烧录到中就可以了。我使用了以前制作温度控制器的PCB制作这个电路,制作完成的成品如图10.3和图10.4所示。

图10.2电路原理图图10.3制作好的电路实物(正面)图10.4制作好的电路实物(背面)

使用

这个电路的使用方法非常简单。开机默认的时间间隔是1min,拍摄张数是10张。电路启动后会显示0,这时可以按Enter键载入默认参数并运行,也可以按Model键进入设置。设置项有2项,分别为tset(时间间隔)和cset(拍摄张数),按Up和Down切换设置项,选择后按Enter进入设置,然后出现当前设置项的设置值。这时可以按Enter退回设置项选择或按Model退出设置模式,退出设置模式会马上加载设置好的参数并运行。

这个制作可以使用红外遥控信号输出(仅支持尼康的如下机型:D40、D40X、D50、D60、D70、D70s、D80、D90、D、D、Coolpix、、P)和使用继电器连接快门线。使用红外遥控信号输出时,只需要把红外发射二极管对着相机正面的接收窗口,然后把相机的快门控制方式拨到红外遥控模式,调整好焦距,就可以启动电路进行定时拍摄了。有一点需要注意的是,尼康的红外接收时间是可以设定的,超过设定时间仍没有信号被接收,则会自动返回标准快门控制方式。以尼康D70S为例,红外接收时间最长为15min,所以设置电路时间间隔时不可大于15min。图10.5所示为使用红外输出控制相机时的情景。

图10.5采用红外输出控制拍摄的场景

使用快门线可以把拍摄的间隔时间设置到足够长,前提是要有一条合适你相机的快门线。以D70S为例,因其快门线的接口比较特殊,很难找到接头进行自制,不过在市场上有许多非原装的快门线,一条也就十几元,可以购买来用它作为连接线。图10.6所示为D70S的快门线,图10.7所示为其内部结构,图10.8所示为接头引脚定义。只要把A和GND短接,相机就会对焦,把A、B和GND短接就会释放快门。只要把A、B并联到继电器的常开触点,GND接到继电器的触点,就可以用电路控制相机了。实际使用发现,最好是用2个继电器,先短接A和GND,再短接A、B和GND(本文只提供1个继电器版本的程序)。

图10.6D70S的快门线图10.7快门线内部结构

改进

此制作可以应用于一些特定的拍摄现场或特殊的设备控制。程序稍作修改就可以定时控制相机的B门曝光时间,实现精确时间控制的慢速摄影,也可以改做闪光灯控制等。该电路还可以直接作为周期性定时控制器使用。

图10.8快门线接头引脚定义


转载请注明:http://www.aierlanlan.com/tzrz/7911.html