阿飞的秘术屋
认证:VIP会员
作者动态
emc防护原理
01-14 21:20
关于使用LVDS芯片进行屏幕通信过程中遇到的EMC问题
2023-12-25 13:15
RT-Thread 串口DMA发送代码解析
2023-12-21 16:58
滤波、去耦、旁路、储能傻傻分不清
2022-12-06 22:15
STM32H750使用LTDC驱动RGB屏幕显示
2022-03-20 14:16

电赛总结

本次电赛做的是A题-THD值检测装置。

电赛方案:

单片机:MSP432E401Y

              ADC支持高频率2MHZ

外围硬件方案:前端放大器采用增益可调的放大器,通过调节放大器增益使输入信号控制在1-2v之间。

底层外设配置方案:使用PWM+TIM作为adc触发源,使用dma进行数据传输。使采集数据可以达到2MHZ。在    使用定时器作为触发源的时候,因为该单片机的最高定时器触发时间支持到1.25MHZ,所以在1.25mhz采样率一下的使用使用定时器触发。在1.25mhz--2mhz的时候使用pwm触发。(在这里做区分的原因是,tim定时器作为触发源,进行触发adc的时候,出发周期比较稳定。而使用pwm作为触发源的话,出发周期,并不能严格控制在2mhz,设置完周期之后,会有一定的周期偏移。)(在增益控制上,直接检查采集到的信号值的最大值,使最大值控制在一定范围内)

关于信号采集速率的设计:根据奈奎斯特定理,采集100khz的5次谐波需要1mhz以上的采样率,但是实际测试过程中1mhz的采样率,在采集信号的时候,信号采集出来的数据会有偏移,信号能量较弱,所以最终使用的是2mhz的采样率的方案,即基频*20.

fft处理的方案:在一开始的时候想了2种方案,一种是直接fft之后进行计算,另一种是在fft之前进行一次加窗(即进行一次fir滤波)。经过matlab仿真之后,发现,对于采集到的数据,进行加窗之进行fft与未加窗进行fft结果没有区别,最后未使用加窗的方案。fft算法使用的是arm官方的arm_math.h数学库。

基频计算方案:本次测试信号范围在1khz-100khz,采用的方案是,将采集的信号仅从一次fft,之后进行范围的区分,计算出是基频频率。

关于thd值的计算:计算出基频之后,针对基频设置相应的采样率进行数据采集,之后将采集到的数据进行fft运算,然后在特定的数据段查找最大值,实现每个谐波的最大值查找。查找完成之后,调用相关的运算公式计算结果。

在显示方面:屏幕采用串口屏幕,单独编程,之后单片机通过串口与屏幕进行通信。波形显示方面,将每个周期采集的时候,通过使用前面特定的数据,进行显示,同时发送给屏幕的时候,也会发送给手机app端。

问题:1、单片机的adc采集速率在高于600ksps的时候,一次dma数据传输完成之后,会导致之后读取的数据不能正常读取,读取的值都是错误的。

解决方案:在超过600ksps的时候,每读取完成一次之后,会进行一次系统重启。

问题2:某些频段使用计算出来的基频进行,采集的数据进行fft之后,会产生较大的误差,但是自己设置频率,采集之后,有一部分变好了,还有一部分未变好。

解决方案:未解决。

原因分析:可能是硬件电路的问题,在单片机的输入引脚有电阻电容配置不对。同时基频计算算法存在问题。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 2
收藏 1
关注 9
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧