设计要求
基本要求(80分)
(1)输入阻抗:50Ω,输入信号峰-峰值:10mV~10V,频率成分范围:20Hz~
20kHz,频率分辨力:20Hz。
(2)检测输入信号的总功率和各频率分量的频率和功率。
发挥部分(20分)
测量被测正弦信号的失真度。
设计方案
确定mcu
上限频率20kHz,即最低采样频率40kHz。分辨率20Hz,即最少2000点傅里叶变换,取2048点。
51做2048点FFT不现实,FPGA和DSP芯片没用过。而stm32有dsp库,f4硬件支持浮点运算,最后确定用stm32f407zgt6。
前级调理控制方案
stm32的adc输入电压范围是0~3.3v,12位ad即电压分辨率为 3.3v / 4096 = 0.805mV。设计要求的输入信号峰峰值范围是10mv~10v,32自带AD最小分辨率足够。
但电压动态范围太大,必定要对输入衰减或放大,才符合adc的输入要求。
- 模拟开关+通用运放
模拟开关选择不同的电阻接入运放电路,调节放大倍数
调节范围:与开关个数、电阻数值有关 - 电阻网络+通用运放
用DAC中的权电阻网络降压,再用运放升压。
调节范围:DAC控制位位数 - 程控放大器
PGA2320直接控制电压幅度
调节范围:控制电压的范围
方案选择:程控放大与前两个方案相比成本都较高,且不熟悉,优先选前两个。
典型模拟开关CD4051,相当于单刀八掷开关,由三位地址位选通。即三线可控档位数2^3=8
典型DAC DAC0832,八位权电阻网络,由八位控制位控制。即八线可控档位2^8=256
明显,DAC可控的精度更好,难度与模拟开关相差不大,3根线跟8根线是同一数量级。故最后确定选DAC
通用运放电路
运放用于信号放大,及搭建电平抬升电路。
输入信号并不刁钻,我就随意地选择了同相放大和同相加法器,后来得知实际工程中两者都是反相的用得更多。
参考
http://bbs.eeworld.com.cn/thread-643415-1-1.html
https://www.baidu.com/sf_edu_wenku/view/04e571655f0e7cd185253663
电平抬升1.65v,目的是将交流信号抬到32AD输入范围的中值。1.65v是5v电源用电阻分压出来的,而同相加法器的输入电阻较大,直接相连会影响阻值,影响到1.65v
数值计算
image.png程序
ADC预采样,前级调理,ADC正式采样4096点,FFT运算,对旁瓣进行处理,排序,LCD展示频谱以及功率前五的频率。
低通滤波
本打算对输入信号进行低通滤波,截止频率20kHz。但考虑到通带传递函数不严格=1,会对后续功率计算造成影响,最后还是放弃滤波环节。
关于滤波器的基础知识:
无源低通滤波:RC电路
有源低通滤波:RC电路加上同相放大器
时间常数 tau = RC
上限截止角频率 omegah = 1 / RC
上限截止频率 fh = 1 / 2pi×RC
完整工程
链接:https://pan.baidu.com/s/1rtmtdbbn8hdQXMjOq316NQ
提取码:21ax
网友评论