用红外对射光电开关测试麦昆小车的速度
static/image/hrline/1.gif红外对射光电开关广泛应用于机械自动化、汽车防盗等行业作检测、计数、测速、人员通过、等其它工业自动化感测用途,也可在智能机器人竞赛中用作速度检测,通过计时等。
今天就给大家带来一个红外对射光电开关极其简单的一个应用,就是利用两组红外对射光电开关测试麦昆小车的速度。
static/image/hrline/1.gif
使用到的硬件红外对射光电开关 x2麦昆小车 x1Arduino Uno板 x1IO扩展板 x1
软件Arduino IDEMind+
实物图
static/image/hrline/1.gif
首先我们先把两组光电开关给用起来,两组开关可以用一个稳定的电源供电,然后把两根输出信号线分别接Arduino开发板的引脚5和引脚6,Arduino板子要和光电开关共地。
为了测速的方便,我把两组开关给固定到了两个纸盒上,分别形成了起点和终点。
打开Arduino IDE,写好代码上传到板子上,到这里光电开关已经可以作为一个测速的工具了。
static/image/hrline/1.gif
代码:
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);
}
static/image/hrline/1.gif
接下来就是把小车给用起来了,这里我用的是Mind+软件,因为我们只是测小车的速度,所以就拖几个模块出来,搞一个简单的程序上传到小车上,小车能跑起来就行。
static/image/hrline/1.gif
最后来看一下红外对射光电开关测试麦昆小车速度的实际效果吧。
static/image/hrline/1.gif
测速过程与结果
https://www.bilibili.com/video/BV1to4y197jK/
这个应用到这里就结束了,虽然简单,但是还是很实用的,这款红外对射光电开关,反应快且稳定,使用体验还是很好的。
很好的教程,之前就困惑这测速咋弄
页:
[1]