AC交流采样电路
AC交流采样方案
/**----------------------------------------------------------------------
* @name: AC交流采样方案
*----------------------------------------------------------------------
* @brief: 这里提供一个方案参考,这个方案适合个人制作几个自己使用,不适合
* 用于批量生产,其中有点问题是没有正常解决的,但是不影响使用,如
* 有佬知道怎么解决还请在评论区或者私信告诉我,万分感谢!!!
*-----------------------------------------------------------------------
* @Author: 海上的船
*-----------------------------------------------------------------------
* @Date: 2025.6.6
*-----------------------------------------------------------------------
*/
1.总概
- 之前我们已经成功对交流电压实现了降压,这样我们的开环就完成了
- 但是我们需要将buck实现在不同的带载情况下也能输出稳定电压
- 所以我们现在要将输出的电压信息传回给stm32,从而通过调整占空比实现输出稳定电压
- 这里将分为两个部分,分别是电路部分和代码部分
2.电路部分
我这里将使用输入为36V有效值,频率为50Hz的,经过buck后我们将得到32V-2V有效值,频率为50Hz的信号作为例子,来讲解这个交流采样的方案,这个方案是通用的,各位可以根据自己的情况从而进行适当的改变
我们需要考虑隔离问题,如果直接将信号只是通过分压和偏置供给stm32,这个行为是很危险的,容易让stm32的工作出现异常,所以我们不得不考虑隔离,而这里选择的隔离方案是通过互感器实现隔离,但是这出现了一个新的问题,就是当我们为空载的情况下,互感器对于输出带载而言是一个感性负载,这很容易让我们无法得到正确的电压信号,所以我们通过在输出信号上接电阻,然后再小电阻上接互感器实现隔离,这样对应我们buck电路的拓扑来说,很大程度上来说这依旧是一个阻性负载,至于后面就是通过运放实现分压和加偏置将处理后的信号供给stm32。
2.1 信号分压
-
采用9.1k和1k电阻进行分压
- 使电压最大值 45.25V ≈ 32V * 1.414,降为约±4.5V内
- 让其在空载情况下也保持为阻性负载
-
在1k电阻上并联一个合适电容滤波,我这里选择的是680nF的电容,电容不建议太大,太大容易引起波形失真
2.2 隔离互感器ZMPT107-1
-
采用型号为ZMPT107-1互感器
-
根据其数据手册我们可以知道它的额定输入电流为2mA,这很重要,很多互感器工作不正常的原因就是其输入的额定电流错误,根据我的实际使用的时候发现这个2mA貌似是最大输入电流,但是电流大于2mA的时候波形容易出现失真

-
同样的这是数据手册给出的典型应用方案,但是当我把GND接上去后不管怎么弄都是会出现波形失真,所以我在设计的时候是忽略了这个GND的,这也是我在上面说的没有解决的问题,我们的设计需要按照它来我这边的设置的R’为2.4k,R为3.9k;从理论上来说选择R’=R是比较方便于计算的,但是可能是由于GND没接,这个值并不是预想中的U1 = U2,虽然说这个倍数无法计算,但是我们后面选择去测量可以得到正确值
-
如果波形出现失真变成类似于三角波的情况,可以适当增大R’试试

2.3 交流电路
分压后的电压为有效值约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的一半即1.65V比较好,不过不用这么严苛,我们可以适当的调整,我选择的是1.56V,Vref的设计在下面的第2点,这里先说R1R2的取值,从理论上来说R1为9.1k,R2为1k,可以得到很不错的波形,但是实际用这个值的不对,根据我的实践,我选择了R1 = R2 = 5.1k,这样stm32就可以成功采集到电压
-
-
Vref提供电路
我们需要的电压为1.5V左右,我们可以选择使用gs6002中的另一块运放来提供(一块gs6002中两个运放)
可得电压为Vref = 5V * (10k / 32k) = 1.5625V

-
RC滤波
经历实践,我们会发现产生的信号有很多毛刺,所以我们通过第一个1k和10uF滤大毛刺,通过第二个1k和10nF滤小毛刺

2.4 原理图

2.5 PCB
注意的是交流信号容易对其他信号产生影响,所以我没有全铺铜,而是只铺铜了后面一小节

3.波形展示及计算
这是30Vrms输入时,我们这个模块的输出波形,我们可以直接利用这个波形的峰峰值算出我们模块输出的有效值,不过这里我们选择用其他方法
这是我将示波器的耦合设置为交流的波形,这样我们就可以利用示波器直接帮我们算出其中交流信号的有效值(均方根值),这里只是一组数据,我们应该多测量一些不同的输入电压来算我们这个模块的缩小倍数,我的这个算出的是:Vout / Vin ≈ 0.0110125

更多推荐



所有评论(0)