红外对射光电开关广泛应用于机械自动化、汽车防盗等行业作检测、计数、测速、人员通过、等其它工业自动化感测用途,也可在智能机器人竞赛中用作速度检测,通过计时等。
今天就给大家带来一个红外对射光电开关极其简单的一个应用,就是利用两组红外对射光电开关测试麦昆小车的速度。
使用到的硬件
实物图
首先我们先把两组光电开关给用起来,两组开关可以用一个稳定的电源供电,然后把两根输出信号线分别接Arduino开发板的引脚5和引脚6,Arduino板子要和光电开关共地。
为了测速的方便,我把两组开关给固定到了两个纸盒上,分别形成了起点和终点。
打开Arduino IDE,写好代码上传到板子上,到这里光电开关已经可以作为一个测速的工具了。
代码:
- int a=0;//第一组对射开关检测物体的次数
- int b=0;//第二组对射开关检测物体的次数
- int pin1=5;//第一组开关接的引脚口
- int pin2=6;//第二组开关接的引脚
- double time1;
- double time2;
- double sj1;
- double sj2;
- double distance=0.17;//设置两组开关之间的距离为0.17m
- double Speed;
- void setup() {
- Serial.begin(9600);
-
- pinMode(pin1,INPUT_PULLUP);//输入上拉模式
- pinMode(pin2,INPUT_PULLUP);
- }
-
- void loop() {
- if(digitalRead(pin1)==LOW){
- a++;
- Serial.print("通过起点的次数:");
- Serial.println(a);
- sj1=millis();
- time1=sj1/1000;
- Serial.print("通过起点的时间:");
- Serial.print(time1);
- Serial.println("秒");
- }
- if(digitalRead(pin2)==LOW){
- b++;
- Serial.print("通过终点的次数:");
- Serial.println(b);
- sj2=millis();
- time2=sj2/1000;
- Serial.print("通过终点的时间:");
- Serial.print(time2);
- Serial.println("秒");
- Speed=distance/(time2-time1);
- Serial.print("麦昆小车速度为:");
- Serial.print(Speed);
- Serial.println("m/s");
- while(digitalRead(pin2)==LOW);
-
- }
- while(digitalRead(pin1)==LOW);
- }
复制代码
接下来就是把小车给用起来了,这里我用的是Mind+软件,因为我们只是测小车的速度,所以就拖几个模块出来,搞一个简单的程序上传到小车上,小车能跑起来就行。
最后来看一下红外对射光电开关测试麦昆小车速度的实际效果吧。
测速过程与结果
这个应用到这里就结束了,虽然简单,但是还是很实用的,这款红外对射光电开关,反应快且稳定,使用体验还是很好的。
|