ad采集电压_ad采集电压计算 - CSDN
精华内容
参与话题
  • AD采集分辨率及精度的解析

    千次阅读 2013-02-18 16:58:24
    1、 如何区别分辨率及精度...那么,如果基准4.095V,测某电压得的转换结果是1000,那么,真实电压值可能分布在 0.999~1.001V之间。 比如stm8l 内部12位ADC: ,inl值为2lsb。那么,如果基准为2.5v,测得电压的转换结果

    1、 如何区别分辨率及精度。

    器件精度的两个非常重要的参数就是INL(积分非线性误差)值和DNL(微分非线性误差)值

    比如12位ADC:TLC2543,INL值为1LSB。那么,如果基准4.095V,测某电压得的转换结果是1000,那么,真实电压值可能分布在 0.999~1.001V之间。

    比如stm8l 内部12位ADC: ,inl值为2lsb。那么,如果基准为2.5v,测得电压的转换结果是1000,那么,真实电压值值的波动范围在998.78mv~1001.22mv之间。

     

     

    对任何AD来说,量化后输出的数字信号值都是以1LSB的电压值步进的,介于1LSB之间的电压将按照一定的规则进行入位或舍弃,这个过程中造成的误差被称为“量化误差”,量化误差属于原理性误差,是无法消除的。
    展开全文
  • STM32采集AD电压

    万次阅读 2017-08-28 16:50:19
    2. 当发生一次定时器的中断时,进入AD转换,在DMA的初始化时与ADC-DR寄存器进行绑定,在该寄存器获得数据时,直接通过DMA通道将该寄存器的数据保存在给定的数组里面,把缓存数组装满后,会触发一次DM

    是否使用DMA传输

    使用DMA传输,那么流程为:

    1. ADC初始化,DMA初始化,TIM2初始化
      其中:TIM2作为ADC的中断源
    2. 当发生一次定时器的中断时,进入AD转换,在DMA的初始化时与ADC-DR寄存器进行绑定,在该寄存器获得数据时,直接通过DMA通道将该寄存器的数据保存在给定的数组里面,把缓存数组装满后,会触发一次DMA的中断,在DMA的中断里面将缓存数组保存到100个电压值的数组里面。
    3. 定时器设为200us发生一次中断,来进行一次AD转换,获得寄存器里面的数据以后,保存在数组,保存100个数组后停止定时器的工作以及DMA的工作,对这份数据进行处理。
      至此,DMA工作的流程已经结束,那么其中又怎样的缺漏导致不用DMA进行操作,按照上述流程获得的100个离散点的电压是较为准确的(PS:这里可以把TIM2的定时中断时间改为采集32个点的625us或者采集64个点的312us),但是,如果只是放置在采集单相电压电流可以考虑,如果采集多相的电流电压,就要考虑到相位的问题,在之前的思路中

    使用定时采集,流程为:

    1. ADC初始化、定时器TIM3初始化
      这里的TIM3的中断时间为100us
    2. 进过200us,即0.2ms,启动AD转换,比如三相交流电压,依次对A,B,C三通道AD进行转换,获得当前的电压值,保存在数组里面。
    3. 当保存了100个数据以后,如果不考虑误差,那么0.2ms*100=20ms,即为50Hz电压的一个周期的时间采集到的电压值,采集到的100个离散点使用均方根公式进行求值获得该通道的电压的有效值。
    4. 在此转换中,进过0.2ms进行一次转换,不停止,功耗比较大,但是每次获得数据后,都要通过数据是否过上升沿下降沿开始,判断有无错相。(关于是否错相算法见下文)

    总结

    对比两个流程可以知道:如果不考虑相位问题,那么可以使用DMA+ADC采集数据,比如0.5s开启一下DMA与定时器采集一次,采集到的100个数据保存在数组里面,关闭定时器与DMA,采集好以后进行处理一下存储在当前电压值的变量里面,但是这样的一组周期内的电压,存在着可能无法判断是否错相的情况,比如采集ABC三相,当A出现下降沿过抬高电压位置时,开始计时,可能从这时开始到这个周期结束没有发生B相出现上升沿过抬高电压的情况,这样判断错相就会出现问题,当然,也可以直接使用DMA+ADC去类似0.2ms就进行一次转换,不间断的进行这个流程,这个方式我认为与0.2ms手动开启AD转换,不经过DMA传输直接读取寄存器ADC-DR的值相差的功耗不大。(待测)

    算法

    采集

    1. AD采集到的数据进行处理获得当前的瞬时电压值:
      ADC_DR/当前电压值 = 4096/3300毫伏
      即 当前电压值 = (ADC_DR*3300)/4096;
      在程序中我们对其进行了简化,最终的公式为
      当前电压值 = (ADC_DR*825)>>10
      就这样,我们保存了一个周期内100个点的电压值,也就是100个正弦波形上的离散点。

    计算

    根据100个离散点求得该引脚的电压的有效值:
    均方根公式:

    • 这个网上不少,直接百度即可

    Xi为离散点的电压值,N为100,Xrms为电压有效值
    其中要注意的是:Xi²实则为(引脚处电压 – 抬高电压)²

    错相判断

    下面为正相序时的波形图:

    • 改天抽时间重画,原来的文件没了

    譬如检测AB有无错相,当A出现下降沿并且过0点时(实际程序中是过抬高电压值时),开始计时,当B出现上升沿并且过0点时停止计时,这段时间T = 16.67ms,如果考虑一些特殊情况,比如电压的频率波动,开启计时的时间存在误差,可以假定T ≥15.5ms,AB为正相序。
    下面为反相序时的波形图:

    由此图我们可以看出,依旧像上面说的那样,在A(假定是A)相电压出现下降沿过0点时开启计时,在B相电压出现上升沿过零点时停止计时,此时时间远远小于正相序时的时间,如果无误差时T = 3.3ms,考虑到上述误差影响,那么我们把时间T ≤3.6ms时判断得AB为反相序。在程序中扩大了一下范围,把这个判断是否为反相序的时间调整为4.0ms,如果这段时间小于4.0ms,那么就认为是错相,大于的话默认为正相序。

    错相与缺相的逻辑判断:

    <1>. 当存在缺相时,不执行错相判断函数;
    <2>. 当存在缺相时,将通信返回的内容里面的错相位置为0,只将缺相对应位置为1。
    <3>. 当不存在缺相时,只判断AB是否错相,从A出现下降沿过0点开始计时,B出现上升沿过0点关闭计时,判断是否小于4.0ms,若是,则将错相位全部置为1,如果不是,全部置为0。
    <4>. 关于缺相判断,在求得电压的有效值后,有一个范围,目前设定为50mv,如果小于50mv,说明该相电压缺相。

    展开全文
  • 单片机采集电压信号(AD转换的应用实例)上 上一篇文章我们讲了如何把一个信号的峰值采集,今天我们来讲如何把它连入单片机上,这里我们采用的是Multisim仿真。 我们都知道单片机采集的信号都是高电平和低电平,模拟...

    单片机采集电压信号(AD转换的应用实例)上

    上一篇文章我们讲了如何把一个信号的峰值采集,今天我们来讲如何把它连入单片机上,这里我们采用的是Multisim仿真。
    我们都知道单片机采集的信号都是高电平和低电平,模拟量他是无法采集到的,他所能采取的知识数字量,所以我们应该吧采集到的模拟信号转换成数字信号,而这个桥梁就是AD转换器,先讲一下AD转换器的额原理的吧,下图是AD转换器的内部结构图:
    在这里插入图片描述
    这只是其中一种AD转换器,叫逐次比较AD还有其他的如:并行比较AD,积分型AD等。并行比较器速度快,精度不高,他的结果的最小刻度大,但是并行比较最小刻度比较小,虽然速度满了一些,但是精度高,我们这个最求精度所以就用了逐次比较器AD,这个比较器的原理呢不好用文字描述付下以下链接:https://www.icourse163.org/learn/NJTU-1003360012?tid=1207065206#/learn/content?type=detail&id=1212265121&cid=1215519236&replay=true
    这个视频3分钟就可以给你讲明白,但是这个逐次比较的AD里面有DA转换器,所以说要想更好的理解先把DA转换器弄明白,常用的逐次比较性的AD 转换器有ADC0809,他是一个八位的转换器,有8个模拟信号的输入端,转换时间100us,输入电压0~5v,最后输出是8位,精度是5/256v,下面是仿真时候的仿真图:
    在这里插入图片描述

    当然这里仿真用的ADC是一个一位输入,输出是8位二进制数,最高位的权重是:5/2,次之是:5/4,再者是:5/8,以此类推最低位是5/256,所以说精度是5/256,现在即实现了模拟信号和数字信号的转换,我们通过P2端口就可以采集8位的二进制数,然后通过单片机内部程序的编写就可以得到外部电压的数值,如果说将上一篇的峰值电压接入的话我们就可以通过单片机吧峰值显示出来了,单片机内部程序的编写和LCD显示我下一篇文章追更。

    展开全文
  • 当遇到MCU采集到的AD值相差特别大的时候,应该怎么分析。 1.首先再次确认采样点的实际电压。 2.确认采样的参考电压是否正确,是内部参电压VCC、1.2V或者是外部的Vref. 3.以上两步都确认没有问题后,核查代码的初始化...

    当遇到MCU采集到的AD值相差特别大的时候,应该怎么分析。
    1.首先再次确认采样点的实际电压。
    2.确认采样的参考电压是否正确,是内部参电压VCC、1.2V或者是外部的Vref.
    3.以上两步都确认没有问题后,核查代码的初始化有无问题。
    4.以上都确认无误的话,观察AD的IO口的对外电阻值,是否在芯片推荐使用的对外电阻值得范围之内。如果超出芯片推荐的范围值得话就要小心了,有可能是因为外部阻抗过大所导致的AD采样不准。
    如果是这种情况的话,可以先将AD的采样保持时间设置的尽量长,将AD的的分频调至最大,以保证采样时间的充足。如果依旧无法解决的话,建议将对外阻抗调整到芯片推荐范围之内。

    案例:
    我遇到过的一个现象就是如此:
    AD采样的电压跟实际值相差太大,软件和采样时间都检查过了没有问题,最后去看AD口的阻抗,我们使用220M :22M的分压比来采样的(因为产品的低功耗需求,必须在每一个节点来把控功耗的限制,因为AD采样其实是蛮增加功耗的,所以就尽量放大阻抗限流,以此来控制功耗。)。查看芯片数据手册,推荐使用的是1M以内的推荐对外阻抗,所以将阻抗调整到推荐范围就顺利解决了该问题。

    说到这里不得不提及一个问题,为什么外部阻抗过大会导致AD采样失准呢?
    因为芯片内部的AD采样的原理是靠一个RC电路来实现的,采样保持时间其实就是等C充电完成来测量C的电压就是实际测得的电压值,由于外部阻抗过大的时候,限流严重导致AD口灌入的电流减小很多,导致RC即使在最大的采样保持时间也没法将C充电至外部实际电压值,所以导致AD采样失准,这是阻抗过大之后AD采样失准的核心原因。

    展开全文
  • ADC采样值转化成电压值详解

    万次阅读 多人点赞 2020-08-14 20:02:40
    如何利用单片机的ADC模块(或者独立的ADC芯片)得到接入ADC管脚上的实际电压值? 这个问题,是第一次接触ADC时候,大家都会遇到的问题。 单片机会读到什么值? 需要看一个特性,就是几位的ADC,在手册上就会给出,...
  • AD采集电压转换

    千次阅读 2019-01-10 11:44:50
    24V电压采集:  公式:Vout = Vin/(100+10)*10/(2+100)*100    12V电压采集:  公式:Vout = Vin/(10+2)*2/(2+100)*100    5V电压采集:  公式:Vout = Vin/(1+1)*1/(2+100)*100    3.3V...
  • AD模块电压采集电路

    千次阅读 2019-06-27 18:21:50
    之前一直没搞明白模拟电压转换电路,不知道应该怎么计算转换电压,最近一个项目中用到几处模拟电压采集,硬件是由其他同事设计的,转换公式也是他给的,记录一下;  24V电压采集:  公式:Vout = Vin/(100...
  • 电压采集采样电路设计

    万次阅读 2019-10-18 16:32:08
    电压采集是我们进行电路设计常常用到的,具体的采集类型上又分为直流采集和交流采集,将源电压通过一系列的电路设计,最终通过AD(数模转换芯片或单片机内部AD)读入MCU,并执行相应的决策,是我们大多设计的要求...
  • 单片机A/D采样的原理

    万次阅读 多人点赞 2017-09-11 20:55:41
    在A/D转换器中,因为...因此,一般的A/D转换过程是通过采样保持、量化和编码这三个步骤完成的,即首先对输入的模拟电压采样保持,采样结束后进入保持时间,在这段时间内将采样的电压量转化为数字量,并按一定的编码形
  • 交直流电压电流信号ADC采集

    万次阅读 2018-07-16 16:04:50
    1、电流信号采集需要将电流信号转化为电压信号才能进行采集,如下图所示: 图1单片机ADC采集到的电压模拟数字信号后,需要除以ADC的分辨率再乘以基准电压得到单片机采集的数字电压,根据欧姆定律,U=IRàI=U/R,求得...
  • 最近在做一个数控电源,需要将0-24V的电压进行AD采样,但是stm32单片机ADC只能采样0-3.3V范围, 而且目前我没有运放做电压跟随器,只有一个高速AD模块,已经带...1、AD采集分压电阻的选择:http://bbs.eeworld.com.cn
  • ADC 采集电池电量

    千次阅读 2017-05-18 14:09:25
    单片机内部的多路ADC采集之间可能会相互影响,使用的时候需要参考datasheet,在NUC100中,ADC7 比较与ADC6同时使用时,ADC6的采样就会出问题,采集的电量值一直保持不变。       其次,ADC采集电路的设计也要...
  • STM32芯片想采集0~30V电压信号!要如何采集,还有就是电路要如何设计?控制程序要如何编写?
  • AD8232是全集成式单导联ECG前端,其中集成了仪表放大器、增益放大器、基准电压缓冲、驱动导联前端基准缓冲、右腿驱动电路、关断功能,以及用户可选的(交流或直流)导联脱落检测电路。AD8232解决了从电极到处理器之间...
  • 昨天在调试F28335的ADC采集部分,因为有开发板,所以我就直接把光盘自带的程序给跑了一下,结果发现采集的值和我输入的值不对,我的输入是直接把一个直流电源的正极接到一个采集通道的端口上,直流电源的地和我...
  • 数据采集卡来说明

    千次阅读 2015-06-10 15:45:18
    一)模拟量输入 1、通道数(Channels) 通道数指可同时采集模拟量的个数,例如在温度场实验...绝大多数数据采集卡上只有一个AD转换器,通过使用模拟开关来分时采集不同通道的数据,从而得到多通道的数据采集卡。 2、
  • 背景是这样的,用24位的ADC,外接人体电阻,进行电阻AD采集,当VS = 2.4V时,体电阻的AD值对应值为9.86 * 10 ^ 5量级,当VS = 2.8V时,体电阻的AD值对应值为7.01 * 10 ^ 5量级。  问题在为什么AD值不一样,且...
  • 一、新制作的PCBA烧录程序后,进行校准时发现第一节电压总是在跳动,变化范围也比较大3V~4V。如下是电路图 电路电芯电压采集的原理是利用两个MX4617模拟多路开关,两个模拟开关分别导通一个如:B1(cell1)、B0...
  • STM32通过DMA方式采集多路AD

    万次阅读 2016-10-25 10:46:43
    一个项目需求:使用STM32采集多路AD信号。 一般采集多路信号需要使用DMA方式,步骤如下: 1.使能相应ADC通道,这里使用ADC1的4个通道,分别是ADC123_IN0 ~ ADC123_IN3, 注:ADC123_IN0 表示ADC1, 2, 3 都...
  • STM32 ADC采样不准怎么办

    万次阅读 2018-09-21 16:43:35
    不过使用内部参考电压可以计算实际的VDDA电压。 说明: VREFINT_CAL:芯片出厂时固化在存储器中的。使用时需要通过软件读取。 VREFINT_DATA:ADC读取VREFINT(内部参考电压通道ch17)得到的值...
1 2 3 4 5 ... 20
收藏数 3,562
精华内容 1,424
关键字:

ad采集电压