AC交流采样电路
AC-AC交流采样方案
/**----------------------------------------------------------------------
* @name: AC-AC交流采样方案
*----------------------------------------------------------------------
* @brief: 这里提供一个方案参考,对于自己的实际应用,各位应当进行合理的变通
* 如有错误还请指出,不胜感激!!!
*-----------------------------------------------------------------------
* @Author: 海上的船
*-----------------------------------------------------------------------
* @Date: 2025.3.21
*-----------------------------------------------------------------------
*/
总概
- 之前我们已经成功对交流电压实现了降压,这样我们的开环就完成了
- 但是我们需要将buck实现在不同的带载情况下也能输出稳定电压
- 所以我们现在要将输出的电压信息传回给stm32,从而通过调整占空比实现输出稳定电压
- 这里将分为两个部分,分别是电路部分和代码部分
电路部分
我这里将使用输入为36V有效值,频率为50Hz的,经过buck后我们将得到32V-2V有效值,频率为50Hz的信号作为例子,来讲解这个交流采样的方案,这个方案是通用的,各位可以根据自己的情况从而进行适当的改变
我们需要考虑隔离问题,如果直接将信号只是通过分压和偏置供给stm32,这个行为是很危险的,容易让stm32的工作出现异常,所以我们不得不考虑隔离,而这里选择的隔离方案是通过互感器实现隔离,但是这出现了一个新的问题,就是当我们为空载的情况下,互感器对于输出带载而言是一个感性负载,这很容易让我们无法得到正确的电压信号,所以我们通过在输出信号上接电阻,然后再小电阻上接互感器实现隔离,这样对应我们buck电路的拓扑来说,很大程度上来说这依旧是一个阻性负载,至于后面就是通过运放实现分压和加偏置将处理后的信号供给stm32。
信号分压
-
采用9.1k和1k电阻进行分压
- 使电压最大值 45.25V ≈ 32V * 1.414,降为约±4.5V内
- 让其在空载情况下也保持为阻性负载
-
在1k电阻上并联一个合适电容滤波,我这里选择的是680nF的电容,电容不建议太大,太大容易引起波形失真
隔离互感器
-
采用型号为ZMPT107-1互感器
-
100k电阻是用于限流,防止电流过大
交流电路
分压后的电压为有效值约0.2V-3.2V的交流信号
即最高电压为4.52V,最低电压-4.52V
我们需要将电压抬上去,用模电的说法就是让交流骑在直流上,同时让电压保持在ADC采样范围内
-
交流采样电路
-
这里我们选择GS6002SR这块运放芯片
-
电路原理图(来自于GS6002的芯片手册)
-
为了方便计算,我们选择让R1=R3,R2=R4,现在我的电压为±4.52V
我们给Vin输入VOUT_H,Vip输入VOUT_L,当Vin为正,而Vip为负
得到(-9.04V)R2/R1,而我们的电压要在0-3.3V
所以我们的交流电压在骑在3.3V的一半比较好,而且R2/R1=1/9左右是比较好的
-
所以可得:R2 = 1K R1 = 9.1K
-
这样我们的在不加Vref的情况下为±1V,这样再比如骑到1.5V后就为0.5V–1.5V
所以stm32就可以成功采集到电压
-
-
Vref提供电路
我们需要的电压为1.5V左右,我们可以选择使用gs6002中的另一块运放来提供(一块gs6002中两个运放)
可得电压为Vref = 5V * (10k / 32k) = 1.5625V
-
RC滤波
经历实践,我们会发现产生的信号有很多毛刺,所以我们通过第一个1k和10uF滤大毛刺,通过第二个1k和10nF滤小毛刺
总电路图加计算
要记住我们一开始在为了阻性负载接了电阻(这个电阻我没有放到原理图里面,而是接到了buck的输出端),所以我们的电压为:
Vadc = (±45V) (1k/10.1k) (1k/9.1k) + 1.5625V
= 1.0729V ----2.0521V
最开始那个信号分压我是在输出端就接上,所以原理图里面并没有这个,后面的实物图也是
实物图,这个是我手搭的板子,效果还是不错的
实际采样得到的信号