1,用单片机采样直流信号AD采样率设置多大比较好

如果是直流信号,建议在采样端用一个电阻+电容构成一个1阶滤波,然后,采样的频率设置在50HZ的整数倍上,增加抗干扰.
关系就是: ad采样频率没可能大于单片机时钟(除非你ad采样频率外接其他设备)。一般来说,ad采样频率由单片机控制,在ad芯片最大工作频率范围内,你可以设置任何采样频率。不过ad采样频率也有上限,具体上限看你用什么芯片了。

用单片机采样直流信号AD采样率设置多大比较好

2,单片机ad采样计算有效值

你这个叫交流真有效值,每次采样先平方,累积,再开方。每个采样周期是先检测到峰值,到下一个峰值的宽度。以分辨率三位半为例,每个采样周期最少要采样1000次以上,计算出来的数值才可能是稳定值,当然如果你AD足够快,次数越多越好。
一周期采集20个点的方法测量精度怕是不高,当然满足你特定要求就可以。普通单片机双精度乘法运算每秒可完成十万次以上,足可满足要求。这种测量做软件滤波一般说来没啥必要性。一般电量计量芯片对于标准正弦波才能保证精度,真有效值测量正是为克服这些测量仪器的缺点而诞生的。

单片机ad采样计算有效值

3,ad采样问题

1、采样频率是由你自己在程序中设置的。 2、如果采集直流信号,采到的值即电压值,无所谓有效值;如果采集是的交流电压,建议先将其整流成直流再采集,即先经过整流滤波处理,根据整流原理换算有效值。看来你做的是高速信号的采集,建议将采集信号存起来,再传到上位机处理,用单片机处理信号,功能有限。
操作没问题,按照例程,用定时器3定时采样产生中断,每次数据存入数组,到1024停止采样显示,发现有的数据很大(32768?40000多的都有),如果用printf("%u",a[i]);那些大数字的位置就是负值,不知什么原因

ad采样问题

4,单片机AD温度采样

10位AD采样,那范围就是0~1024.则对应于0~5V的电压。假设你的AD采集回来的数值是:200,那AD采样点的电压为:5V*(200/1024),约等于是0.97656v.AD采样,通常都是高阻抗的,流入AD采样口的电流很小很小,可以将其忽略掉,则外部电路就是一个 R_18K R_2K R_100 Rx 串联的电路。串联电路中电流相等,则:(5V-0.97656V)/(R_18K+R_2K) = 0.97656V/(R_100+Rx) 由上,计算得,NTC的阻值为:Rx = 4754Ω查表,得,温度大约为是42度多一点点。以上,总结一下公式就是:Rx = 20000AD/(1024-AD) - 100算得的Rx值,然后查温度阻值对应表,就可以得出温度值了。

5,如何设定AD的采样点数

明显不对!!是在AD中断服务程序中设置一个flag即可,没中断一次flag++,要想才500点,就可以if(flag>=500)flag=0; AD_data[0+adflag]=(AdcRegs.RESULT0>>4);--------------------------------------------------------------------------------------------------------------例如:MAX_DATA=500;interrupt void ad(void){ IFR=0x0000; PieCtrl.PIEACK.all=0xffff; /*采集ADC0通道的数据*/ AD_data[0+adflag]=(AdcRegs.RESULT0>>4);//右移四位,减小误差 if(adflag==MAX_DATA) { adflag=0; AdcRegs.ADCTRL2.bit.SOC_SEQ1=0; } else { adflag++;// AdcRegs.ADCTRL2.bit.SOC_SEQ1=1; } AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1; AdcRegs.ADCTRL2.bit.SOC_SEQ1=1; EINT; }
是不是可以这样啊 用定时器0来设定中断时间,然后采样 这个中断的时间就是采样频率 与信号的频率相比 就知道一个周期采样多少个点了比如:信号的奏起是1s 设定采样周期是0.01s 那这样的话,就是一个周期采样了100个点

文章TAG:ad采样一般采样多少个点采样  一般  多少  
下一篇