概要
本项目设计内容(要求): 交流电压表可测量有效值5V的电压,显示两位有效数字频率范围:100-1KHz,测量误差控制在%5范围内。
设计思路
由于大多数的STM32不能直接测量交流信号,因此我们需要设计一个调制电路对输入信号进行调制,包括对输入信息进行衰减和电压偏置处理,然后再将调制后的信号输入到STM32的ADC引脚进行AD采样,最后经过算法计算出电压的有效值并将其显示在OLED屏上,至此我们的设计就搞定了。以下图是设计思路框图
电路设计流程
1.调制电路设计
可以使用直流偏置反向放大电路来实现,衰减和电压偏置。衰减的目的是保证STM32在采样ADC电压时,电压范围在安全范围3.3V以内,如果不对输入信号进行衰减会导致因为输出电压过大而烧坏单片机;而电压偏置的目的是因为STM32只能测直流电压,而不能直接测交流电压(输入电压)因此,需要对信号进行直流偏置,将整个电压抬升到偏置电压处(就是抬升到正值区域内)。以下是参考图:
2.STM32-ADC采样电路
本项目使用STM32-PA0引脚进行ADC采样,你也可以使用其他引脚来采样,就是在程序上改个通道就行了。以下是参考图:
3.OLED显示电路
本项目使用的屏幕是0.96寸-SPI OLED显示屏来显示电压信息,请不要疑惑我为什么不用IIC屏幕,我知道IIC好用而且用的引脚又少,我只能解释:因为我手上只有SPI屏幕。(注意一下电源就行了)以下为参考图:
程序设计
思路:要保证所有的频率都能采样到一个完整周期,就要满足采样的总时间要大于最低频率下的周期(1/100hz=0.01s=10ms),然后确定采样点数,计算出采样周期,最后就是对采样值进行筛选取出最大值,再结合算法计算出电压有效值。
测试结果
左边图是信号发生器输出的信号电压有效值,右边是测量出来的有效值(在OLED屏幕上显示)
分析:本项目的误差在合格范围内,满足设计要求。
小结
其实我最开始的设计方案是,用几个电阻串联组成分压电路,对输入信号进行衰减然后再加个二极管进行调制(只取它的正半周期进行采样),其实这个想法是看起来可行,但是测量误差会很大,你要想想二极管是有个导通电压的,当你输入的电压小于导通电压时,它是没信号输出的,你就测量不到那个区域的信号,所以那个方案我就不采用。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/m0_60631283/article/details/144076290
|