物联网时代,作为对物理世界进行感知的传感器必不可少,每一种传感器的出现和有效利用都帮助我们对世界增加一个角度的认知。从古老的麦克风、摄像头、温度计到现在电赛中必用的姿态传感器、位置传感器等等,琳琅满目,种类繁多。 我们的处理器接受的外界信号除了按键、开关之外(参见上期的高效实战及电赛训练(4)- 数字系统的控制信息输入),就是各种传感器了,基于这些传感器的参数和变化来做进一步的决策判断。
虽然这么众多的品类,但现在的传感器用起来还是相对比较简单的,尤其是从硬件的角度,比如:
- 接口一般都是数字的了,I2C最常用,因为仅用两根线(SCL、SDA)就能串起好几个来,只要有不同的地址(相当于同学们的学号)做区分就可以,要注意的是I2C总线要有合适的上拉电阻才能正常工作,速率不是太高,对于多数传感器来讲够了,速度更高点的传感器可以采用SPI总线(靠片选来区分外设)来传输数据,有些传感器其数字接口是可以I2C/SPI灵活配置的。单线的也有,比如经典的18B20。对于CPU来讲,有很多重要的活在干,大Boss不可能一直处在打听外面的事情的状态,所以很多传感器(比如惯性传感器)带有中断Int(Interrupt)信号引脚,平时它的状态不发生改变,它不会轻易打扰busy的大boss的,一旦有人晃动它,它就通过Int信号把boss的注意力吸引过来,然后把数据传上去。
- 仍旧有一些传感器的输出是模拟的信号,这就可以利用MCU内部的ADC了(多数MCU都集成了多通道、12bit以上的串行ADC),要注意的是确保传感器输出的信号电平与MCU的ADC的输入范围最佳匹配,如有必要需要添加模拟链路(幅度的调整和频带的选取)。
- 使用传感器最要关注的几个指标
- 适用的场景、灵敏度范围、接口方式。这是选型以及应用的依据。不是所有的姿态传感器都是一个姿态,也不是所有的避障传感器能够识别所有的障碍物。
选定了传感器,重要的是要y=f(x)的算法,根据传感器的特性从获取的数据中推断出被探测的物理世界的实际状况,因此MCU里面的算法要做到正确、及时,这些算法的依据就是你用的器件的厂商提供的数据手册、文档、参考代码等等。 2020年了,没必要什么轮子都自己造,代码都自己写,站在别人的肩上一定看的更远。所以设计资源的有效利用就变得非常重要,尤其是你有可能面临上百种不同的传感器器件。 1 常见传感器的分类:https://www.eetree.cn/wiki/sensorlist
2 传感器相关的项目资源:https://www.eetree.cn/wiki/sensorprojects 3 电子森林的传感器资源页面:https://www.eetree.cn/category/19
4 Digilent/NI的PMOD模块 – 传感器/输入:https://www.eetree.cn/doc/detail/1141 5 Digilent/NI的PMOD模块的原理图:https://www.eetree.cn/doc/detail/1143,打开了都是可以参考的原理图
6 SeeedStudio的Wiki页面关于其Grove传感器的设计资源:https://wiki.seeedstudio.com/cn/Sensor/
7 微雪的Wiki系统跟传感器相关的资源:https://www.waveshare.net/wiki/Main_Page#Misc-sensor-modules
8 全球创客届大名鼎鼎的Sparkfun:https://www.sparkfun.com/categories/23
本文转载自微信公众号“电子森林”