  
    红外对射光电开关广泛应用于机械自动化、汽车防盗等行业作检测、计数、测速、人员通过、等其它工业自动化感测用途,也可在智能机器人竞赛中用作速度检测,通过计时等。 
    今天就给大家带来一个红外对射光电开关极其简单的一个应用,就是利用两组红外对射光电开关测试麦昆小车的速度。 
  
使用到的硬件 
实物图  
 
  
    首先我们先把两组光电开关给用起来,两组开关可以用一个稳定的电源供电,然后把两根输出信号线分别接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+软件,因为我们只是测小车的速度,所以就拖几个模块出来,搞一个简单的程序上传到小车上,小车能跑起来就行。 
 
  
 
  
最后来看一下红外对射光电开关测试麦昆小车速度的实际效果吧。 
 
  
 
  
测速过程与结果 
 
 
  
 
这个应用到这里就结束了,虽然简单,但是还是很实用的,这款红外对射光电开关,反应快且稳定,使用体验还是很好的。 
 
 
 
 
 |