传感器的AO与DO
很多时候,我们购买传感器的时候,能够发现传感器一般都有四个口。拿这款震动传感器作为例子,他有VCC,GND,AO,DO四个接口。而很多时候,我们用VCC接5V,GND接单片机GND,给模块供电。最后有一个DO口接单片机一个引脚,例如P1^1脚。
现在我们就将一些AO和DO有什么区别。
DO口——数字信号
void main() { while(1) { if(P1^1==1) { 没有震动 } if(P1^1==0) { 震动 } } }
我们看商家提供的资料,知道写程序的时候,我们只需要检测P1^1的电平是否为低电平。如果是低电平,那么表示发生了震动,如果是高电平就是没有震动。
这种根据0和1来进行判断的方式,就是对数字信号的处理。数字信号看似就是0和1,其实本质上就是电压信号,不过一般规定低电平为0~0.25V,用数字0表示,高电平为3.5~5V,用数字1表示。所以对于数字信号而言,不需要区分电压值具体是多少,只要是在这个范围之内,都称之为0或者1。
而模拟信号不同,我们需要知道电压值的具体是多少。3.6V就是3.6V,5V就是5V,不能一概称之为1。
AO——模拟信号
首先我们需要知道一个概念,就是很多传感器其实就是一个定值电阻,加上一个对某一种信号敏感的电阻。比如光感,就是一个光敏电阻和一个定值电阻,如下图。
光敏电阻会因为光线的大小,从而改变阻值。我们又根据串联分压的原理,当光敏电阻发生改变的时候,DO处的电压值也会发生改变,而这个电压值就是模拟量。
模拟信号与数字信号的关系
以上为我画了一个很丑的模拟信号转换数字信号的电路。
首先,我们了解一些LM393是什么的。一般我们在购买到一个模块的时候,能够看到模块上一般都要一个叫做LM393的芯片,这个芯片的作用就是用来做比较的,也称作比较器。当+输入端电位>-输入端电位时,LM393输出高电平。反过来,当+电位<-电位时,LM393会输出低电平。
我们又知道DO的电压值会随着光线的大小变化。那么我们将DO的值输入到LM393比较芯片中去,LM393就可以根据DO的电压值和滑动变阻器的分压值进行对比,最后决定输出是高电平还是低电平。
但是,很多时候我们看到的电路图并不是这样的,因为现实生活中的信号不可能这么完美,会有一定的干扰信号,所以会外加一个一些电容和电阻。至于LED灯,是用于做指示的,这样能让我们更加直观的知道传感器当前状态。
总结
模拟信号就是电压信号,而数字信号就只是0和1(一般规定低电平为0~0.25V,用数字0表示,高电平为3.5~5V,用数字1表示)。
analog——模拟,digit——数字。所以AO表示模拟量,DO表示数字量。
ADC和DAC
很多时候,我们能看到ADC和DAC这两个名词,他们到底是干什么的呢?ADC就是模拟信号转换为数字信号(上述的AO变成DO是其中的一种),DAC就是数字信号转换为模拟信号(比如我们将编程让单片机输出固定的电压值)。