智慧城市让生活更美好!
物联网  >   传感器  >  正文

传感器与编程(三)

  传感器就好比机器人的感官。机器人需要使用传感器来来获取反馈,从而知道在运行的过程中发生了什么。传感器可以反馈机器人的内部情况,例如马达转的圈数或是速度,机械臂的位置或者角度,亦或是机器人上某一部分的温度。当然传感器也会用来探测机器人的周围环境(外部情况),例如机器人在场地上的位置或者是距离某一物体的距离。

  传感器一般会分为两大类,数字信号的传感器(Digital Sensor)和模拟信号的传感器(Analog Sensor)。区分他们的方法是看他们的输出值。数字信号传感器的输出值无非是1或0(对应有或没有),假设我们给传感器的电压是5V,那么我们得到的结果只会是0V或5V。数字信号传感器最好的例子便是触碰传感器,其结果只会有按了或者没按。模拟信号传感器的输出值会较数字信号更多,同样是给它5V的电压,模拟信号传感器的输出值就会在0V-5V的这个去区间里,而我们的编程软件往往会把0V-5V的区间再转化为0-4095这样的数值。我们所用的角度传感器就是一个模拟信号的传感器,它会反馈我们一个0-4095的数值,我们便可以通过测试知道不同角度对应的数值。

  

 

  接下来我们讲简单对每一种传感器进行介绍:

  一、触碰传感器(Bumper Switch, Limit Switch)

  

 

  传感器种类:数字信号传感器

  传感器输出值:0 或 1

  传感器介绍:这两个传感器虽然长得并不一样,但其原理和用途基本上没有很大的区别。我们可以把他们看作一个开关,把按下传感器看作打开开关,放开传感器看作关闭开关。

  ROBOTC编程范例:

  

 

  当没有触碰时前进,触碰到墙壁后停止。

  二、角度传感器(Potentiometer)

  

 

  传感器种类:模拟信号传感器

  传感器输出值:0 - 4095

  传感器介绍:角度传感器一般用于测量机械臂的角度。需要注意的是,角度传感器的活动范围只有大约265°,因此我们在安装时需要注意不能将其连接在会旋转超过265°的轴上。最好先将角度传感器向一侧拧到底,同时也将需要连接的机械臂转到最低/最高位置。

  ROBOTC编程范例:

  

 

  我们将目标角度设为了2000,通过PID中P的部分来控制机械臂转动,实际效果大概会像下图这样:

  

 

  当我们只是用P时,机械臂会出现一个过度旋转的情况(overflow)。不过会在一段时间以后稳定下来。(如果一段时间以后机械臂还在很大程度上上下摇摆说明P的选值过大)

  

 

  三、超声波距离传感器(Ultrasonic Range Finder / Sonar Sensor)

  

 

  传感器种类:数字信号传感器

  传感器输出值:3cm-300cm或是1.5inches-115inches(可在ROBOTC中选择单位)

  如果超出范围则返回-1

  传感器介绍:超声波距离传感器顾名思义就是用超声波来检测机器人与障碍物之前的距离。虽然我们在ROBOTC中看到的最后结果时具体的距离,但实际上该传感器还是一个数字传感器。它的返回值依旧是0或1,只是ROBOTC帮助我们将这些数字转换成了具体的距离信息。简单地说,超声波距离传感器的一段会发出超声波而另一端会接收。我们通过测量每一次发出与接收的时间在将其乘以超声波的速度再除以二便可以得到机器人与障碍物间的距离。

  ROBOTC编程范例:

  

 

  直行直到距离墙10cm的地方停下。

  四、巡线传感器(Line Tracker)

  

 

  传感器种类:模拟信号传感器

  传感器输出值:0 – 4095(ROBOTC)

  传感器介绍:巡线传感器可以用来巡线或只是单纯识别场地的线或不同颜色的地垫。0-4095的范围对应了反光程度的多少。官方数据显示对于ROBOTC来讲,153大约对应的是白色,2650大约对应的是黑色。当然具体数值会与具体场地、灯光、装的位置都有关系,需要大家自己进行测试。

  ROBOTC编程范例:

  

 

  直走直到遇到黑线停下。

  五、编码器(Encoder)

  

 

  传感器种类:数字信号传感器

  传感器输出值:-32767 至 32767(对应角度)

  传感器介绍:编码器的用途是记录马达/轮子所转的圈数(360°为一圈)。通过将轮子所转的圈数乘以轮子的周长我们便可以知道机器人前进的距离。与超声波距离传感器一样,虽然我们输出值并非是0或1,但它实际上是一个数字信号传感器。

  

 

  它的工作原理是用当我们将轴连接到编码器以后,编码器开始旋转。编码器中的光感会不停识别转盘上的刻度(1或0),通过刻度的数量我们便能知道所转的圈数。

  ROBOTC编程范例:

  

 

  使用PID中的P让机器人前进轮子转2000°对应的距离。

  总结,相对于用时间来控制马达前进的多少,灵活地使用各种传感器可以给我们带来更精确,更稳定地结果。如果对于传感器这一部分还有什么问题的话,欢迎大家留言。同时大家也可以在VEX官网的商城中找到各种传感器,在页面的下方会有官方的介绍和范例。

  最后,祝大家圣诞快乐

  长按并扫描下方的二维码关注我

  获得VEX的第一手资讯

  

上一篇:聊聊宝马的氧传感器(三)

下一篇:手机有十几种传感器,你知道他们都有什么用处么?