1.11.1. 介绍
光电开关(光电传感器)是光电接近开关的简称,它是利用被检测物对光束的遮挡或反射,由同步回路选通电路,从而检测物体有无的。物体不限于金属,所有能反射光线的物体均可被检测。光电开关将输入电流在发射器上转换为光信号射出,接收器再根据接收到的光线的强弱或有无对目标物体进行探测。安防系统中常见的光电开关烟雾报警器,工业中经常用它来记数机械臂的运动次数。
如:
栅式光电开关 对射型光电开关
漫反射光电开关
在工业控制中,这类元件常用作限位开关、检测有无、记录次数等。
这类元件的特点是按电气要求供电后,输出引脚会根据被检测量输出高低电平。比如:栅式光电开关,上电后,输出引脚根据栅格内是否有遮挡物输出高、低电平;对射型光电开关在上电后,根据发射、接受之间是否有遮挡物输出高、低电平;漫反射光电开关上电后,根据被测位置是否有物体输出高、低电平。
类似的元件还有霍尔元件、接近开关、限位开关等,如下图所示:
1.11.2. 硬件电路
硬件接法,以欧姆龙EE-SX671为例:
接上电源后1-vcc/4-gnd,out脚根据栅格中是否有遮挡物输出高、低电平。
1.11.3. 程序设计
案例:触摸按钮动作时,切换板载led的状态(由点亮切换为熄灭或有熄灭切换为点亮)。
分析:根据光电开关的特性,软件控制上实际上是读取对应Pin的高、低电平,并根据高、低电平判断接入控制系统中,代码实现同机械按钮,如下:
1 from machine import Pin,TouchPad 2 from time import sleep 3 4 led = Pin(2,Pin.OUT) 5 tp = TouchPad(Pin(14,Pin.IN)) 6 7 tp_valve = 700 8 cnt = 0 9 max_value = 10 10 valve = 5 11 12 def button_deal(): 13 if(led.value() > 0): 14 led.off() 15 else: 16 led.on() 17 print("valid btn") 18 19 while True: 20 #按钮部分 21 if(tp.read()<tp_valve): 22 if(cnt < max_value): 23 cnt = cnt +1 24 else: 25 cnt = 0 26 27 if(cnt==valve): 28 button_deal() 29 sleep(0.01)
----*----*----*----*----*----*----*----*----*----*----*----
史久超
email:shijiuchao1983@163.com
tel:15999550975 微信同号
qq:157185173 经常不在线,尽量微信