STM32 ADC缓冲运放电路以及编程实现

STM32 ADC缓冲运放电路以及编程实现_第1张图片首先呢,说一下本外围电路的设计要求:需要检测4500W的功率,通过功率检测单元,对假负载输入的信号进行检波,将04500W功率参数转换为04V电压。使用的AD8361模块。
STM32 ADC缓冲运放电路以及编程实现_第2张图片

然后在送入信号调理单元,这个部分的电路如上所示,通过电位器和运放跟随器,将04V直流电压转为03.3V并缓冲放大。
STM32 ADC缓冲运放电路以及编程实现_第3张图片

(图画的比较早,主要是参考作用,实际过程复杂不少)

通过调理电路后,送入MCU的ADC检测IO口,将输入的03.3V模拟量进行采样转换,通过一定算法,映射为04500W功率参数,通过串口输出显示内容到屏幕。
STM32 ADC缓冲运放电路以及编程实现_第4张图片

(图画的比较早,主要是参考作用,实际过程复杂不少)

硬件电路的设计中,电位器使用3296封装。
STM32 ADC缓冲运放电路以及编程实现_第5张图片

运放使用LMV321,实物如图U3所示。因为功率检测单元接口为SMA接口,所以这里的输入也采用了SMA接口。
STM32 ADC缓冲运放电路以及编程实现_第6张图片

本部分代码的调试过程还算比较顺利,有一些功能设计,当功率>4000W时,需要驱动继电器上电,同时蜂鸣器报警10s,串口屏显示“功率超限”,故障锁存,功率恢复正常或者按下复位键,恢复正常显示和检测。

本来想着把复位键写道中断中,后来发现没必要,while锁存住状态然后等待按键状态即可。
STM32 ADC缓冲运放电路以及编程实现_第7张图片

这里还对屏幕的闪烁进行了一个处理,因为时串口屏幕,原本设计是主循环中每循环一次,清除原来的数据然后显示最新数据,但是这样就会导致屏幕会500ms闪烁一次(500ms是因为主循环循环一次延迟500ms)。
STM32 ADC缓冲运放电路以及编程实现_第8张图片

这里的处理方法是只有当ADC数值发生变化时候才需要清除局部显示区域更新数据,这样就解决了屏幕闪烁的问题,体验好极了。

为了数据的稳定,这里每次的显示都需要50次取平均值,防止数据不稳定导致的问题。

STM32 ADC缓冲运放电路以及编程实现_第9张图片

你可能感兴趣的:(STM32)