【雕爷学编程】Arduino动手做(78)---槽型光耦测速模块
37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验七十八:槽型光耦对射光电开关模块(红外计数测速传感器)
槽型光耦
以光为媒介传输电信号。它对输入、输出电信号有良好的隔离作用,所以,它在各种电路中得 1553b耦合器线缆接头到广泛的应用。目前它已成为种类最多、用途最广的光电器件之一。光耦合器一般由三部分组成:光的发射、光的接收及信号放大。输入的电信号驱动发光二极管(LED),使之发出一定波长的光,被光探测器接收而产生光电流,再经过进一步放大后输出。这就完成了电—光—电的转换,从而起到输入、输出、隔离的作用。由于光耦合器输入输出间互相隔离,电信号传输具有单向性等特点,因而具有良好的电绝缘能力和抗干扰能力。又由于光耦合器的输入端属于电流型工作的低阻元件,因而具有很强的共模抑制能力。所以,它在长线传输信息中作为终端隔离元件可以大大提高信噪比。在计算机数字通信及实时控制中作为信号隔离的接口器件,可以大大增加计算机工作的可靠性。槽型光耦作为一种非常常见的电子元件,在电子电路系统设计的过程中,其选型的正确与否是非常重要的。槽型光耦合器也常常被称为直射式光电传感器,其工作原理是通过对红外发射光的阻断和导通,在红外接收管感应出的电流变化来实现开和关的判断。光电耦合器具有体积小、使用寿命长、工作温度范围宽、抗干扰性能强。无触点且输入与输出在电气上完全隔离等特点,因而在各种电子设备上得到广泛的应用。光电耦合器可用于隔离电路、负载接口及各种家用电器等电路中。
光耦合器(opTIcalcoupler,英文缩写为OC)
亦称光电隔离器或光电耦合器,简称光耦。它是以光为媒介来传输电信号的器件,通常把发光器(红外线发光二极管LED)与受光器(光敏半导体管)封装在同一管壳内。以光为媒介把输入端信号耦合到输出端的光电耦合器,由于它具有体积小、寿命长、无触点,抗干扰能力强,输出和输入之间绝缘,单向传输信号等优点,在数字电路上获得广泛的应用。
槽型光耦对输入、输出电信号有良好的隔离作用,所以,它在各种电路中得到广泛的应用。目前槽型光耦已成为种类最多、用途最广的光电器件之一。槽型光耦一般由三部分组成:光的发射、光的接收及信号放大。输入的电信号驱动发光二极管(LED),使之发出一定波长的光,被光探测器接收而产生光电流,再经过进一步放大后输出。这就完成了电—光—电的转换,从而起到输入、输出、隔离的作用。由于槽型光耦输入输出间互相隔离,电信号传输具有单向性等特点,因而具有良好的电绝缘能力和抗干扰能力。所以,槽型光耦在长线传输信息中作为终端隔离元件可以大大提高信噪比。在计算机数字通信及实时控制中作为信号隔离的接口器件,可以大大提高计算机工作的可靠性。
槽型光耦的特点:
1、检测距离长。与接近开关等比较,光电开关的检测距离非常长,且是无接触式的,所以不会损伤检测物体,也不受检测物体的影响。
2、几乎不受检测物体的制约。由于是采用对检测对象的表面进行反射及光透过方式,不像接近开关只能对金属,还能对玻璃、塑料、木制物体、液体等各种物质进行检测。
3、响应速度快。与接近开关同样,由于无机械运动,所以能对高速运动的物体进行检测。镜头容易受有机尘土等的影响镜头免受污染后,光会散射或被遮光,所以在有活水蒸汽、尘土等较多的环境下使用的场合,需施加适当的保护装置。
4、不受环境强光的影响。几乎不受一般照明光的影响,但像太阳光那样的强光直接照射受光体时,会造成误动作或损坏。
光电耦合器原理
当电信号送入光电耦合器的输入端时,发光二极体通过电流而发光,光敏元件受到光照后产生电流,CE导通;当输入端无信号,发光二极体不亮,光敏三极管截止,CE不通。对于数位量,当输入为低电平“0”时,光敏三极管截止,输出为高电平“1”;当输入为高电平“1”时,光敏三极管饱和导通,输出为低电平“ 0”。若基极有引出线则可满足温度补偿、检测调制要求。这种光耦合器性能较好,价格便宜,因而应用广泛。光电耦合器之所以在传输信号的同时能有效地抑制尖脉冲和各种杂讯干扰,使通道上的信号杂讯比大为提高,主要有以下几方面的原因:(1)光电耦合器的输入阻抗很小,只有几百欧姆,而干扰源的阻抗较大,通常为105~106Ω。据分压原理可知,即使干扰电压的幅度较大,但馈送到光电耦合器输入端的杂讯电压会很小,只能形成很微弱的电流,由于没有足够的能量而不能使二极体发光,从而被抑制掉了。(2)光电耦合器的输入回路与输出回路之间没有电气联系,也没有共地;之间的分布电容极小,而绝缘电阻又很大,因此回路一边的各种干扰杂讯都很难通过光电耦合器馈送到另一边去,避免了共阻抗耦合的干扰信号的产生。(3)光电耦合器可起到很好的安全保障作用,即使当外部设备出现故障,甚至输入信号线短接时,也不会损坏仪表。因为光耦合器件的输入回路和输出回路之间可以承受几千伏的高压。(4)光电耦合器的回应速度极快,其回应延迟时间只有10μs左右,适于对回应速度要求很高的场合。
槽型光耦对射光电开关模块特色
1、使用进口槽型光耦传感器
2、槽宽度5mm。
3、有输出状态指示灯,输出高电平灯灭,输出低电平灯亮。
4、有遮挡,输出高电平;无遮挡,输出低电平。
5、比较器输出,信号干净,波形好,驱动能力强,超过15mA。
6、工作电压3.3V-5V
7、输出形式 :数字开关量输出(0和1)
8、设有固定螺栓孔,方便安装
9、小板PCB尺寸:3.2cm x 1.4cm
10、使用宽电压LM393比较器
模块电原理图
模块4针的定义
VCC 电源正,GND电源负,DO数字量输出,AO无效
模块使用说明:
1.模块槽中无遮挡时,接收管导通,模块DO输出低电平,遮挡时,DO输出高电平;
2.模块DO可与继电器相连,组成限位开关等功能,也可以与有源蜂鸣器模块相连,组成报警器。
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验七十八:槽型光耦对射光电开关模块(红外计数测速传感器)
测量电机转速Speed ,单位 转/分
G接GND、V接5V、S接数字引脚2或者3(使用中断,只能接这两个脚),
接好后,用一个遮挡物放在U型开关之间,模块上的LED点亮,无遮挡
物时,LED不亮;利用这一原理,当信号输出变化一次就计数一次,再
经过一些列的换算就可以得到转速了~~
*/
int U_Pin = 2;
float Val = 0; //设置变量Val,计数
float time; //设置变量time,计时
float Speed; //设置变量Speed,存储转速
void setup(){
Serial.begin(9600);
attachInterrupt(0,count,CHANGE); //引脚电平发生改变时触发
}
void loop(){
time = millis();
Speed = (Val/40)/(time/60000) ;
Serial.println(Speed);
delay(1000);
}
void count(){
Val += 1;
}
实验串口返回情况
实验场景图
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验七十八:槽型光耦对射光电开关模块(红外计数测速传感器)
程序之二,遮断计数器
VCC 5V
GND GND
OUT D2
*/
int speedPin=2;//定义数字3接口
int cntValue=0;
void setup ()
{
pinMode(speedPin,INPUT);//3号数字口设置为输入状态
Serial.begin(9600);
Serial.println("Speed Count\n");
}
void loop()
{
//判断是否被遮挡
if(digitalRead(speedPin)==0)
{cntValue++;//计数增加
Serial.println(cntValue);//串口输出计数值
while(digitalRead(speedPin)==0);//等待遮挡结束
}
}
实验串口返回情况
实验开源仿真编程(Linkboy V4.2)