使用Arduino微控制器和H桥构建一个120伏交流“纯正弦波”逆变器。这种极简的DIY设计为高级应用奠定了基础,例如不间断电源(UPS)和用于电池储能系统(BESS)的三相逆变器。
安全警告 :该设备会产生高压交流信号。使用适当的绝缘技术或控制措施,以防止接触高压。在合格导师的直接监督下进行此实验。始终遵守当地、州和联邦法规。
使用本文先前介绍的直流电机构建并排除电路故障。仅在电路正常运行后安装变压器。使用电机进行故障排除更安全且相对容易,因为可以重新配置电路以测试单个MOSFET和相关驱动器。
什么是纯正弦波逆变器?
纯正弦波逆变器是一种用于将直流电压转换为正弦电压的电子设备。典型的逆变器用于移动或备用应用,从大型电池为120伏交流60赫兹(美国)设备供电。对比技术是方波或修正方波逆变器。虽然替代方案更简单,但它们不提供正弦输出。这对于电机和其他敏感电子设备是不利的。电机会发出嗡嗡声并可能过热。与方波逆变器相关的电磁干扰(EMI)也可能在音频和无线电设备等敏感电子设备中引起令人不快的干扰。
本工程简报中介绍的设计是一个可靠的演示器,因为它具有一个H桥,能够从15伏直流电源产生120伏正弦信号。简单的设计和面包板的性质将输出限制在约10瓦,条件是负载应为电阻性,如图1和图2中所示的7瓦120伏白炽灯泡。如果没有反馈,波形会失真。这在驱动LED灯泡等负载时尤为明显。最后,该设计没有保护电路,除了图2中所示的B&K Precision 1550台式电源提供的保护。
图 1 :120伏交流逆变器的实验台设置。这仅用于演示目的,因为变压器的120伏交流端子是暴露的。使用适当的绝缘技术或控制措施,以防止接触高压。
安全提示 :启用15V直流电源时,请断开计算机USB端口以保护PC。这能防止15V直流电源与Arduino引脚意外连接。
忽视此警告可能导致 PC 的 USB 端口、处理器或主板损毁。
建议改用独立电源(如廉价手机充电器)为Arduino供电。此外,也可考虑购买USB端口隔离器保护PC。
本文为该系列第5篇。请回顾之前的文章,它们介绍了逆变器所基于的基础原理。最后一篇文章尤为重要,因为逆变器采用了相同的MOSFET驱动器。实际上,唯一的区别是用变压器和白炽灯泡替代了直流电机,如图1和图2所示。
图 2 :实验台配置,包括B&K电源、Arduino微控制器和Digilent混合信号分析仪。
电路设计
该电路与《基于Arduino的H桥电机控制器面包板实验》中介绍的完全一致。为方便起见,原理图已作为图3附上。请注意,直流电机被替换为Signal Transformer A41-25-24变压器和7W 120V白炽灯泡。如图1所示,变压器的一个12V交流绕组连接到H桥输出端。115V交流次级绕组采用串联连接。因此该变压器以12:230升压配置接线。注意12V交流绕组本可采用并联方式连接。由于面包板已接近其1A的电流限制,故认为无需并联。
请注意图3中的电位器已替换为信号发生器。这样简化了设计,因为正弦波生成由外部设备完成。
技术提示 :Arduino微控制器可生成正弦波。常用方法称为直接数字合成(DDS)。该方法需要正弦波查找表、索引变量、加法器和定时器。其原理很巧妙:索引指向正弦波查找表中的位置。加法器的步进值(增量)与定时器共同决定输出频率。
图 3 :采用2个IR2110驱动器和Arduino Nano Every的H 桥原理图。Arduino通过其USB端口供电(未显示)。
软件设计
这段代码也与先前描述的直流电机控制器相关。但如这个修改后的草图所示,需要做几处改动。最重要的改动涉及速度控制,以防止灯光闪烁。
请注意设定值来自外部信号发生器。第一步是读取模拟值,然后对结果进行比例缩放。这为正向和负向半周期提供了驱动信号。该代码设计为在Arduino环境的限制下,尽可能快速地在Microchip(Atmel)ATmega4809上运行。这包括使用cli()语句关闭中断。
/**** CAUTION **** **** CAUTION **** **** CAUTION **** **** CAUTION **** **** CAUTION ****
*
* This code is written specifically for an Arduino Nano Every. It will NOT work on other Arduino
* microcontrollers, as it depends on direct SFR manipulation to operate in a Fast PWM mode.
* For fast PWM technique refer to https://forum.digikey.com/t/fast-pwm-for-the-arduino-nano-every/40023
*
*/
#define LL_PIN 7
#define LH_PIN 6 // Fast PWM
#define RL_PIN 4
#define RH_PIN 3 // Fast PWM
#define VREF_PIN A7
#define MAX_PWM_VAL 250
enum Direction {
CW = true,
CCW = false
};
Direction direction;
void setup( ) {
pinMode(LL_PIN, OUTPUT);
pinMode(LH_PIN, OUTPUT);
pinMode(RL_PIN, OUTPUT);
pinMode(RH_PIN, OUTPUT);
TCB0_CTRLA = 0b00000011; // Fast PWM for pin D6
TCB1_CTRLA = 0b00000011; // Fast PWM for pin D3
}
void loop( ) {
bool last_direction;
cli( ); // Disable the Arduino ISRs for maximum speed e.g., disable millis( )
while (1) {
uint16_t setpoint = analogRead(VREF_PIN);
// Potentiometer set to middle turns off the motor. Middle and above yields CW, while below middle yields CCW.
// Recall that analogRead( ) return a value from 0 to 1023 while analogWrite( ) accepts a value between 0 and 255.
if (setpoint > 512) {
direction = CW;
setpoint = (setpoint - 512) >> 1;
} else {
direction = CCW;
setpoint = (512 - setpoint) >> 1;
}
if (setpoint > MAX_PWM_VAL) {
setpoint = MAX_PWM_VAL;
}
if (direction != last_direction) { //Stay out unless needed
last_direction = direction;
digitalWrite(LL_PIN, LOW); // Turn everything off
digitalWrite(RL_PIN, LOW);
analogWrite(RH_PIN, 0);
analogWrite(LH_PIN, 0);
if (direction == CW) {
digitalWrite(RL_PIN, HIGH); // Enable the appropriate low side driver
} else {
digitalWrite(LL_PIN, HIGH);
}
}
if (direction == CW) {
analogWrite(LH_PIN, setpoint); // Always set the appropriate PWM
} else {
analogWrite(RH_PIN, setpoint);
}
}
}
技术提示 :Arduino代码是一种硬件抽象,旨在使编码体验在Arduino微控制器上变得简单且一致。有一些依赖于中断服务例程(ISR)的隐藏后台任务,例如millis()及其相关例程。这些可能导致高性能电路中出现意外的时序偏差。在本应用中,通过发出cli();语句禁用ISR。此外,还实现了一个while(1)循环以防止Arduino退出loop()函数。
谨慎使用这些技术,因为它们会破坏一些用户友好的Arduino功能。
结果
图4展示了逆变器驱动7瓦白炽灯泡时产生的波形。这个简单电路产生了一个可识别的正弦波,峰值幅度为170伏(120伏有效值)。当信号过零时可以看到明显的失真。您可能会认出这是由H桥极性切换引起的交越失真。由于H桥或输出变压器上没有任何滤波,还存在高频伪影。
综合考虑,对于这样一个简单电路来说,这是一个合理的信号。它肯定会从反馈和滤波中受益。这给了我们一些期待的东西,正如下一步部分所描述的那样。
图 4 :这个基本的逆变器产生了一个可识别的正弦波。当H桥切换极性时会出现交越失真。
换相序列
H桥的换相序列如图5和图6所示。每个MOSFET驱动波形都通过其位置(包括左或右,以及上或下)来标识。例如,顶部(粉色)波形是右高(RH)MOSFET的。在图5中,我们看到RH/LL和LH/RL驱动对用于产生正弦波的正负半周期。
技术提示 :将Arduino视为调制器可能更容易理解这个项目。它接受0至2.5至5伏的直流输入。随后执行近似线性转换,将输入电压转化为PWM驱动信号并发送至H桥。理论上,H桥的输出是输入电压的线性再现。给Arduino输入三角波电压即可获得三角波输出波形。输入正弦波,输出正弦波。
图6展示了左高边(LH)MOSFET的特写图像。这是生成正弦波的关键波形。波形起始时占空比最小。在约4.17毫秒处占空比增至最大值,对应半周期峰值电压。需注意60Hz波形的周期为16.67毫秒,其峰值出现在约4.17毫秒和12.5毫秒处。
图 5 :H桥换相序列演示。高边MOSFET(右高边与左高边)接收PWM信号。
图 6 :左高边(LH)MOSFET的PWM占空比变化特写图。
效率
电路效率约为64%。基于15VDC电源消耗0.73A计算,输入功率约11W。假设灯泡在纯120VRMS波形下确为7W,则输出功率估计为7W。这个粗略估算表明存在改进空间。但该估算偏乐观,因为MOSFET摸起来是凉的。
下一步
-
本设计是教学工具。其性能受硬件和软件限制。电路改进方法包括:
-
通过增加滤波处理电磁干扰。
-
采用裸机编程、FPGA或专用"电机控制"微控制器(配备PWM驱动外设)来提升PWM生成流畅度。
-
完善故障分析能力,增加电流监测与自动关断功能。
-
引入直接数字合成(DDS)技术生成正弦波形。
-
设计能承受更大电流的PCB板,采用现代MOSFET驱动器为核心。
-
升级至三相电路和IGBT(分立或模块化)。
-
整合反馈机制以监控和调节输出信号。
-
添加遥测功能,使逆变器可被监控。
-
逆向工程商用现成逆变器,探索如何以低成本实现可靠设计。
-
玩得开心!
最后的思考
H桥电路用途广泛,既能驱动直流电机,也能用于纯正弦波逆变器。该特色电路表明两种技术共享同一空间。探索电子领域时,您会在小型电源和大型三相驱动器中认出这种常见架构。
切记安全操作,这逆变器绝非玩具。其危险程度与线路供电设备无异,可输出340V峰峰值信号。寻找能挑战并支持您工作的导师。
一如既往,请在下方留下您的评论和建议。这个社区里有许多才华横溢的人愿意提供帮助。
如果本文对您有用,请点赞支持。
相关信息
请点击以下链接获取相关和有用的信息: