完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 michael_llh 于 2016-8-13 09:20 编辑 MSP430教程之十二ADC(上) 首先我们需要明白一个问题是什么是ADC,中文翻译过来就是模数转换器,从他的英文名的话我们会更加好记,Analog-to-Digital Converter。 简而言之就是将模拟量转换为数字量。在我们的生活中大部分是模拟量,比如说温度、压力、声音、或者图像等等。现在大部分的传感器都将一些模拟量转化为电压量来进行测量,这里不再举例,因为太多了,大家在学会这一讲之后,可以试着去读一个土壤湿度传感器的值(前提是你有的话)。 现在大家应该可以明白是什么了吧!一句话,就是把电压值转化成数字量(会不会有点笼统,暂且可以这么理解)。 我们现在看下ADC有一些什么性能指标? 1.采样率 这是一个什么概念呢?因为对于模拟量来说,在时域上面是连续的(时域是指x轴为时间t的一个坐标域,比如你用示波器看到的波形就是指在时域上面的波形),而对于我们的数字量来说它就是一个离散的量,也就是说它必然是会产生一个时间间隔,没有办法做到连续,做到连续的话数据量就是无穷大(会不会说的有点玄乎,希望大家可以明白。)所以就引出采样率这样的一个东西,简单说就是多久采集一次信号,又可以称之为采样频率。 2. 分辨率 大家如果去查ADC的芯片,都会说到该芯片是几位的ADC,那么这个是用来干嘛的呢?比如说我们介绍的FR5969提供了一个12位的ADC,改怎么理解呢,12位的ADC第一个寄存器来说,那么他可以存储多少个数呢?就是212个数,假设我们现在给一个2.5V的电压值,那么我们可以得到他的分辨率就是 2.5/4096 = 0.0006 也就是说它可以测量到0.0006V的电压。 3.转化时间 这个比较复杂,因为涉及到ADC的构成以及工作原理,所以下面我们需要专门来讲一讲ADC的电路工作原理。 首先第一个我们需要知道的是采样定理,对于现在大部分的规模电路乃至超大规模电路,都基本的是以数字为主的,但是实际的大部分参量是模拟的,所以就需要解决这之间的桥梁问题。 举个简单的例子,一个正弦波,那么我们需要将其从模拟转换成数字,改如何实现,简单的说我们需要将其进行采样,采样什么意思呢?字面上看就是采集样本,而这个样本采集的呢是我们的电压值。那么这样就设计到一个问题,我们多长时间采集一次呢?这个问题就很关键了,它决定了我们采样得到的波形电压的一个是否能够恢复出来的问题,所以这里我们需要满足一个条件,就是采样的频率(也就是采样的时间间隔的倒数)必须大于或者等于我们信号的最高频率的两倍。 fs ≥ fi(max) 这里的fs是我们的采样频率(或者是取样频率),fi(max)是我们信号中的最高的频率分量的频率。那么信号中最高的频率分量指的是什么意思呢,像我们常见的波形,比如正弦波、方波、三角波、锯齿波这些波形,他们的频率是固定,是多少Hz就是多少,而对于我们大自然的模拟信号,是很难存在这种信号的,都是一大堆频率的波形混合在一起而显现出来的波形,暂时你就这么理解,这里深究下去我也搞不清楚,所以这里必须要找出的是最高的频率分量对应的频率。上面所说的就是采样定理,就是那个式子,很重要,需要大家记住。 上图所示就是一个采样过程,这样的一个模拟信号,不是一个规则的正弦信号,那么我们在t1和t2这个时间点进行信号的采集,两着之间的间隔倒数就是我们的采样频率了。 后面我们会进行另外一个步骤,就是量化和编码,那么这个又是什么意思呢?这里我们要明白,比如你使用的是3.3V或者5V的单片机,常见的,那么你对应最高能够测到的电压就是单片机的最高承受电压,3.3V或者5V(这句话不知道对不对,暂时没有找到充分的证据)。但是这里可能大家会提到一个问题就是如果我们要测超过这量程的电压,那怎么办,这个有好的解决方法,就是可以利用电阻进行分压测量,再通过计算得出我们的电压值,这个方法会引出电阻的阻值误差。 量化的示意图,这里很清楚的解释了什么叫做量化,简而言之,就是将我们的取样电压转化为所谓的二进制数,从图上介绍了两种的量化方法,这两种量化方式的区别在于他们的误差大小不同,前面的最小单位,也就是一个二进制位,001所代表的最小单位为1/8V,而第二个图中的最小单位为2/15V。那么如何体现他们的量化误差呢? 对于第一个来讲我们可以看出,如果编码为000,那么我们对应采集到的电压值应该是0~1/8V对吧,那么不难看出我们对于每一个量化值的最大误差为1/8V。好了接下来我们看下另外一个,我们的最小量化单位是2/15V,但是000变化到001,我们规定的是0~1/15V,所以这个时候我们得到的量化误差刚好是最小单位的一半,1/15V,往后的每一个量化值的误差都将处于量化单位的一半,中心位置,此时的量化误差就减少为1/15V。 后面还有经过一个取样保持电路,该电路的作用就是要将当前采集的模拟量保持一段时间,以便器件将其转换为数字量,这中间需要一段时间,所以需要该电路的支持,否则采集时间过快,数据突变,没有转换完成,将会到时数据错误。下面是一个取样保持电路的示意图,这里不细说,详细的大家参考附件的内容。 下面我们介绍一下常见的AD的结构类型,总的来说大概有这几种: 1.并联比较型ADC 2.反馈比较型ADC 3.双积分型ADC 4.V-F变换型ADC 5.逐次比较型ADC 总的来说,种类还是很多的,也都有着各自的特点,我们在这里没有办法说这么多,我们就挑几个来给大家说明了,其他的话就大家自行百度查查了。 下面的电路说明以3位的ADC来进行说明,位数少一点比较好说,高位数的道理都是一样的,这个能够明白了,其他也都类似了。 并联比较型ADC: 红色方框中我们看到共有8个电阻,总共的阻值是R×7+2/R = 15R/2,我们的参考电压是VREF,这个时候得到一个电阻的电压值为多少呢?2VREF/15,和我们前面说到的最小的模拟电压的间隔是相同的,有由于我们最下面的一个电阻为2/R,所以第一个和电压比较器(那个三角号有个+-号的那个)的节点就是VREF/15。也就和我们上面量化编码的第二图相同了,那么具体该如何进行比较呢? 我们举个例子,假设我们的输入电压是2VREF/15好了,那么现在我们的vi输入了这个电压值,那么对于C1这个电压比较器来说,我们看下它是怎么工作的。 我们需要知道电压比较器的工作特性:(偷懒一下,直接百度百科上截图了,打的手酸) 红色方框中是我们要用到的特性。 在C1这个电压比较器上面,反向输入端(-号的那个端口)输入的是我们的参考电压,这里的电压输入的是VREF/15,前面已经解释过为什么了,就是电阻分压。同向输入端(+号的输入端口)输入的是我们的vi,所以通过比较两者之间的电压大小我们得到此时应该C1输出的是高电平,这个电平有多高的话具体和电路有关系。 那么同理分析我们的C2~C7可以得到他们输出的是低电平。 经过电压比较器之后的电路就是D触发器了,那么对于D触发器我们同样也需要知道它的相关特性,这里也直接截图百度百科的了。 我们这里对应我们的电路看出我们的电压输出是连接到我们的D输入端,对应到我们的功能表上面可以相应的得出我们的输出内容,对C2连接的D触发器输出的是Q为0,相应的QN就为0,同理分析得出我们C1得出的就是Q为1,QN为0。通过图上我们可以看出两个D触发器后面连接的或非门的输入为C2所连接的D触发器输出的0和C1连接的D触发器输出连接的0。(这里的D触发器输出的变化都是在时钟的边沿产生,同时要注意看图上输出连接的是Q和QN,Q和QN是相反的关系,非的关系)。所以这个或非门输出得到的是1。相应的为高电平。(这里我们一般把1看做高电平,0为低电平)。 相应的分析后面的或非门我们可以得到最终的转换结果的位d2d1d0 = 001.这里就不在说明了哈,留给大家自行思考,相信大家可以通过分析或非门的输出关系,有一点很重要,要看清我们的连线,细心分析就可以得到结果。如果有什么疑问的话回帖,我们在和大家讨论。 相应的其他类型的ADC方式也通过相应的分析可以得到对应的理解。总归一句话,ADC是一个模拟量和数字量之间转换的桥梁,也是我们现在电子电路中必不可少的器件。 附件中有份文档,具体大家可以参考里面的知识,有不清楚的大家可以提出来一起讨论。 关于ADC其实还是有很多的内容的,我们在这里一次讲不完,我也想通过自己的语言来帮助大家理解,所以有什么不对的地方希望大家多多指出。关于这个系列的教程,我会继续介绍,当然第一版的话可能稍微粗糙,但是我会先更新,之后等整个教程完成之后,在回过头来进行想应的修正,希望能给大家带来一丝帮助,今天就讲这么多了。
模数和数模转换器知识专题.pdf.pdf
(2.28 MB, 下载次数: 236
)
|
|
相关推荐
|
|
|
|
|
|
|
|
@michael_llh 楼主,有个问题请教下。比如说我单片机自带ADC为12位16通道的话,我要测量两个电压,比如一个3V,一个5V。这两种电压各占一个通道?
|
|
|
|
|
|
lcc1 发表于 2016-8-22 15:38 可以的,但是你要确定这个ADC能不能支持到5V的电压,不行的话要进行分压。通道不同的话程序上面要注意逻辑的书写,有的ADC是可以同时测量几个通道,有的不行,你要针对不同的ADC使用方式具体区分一下 |
|
|
|
|
|
michael_llh 发表于 2016-8-22 15:57 多谢大神阿斯顿发 |
|
|
|
|
|
|
|
|
|
|
|
太好的学习资料,谢谢楼主分享。。。。。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
最近我正好在弄MSP430FR2033的ADC采集,我需要实现的是A7 A8 A9分开单次采集,一次只需要采集一个通道就可以了,然后现在的问题是ADC通道切换一直不成功,不知道哪里出问题了,望指点指点,谢谢!
|
|
|
|
|
|
wzr0701 发表于 2016-8-29 13:47 每次采集完之后需要对buf进行清0操作。进入调试界面设置断电查看每次采集的结果,还有一点就是要查看的那些变量添加到watch里面,实时更新变量内容,断电查看每次的读取结果有没有问题,在一步一步调试 |
|
|
|
|
|
michael_llh 发表于 2016-8-29 13:59 具体的问题描述我开了个新的问题贴,麻烦你给我去解答一下,谢谢! |
|
|
|
|
|
|
|
|
|
|
|
火火火山山 发表于 2016-8-13 09:02 这里应该是2^12=4096 |
|
|
|
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
3032个成员聚集在这个小组
加入小组2928 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3600 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2341 浏览 1 评论
4804 浏览 1 评论
2573 浏览 1 评论
1328浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3600浏览 2评论
2928浏览 1评论
1510浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 05:58 , Processed in 1.787567 second(s), Total 84, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号