简介:面向电力电子与自动化初学者的 MATLAB 仿真学习资料,围绕单相交流调压电路,系统讲解双向晶闸管或反并联晶闸管主回路结构、阻性与阻感负载下的工作原理,以及触发角 α 对输出电压、功率因数和波形畸变的影响。内容以实验形式展开,从 Simulink 模型搭建、脉冲发生器参数设置到不同触发角(0°、60°、120°)的波形对照均有清晰说明,尤其对电感引起的电流滞后与电压延迟做了重点分析。文档还给出了实验目的、建模步骤和结论总结,读者可对照仿真波形检查功率因数变化,理解单相交流调压的移相控制范围(0≤α≤π)。资源为 1 个 doc 文档,体积仅 126KB,文字简洁、配图直观,便于下载后直接阅读或打印,适合电子技术、电力电子技术及相关课程设计参考。目前已有 398 人学习,是比较实用的入门级仿真案例。 做电力电子仿真的人,估计都绕不过单相交流调压电路这道坎。这电路拓扑极简——电网、负载、两个反并联晶闸管,但把它放到MATLAB/Simulink里跑起来,你会发现触发、换流、缓冲、稳态判断全都要自己拿捏。网上随手能搜到一堆现成模型,可多数下载下来不是参数混乱就是波形对不上,我一开始也照猫画虎搭过,结果被几个隐藏设置折腾到怀疑人生。这篇文章把我从建模到调通、再到把波形和公式逐一对上的完整过程写出来,适合刚学电力电子、正在做课程设计或者想搞明白交流调压原理的读者,照着做基本能复现出一版能用的仿真。
1. 单相交流调压电路的本质:一个容易被低估的移相控制问题
很多人第一次接触这个电路,觉得不就是“把正弦波切掉一块”吗,有什么好研究的。真搭起仿真就会发现,它和斩波、PWM完全不是一回事。交流调压用的是相位控制:晶闸管在一个周期内不是高频通断,而是每个周期在固定的相位角α处被触发导通,然后一直导通到电流过零自然关断。你控制的是“从哪个相位开始导电”,而不是“导多长时间”,这个思维差异决定了后面很多参数设置的方向。
1.1 交流调压和直流斩波的核心差别
斩波电路是开关管主动关断,输出平均电压靠占空比控制;交流调压里的晶闸管是半控器件,一旦触发导通,门极就失去控制能力,只能靠主回路电流自然过零来关断。所以交流调压的输出波形不是方波脉冲串,而是一段一段被“挖掉”的正弦波残片。阻性负载下,电压正半周从α开始导通到π结束,负半周从π+α开始导通到2π结束。
这里有个关键认知:晶闸管导通的门槛有两个,一是阳极电压为正,二是门极收到触发脉冲。两者缺一不可。所以触发时刻选在电压过零之前毫无意义,必须等正向电压建立起来再触发。这也是为什么仿真里触发信号的相位基准一定要和电源过零点对齐——不对齐的话,波形会乱到完全没法看。
1.2 阻性负载下的电压有效值公式与触发角边界
对于纯阻性负载,单相交流调压输出有效值有明确的解析式:
Uo = Us × sqrt(1 - α/π + sin(2α)/(2π))
其中Us是输入电压有效值,α的单位是弧度。这个公式是后面验证仿真结果是否正确的“尺子”。我习惯在搭模型之前先把几个典型触发角的理论值算出来,后面仿真跑出来直接对照,能省去大量排查时间。
用MATLAB算一段代码就能出结果:
alpha_deg = [0 30 60 90 120 150 180]; alpha = deg2rad(alpha_deg); Us = 220; Uo = Us * sqrt(1 - alpha/pi + sin(2*alpha)/(2*pi)); table(alpha_deg', Uo', 'VariableNames', {'触发角度', '输出电压有效值'})几个典型值的对照关系如下:
| 触发角α | 输出电压理论值(V) | 波形特征 |
|---|---|---|
| 0° | 220.0 | 完整正弦波,相当于直接接通 |
| 30° | 216.6 | 每个半周期被挖掉开头一小段 |
| 60° | 197.3 | 半个周期的前1/3被切掉 |
| 90° | 155.6 | 每半周期只剩后半段 |
| 120° | 97.2 | 导通区间很短,电流冲击集中 |
| 150° | 37.2 | 接近关断,波形破碎严重 |
| 180° | 0.0 | 完全关断 |
边界条件很直观:α=0°时晶闸管相当于在过零点立即触发,输出全压;α=180°时没有正向电压能维持触发条件,输出为零。中间这段,电压不是线性下降,而是先缓后陡再缓的曲线。仿真做完如果测出的有效值和这张表对不上,说明模型里哪个环节还有问题。
2. Simulink建模:先把器件的脾气摸清楚
模型本身不复杂,一共就四类元件——交流电源、两个晶闸管、负载、两个触发脉冲发生器。但每个元件的参数都不是随便填的,尤其是晶闸管和触发模块,里面有大量“文档不会主动告诉你”的细节。
2.1 电源、晶闸管与负载的参数设置
交流电压源用Simscape Electrical(专用电力系统)库里的AC Voltage Source,电压幅值要填峰值311V(220V有效值×√2),频率50Hz,初相0。初相这个参数容易被忽略,但它直接决定了仿真零点对应的真实相位——如果这里填了非零值,后面触发延迟的时间换算就全部不对了。
晶闸管模块有两种搭法:一是直接用两个Thyristor元件反并联,二是用Universal Bridge配置成单相晶闸管桥。我推荐前者,原因很简单:Universal Bridge的触发逻辑对新手不够直观,容易出现桥臂触发信号弄反的问题。两个Thyristor反并联,上面管子在正半周工作,下面管子在负半周工作,逻辑清清楚楚。
Thyristor的参数面板里有几个值值得注意:Ron(导通电阻)我设0.001Ω,Vf(正向压降)设0.8V,Lon保持0。这些是器件模型的行为参数,影响不大。真正影响仿真表现的是后面的缓冲电路(Snubber circuit)设置,这个放到“踩坑章节”专门说。负载用Series RLC Branch,设成纯电阻模式,电阻值取10Ω比较合理,太小电流冲击大,太大波形特征不明显。
2.2 触发脉冲的时间换算
这是整个仿真里最核心的数学换算。Pulse Generator模块本质上是一个自由运行的方波发生器,它有自己独立的周期和相位延迟,它不知道电网过零点在哪。你必须手动把触发角α换算成“从仿真零点(电源过零点)开始的延迟时间”。
交流电周期T=20ms(50Hz),所以:
- 正半周晶闸管T1在电源电压过零后触发,延迟时间 t1 = α / 360° × 20ms
- 负半周晶闸管T2需要等到负半周到来,延迟时间 t2 = t1 + 10ms
举个例子,α=60°时,t1 = 60/360 × 20 = 3.33ms,t2 = 13.33ms。两个Pulse Generator的周期都设20ms,脉冲宽度设成周期的一个百分比(后面详细讲),第一个模块的Phase delay填t1,第二个填t2。这样每个周期重复输出,就能稳定触发对应的晶闸管。
这里有一个新手特别容易踩的坑:以为Pulse Generator的“Phase delay”填90就能实现90°触发。完全不是这个概念,Phase delay的单位是秒不是度,而且它是相对于脉冲发生器自身起点的延迟,不代表电网相位。只有把仿真零点严格对齐到电源过零点,这个换算才成立。所以建模习惯上,我总会在模型里放一个电压源,把它的初相设为0,再在Scope里面确认触发沿出现的位置,别凭感觉。
2.3 触发脉宽与缓冲电路的处理
触发脉冲宽度这个参数看起来不起眼,但它决定晶闸管能不能可靠导通。晶闸管触发后,阳极电流需要上升到擎住电流(latching current)以上,门极信号撤掉后管子才能维持导通。如果脉冲太窄,阳极电流还没建立起来门极就撤了,管子会重新关断,仿真表现就是“触发了但没完全触发”。
对于50Hz工频,我习惯把脉冲宽度设为1ms左右。在Pulse Generator里,用Pulse Width参数填5(代表占空比5%),周期20ms时实际脉宽就是1ms。脉冲宽度再大一点也没问题,但不要超过对应的导通区间,否则脉冲覆盖到负半周区域,会干扰晶闸管的关断判断。
缓冲电路这里先留个悬念,你按默认参数跑第一遍大概率会遇到一种奇怪现象——晶闸管已经处于关断状态,但输出电压波形过零附近有拖尾、有毛刺。这个坑的排查过程我会在第4章完整展开,这里先记住排查方向:和RC缓冲参数有关。
3. 不同触发角下的波形演变:从仿真结果读出物理规律
模型搭通之后,最有意思的部分来了:把触发角从0°逐渐调到150°,观察输出波形一点点变化。这一步不只是在“看”仿真结果,而是在建立电路物理行为的时间直觉。
3.1 触发角0°到150°的波形形态对照
我在Scope里同时显示输入电压、触发脉冲、输出电压三路信号,每次改触发角就看稳态后的波形。α=30°时,输出波形和输入几乎看不出差别,只是每个半周期起始处被削掉一个“小角”,有效值依然接近220V;α=60°时,被削掉的部分明显增加,每个正弦峰从顶部被斜切了一刀,峰值变矮;α=90°时最直观——每半周期只剩下后半段正弦波,像一把被削去一半的梳子;到了α=120°,每半周期只剩一小截凸起,输出已经“千疮百孔”。
这个变化过程对应着导通角θ的变化。阻性负载下导通角 θ = π - α,所以触发角越大,晶闸管在一个半周期里导电的时间越短,输出自然越低。这种时间域上的波形变化,光看书上的示意图总觉得抽象,自己调一遍参数、看一眼Scope刷新出来的波形,比死记十遍公式都管用。
3.2 用公式检验仿真数据:一个有用的验证手段
跑完仿真后,我习惯用Simulink的mean模块或者直接在MATLAB工作区里算一下输出的RMS值,然后和理论公式对照。比如α=90°时,理论值是155.6V,仿真测出来如果落在154~157V之间,说明模型基本正确;如果偏差超过2%,就要回头查参数。
这里有一个小的计算技巧:不要看波形第一个周期的测量值,那是暂态过程。交流调压电路的电感和缓冲电容虽然不大,但电路仍然需要一两个周期才能进入稳态。我都是在Scope里设置显示4~5个周期,然后取后半段的数据去计算RMS。
3.3 阻感性负载:为什么波形会“拖尾巴”
把负载从纯电阻换成一个电阻串联电感(比如R=10Ω,L=10mH),波形立刻面目全非。原因是电流不再和电压同相位,晶闸管关断的条件从“电压过零”变成了“电流过零”,而电流过零滞后于电压过零,所以晶闸管会在电压进入负半周后继续导通一段时间。
这就是交流调压和斩波电路又一个本质区别:在斩波电路里,负载类型主要影响电流纹波大小;但在交流调压里,负载的功率因数直接改变晶闸管的自然换流点,进而改变输出波形形态。对阻感负载,触发角α如果大于负载阻抗角φ,电流是断续的;α小于φ,电流可能连续甚至完全失控。这个“α与φ的比较”是三相交流调压设计里最重要的门槛之一,建议在单相仿真里就把概念建立起来。
4. 仿真不收敛、波形畸变的排查链路
我搭这套模型时,最耗时间的不是接线,而是波形对不上之后一个个排除问题。下面这三个坑按我踩的顺序排好,每一段都给出“现象、排查、根因、解决”的完整链条,方便你当排查手册用。
4.1 缓冲电路导致的波形失真
第一版模型跑出来,α=60°时输出电压在过零附近出现了一个不太明显但确实存在的小台阶,晶闸管看似关断了,却还有一小段电压缓慢下降的“尾巴”。一开始我以为是步长不够导致的数值误差,把最大步长调小到1e-6后,尾巴还在。这就说明不是数值问题,而是电路模型本身引入了额外路径。
排查到晶闸管模块参数时,问题浮出水面。Thyristor默认带有RC缓冲电路(Snubber),一般是Rs=500Ω、Cs=250nF。这个RC并联在晶闸管两端,当晶闸管关断时,缓冲电容会通过电阻缓慢放电,形成一个和主回路叠加的微小电流路径,在负载上产生一个衰减电压——就是那个“尾巴”。
解决方法是把缓冲电路的电阻调大(比如1e5Ω以上),让漏电流小到可以忽略,或者直接在参数面板里禁用缓冲。Simulink里晶闸管的Snubber resistance设成inf、Snubber capacitance设成0,就相当于关闭。改完再跑,波形干净利落。注意,仿真里关掉缓冲不会影响主回路物理模型,但如果将来要做开关过压分析,缓冲电路是必须保留的,只是参数要重新设计,不要一刀切。
4.2 求解器设置与步长问题
第二个坑是α=120°时波形出现明显锯齿状抖动,尤其在晶闸管关断瞬间,电压波形有很窄的毛刺。这个问题的根因不在电路,在求解器。电力电子仿真模型里含有开关动作,本质是刚性系统,默认的求解器往往无法精确捕捉开关时刻的高频瞬态。
我的做法是:在Simulink的Configuration Parameters里,Solver类型选变步长(Variable-step),求解器选ode23tb(适合刚性系统),Max step size设为1e-5秒。这个设置能保证晶闸管通断瞬间被足够密集的计算点覆盖。如果仍然有毛刺,再进一步把Relaxed tolerance里的相对误差调小,或者把Max step size降到5e-6。这种“先换刚体求解器,再压最大步长”的组合,基本能解决大部分波形抖动问题。
4.3 触发脉冲宽度不够:晶闸管“欲通还断”
第三个坑最隐蔽。现象是Scope里触发脉冲明显出现了,但晶闸管电流始终为零,输出波形为全零。很多人这时会怀疑晶闸管接反了或者触发信号极性不对,但我检查过极性,都没问题。最后是在参数面板里看到脉冲宽度只有0.1%,换算下来只有20微秒,对晶闸管来说太短了。
原因在于晶闸管的擎住电流。触发脉冲给上之后,阳极电流从零开始爬升,需要一段时间才能超过擎住电流值。脉宽太短,门极信号撤掉时阳极电流还没爬上来,晶闸管就重新阻断,电路表现为完全不通。把脉冲宽度改成5%(1ms)甚至10%(2ms)后,触发可靠性显著提高。这也是一个重要的实操经验:仿真里的晶闸管模型虽说是理想化的,但“擎住”和“维持”这些器件物理特性还是会被保留,触发策略必须给足裕量。
5. 仿真过了不代表完事:实物化必须补的三门功课
仿真里跑通模型,只是第一步。交流调压电路真正要用到实际项目里,还有三个仿真里不会自动告诉你的问题要补齐。这一章是我自己从仿真走向硬件时踩过的实打实总结。
5.1 过零同步与移相触发:仿真偷的懒,实物全要还
仿真里我们靠Pulse Generator的手工延迟实现了触发,因为仿真零点就是电压过零点,时间换算永远准确。但实际上电网过零点受谐波、频率波动影响,不会精确地“每20ms准时报到”。实物系统必须有专门的过零检测电路——通常用一个比较器从220V侧取同步信号,生成方波跳变沿,再以这个跳变沿为基准,延迟α对应的毫秒数后输出触发脉冲。
我见过很多同学拿着仿真里换算好的t1、t2直接编程,结果上电后输出忽大忽小,就是因为丢了同步的基准。触发角必须每个周期重新跟着过零沿校准,不能一劳永逸。这是仿真到实物第一个要补的功课。
5.2 阻感负载的宽脉冲触发与强电安全提醒
仿真里给1ms脉宽能正常工作,换成阻感负载后,由于电流滞后电压,晶闸管的导通区间可能延续到下一个半周期,触发脉冲如果太窄,会出现换流失败。常见的做法是把触发脉冲加宽到接近60°~120°电角度,或者用连续脉冲列替代单脉冲,确保晶闸管在阳极电流建立前门极信号不消失。
这段提醒必须说:单相交流调压的主回路直接接220V交流电,晶闸管门极和主回路之间必须有隔离(脉冲变压器或光耦),控制板做好隔离后再碰单片机。强电调试时用示波器探头也一定要确认衰减比和量程,浮地示波器测整个主回路有短路风险,建议用差分探头。这些不是技术锦上添花,是安全和设备保命的底线。
5.3 交流调压、调功器与软启动:场景匹配才是选型关键
仿真做完后,很多人会问:这电路能用来做电机的无级调速吗?答案是分场景。单相交流调压适合灯具调光、电热器温控这类对波形质量不敏感的阻性负载场景。对异步电机,交流调压确实能实现软启动,但代价是低速阶段谐波发热严重,转矩特性变差,而且触发角超过一定范围后电机可能根本无法启动,只能软启动不能长期变速运行。
如果目标是精确控温而不是控制有效值,可以用调功器(周波控制)——把交流电整周期通断,用通断周期的比例控制平均功率,比如连续通5个周期、断5个周期,功率就是一半。这个思路在仿真里也很好验证,就是把触发脉冲从“相位延迟”换成“周期使能”。调压、调功、软启动三个方案,解决了不同的问题,做项目前先把需求定义清楚,才不会拿着交流调压的锤子硬敲所有钉子。
这套模型从头到尾跑下来,我自己最大的体会是:仿真不是目的,它只是逼你把电路原理落实到每个参数上的手段。如果你也在搭这个电路,建议按“先算理论值、再对波形、最后改负载边界条件”的顺序来,每改一个触发角就先看一眼Scope里的波形,别急着一次性调完所有参数。这样建出来的模型,才真正属于你自己。
本文还有配套的精品资源,点击获取