ADC是把模拟信号转换为数字信号的电路,模拟信号在数值上是连续的,而且具有无穷多的数值。数字信号则相对简单得多,它的幅度和取值不连续,只有表示“1”的高电平和表示“0”的低电平两种。在将模拟量转化为数字量的过程中,一般需要经过采样、量化和编码三个步骤。 转换原理如下图: 模拟信号从Vin端输入,参考电压从Vref端输入。转换过程初始时,逐次逼近寄存器SAR的值清零,转换开始后SAR将最高位置1,SAR中的数字量经过D/A转换后生成试探反馈电压Vf,这个电压随即送入比较器中与模拟输入电压Vin进行比较。如果Vin>Vf,则所置的1被保留,否则最高位的1会被舍掉,再将次高位置1,并重新经D/A转换后得到新的Vf再与Vin进行比较。此试探性比较重复进行,直至定出所有数据位的取舍,最后将得到的所有数据位作为转换结果输出出来。 从上面的原理图可以看到vin与vref两个输入。同时arduino的引脚有vin与aref两个引脚,它们完全是不一样的。先看一下arduino的vin引脚: 这里的vin引脚就是一个输入引脚,电压高于5V,经过一个稳压器NCP1117ST50T3G变成稳定的5v电压。 而aref引脚确实是一个基准电压的输入引脚,可以通过一个analogReference函数来设定是片内基准电压还是自外基准电压,片外基准电压就是给这个引脚一定的电压。api的详解如下: 如图所示,arduino默认的参考电压为5v。就是说写一句analogReference(DEFAULT)与不设置参考电压是一样的,都会以5v作为参考电压。另外还有一个INTERNAL,为1.1v,其它两个mega板用的参数先不管了。还有一个EXTERNAL,我分别把aref连到5v与3.3v还有悬空状态,把这三种状态下的测试结果作一个对比。得到以下表格: 从上面的表格可以看出,使用默认的5v与aref连接5v的测试结果是一样的。说明一下我的试验设备,一个arduino uno,3根导线与一节5号电池。如下图: 实验代码如下:...

2010年以前我都是和我朋友合租的,从最开始的床位到后面和同学一起合租一个二居,一直没有自己单独的房间。2010年我跳槽后终于可以支付得起一间屋的房租了。有个单独的空间当然有很多新鲜的事,布置屋子、打扫屋子、体会独处的自由和孤独。 当我再去我租的第一间房的地方时,那块正在施工,好像无法走到大门口了。当时租的是这图里右后面的房子里,那是二层楼房(公寓),总共有3栋左右吧。每个屋都与学校公寓似的,10...