单片机ad采样电路设计_单片机ad采样电路 - CSDN
  • 单片机ad采样转换

    2013-02-01 15:52:50
     一个设计,要求显示电池电量,电源是充电电池,工作电压在4.4~5.4V中间,想做出和手机那样的效果,有4格的电量显示,用AD实现,AD转换的参考电压是随着电源电压的变化而变化的(Vref=VDD),如何检测成本最低?...
    :
         一个设计,要求显示电池电量,电源是充电电池,工作电压在4.4~5.4V中间,想做出和手机那样的效果,有4格的电量显示,用AD实现,AD转换的参考电压是随着电源电压的变化而变化的(Vref=VDD),如何检测成本最低?


    :
         用反算法,AD参考基准设为电源VDD,测二极管正向压降,倒算出电源电压,最低成本。

         VDD/VF=1024/AD
         VDD=1024*VF/AD
         上式中
         VF =二极管正向压降基本不变视作常数
         VDD=电源电压
         AD----AD采样值

         一般测电源电压的方法是用PIC的一个引脚作参考电压输入,外接TL431之类的基准源,用另一个引脚测分压后的电源电压,这当然是最容易实现的方法。
         这里说的是只用一个AD引脚来实现测单片机电源VDD的方法:
         PIC单片机的AD可以设成以Vdd为参考电压,这样在Vdd是稳定的情况下,AD采样值*Vdd/1024即为被测电压。即:
         Vi=AD*Vdd/1024
         但电池供电的系统电源Vdd是不稳的,正是我们的测量对象,那么我们是不是可以让Vi不变,作为参考电压,倒算出电源Vdd呢?事实上是可行的。我们用一个引脚测一个固定的电压Vi这样可以推算出:
         Vdd=Vi*1024/AD
    我们可以找到各种固定电压的器件,稳压管、基准电源等。在只要显示4格电源变化的情况下用一个二极管也是可以保证精度的。列如采用的二极管的正向压降为0.7V,上式就可以写成:
         Vdd=717/AD
         这就实现在用一个引脚测电源的方法。
         上述方法只对直接用电池供电的PIC单片机有效,对经稳压后供单片机的不可以用上述方法。对其它单片机没试过。

    展开全文
  • 根据经验判断,确定两次采样允许的最大偏差值(设为A) 每次检测到新值时判断: 如果本次值与上次值之差<=A,则本次值有效 如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值 B、优点...

    1、限幅滤波法(又称程序判断滤波法)
        A、方法:
            根据经验判断,确定两次采样允许的最大偏差值(设为A)
            每次检测到新值时判断:
            如果本次值与上次值之差<=A,则本次值有效
            如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值
        B、优点:
            能有效克服因偶然因素引起的脉冲干扰
        C、缺点
            无法抑制那种周期性的干扰
            平滑度差
        
    2、中位值滤波法
        A、方法:
            连续采样N次(N取奇数)
            把N次采样值按大小排列
            取中间值为本次有效值
        B、优点:
            能有效克服因偶然因素引起的波动干扰
            对温度、液位的变化缓慢的被测参数有良好的滤波效果
        C、缺点:
            对流量、速度等快速变化的参数不宜

    3、算术平均滤波法
        A、方法:
            连续取N个采样值进行算术平均运算
            N值较大时:信号平滑度较高,但灵敏度较低
            N值较小时:信号平滑度较低,但灵敏度较高
            N值的选取:一般流量,N=12;压力:N=4
        B、优点:
            适用于对一般具有随机干扰的信号进行滤波
            这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动
        C、缺点:
            对于测量速度较慢或要求数据计算速度较快的实时控制不适用
            比较浪费RAM
            
    4、递推平均滤波法(又称滑动平均滤波法)
        A、方法:
            把连续取N个采样值看成一个队列
            队列的长度固定为N
            每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则)
            把队列中的N个数据进行算术平均运算,就可获得新的滤波结果
            N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4
        B、优点:
            对周期性干扰有良好的抑制作用,平滑度高
            适用于高频振荡的系统    
        C、缺点:
            灵敏度低
            对偶然出现的脉冲性干扰的抑制作用较差
            不易消除由于脉冲干扰所引起的采样值偏差
            不适用于脉冲干扰比较严重的场合
            比较浪费RAM
            
    5、中位值平均滤波法(又称防脉冲干扰平均滤波法)
        A、方法:
            相当于“中位值滤波法”+“算术平均滤波法”
            连续采样N个数据,去掉一个最大值和一个最小值
            然后计算N-2个数据的算术平均值
            N值的选取:3~14
        B、优点:
            融合了两种滤波法的优点
            对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差
        C、缺点:
            测量速度较慢,和算术平均滤波法一样
            比较浪费RAM

    6、限幅平均滤波法
        A、方法:
            相当于“限幅滤波法”+“递推平均滤波法”
            每次采样到的新数据先进行限幅处理,
            再送入队列进行递推平均滤波处理
        B、优点:
            融合了两种滤波法的优点
            对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差
        C、缺点:
            比较浪费RAM

    7、一阶滞后滤波法
        A、方法:
            取a=0~1
            本次滤波结果=(1-a)*本次采样值+a*上次滤波结果
        B、优点:
            对周期性干扰具有良好的抑制作用
            适用于波动频率较高的场合
        C、缺点:
            相位滞后,灵敏度低
            滞后程度取决于a值大小
            不能消除滤波频率高于采样频率的1/2的干扰信号
            
    8、加权递推平均滤波法
        A、方法:
            是对递推平均滤波法的改进,即不同时刻的数据加以不同的权
            通常是,越接近现时刻的数据,权取得越大。
            给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越低
        B、优点:
            适用于有较大纯滞后时间常数的对象
            和采样周期较短的系统
        C、缺点:
            对于纯滞后时间常数较小,采样周期较长,变化缓慢的信号
            不能迅速反应系统当前所受干扰的严重程度,滤波效果差

    9、消抖滤波法
        A、方法:
            设置一个滤波计数器
            将每次采样值与当前有效值比较:
            如果采样值=当前有效值,则计数器清零
            如果采样值<>当前有效值,则计数器+1,并判断计数器是否>=上限N(溢出)
                如果计数器溢出,则将本次值替换当前有效值,并清计数器
        B、优点:
            对于变化缓慢的被测参数有较好的滤波效果,
            可避免在临界值附近控制器的反复开/关跳动或显示器上数值抖动
        C、缺点:
            对于快速变化的参数不宜
            如果在计数器溢出的那一次采样到的值恰好是干扰值,则会将干扰值当作有效值导入系统

    10、限幅消抖滤波法
        A、方法:
            相当于“限幅滤波法”+“消抖滤波法”
            先限幅,后消抖
        B、优点:
            继承了“限幅”和“消抖”的优点
            改进了“消抖滤波法”中的某些缺陷,避免将干扰值导入系统
        C、缺点:
            对于快速变化的参数不宜

    11、IIR 数字滤波器 
        A. 方法:
           确定信号带宽, 滤之。
           Y(n) = a1*Y(n-1) + a2*Y(n-2) + ... + ak*Y(n-k) + b0*X(n) + b1*X(n-1) + b2*X(n-2) + ... + bk*X(n-k)
       B. 优点:高通,低通,带通,带阻任意。设计简单(用matlab)
       C. 缺点:运算量大。
      


    软件滤波的C程序样例

    11种软件滤波方法的示例程序

    假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad();

    1、限副滤波
    /*  A值可根据实际情况调整
        value为有效值,new_value为当前采样值  
        滤波程序返回有效的实际值  */

    #define A 10
    char value;
    char filter()
    {
       char  new_value;
       new_value = get_ad();
       if ( ( new_value - value > A ) || ( value - new_value > A )
          return value;
       return new_value;         
    }

    2、中位值滤波法
    /*  N值可根据实际情况调整
        排序采用冒泡法*/

    #define N  11
    
    char filter()
    {
       char value_buf[N];
       char count,i,j,temp;
       for ( count=0;count<N;COUNT++)
       {
          value_buf[count] = get_ad();
          delay();
       }
       for (j=0;j<N-1;J++)
       {
          for (i=0;i<N-J;I++)
          {
             if ( value_buf>value_buf[i+1] )
             {
                temp = value_buf;
                value_buf = value_buf[i+1]; 
                 value_buf[i+1] = temp;
             }
          }
       }
       return value_buf[(N-1)/2];
    }

      3、算术平均滤波法
     

    #define N 12
    
    char filter()
    {
       int  sum = 0;
       for ( count=0;count<N;COUNT++)
       {
          sum + = get_ad();
          delay();
       }
       return (char)(sum/N);
    }

    4、递推平均滤波法(又称滑动平均滤波法)
     

    #define N 12 
    
    char value_buf[N];
    char i=0;
    
    char filter()
    {
       char count;
       int  sum=0;
       value_buf[i++] = get_ad();
       if ( i == N )   i = 0;
       for ( count=0;count<N,COUNT++)
          sum = value_buf[count];
       return (char)(sum/N);
    }

    5、中位值平均滤波法(又称防脉冲干扰平均滤波法)

    #define N 12 
    
    char value_buf[N];
    char i=0;
    
    char filter()
    {
       char count;
       int  sum=0;
       value_buf[i++] = get_ad();
       if ( i == N )   i = 0;
       for ( count=0;count<N,COUNT++)
          sum = value_buf[count];
       return (char)(sum/N);
    }

    6、限幅平均滤波法
    略 参考子程序1、3
    7、一阶滞后滤波法
    /* 为加快程序处理速度假定基数为100,a=0~100 */

    #define a 50
    
    char value;
    
    char filter()
    {
       char  new_value;
       new_value = get_ad();
       return (100-a)*value + a*new_value; 
    }

    8、加权递推平均滤波法
    /* coe数组为加权系数表,存在程序存储区。*/
     

    #define N 12
    
    char code coe[N] = {1,2,3,4,5,6,7,8,9,10,11,12};
    char code sum_coe = 1+2+3+4+5+6+7+8+9+10+11+12;
    
    char filter()
    {
       char count;
       char value_buf[N];
       int  sum=0;
       for (count=0,count<N;COUNT++)
       {
          value_buf[count] = get_ad();
          delay();
       }
       for (count=0,count<N;COUNT++)
          sum += value_buf[count]*coe[count];
       return (char)(sum/sum_coe);
    }

    9、消抖滤波法

    #define N 12
    
    char code coe[N] = {1,2,3,4,5,6,7,8,9,10,11,12};
    char code sum_coe = 1+2+3+4+5+6+7+8+9+10+11+12;
    
    char filter()
    {
       char count;
       char value_buf[N];
       int  sum=0;
       for (count=0,count<N;COUNT++)
       {
          value_buf[count] = get_ad();
          delay();
       }
       for (count=0,count<N;COUNT++)
          sum += value_buf[count]*coe[count];
       return (char)(sum/sum_coe);
    }

    10、限幅消抖滤波法
    略 参考子程序1、9

    11、IIR滤波例子

    int  BandpassFilter4(int InputAD4)
    {
        int  ReturnValue; 
        int  ii;
        RESLO=0;
        RESHI=0;
        MACS=*PdelIn;
        OP2=1068; //FilterCoeff4[4];
        MACS=*(PdelIn+1);
        OP2=8;    //FilterCoeff4[3];
        MACS=*(PdelIn+2);
        OP2=-2001;//FilterCoeff4[2];
        MACS=*(PdelIn+3);
        OP2=8;    //FilterCoeff4[1];
        MACS=InputAD4;
        OP2=1068; //FilterCoeff4[0];
        MACS=*PdelOu;
        OP2=-7190;//FilterCoeff4[8];
        MACS=*(PdelOu+1);
        OP2=-1973; //FilterCoeff4[7];
        MACS=*(PdelOu+2);
        OP2=-19578;//FilterCoeff4[6];
        MACS=*(PdelOu+3);
        OP2=-3047; //FilterCoeff4[5];
        *p=RESLO;
        *(p+1)=RESHI;
        mytestmul<<=2;
        ReturnValue=*(p+1);
        for  (ii=0;ii<3;ii++)
        {
         DelayInput[ii]=DelayInput[ii+1];
         DelayOutput[ii]=DelayOutput[ii+1];
         } 
         DelayInput[3]=InputAD4;
         DelayOutput[3]=ReturnValue;     
        return ReturnValue;  
    }
    
    

     

    展开全文
  • 电压的采集是我们进行电路设计常常用到的,具体的采集类型上又分为直流采集和交流采集,将源电压通过一系列的电路设计,最终通过AD(数模转换芯片或单片机内部AD)读入MCU,并执行相应的决策,是我们大多设计的要求...

         电压的采集是我们进行电路设计常常用到的,具体的采集类型上又分为直流采集交流采集,将源电压通过一系列的电路设计,最终通过AD(数模转换芯片或单片机内部AD)读入MCU,并执行相应的决策,是我们大多设计的要求。下文将通过具体的实例介绍如何设计合适的电压采集电路。

    直流电压采集

    要求:采集一个输出范围为20V-28V的Uo电压信号到0-3.3V的AD。

    设计思路:将20v到28v中的8v压差全部映射到0-3.3v的范围内,才内能更好的利用AD模块,所以首先将Uo与20V做差分,将电压抬低到0-8v(注:有时碍于仪放信号输入电压的范围较小会先分压再抬低见形式二),然后通过电阻分压将8v映射到3.3v的范围内。

    形式一:

    1、利用现有的电压产生20v的基准电压

    2、通过仪放将Uo与20v差分(注:826的REF引脚为输出基准)

    3、分压及输出阻抗匹配(电压跟随器)

    4、输出钳位保护

    形式二:

    1、将Uo分压7倍,即将0-28v映射到0-4v,同理将20v也分压7倍即要产生2.857v的电压基准

    2、差分并放大2.887倍及钳位电路(计算方法:3.3/(4-2.857),差放直接输入给AD不需要阻抗匹配)

     

    交流电压采集

    要求:采集单相正弦交流电的有效值范围为(0-24v)

    设计思路:通过电压互感器将电压读取到,并放缩到合适的范围内,输入给有效值检测芯片,再将有效值检测芯片的输出给AD

    1、电压互感器读取

    2、有效值检测芯片及保护电路

    总结:不论电路设计的多么精确,误差总会是有的,所以在电路的设计基础上,再通过MATLAB将数据进行拟合,才能将误差进一步的消除。

    展开全文
  • 电阻分压采样电路

    2019-08-04 06:49:34
    电阻分压采样电路图(一)  音量控制的实质是由电阻构成的分压电路,其原理就是电阻串联分压的知识,其典型的电路如图1-1。    输入电路由信号源Ui、电阻R1和电阻R2构成。分压电路输出电压U0算公式为    ...

    电阻分压采样电路图(一)

      音量控制的实质是由电阻构成的分压电路,其原理就是电阻串联分压的知识,其典型的电路如图1-1。

      电阻分压采样电路图汇总(三款电阻分压采样电路设计原理图详解)

      输入电路由信号源Ui、电阻R1和电阻R2构成。分压电路输出电压U0算公式为

      电阻分压采样电路图汇总(三款电阻分压采样电路设计原理图详解)

      从公式可以看出,由于分母R1+R2大于R2,所以输出电压小于入电压。也就是说分压电路是一个对输入信号进行衰减的电路。我们可以通过改变R1或R2的大小来改变输入电压U0的大小。

      下分压电阻R2大小对输出电压变化的影响:

      输入电压Ui和R1不变时,如果R2增大,输出电压将增大;R2减小,输出电压也将减少。

      上分压电阻R1大小对输出电压变化的影响:

      输入电压Ui和R2不变时,如果R1增大,输出电压将减小;R1减小,输出电压将增大。

      带负载的电阻分压电路

      图1-2是带有负载的电阻分压电路,电路中的RL是负载电路,他可以是一个电阻也可以是一个电路。

      电阻分压采样电路图汇总(三款电阻分压采样电路设计原理图详解)

      其工作原理和上面介绍的一样,只不过是现在分析电路时要将R2和RL并联后的阻抗作为下分压电阻。此时,负载电阻的值越小,负载越重。负载越重,分压电路的输出电压下降的量就越大。

      音量电位器阻值变化的原理

      音量电位器在电路中相当于电阻的一个分压电路,图1-3为音量电位器与电阻分压电路之间的等效电路图,其中RP1为音量电位器。

      电阻分压采样电路图汇总(三款电阻分压采样电路设计原理图详解)

      转动电位器的转柄时,动片再电阻体上滑动,动片到两个定片的阻值大小也随之变化。电位器在电路中相当于两个电阻构成的串联电路,动片将电位器的阻体分为两个电阻R1和R2,组成电阻分压电路,在音量控制电路中常用到此器件。

      单声道音量控制器

      单声道音量控制器是各种音量控制器的基础,图1-4是单联电位器构成的的单声道音量控制电路,它实际上是一个电阻分压电路,电位器RP1相当于两个分压电阻。

      电阻分压采样电路图汇总(三款电阻分压采样电路设计原理图详解)

      图中的电位器RP1用于音量控制电路,所以又叫音量电位器。BL1是扬声器,它的作用是把电信号转化成声音。功率放大器的作用是把对RP1动片的输出信号进行放大,再推动扬声器BL1工作。

      电阻分压采样电路图(二)

      AD通过分压电阻采样

      电阻分压采样电路图汇总(三款电阻分压采样电路设计原理图详解)

      电阻分压采样电路图(三)

      对于异步电机调速系统来说,环球电机速度检测的正确和精度将是调速系统稳定性和控制精度的关键。为了使系统具有良好的稳定性和较宽的调速范围,本系统采用增里式光电编码器来检测异步电机的速度,事件管理器中,集成有正交编码脉冲电路能够接受光电编码器发出的正交编码脉冲信号,通过检测正交编码脉冲信号便可测出电机的速度和运动方向。系统选用定时器作为的时基,定时器工作模式设为增减计数模式,正交编码脉冲作为的时钟源。

      电阻分压采样电路图汇总(三款电阻分压采样电路设计原理图详解)

      辅助电源是控制系统必不可少的一部分,小编为了确保能为控制系统提供可靠稳定的电源,辅助电源设计选用线性电源。其工作原理是工频交流电经降压变压器降压后再经整流滤波电路,得到直流电压再经三端稳压芯片得到所需的电源电压。

      电阻分压采样电路图汇总(三款电阻分压采样电路设计原理图详解)

      两相交流电机变频调速控制系统的硬件总体框图,包括以三菱作为功率模块的主电路、以为控制核心的外围基本电路,小编详细介绍了直流母线欠过压保护电路、电流采样电路、速度采样电路以及按键显示电路的设计过程。软件和硬件是异步电机变频调速系统的两大组成部分,硬件是调速系统的基础,软件是调速系统的核心。系统控制能力的优劣主要取决于软件的可靠性和通用性,两相交流电机变频调速系统的软件需要满足实时性、可靠性和通用性。为了提高软件效率,系统软件使用汇编语言来编写。

    0次

     

     

    转载于:https://www.cnblogs.com/isAndyWu/p/9856556.html

    展开全文
  • 最近在做一个数控电源,需要将0-24V的电压进行AD采样,但是stm32单片机ADC只能采样0-3.3V范围, 而且目前我没有运放做电压跟随器,只有一个高速AD模块,已经带这就需要在前级加一个分压电路,然后再加一个运放进行...
  • 即将要分析的电路如下,这个电路本人觉得设计的很经典。这个电路主要完成的任务就是监测流经Q1和采样电阻R6中的电流。单片机C8051F330对电流的各种情况做出动作和反应。分析的主要部分不是在单片机内部结构和程序...
  • 在许多典型电路设计中,AD转换器之前会有一个电压跟随器。这个跟随器到底是不是需要,要在了解跟随器作用的基础上,针对自己的电路特点而定。 首先,分析跟随器在这里的作用: 电压跟随器在这里的作用是阻抗变换作用...
  • 我们在设计原理图的时候一般把 VSSA 和 VREF-接地,把 VREF+和 VDDA 接 3V3,得到 ADC 的输入电压范围为:0~3.3V。 如果我们想让输入的电压范围变宽,去到可以测试负电压或者更高的正电压,我们可 以在外...
  • 实用AD采集单片机综合实验原理图。protel
  • 单片机如何采样电流

    2020-01-04 22:37:14
    单片机如何采样电流 单片机工程师在面试的过程中,经常会碰到一些相同的问题,笔者总结了十个提问率较高的问题,供大家参考。...单片机AD模块转换原理我这里就不做讲解了,有兴趣的小伙伴可以找度娘了解,百度...
  • 单片机A/D采样的原理

    2017-09-11 20:55:41
    在A/D转换器中,因为...因此,一般的A/D转换过程是通过采样保持、量化和编码这三个步骤完成的,即首先对输入的模拟电压采样保持,采样结束后进入保持时间,在这段时间内将采样的电压量转化为数字量,并按一定的编码形
  • 这是一款24位AD采样芯片的电路图,帮你设计电路进行优化,让你在设计重少走弯路,谢谢采纳
  • 如下是电路电路电芯电压采集的原理是利用两个MX4617模拟多路开关,两个模拟开关分别导通一个如:B1(cell1)、B0(cell0)两个再做减法,即可得到第一节电芯电压。控制两路开关的是单片机。 二、在C16为0.1uf...
  • 单片机在模拟电路中使用的时候,经常需要用到AD功能,而通过单片机ADC采集回来的数据往往不能直接使用,在不同场合下需要对采集到的数据要通过不同的算法对数据进行处理,先来看看最简单的平均值采样法。 平均值...
  • 51单片机AD转换程序,ad采样及显示,举一反三,看完了就学会了ad
  • STM32的内部AD采样 程序间备注释很详细
  • 当遇到MCU采集到的AD值相差特别...如果超出芯片推荐的范围值得话就要小心了,有可能是因为外部阻抗过大所导致的AD采样不准。 如果是这种情况的话,可以先将AD的采样保持时间设置的尽量长,将AD的的分频调至最大,以保证
  • 51单片机AD采集protues仿真,实现数据的多路采集
  • 按键AD采样实时显示

    2020-07-29 14:20:34
    MSP430单片机AD实时采样并通过按键控制输出显示
  • 10种AD采样的软件滤波方法 10种AD采样的软件滤波方法 1、限幅滤波法(又称程序判断滤波法) A、方法: 根据经验判断,确定两次采样允许的最大偏差值(设为A) 每次检测到新值时判断:  如果本次值与上次值...
1 2 3 4 5 ... 20
收藏数 1,446
精华内容 578
关键字:

单片机ad采样电路设计