编辑: 飞鸟 | 2018-09-28 |
这些小玩意的控制钮的结构大致相同,如果将它们拆解 (注 :拆解之后, 可能 会失去保固) ,你将看到类似下图的开关结构,当按钮被按下时,按键底部的 导电橡胶会让印刷电路板上的接点导通 : 我们并不需要用马达或其他机械装置来按下或触发开关.印刷电路板上的铜 箔接点, 相当於电路上的一个断路,因此 ,若在它两边各焊接一条导线出来, 再连接开关 , 即可取代原有的按键: 本交将采用称为 「光电耦合」 的元件来取代控制器原有的按键. 用Arduino 制作自动感应微形摄影机 认识光电耦合元件 光电耦合 (optical coupler) 元件, 又称为光隔离元件,外型、 电路符号与结构如 下:它也算是一种光电开关, 当左边的红外线二极体导通、发光时, 左边的光电晶 体也将导通.由於元件两端的信号,全透过光线传递, 没有直接相连,因此元 件两端的电路相当於被隔离开来. 以底下的应用为例,光电晶体一端接微型摄影机的按钮接点 , 不管这小装置采 用1.5V 或9V 电源 ,都跟 Arduino 无关 : 常见的光耦合元件型号有 NEC 的PS
2501、 夏普的 PC817 以及台湾亿光的 EL817 ,这三种型号的元件可以互换,外型与电路符号也相同. 以夏普的 PC817 为例,规格书标示光电晶体的集极输入电流 (IC) ,最大可承受 50mA , 对於一般电路里的控制按钮绝对够用 .不过,光电晶体 C 和E脚的电 流往单方向流动,光是用眼睛看, 可能无法判定光耦合的两个接脚,要如何焊 接在 3C 产品按键的电路板 .这时可以用万用电表测量, 以Xbox
360 控制器 的按钮接点为例, 其中一边是接地: 像这种情况,光电晶体的 E 脚要焊接在接点的接地边, 另一边接 C 脚.如果 无法确定要 C, E 焊接的方向 , 就先随便接,若测试后发现不能导通,再将焊接 脚位对调即可 : 除了光耦合元件,也可用继电器(relay)控制开关,不过,继电器属於机械式 开关,反应速度比光耦合慢(但仍旧比人类快很多),而且继电器消耗比较多 的电量也比较容易故障,主要用於大电压/大电流的电路. 动手试试看 底下是本文的示硬体 , 采用一个人体移动侦测模组 (简称 PIR) , 加上两个光耦 合元件 (注:也有一个 IC 里面包含两组或
4 组光耦的型式) , 用来控制微型摄影 机的 「 开始录影」 和 「停止录影」 按键 , 读者可自行变换 , 衔接其他 3C 设备的控 制钮. 光耦合元件的红外线发射 LED 的阳极脚,要连接一个 220Ω (红红棕) 的限流 电阻 ,保护红外线 LED. 例程式码如下 , 当PIR 感测器侦测到人体移动时, 它将点亮 Arduino 第13 脚的 LED, 并启动 「录影」 ;
过了
10 分钟之后停止录影. 首先宣告程式变数 , 请注意 ,储存时间毫秒值的变数类型 ,最好使用 long(长整数) , 以免变数容 量不足而导致程式执行错误 (原始档名 :diy_appC.ino) : const byte pirPin = 12;
// 红外线感测器讯号脚位 const byte ledPin = 13;
// LED 脚位 const byte recPin = 9;
// 录影钮 const byte stopPin = 8;
// 停止钮 long oldTime;
// 暂存当前时间 /*
10 分钟的毫秒数:1000 *
60 *
10 底下这一行可改写成: long delayTime = 1000L * 60L * 10L;