尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

2021年A题-基于MSP432E401Y的信号失真度测量系统设计与实现(国赛二等奖作品)

2021年A题-基于MSP432E401Y的信号失真度测量系统设计与实现(国赛二等奖作品) 从零复现国赛作品基于MSP432E401Y的信号失真度测量系统很多同学对电赛题目感兴趣但看到复杂的系统框图和高深的算法就望而却步。其实很多优秀的作品背后核心思路往往很清晰。今天我就带大家复盘一个2021年国赛二等奖作品——信号失真度测量装置。这个项目硬件成本极低核心代码逻辑也不复杂非常适合作为学习嵌入式系统设计和信号处理的入门实战项目。咱们的目标是用最少的硬件一块TI的开发板、一个运放实现从1kHz到100kHz信号的谐波失真度THD测量并且误差要小于5%。听起来是不是很有挑战性别担心我会把整个设计思路、硬件选型、软件算法一步步拆开讲清楚保证你能看懂甚至能自己动手复现出来。1. 项目需求与核心思路分析做任何项目第一步永远是读懂题目。2021年电赛A题的完整要求可以在网上找到我这里提炼出最核心的几点基础要求测量对象基频为1kHz的正弦波但里面“混”进了谐波比如2次、3次波。信号幅度300mV到600mV。失真度范围理论总谐波失真THD在3%到50%之间。分析能力需要分析出最高到5次的谐波成分即1kHz, 2kHz, 3kHz, 4kHz, 5kHz。扩展要求更难的加分项基频范围扩大从1kHz一直到100kHz。信号幅度更小最低30mV。功能增强不仅要算出THD还要能把原始的时域信号波形复现显示出来。一个关键限制题目规定数据采集必须使用TI公司微控制器MCU片内的ADC不能外接专门的ADC芯片。这就把我们的选择范围限定在了TI的MSP430、MSP432等系列单片机。面对这些要求我们的核心设计思路是这样的信号放大单片机ADC的输入电压范围一般是0-3.3V而输入信号最小只有30mV。直接采精度太差。所以第一步要用运放把信号放大到合适的幅度。高速采样要分析100kHz信号的5次谐波500kHz根据奈奎斯特采样定理采样率至少要是信号最高频率的2倍也就是至少1MHz。所以我们需要一个采样率能达到1Msps每秒百万次采样以上的ADC。快速计算采回来成千上万个数据点要快速进行傅里叶变换DFT算出频谱找出各个谐波的幅度。这对单片机的计算能力尤其是浮点运算能力有要求。结果显示算出的THD值和波形要能直观地显示出来。基于这个思路我们选定了整套系统的核心器件。2. 硬件平台选型与电路设计2.1 核心控制器为什么是MSP432E401Y在TI的MCU家族里我们最终选择了MSP432E401Y。原因很简单它完美匹配了我们的需求主频高达120MHz为复杂的DFT计算提供了充足的算力。内置12位ADC最高采样率2Msps轻松满足1MHz的采样要求还有余量。集成硬件浮点单元FPU做频谱分析涉及大量浮点数运算有FPU硬件加速速度能提升几十倍这是能否实时计算的关键。大容量SRAM256KB采样数据量很大需要足够的内存来存放。符合赛题要求它是TI的MCU使用其片内ADC完全合规。我们直接使用了TI官方的MSP432E401Y开发板省去了自己画最小系统板的麻烦。2.2 信号调理电路运放怎么选怎么接信号进来第一关就是运放电路。这里的目标是把30mV-600mV的信号线性地放大到接近ADC的满量程3.3V以提高采样精度。运放选型我们用了TLV2316。选它主要看两个参数一是单位增益带宽10MHz这决定了它最高能处理多高频率的信号而不会严重衰减对于100kHz的信号足够了二是低噪声、低偏置这对测量小信号30mV时的精度至关重要。电路设计采用了最经典的同相比例放大电路。电路图如下基于立创EDA设计示意图左侧SMA接口输入信号经过TLV2316构成的同相放大电路增益约3倍输出至MCU的ADC引脚。同时引出了输入和输出测试点。增益计算图中R1和R2的比值决定了放大倍数。我们设计增益约为3倍。这样600mV的输入信号放大后约为1.8V仍在3.3V范围内30mV的输入信号放大后约为90mV虽然小但借助12位ADC最小分辨率约0.8mV依然可以分辨。单电源供电一个很取巧的设计是我们直接使用单片机开发板提供的3.3V作为运放的电源。这样做有两个好处一是简化了电源设计二是确保了运放输出的电压峰值永远不会超过ADC的输入上限3.3V起到了保护作用。2.3 通信接口串口屏与蓝牙系统需要两个显示终端一个现场看的串口屏和一个远程连接的手机APP。串口屏直接通过UART串口与单片机连接接收指令显示文字和波形。我们选用了一款常见的串口屏并为其设计了界面。蓝牙模块同样通过UART连接。为了让手机APP能收到数据我们需要一个蓝牙转串口的模块如HC-05/06。一个“画蛇添足”但有趣的电平转换最初我们担心蓝牙模块是5V电平而单片机是3.3V所以用74HC00与非门芯片设计了一个电平转换电路。但后来发现在这个项目中数据只从单片机向蓝牙模块和串口屏发送单向输出。而5V的串口屏/蓝牙模块通常能识别3.3V的高电平信号。所以这个电平转换电路实际上没用上复现时完全可以省略只需确保不接收它们的数据断开单片机RX引脚即可。这种单向设计还有个好处支持热插拔不会影响单片机运行。3. 软件算法采得快算得准硬件搭好了接下来是大脑——软件。核心任务就两个以正确的时机采集数据然后从数据中提取出谐波信息。3.1 自适应采样策略这里有个关键问题输入信号的基频f0可能是1kHz到100kHz中的任何一个我们该怎么设置采样率如果用一个固定很高的采样率比如2MHz去采一个1kHz的信号一个周期就能采2000个点数据量巨大计算缓慢。如果采样率设低了又可能无法捕捉高频信号的细节。我们的策略是“先侦察后总攻”预采样侦察首先用一个固定的、适中的采样率例如250kHz快速采集一小段数据。粗略估计基频对这段预采样的数据做一次DFT找到频谱中能量最高的那个频率点这就是信号基频f0的粗略估计值。设定最佳采样率总攻知道了f0我们就能设定一个“刚刚好”的采样率。为了能较好地还原波形我们设定采样率为20 * f0。例如f0是50kHz采样率就是1MHzf0是100kHz采样率就是2MHz用到了ADC的极限。这样既能保证采样质量又不会产生过多冗余数据。3.2 精准采样与DMA搬运设定好采样率后就要开始正式高精度采样了。这里有两个技术点保证采样“快且准”定时器触发ADC我们用单片机的一个硬件定时器Timer来精确控制ADC采样的时间间隔。比如定时器每0.5微秒产生一个触发信号对应2MHz采样率ADC就立刻转换一次。这种方式由硬件保证时序精确不受软件延迟影响。DMA搬运数据ADC转换完的数据如果让CPU一个个去读会占用大量时间。我们使用DMA直接存储器访问功能。DMA就像一个“数据搬运工”ADC每转换好一个数据DMA就自动把它存到指定的内存数组里完全不需要CPU插手。等采够了我们需要的点数比如1024点DMA再通知CPU“数据齐了你来处理吧”这样CPU就能专心做计算。3.3 谐波提取与THD计算采回来一组时域信号数据怎么得到各次谐波的幅度呢答案是离散傅里叶变换DFT。DFT可以把时域信号变换到频域让我们看到信号在不同频率上的强度。实际操作中我们使用更高效的FFT快速傅里叶变换算法来计算DFT。计算完成后我们得到一个频谱。精确定位基频在频谱中能量最大的谱线对应的频率就是我们信号更精确的基频f0。寻找谐波峰值知道了精确的f0谐波频率就是2f0,3f0,4f0,5f0。我们不需要在整个频谱里搜索只需要在2f0等频率点附近一个小范围内找到幅值最大的点其幅值就代表了该次谐波的幅度。计算总谐波失真THDTHD的定义是所有谐波能量总和与基波能量比值的平方根。公式如下THD sqrt( (A2² A3² A4² A5²) / A1² ) * 100%其中A1是基波幅度A2, A3, A4, A5分别是2到5次谐波的幅度。算出结果后通过串口发送给串口屏和蓝牙模块显示。4. 系统测试与结果我们把运放小板和接口转换板插在MSP432E401Y开发板上连接USB供电和信号源系统就搭建完成了非常简洁。测试流程上电用信号发生器产生一个带谐波的正弦波例如基波1kHz幅度400mV混入20%的3次谐波和15%的5次谐波。手机打开蓝牙搜索并配对模块如Bluetooth-Slave。打开我们编写的安卓上位机APP连接蓝牙。观察串口屏和手机APP上显示的波形、基波频率、各次谐波幅度以及计算出的THD值。测试结果来自原作品1kHz信号理论THD 25%测量结果25.37%误差5%。50kHz信号理论THD 17%测量结果16.32%误差3%。100kHz信号理论THD 10%测量结果10.00%误差3%。可以看到系统在整个要求的频率和幅度范围内都达到了很高的测量精度完全满足赛题要求。5. 复现指南与资源如果你想自己动手尝试以下是关键资源与步骤获取代码与工具原团队已开源所有代码。你需要CCSCode Composer StudioTI官方的开发环境用于编译和下载单片机程序。SimpleLink MSP432E4 SDKTI为MSP432E4系列提供的软件库版本号4.20.00.12。安装后在CCS中导入提供的start53工程。Android Studio如果你需要修改手机APP可以导入THDMeasure工程。也可以直接安装提供的app-release.apk。串口屏上位机软件使用附带的国赛有相频-修正.HMI文件通过串口屏厂商的软件下载到屏幕中。硬件连接按照原理图焊接运放放大电路板TLV2316部分。电平转换板可以省略直接将蓝牙模块5V供电和串口屏的RX引脚接到单片机的TX引脚上。将放大板的输出连接到MSP432E401Y开发板的某个ADC输入引脚如PE5/AIN8并在代码中相应修改ADC通道配置。为蓝牙模块和串口屏提供5V电源可从开发板或USB Hub取电。调试要点先调运放用示波器观察运放输入和输出确保放大倍数正确且波形不失真。再调采样用信号发生器输入一个已知频率和幅度的干净正弦波让单片机采样并通过串口打印原始数据在电脑上用Python或MATLAB画图看波形是否正确。最后调算法输入带谐波的信号检查FFT计算出的频谱是否正确THD计算是否准确。这个项目虽然获得了国赛二等奖但其硬件结构极其简单软件逻辑清晰是一个非常棒的学习范本。它清晰地展示了如何将“高速ADC采样”、“DMA”、“定时器触发”、“FFT算法”这些嵌入式与信号处理的核心技术点组合起来解决一个实际的测量问题。希望这篇详细的复盘能帮你打通思路勇敢地开始自己的嵌入式项目之旅。
返回列表