异步电机控制何以复杂

一言以蔽之:因为有两个控制维度。 控制维度 在自动控制系统里,系统通过传感器观察被控对象,然后通过执行器施加控制。 传感器的输入,被称为 被控量,而传递给执行器的命令,叫控制量。 当一个被控量可以用多个控制量影响的时候,这个控制量的数量,就是控制维度。 绝大多数时候,我们都喜欢一维控制。 为何呢? 一维控制 还是拿电机举例。先举例直流有刷电机。 被控量是电机转速,控制量是 电压,或者占空比。 控制器要影响电机的转速,唯一能控制的量,就是自己输出给电机的电压。 有的人说是电流?但是电流也是电压的结果。控制电流大小归根结底也是通过控制输出电压实现的。 如果把有刷电机,换成无刷电机。 看似执行机构变了, MOS 管数量从4个变成了 6个。 但是,实际上控制器最终能控制的量,也只有唯一的一个:电压。 因为对于无刷电机来说,控制器输出的是三相平衡交流电。 三相平衡的交流电,实际上有2个自由度:电压和频率。 因为是三相平衡的,因此3条线的电压,实际上只有一个自由度,而不是3个。 看似控制器可以控制电压和频率2个量,实际上控制器只能控制电压。 因为对于永磁同步电机来说,输入的交流电的频率和相位,必须和转子同步。 意味着,频率或者相位,并不是一个可选的自由度,必须跟随转子同步。 控制器唯一能控制的量,就剩下了一个:电压。 这也是为何永磁同步电机,或者说无刷电机,大受欢迎。因为控制起来和直流有刷电机是一模一样的,都是唯一一个电压这个控制量。 二维控制 但是,如果电机换成了异步电机,情况就发生了翻天覆地的变化。 因为,异步电机是“异步”的。控制器输出的三相电,频率,还真就有了自由度。他不必跟随转子同步。甚至绝对不能和转子同步。还必须有个差。 更要命的是,增加电压和提高频率,二者都可以提高电机转速: 也就是说,如果电机转速(被控制量)和实际目标有偏差,控制器有2个自由度实施校正:它可以改变电压,也可以改变频率。 2个控制自由度,看似 “灵活” 实则给控制算法摆出了一个天大的难题。 异步电机的矢量控制 电机控制,控制的是磁场。异步电机的运行原理和同步电机并没有本质区别:定子磁场带着转子磁场运动。 无非是,同步电机的转子磁场被转子物理锁定,转子磁场和转子本身没有相对运动。 而异步电机的转子磁场和转子本身有一个漂移运动。 如果先无视这个漂移运动呢?那么就可以使用和无刷电机一模一样的算法来控制定子磁场了。 于是这个2个控制自由度,就下降为一个了。 真的吗? 异步电机的矢量控制,本质上是把异步电机这一个整体,看成了 一个同步电机+液力变矩器。液力变矩器的输入和输出之间,有一个转速差,所传递的扭矩大小,正比于这个转速差。 但是,困难的地方在于,这个同步电机无法安装传感器,传感器只能安装在液力变矩器的输出端。 于是这个(虚拟的)同步电机的转子,其磁场的真正朝向,就只能靠“猜”了。 而要猜,就必须依靠电机的电动力学方程。要求解,就必须带入电机参数。 恰恰这个“电机参数”,是非常难以精确获得的。他随着工况会随时变化。 哪怕我们忽略这部分的困难,还有另一个问题: 这个液力变矩器对扭矩的传递,也有控制量! 因此,实际上还是有2个控制自由度。完全没有下降。 对于一个控制偏差,算法既可以调整(虚拟的)同步电机的转速来修正,也可以通过调节液力变矩器的传递效率(扭矩增益)进行修正。 因此, 异步电机的矢量控制,实际上它的控制量也是两个, 不是 电压+频率, 而是 电压+液力变矩器的扭矩增益。 自由度实际上完全没有下降。 还带来了这个 (虚拟的)同步电机 转子位子本身的猜测困难问题。 哪怕加了传感器,还是需要电机参数,还需要“猜”转子磁场位置。 传感器加了一个寂寞。 要知道,在永磁同步电机控制里,物理上的传感器可以让控制器完全抛弃电机参数。只有无传感器控制才依赖电机参数去猜转子的位置。 因此,矢量控制放到异步电机上,其实就是死路一条。 转差频率控制 在 转差频率控制 里,我们认为,异步电机的扭矩 = 转差频率*励磁电流。 ...

May 25, 2026

异步电机控制

超越开环 要不怎么说, AI 极大的促进了知识的传播。 我很多年前,就做了一个变频器。 但是,一直都是使用 V/F 开环控制。 使用开环控制,简单,好用,便宜。 但是,如何进行闭环控制呢? 滑差频率控制 我第一时间就想到了控制滑差率。 一开始,我的想法是这样的: 假设控制目标是一个转速。转速 S 是控制目标。 直接输出 S+转差 是不行的。 所以,需要几个 PID 控制环。 我最初的设想是这样的,如果是一台直流电机,做闭环转速控制是怎么做的? 答案是 转速环-》扭矩环(电流环)-》PWM 占空比。 或者,可以一步到位,转速环-》PWM 占空比。 转速高了,就降低 pwm 占空比,低了,就提高占空比。占空比本质上是控制电压。 于是,我在异步电机这里,这么设计: 转速环-》电压。 然后根据转差率,直接确定输出频率。频率不用一个闭环进行控制,而是通过测量转速,直接乘上一个转差率,得到输出频率。 这个转差率,由当前的负载情况,可以直接计算出一个最优转差率。所谓最优转差率,就是效率最高的转差率。低了,铁损增加,高了,铜损增加。 然后,我遇到了一个很现实的问题:就是转速环一开始就会输出一个很高的电压! 但是,我认为,可以加入一个恒流恒压控制。只要设定了最大电流,电压就自动被控制住了。 然而,现实的情况是,这种限制最大电流的模式,其实并不适用。这意味着启动的时候电机会一直处于磁通饱和状态。而且这种饱和状态,还使用个屁的最佳转差率,根本就破坏了最佳转差率的存在前提嘛。 经过和 AI 的反复沟通,推翻了各种方案,最终我确定了以下方案: 转速环(输出扭矩参考)-》扭矩环(输出频率) 电流环(维持励磁电流)-》输出电压 电流环是独立运行的一个控制环,他控制输出电压,以维持在当前频率下的励磁电流为一个定值。 扭矩环接受转速环(或者位置环)的输出,根据转子转速直接确定输出频率。 这个频率的确定方式是:输出频率 = 转子频率 + 扭矩参考*最大转差频率。 扭矩参考是一个 [-1,1] 的数值。最大转差频率是和电机有关的一个参数,计算方式是:最大转差频率 = 转子的电阻 ÷ (2π × 转子的电感) 滑差频率控制的底层物理原理 为啥是这个频率呢?因为异步电机的扭矩,说到底是定子磁场*转子磁场*攻角。 而转子磁场,就是由 转差频率 供电的。 当转子的电阻和电抗相等的时候,转子电流出现最大值。继续提高转差频率,转子电抗会增加导致电流下降。因此,使转子的电阻和电抗相等的频率,就是最大转差频率。 更进一步的来说,电机扭矩 = 定子磁场矢量 叉乘 转子磁场矢量。 这对任何电机都是成立的。 ...

May 10, 2026

编译期构造只读容器

我在设计变频器的红外遥控处理的时候,定义了一个 map 容器。 这个容器很简单,就是一个 int 对 int 的映射。 把 红外遥控器的按键ID, 映射到我内部定义的一个 枚举命令id 上。 这样只要修改这个 map 容器,就可以适配多种红外遥控。 但是,我发现,这个 map 容器哪怕定义为 const 变量也没用,他依旧是分配在内存里的。而且是分配在宝贵的堆内存里。 不仅仅如此,这个 map 容器的构造还会在运行时分配大量的细碎内存块。 除了占用运行时内存,他对单片机flash的占用并不消失。因为构造这个map所需的原始数据还是需要躺在 .rodata 段里。 既然这个 map 容器是只读的,那么为啥我需要在运行时分配这么多的内存? 直接在编译期就构造好一个map,然后在运行时直接使用,岂不更好? 我试着给 std::map 前面添加一个 constexpr 修饰符,结果编译失败。 看来 std.map 并不能简单的通过 constexpr 变成编译期构造。 由于 单片机的内存有 8KB 之巨,很长一段时间里我都没有遇到内存不足问题。直到最近为了缩减代码体积,把一些本该无栈协程实现的代码替换成了有栈协程。编译后能缩减数个KB的体积。 结果遇到莫名其妙的硬件错误。调试了许久才发现原来是内存分配失败导致的。 于是想在其他地方扣点内存出来,于是重新盯上了这个 map 容器。 我最初的做法本来是想自己手搓一个。 但是,如此需求,难道真只有我有吗? 如果并不是我独有的需求,应该已经有前人已经实现过了。不能动不动就重复发明轮子呀! 于是我找啊找,找到了这个 frozen 库。 #include <map> static const std::map<ir_command, UserCommand> ir_command_map = { {0x0002000D, UserCommand::speed_0}, ... 这样的代码,被替换成了 #include <frozen/map.hpp> static constexpr frozen::map<ir_command, UserCommand, 41> ir_command_map = { {0x0002000D, UserCommand::speed_0}, ... 然后重新编译,代码体积略微膨胀。但是运行时的堆内存占用一下减小千余字节。 代码膨胀,是因为原来编译器会把这 41 个 KV 对,一共 82 个数字存在 .rodata 段里, 然后在 启动的时候调用构造函数构造 map。如今编译器直接在 .rodata 段里构造出一个 map 容器的二叉树。在运行时直接在这个只读的,放在 FLASH 而不是 RAM 里的 二叉树进行查找。不需要构造了。因此减少了 RAM 的使用。但是存在 .rodata 段的二叉树,比原始的82个整数要多占一些空间。

April 22, 2026

搞懂环路补偿

经常设计模拟电路的朋友会发现,运放的输出端通常需要串入一个补偿网络到反向输入端。 如下图所示: R1 C1 C2 构成了一个补偿网络。 这是为何呢? 闭环系统的稳定性 闭环系统,就是消灭跟踪误差。 消灭的方式,就是对误差进行放大,然后进行反向调节——“负反馈”。 理想的运放,有无穷大的放大倍数,和 0 延迟。 然而现实世界不是理想世界,显示中的运放是有延迟的,放大倍数也不是无穷大。 放大倍数对运放的稳定性其实关系不大,主要是放大延迟:即输入信号发生改变的时候,输出信号能多快的反应过来并跟踪输入的变化。 为什么这个反应速度很重要呢? 因为反应慢了,会导致“运放振荡”。 为什么反应慢了会振荡呢? 如上图的运放,在稳态时,其2个输入端的电压是相同的。当输入信号发生变化的时候,比如,增加。 则运放需要提高输出电压,以抬高其反相输入端的电压,最终使得2个输入端的电压相同。 如果运放抬高输出端的电压不够快,有延迟,此时同相输入的电压就已经跌落。那么经过延迟后,运放的反相输入端电压就会超过同相输入端。 此时运放不得不降低输出电压,而他每次进行调节的时候,都总是反应慢一拍,导致每次都会“过调”。过调后又要反向调节,但是因为延迟的缘故,始终无法稳定下来。 于是运放就进入了振荡。 也就是,输入的一个扰动,会导致运放的输出产生非常多的来回振荡。而这个来回振荡又反过来引起跟多的来回振荡。 那么如何从数学上精确的描述运放的这种“来回振荡”的行为呢? 专门用来描述闭环系统的稳定性的数学工具,就是 频率响曲线,包括 增益曲线和相位延迟两个子图。 也就是,运放对每一个频率的输入,他对这个频率会产生多大幅度的“增益”(放大倍数),以及对这个频率他会有多少延迟(转化为相位延迟表示)。 如下面这个: 一条增益曲线,一条相位延迟曲线,就完整的描述了一个系统的行为逻辑了。 那么,对于一个闭环系统,什么样的曲线,算是“稳定”的呢?(稳定,即发生扰动后不会发生来回振荡) 答案是,在整个增益 >0db 的部分,其相位延迟全部都 < 180度。在工程上为了留有一定的余量,通常会要求延迟 <150度,乃至 120度。增益 = 0db 的频率,姑且起个名字叫穿越频率。 增益 <1 的部分,哪怕延迟 > 180,导致的振荡也是“阻尼振荡”。因此系统还是稳定的,只不过不是很优秀。也就是说,我们希望在延迟 =180度的那个频率,他离穿越频率越远越好,系统在扰动下的恢复时间就会越短。 于是就有了相位裕度。相位裕度指的是在穿越频率上,距离180度的不稳定极限,还剩下多少。相位裕度越大,说明系统就越稳定。 为什么延迟要 < 180度 呢? 因为运放是一个“负反馈”系统。如果运放的输出和输入之间有了 180度的延迟,则运放实质上会变成一个正反馈。正反馈就使得运放产生自激振荡。 如何修正反馈的稳定性 修正它,有一个很简单的办法:将超过穿越频率的信号给过滤掉。 只要输入给运放的信号,其频率成分总是小于穿越频率,运放就没有机会不稳定了。 那么为什么一般是在输出端和反向输入端之间,连接高通滤波器而不是在输入端使用低通滤波器呢? 因为补偿网络还有一个重要功能,是调节穿越频率本身! 这个功能特点,对于“电源类应用”是非常必要的。 补偿网络,通过前馈调节,提前补偿运放的反馈链,从而实质上从输出去除掉部分信号。所以补偿网络,从形式上看,通常是一个高通滤波器。不响应低频信号,从而不调节低频增益。对于高频信号,让运放的输入输出直通从而压制高频增益。 因此,补偿网络的截止频率,就变成了此时整个环路的穿越频率。而在输入端使用低通滤波器则起不到这个作用。同时补偿网络对低频的相位延迟影响微乎其微,而输入低通滤波器则会引入更多的相位延迟,并不利于环路的稳定。 使用何种类型补偿网络 使用何种类型的补偿网络,关键在于系统未进行补偿的情况下,其环路的频率响应情况。理想的补偿网络,是系统使用了补偿网络后,其频响曲线变成一条直线。 然而这是不可能的。因此,退而求其次,选择补偿网络,就是压制高频增益,降低穿越频率,提高相位裕度。对于一些出现二次穿越的情况,还需要使用带通滤波器设计的环路补偿器。 因此,系统原有的频响特性,决定了补偿的类型。 为什么说电流模式 PWM 控制好?好就好在他的补偿器容易设计。电流模式pwm控制器,其补偿网络简单到,只需要将穿越频率压低到开关频率的1/10就能使环路稳定。而电压型pwm控制,补偿网络还要引入微分积分器,对占空比的变化将要引起的电压变化进行预测—— 也就是不能简单的压制穿越频率。或者说,电压信pwm控制器,不进行补偿的情况下,其极点频率太低,使得只是降低穿越频率变得不可能。需要降低穿越频率的同时提高极点频率——简单的来说,就是补偿器自身的频响应要实现相位提前。 ...

February 13, 2026

极坐标变换中的负电流

三相电流进行采样后,采集到的电流是有正有负的。因为采集的是相电流,而且相电流是交流电,因此必然会出现有正有负的情况。 相电流经过矢量合成,必然可以表现为在极坐标上的一条向量。 此时,这个向量,只有幅值和角度。 这个幅值,是正数。 我们都知道,电机在运行过程中,会产生反电动势,反电动势高于输入电压的情况下,电机会表现为发电机,对外输出能量。在机械上就是表现为,产生拖拽,也就是俗称电机输出了负扭矩。 在极坐标上看,就是电流的矢量和转子产生了负夹角。 这个负夹角,对控制算法来说,实际上是不利的。 为何这么说呢? 这意味着控制算法不仅仅要考虑电流的大小,还要考虑电流的大小(扭矩大小)还得考虑和转子的夹角是正(定子磁场带着转子走)还是负(转子被定子磁场拖拽)。 因此,在三相电流采样后转电流矢量这个坐标转化算法里,必须同时输入转子角度,然后把负夹角处理为负电流,正夹角。 这样,电流采样模块输出的就是负电流,而负电流,就可以被 电流调节PID模块 正确的处理,产生更高的输出电压来抵消反电动势,以便扭转负电流为正电流。 同时, SVPWM 调制模块,也必须接受 “负电压” 这样的输入,以简化 电流调节PID模块 的控制算法。 所谓负电压,其实就是电压矢量转180度。 经过这样负电流负电压的处理后,正反转控制,就简单的变成了正电流和负电流的控制,同时避免了 “夹角PID模块” 对反转的考虑。 注意,负电流!=发电。只有 电流和电压的乘积为负,才是发电。 反转的时候,电流采集到的是负电流,电流环输出的是负电压。功率一样是正的。夹角一样是正 90度。也就是说,负责调节电流和转子夹角的PID算法,不需要根据正反转决定是正90度还是负90度夹角,统统处理成90度。

January 16, 2026

Clarke-park 变换毫无意义

电机领域有个很神奇的现象:人云亦云,不会思考。 比如,早期有个教授写教材的时候说反电动势为梯形波的叫无刷,正弦波的叫永磁同步。 然后大家就跟着他这么说了,完全不会思考。 而国内做电机的,基本上教程来自德州仪器的电机库。几十年时间过去了,还没有跳出德州仪器当年给国内的人画的地牢。完全不会思考。 离了 Clarke-park 变换,就不会做 foc 了。 更有人写 foc 教程的时候,大言不惭的说,FOC离不开Clarke-park 变换,还说没有这个变换就没有 foc。 笑掉大牙,可是从业者都是这样的。不会思考,人云亦云。 长江大学的唐老师说的好,国内搞硬件的人,水平很差,喜欢对国外顶礼膜拜, 有问题都是自己的问题,但是如果国产的东西他自己水平次用出问题了,他又要怪国产芯片不行了,不找自己的问题了。 这种心态放到电机研究上,那就是永远不能跳出当年德州仪器规划出来的电机控制框架。 特别是,当德州仪器和 Matlab 合作搞出 simulink 电机控制开发套餐,国人就更不敢挑战了。 因为硬件领域是有一条鄙视链的,算法研究 》底层代码编写》搞应用落地的。 而 simulink 正好占据了电机算法研究领域的绝对统治地位。 搞研究的都用 simulink,他还处在鄙视链最上层,那么最下层的人就绝对不敢挑战权威,跳出 simulink 里的那套框架了。 特别是,中国搞电机研究的人,主要集中在高校里的 simulink算法党,和各大血汗工厂里的牛马应用党,最缺的是中间写底层代码的。因为这些活,被德州仪器等芯片工厂的“FAE”包了。 二十多年前,阿莫电子论坛上,有一个牛人在8051上手搓无刷电机驱动,被一些牛马党膜拜的同时,被另一批人嘲讽,有“原厂电机库” 好用吗? 他们的论据是,原厂电机库有很多不公开的高级算法,肯定是汇编写的,调用芯片底层资源的,你 C 写的肯定不行。 那么这个和 clarke -park 变换有什么关系呢? 因为德州仪器最早公开电机控制算法,“大公无私”的向下游公司提供电机控制库。还手把手的教他们怎么用。(大公无私打个引号,因为芯片是卖钱的。但是也算大公无私,因为他毕竟教了,而不是像日本公司那样只收钱,不教你)。 还做一系列的开发板,和 simulink 无缝集成。 无缝集成的意思是,在 simulink里动动鼠标,改改参数,就能让 simulink 自动生成一套基于 C2000 架构的电机控制代码。然后 simulink 自动调用德州仪器的编译器,下载到他的开发板上运行,一气呵成,只需要点 simulink 里的 “RUN”。。。。一行代码都不用写。 而这套体系,就是基于 Clarke -park 变换构建的。 可以说,这套 simulink 电机开发套件,就是国内一切电机开发的源头。 国内所有的论文,都是基于这套架构上做的开发。研究各种控制理论,也必须得先在这套架构上跑过才能发论文。 这个就是 唯“clarke-park变换”是尊的源头。 那么这个变换好不好呢?当然好,不好就不会被德州仪器选中。 但是,唯“clarke-park变换”是尊,正说明了国内的人不思进取,人云亦云。 ...

January 1, 2026

运算放大器运算了什么

什么是运放 模拟电路的基础元件,有 二极管,三极管,电容,电阻,电感,还有…….运放。 运放,虽然这个基础结构实际上内部是由多个三极管构成的,但是,他依然是基础元件。 而且这个基础元件,就好像电容电感一样,有一个“理论最优”的模型,但是实际上做不出来。 这个理论模型,就是放大倍数无穷大。 如果,只是放大倍数无穷大,运放是无法成为基础元件的。 运放能成为基础元件,最关键的原因,是运放是一个图灵部件。 运放在电路中最关键的作用,是执行“死循环”,使得模拟电路图灵完备。 死循环 模拟电路也是计算机。模拟计算也是计算。 运放在模拟电路里最重要的功能,就是实现死循环,完成“闭环控制”。 例如在一个开关电源里,运放在其中扮演的,就是精细调控占空比的角色。 通过分压电阻采集目标电压(反馈输入),然后和基准电压(控制目标)进行比较,产生新的占空比电压(控制输出),最后由三角波比较器输出为占空比调制信号。 这样一个 反馈输入-》比较控制目标-》输出控制信号 要变成一个死循环,快速的不断循环。 这个循环,就是由运放执行的。 而且运放执行这个控制循环的速度,是数字电路望尘莫及的。运放执行这个控制循环的速度,就是运放的带宽。 控制速度,不能高于开关速度。而运放的带宽远高于电力电子器件的开关速度。因此绝大多数情况下,我们要降低控制带宽。 降低带宽的办法,不是让运放慢一点,而是修改反馈给运放的信号,让反馈信号慢下来。 但是,运放的带宽实际上并没有下降。如果输入的信号有“延迟”。运放动作太快了,就会振荡。 比如反馈电压低了,运放增大占空比,但是占空比增大后,反馈的电压不能立即反应,需要滞后一段时间。 此时运放就会因为反馈的电压一直很低,而不断增大 占空比。直到最初增大占空比的效果呈现,然后反馈回来的电压就会一下冲过头。此时运放就会反过来立即减小占空比。然后延迟达成效果后,再来个电压过低。 然后运放又增大占空比。 这样来回拉锯,始终不能稳定。这个就是反馈信号有延迟导致的运放振荡。 运放的偿 这个时候,就要进行一次前馈补偿。 所谓的前馈补偿,就是提前把运放 “增大占空比” 的效果给反馈给运放。免得运放认为反馈回来的信号一直不够而继续增大占空比,然后过冲。。。。 在真实的占空比增大带来的反馈电压抬高之前,就提前把“反馈电压”给抬高。使得运放“以为”反馈电压已经正常了,就停止调节。 这个就是运放必须要做前馈调节,而数字控制不需要的原因。因为数字控制可以直接修改算法实现。 但是运放的反馈调节算法是死的,是通过在 “反馈” 这个地方进行劫持来达成所谓的修改控制算法的目的。 运放的补偿,实际上就是个预测器。 提前把运放的输出结果进行预测,然后将预测值叠加在真实的反馈值之上,再送给运放。 这样运放就“认为”条件已经满足,从而停止调节。实现了运放的稳定运行,避免反复调节导致的震荡。 运放的补偿通常由电容和电阻串联构成。 电容的大小,决定了预测多久,电阻的大小,决定预测的结果叠多少回真实值。

December 29, 2025

无传感器感应电机驱动

前言 我很喜欢异步电机。当然特指三相异步电机。如果是单相的,那是一点喜欢不起来。 三相异步电机,如果需要精确的控制,总是需要转速传感器。有了转速传感器,就可以配合滑差率进行闭环控制。 但是,传感器并不总是有的。很多时候,传感器安装不便,有的情况下,也是为了懒惰:没传感器的情况下只需要接3根线。 没有传感器,如何获得转速呢? 在无刷电机里,转子有磁场。有转速就可以发电。于是可以用反电动势大法获得转子的位置——连实时位置都有了,转速更有了。 但是,在异步电机里,如何在无传感器的情况下获取转子速度呢? 电流幅值和瞬时值 异步电机说到底还是交流电驱动的。交流电过去后,就可以测量出电流的幅值和相对电压的相位差了。 电流相对电压的相位差,也就是无功功率的由来。 我们通过测量手段测量出来的,实际上是三条相线的相电流。Ia Ib Ic。在古代电机控制算法里,需要经过一个变换将他变成 Iq 和 Id。但是,这一个步骤,对无刷电机来说,首先需要知道电机的转子电角度,对异步电机来说,首先需要知道转差率。 不如换一种变换方式,首先将他转换为通常意义上的 “电流”,也就是不带矢量的电流。这个电流,就是电功率 P=IU 里的那个电流。三相电虽然电流和电压的大小时刻在变化,但是它的功率是保持恒定的。因此他实际上有一个固定 I 和一个固定的 U. 这个固定的 I 和固定的 U 就是三相交流电的有效电压和有效电流。 这个等效电压,可以通过 占空比∗母线电压/2占空比*母线电压 / \sqrt{2}计算出来,而这个等效电流,如何快速的通过 Ia Ib Ic 计算出来呢? 答案是,通过矢量合成。由于 Ia Ib Ic 是在空间上错开120度的矢量,经过合成,就知道了这个合成矢量的模。 于是 I=2/3∗(Ia2+Ib2+Ic2) I = \sqrt{2/3*(Ia^2 + Ib^2 + Ic^2 ) } 这样计算获得的就是每相电的有效值。 因此,在任意时刻,程序手头能立刻获得的实时数据有: 1:输出电压幅值 2:输出频率 3:相电流有效值 而此时要求得的是,滑差率,从而确定下一个周期的 输出频率。 凭借这4个参数,能否求得滑差率呢? 答案是,不能。 因此,还需要添加额外的参数:也就是所谓的电机参数。 这个额外的电机参数是: 1:定子电阻 2:鼠笼绕组的等效电阻 有了这额外的2个参数,能否计算出滑差率呢? 那么,我们来看,滑差率如何影响电流的幅值和相位。 首先我们知道,定子输入的功率P一部分被定子的电阻消耗,而另一部分不会凭空消失,肯定是转移给了转子。 因此,转子消耗的功率 ...

December 13, 2025

反激电源里 tl431+pc817 组合下对比 Boost 是怎么实现稳压的

以前说过,反激就是隔离的 Boost。 在 Boost 升压电路里,稳压靠的是 一个分压网络和芯片的 FB 引脚。 芯片自动调节占空比,使得 FB 引脚电压被稳定在内部参考电压。从而间接的将输出电压稳定。 在反激电源里,同样也是靠芯片的 FB 引脚反馈。但是此时反馈信号来自 PC817 而不是分压电阻。 pc817 则受 tl431 驱动。 实际上,这里和 boost 拓扑里是一样的。就是比较分压和参考电压。 在 Boost 拓扑里,参考电压是芯片内置的。而在 pc817+tl431 的组合里,这个参考电压,就是 tl431。 tl431 通过控制 pc817 的导通,来间接调控反激控制器的占空比。tl431 流过电流越大,则 pc817 的内部发光二极管 流过的电流也越大。于是 pc817 的输出三极管的电流也越大。 pc817 通常用于将反激芯片的 FB 引脚(芯片会内部上拉)拉低。也就是 pc817 的二极管流过电流越大,反激芯片的 FB 引脚电压就被拉的越低。 反激芯片的 FB 引脚电压越低,反激芯片的 pwm 占空比就越低。 以DK1203为例子,他的 FB 引脚电压在 2.3V-2.5V 之间可以线性的调控占空比 0%-100%。高于 2.6V 芯片进入短路保护,低于 2.3V 芯片进入过压保护。 因此, tl431 可以通过 pc817 直接调控反激芯片的占空比。从而稳定输出电压。 如果将 boost 芯片用于反激,则 pc817 的输出要改成对 FB 进行上拉。 ...

October 21, 2025

电机类型优劣对比

不同电机的优劣对比整理归纳。 先说单相异步电机: 优点: 只需要单相交流供电,供电容易 无需变频器驱动,成本低廉 缺点 无法调速 效率低 有 100hz 的工频振动 再说三相异步电机: 优点: 功率密度大于单相异步电机 同功率下成本低于单相电机(有三相供电的情况下) 转矩恒定,无齿槽转矩波动,无 100hz 工频振动 便于开环控制 缺点: 无三相电源的情况下,比单相电机要多一个变频器的成本 效率略低于无刷电机 功率密度低于无刷电机 再说无刷电机: 优点: 效率高 功率密度大 缺点: 必须搭配无刷电机驱动器使用,成本高 无刷电机驱动器成本略高于变频器 电机有永磁铁,害怕高温 稀土永磁铁转子成本于鼠笼式异步电机转子 永磁体带来齿槽转矩波动 接着说永磁同步电机: 优点: 相比无刷电机,齿槽转矩波动小(三相异步电机理论上无转矩波动,实际有一些) 缺点: 效率略低于无刷电机 正弦波控制器成本高于无刷电机的方波控制 我把无刷电机和永磁同步电机单列出来,因为这俩东西看起来差不多,实际也差不多,遵循的也是同样的原理。 但是,还是有较大的差异,主要体现在绕组上。 无刷电机的绕组一般使用集中式绕组。所谓集中式绕组,指绕组的跨距为1。 集中式绕组跨距小,大大的节约绕组的铜线成本。因为只有嵌入定子槽的铜线才能产生有用的磁场。而在定子槽外面的那部分端线,其磁场是不产生输出的。集中式绕组的端线少,因此成本低。节约的端部铜线成本可以抵消永磁体带来的成本增加。因此无刷电机成本不会大幅高于异步电机,某些情况下可能还低于异步电机。 但是缺点也是集中式绕组带来的:转矩波动大。 因此,改用和异步电机一样的长跨距绕组,则可以大大减小转矩波动。于是就是所谓的永磁同步电机了。 因此永磁同步电机是所有电机类型里成本最高的。 接着说控制器。 只有 异步电机和有刷电机是可以无控制器运行的。无刷电机和永磁同步电机,必须依靠控制器运行。 单相异步电机如果使用变频器控制,则实际成本(相同的轴功率的情况下)会远高于三相异步电机,因此,如果要搭配控制器,则一定不能考虑单相异步电机。 异步电机变频器,无刷电机控制器,永磁同步电机控制器,三者都可以运行在无传感器模式和有传感器模式。下面分别列出优缺点。 其中,算法成本指的就是需要的控制器的运算能力。 控制电路成本指的是为了搭配控制算法而设计的电路的成本。主要是电压电流采样。所有驱动器的功率输出级的成本是一样的。 开环异步 无感闭环异步 有感闭环异步 无感无刷电机 有感无刷电机 无感永磁同步 有传感器永磁同步 需要的传感器 无 无 脉冲输出转速计 无 霍尔传感器 无 单圈绝对值编码器 传感器成本 无 无 低 无 低 无 高 控制算法 简单 极复杂 简单 简单 简单 复杂 简单 算法成本 低 高 低 低 低 高 低 控制电路成本 低 高 低 中 中 高 中 控制效果 够用 好 极好 低速不行 极好 好 好极了 转矩波动 几乎没有 几乎没有 几乎没有 中 中 低 低 其中,无感闭环异步和无感永磁同步,硬件电路成本是最高的。 因为为了达到较好的算法估算效果,需要极高精度的电流和电压采样,并且搭配强悍的 DSP 芯片进行解算。因此实际上是成本大于有感的方案的。只不过某些应用场景下,电机无法安装传感器。例如压缩机内部的驱动电机,其高温高压的环境无法安装传感器。 ...

September 30, 2025

中国人要反对洋奴哲学

作者:张春桥。 发表于 1976年《红旗》第四期. 在社会主义革命和建设中,是坚持独立自主、自力更生,还是推行洋奴哲学、爬行主义,这是马克思主义和修正主义两条路线的原则分歧,是社会主义历史阶段两个阶级、两条道路斗争的一个重要方面。 去年夏季前后,党内那个不肯改悔的走资派在“一切为了现代化”的幌子下,又大肆贩卖洋奴哲学。他公开主张把发展生产、发展科学技术的希望寄托在外国,叫嚷“要拿出多的东西换取外国最新最好的设备”,还说什么“这是最可靠的”,而且是“一个大政策”。 一时,祟洋迷外之风又刮起来了。 国内劳动群众的创造受到议论讥笑,坚持自力更生的革命精神受到非难攻击,似乎坚持独立自主、自力更生不对了,推行洋奴哲学、爬行主义反而有理了。 伟大领袖毛主席指出:“自力更生为主,争取外援为辅,破除迷信,独立自主地干工业、干农业,干技术革命和文化革命,打倒奴隶思想,埋葬教条主义,认真学习外国的好经验,也一定研究外国的坏经验——引以为戒,这就是我们的路线。” 社会的财富是工人、农民和劳动知识分子自己创造的。 在社会主义制度的基础上,我国人民能够发挥出无穷无尽的力量。只要充分发挥人民群众的聪明智慧和创造才能,完全能够依靠我们自己的力量,建设起一个具有现代农业、现代工业、现代国防和现代科学技术的社会主义强国。 与此相反,党内机会主义路线的头子总是鼓吹洋奴哲学、爬行主义,推行一条同独立自主、自力更生完全对立的修正主义路线。他们看不见人民群众的力量,根本否认人民群众创造历史这一马克思主义的真理。他们拜倒在西方资产阶级的面前,甘心跟在别人后面一步一步地爬行,甚至主张卖国投降,靠向外国乞讨过活。 在无产阶级文化大革命运动中,全国人民扬眉吐气,发奋图强,在社会主义建设事业中取得了许多重大的成就。 人造地球卫星按预定计划返回地面,新的石油勘探开采技术的采用,大型内燃机车、大容量双水内冷汽轮发电机组、百万次电子计算机、电子扫描显微镜、各种类型数控机床等新产品试制成功,都表明我们在赶上和超过世界先进水平的道路上正凯歌行进。 我们同党内那个不肯改悔的走资派的分歧,并不在于要不要“四个现代化”,而在于走什么道路,执行什么路线,究竟把社会主义建设的基点放在那里。 毛主席早就指出:“我们的方针要放在什么基点上?放在自己力量的基点上叫做自力更生。”把立足点放在自力更生上,是我们进行革命和建设的一条根本原则,是战胜一切困难夺取胜利的可靠保证。 在革命战争年代,我们依靠自己的力量,依靠全体军民的创造力,打败了日本帝国主义和国民党反动派。 在革命战争胜利以后,我们又在物质条件十分困难的情况下,依靠自力更生,打破了帝国主义的封锁禁运,顶住了社会帝国主义的刁难破坏,独立自主地发展社会主义经济,把一个贫穷落后的旧中国,建设成为初步繁荣昌盛的社会主义新中国。 但是,我们面临的任务仍然是很艰巨的。完成艰巨的任务靠什么?基本的一条就是靠充分动员和依靠广大革命群众。离开这一条,我们就不可能多快好省地建设社会主义。 因此,我们更要自觉地坚持独立自主、自力更生的方针,绝对不能离开这个基点。 我们是社会主义国家,又是一个人口众多的大国,我们既不能掠夺别国人民的财富,也不能依赖任何外国的力量来搞建设。吃现成的要受气,依赖别人是建设不成社会主义的。 只有从本国的实际情况出发,依靠本国人民群众的创造力,充分利用和挖掘本国的资源和潜力,才能在不太长的时间里,建立起独立完整的工业体系和国民经济体系,使我们的国家更能经受风险,立于不败之地。 党内那个不肯改悔的走资派大唱反调,到处叫嚷要千方百计出口,去“换回好多好东西回来”。据说这样就能加快资源的开发,加快工业的技术改造,加快科研的步伐,真是妙不可言。 世上难道真有这样的事吗? 国际上存在阶级斗争,这是不以人们的意志为转移的,工人群众从长期的斗争实践中很懂得这一点,他们说:“我们决不能把社会主义建设的命运系在别人的腰带上”。这句话尖锐地指出要注意被别人卡住脖子,牵着鼻子走的危险。 如果不把立足点放在自力更生上,样样靠引进,为了引进,甚至把发展经济主要立足于国内市场的社会主义原则丢在一边,无原则地以出口换进口,势必造成那么一种状况:自己能生产的无限制地进口;国内很需要的又无限制地出口;买人家先进的,自己造落后的,甚至把矿山资源的开采主权也让给人家。 这样下去,岂不是要把我国变成帝国主义国家倾销商品的市场、原料基地、修配车间和投资场所吗?那里还有什么工业化的速度,那里还谈得上独立自主地发展社会主义经济!这只能作帝国主义的经济附庸。 经济上丧失独立,政治上也就不可能自主。 中国人民在历史上遭受过的创痛是很深的。 一百多年前,清朝洋务派头子李鸿章、曾国藩,不就是鼓吹“中国欲自强,则莫如学习外国利器。欲学习外国利器,则莫如觅制器之器”吗?这伙洋奴汉奸,一味想买外国的“制器之器”,搞所谓“自强”。 结果呢,中国非但没有因此强盛起来,反而越来越深地陷入了殖民地、半殖民地的深渊。 在社会主义建设中,只有把立足点放在自力更生上,充分发挥人民群众的创造力,才能真正赢得高速度。 这已经为二十多年来,特别是文化大革命以来的无数事实所证明。我们的石油工业近十五年平均每年增长百分之二十以上,靠的是自力更生,其速度之快,连我们的敌人也无法否认。 无产阶级文化大革命以来,我们的造船工业的发展速度也很快。 文化大革命以前,刘少奇宣扬“造船不如买船,买船不如租船”,机引进,船买进,眼睛盯着外国的一点技术专利,国产的货轮和船用柴油机长期得不到发展。 在文化大革命中,广大工人群众、干部批判了洋奴哲学、爬行主义的修正主义路线,才改变了面貌。 一九七〇年,上海工人开始打造船工业翻身仗,到一九七五年的六年中,船舶的吨位和柴油机的马力都超过了文化大革命前十七年的总和。 文化大革命前只造了一艘万吨轮,而这六年中万吨级以上的船舶就造了四十四艘。到底是自力更生快,还是搞洋奴哲学快,不是很清楚吗? 党内那个不肯改悔的走资派口口声声说要把国民经济搞上去,却偏偏闭住眼睛不看事实,真是偏见比无知离真理更远! 搞社会主义,首先要坚持正确的方向和道路。 党内那个不肯改悔的走资派,打着把国民经济搞上去的旗号,到处鼓吹只要拿到先进的技术、设备,不管走什么路,用什么方法都可以。 毛主席最近指出:“他这个人是不抓阶级斗争的,历来不提这个纲。还是‘白猫、黑猫’啊,不管是帝国主义还是马克思主义。” 按照党内那个不肯改悔的走资派的一套办,必然把我国经济引向资本主义道路。其实,即使是资本主义国家,完全依靠外国,也不可能真正发展自己的独立经济。 我们是社会主义国家,要有自己的独立的经济体系,只能走自己工业发展的道路。离开独立自主、自力更生,不但搞不成社会主义的现代化,而且会使我们的社会主义国家蜕化变质,复辟资本主义,靠向外国乞讨过活。 苏修就是一面镜子。苏联全面复辟资本主义之后,官僚垄断资本向西方垄断资本买专利权,借贷款,甚至不惜把未开发的资源拿去作抵押。自称有强大工业基础的超级大国,外债却越背越重,从一九六四年到一九七五年上半年,向西方国家乞求贷款竟达一百六十叁亿美元。一手向人家掠夺,一手又向人家乞讨,这是苏修叛徒集团搞假共产主义的一大特色。 我们提倡自力更生,并不是拒绝学习和研究外国的经验,包括好的经验和坏的经验。我们也不是反对引进某些确实有用的外国技术、设备。但是,对待外国的经验以及技术、设备,都要具体分析,加以鉴别,“排泄其糟粕,吸收其精华”,使其为我所用。学习要和独创结合,立足予超。决不能生吞活剥地照抄照搬,不管好的和坏的、成功的和失败的,适合我国需要的和不适合我国需要的,一古脑儿统统搬来。 毛主席历来号召我们,要破除迷信,解放思想,埋葬教条主义,打倒奴隶思想,批判那种认为“外国月亮比中国的圆”的洋奴哲学。因为这些东西是窒息人民群众的革新创造精神、束缚人民群众手脚的精神枷锁。洋教条、洋偶像不扫荡,生动活泼的革命精神就焕发不出来。 那些盲目崇拜外国的人,看不起本国人民群众的智慧和力量,在“洋”人面前矮半截,以为事事不如人,连某些资产阶级思想家都不如。 清代的学者严复就很赞赏“学我者病,来者方多”的说法,不主张生搬硬套,懂得后来可以居上的道理。 我们不能走世界各国技术发展的老路,跟在别人后面一步一步地爬行。 我们要敢于走前人没有走过的道路,敢于攀登前人没有攀登过的高峰。 外国有的,我们要有;外国没有的,我们也要有。 文化大革命以来,许多工厂试制成功的新产品、新材料,有不少就是工人群众发奋图强、土法上马搞出来的。工人们豪迈地说:西方资产阶级能办到的,东方无产阶级也一定能办到。而且办得更好;西方资产阶级办不到的,我们东方的无产阶级也能办到。 党内那个不肯改悔的走资派却把中外资产阶级的东西奉若神物,对于我国人民群众的创造从来看不上眼,只许永远跟着别人爬行。 洋奴哲学、爬行主义有着深刻的阶级根源和思想根源。中国的买办资产阶级从来是帝国主义的附庸,历来奉行洋奴哲学。民族资产阶级先天就有软弱性,既怕民众,也怕帝国主义。它同帝国主义有矛盾的一面,在一个时期里有可能与民众结成统一战线去反对帝国主义,但它又有依附于帝国主义经济的一面,常常屈服于帝国主义的压力,崇洋迷外。 党内走资本主义道路的当权派是党内的资产阶级。 在民主革命阶段,他们就是带着资产阶级的这种劣根性跑进党内来的。进入社会主义革命时期,没有把立足点移过来,仍然代表资产阶级。他们害怕群众、害怕帝国主义的劣根性愈来愈发作,就不能不同广大人民群众处于尖锐对立的地位。 阶级投降和民族投降是一对孪生兄弟。对内搞阶级投降,对外必然要搞民族投降,鼓吹洋奴哲学。 洋奴哲学,是帝国主义长期侵略我国的精神产物。只要阶级和阶级斗争还存在,只要帝国主义还存在,洋奴哲学的幽灵总会在一部分人的头脑中徘徊。 因此,批判洋奴哲学,是个长期的斗争任务,必须反复地进行下去。我们一定要遵照毛主席的教导,以阶级斗争为纲,深入批判洋奴哲学,更加自觉地坚持独立自主、自力更生的方针,加速我国社会主义建设的步伐,把无产阶级专政下的继续革命进行到底。

September 9, 2025

了解反激,驯服反激

序 反激,这恐怕是当今世上使用最广泛的开关电源拓扑了。 学习电力电子技术,就从反激开始。 何谓反激 反激反激,顾名思义,是反过来激发。啥叫反过来呢?意思就是,开关管关闭的时候,变压器才开始干活。开关管关闭了,变压器主绕组上都没电流了,变压器才开始干活。 这没电流了才想起来该干活了,所以是反着的。故得名反激。有反必有正,故而必有一个正激来对应。 为何要反过来干活 其实开关电源最先诞生的拓扑绝对不是反激。可能是正激,也可能是推挽。 正激变压器其实更容易理解,因为他就是按照变压器的定义工作的。正激变换器拓扑可以看成是隔离版的 Buck 降压电路。 所以,反激也可以看成是隔离版的Boost升压电路。 因为,反激和 Boost 升压的一个共同点是,都是在开关管关断的时候,才能对外输出能量。 因此,反激之所以要反过来干活,其实他脱胎自 boost 升压电路。 在 Boost 变换器里,开关管打开的时候,输出二极管截止。输入电压全部施加在电感上,对电感进行充能。随着时间推移,电感上的电流越来越大。 如果电流大到突破电感的饱和值,电感就会突然失去电感特性,变成一条导线,于是短路炸机。好在,控制器不会允许电感电流突破饱和值,而是适时的关闭 开关管。 因为电感电流不能突变,因此电感的电流需要寻找突破口继续流动。于是就会击穿 输出二极管,对输出电容进行充电。直到开关管下一次打开。下一次打开前,电感电流要么已经归0,要么还有剩余电流。 而在 反激变换器里,其实这个过程由变压器的两个绕组分别在不同的时间不同的空间完成。 开关管打开的时候,次级的二极管截止,次级线圈没有电流。输入电压全部施加在初级线圈上,对变压器进行充能。随着时间推移,初级线圈上的电流越来越大。 如果电流大到突破变压器磁芯的饱和值,变压器就会突然失去感抗,变成一条导线,于是短路炸机。好在,控制器不会允许初级线圈电流突破饱和值,而是适时的关闭 开关管。 但是此时,电感电流不能突变的定律就不再适用了。其实电感电流不能突变不是铁律,真正的铁律是磁通量不能突变。为了维持磁通量不变,电感的电流才不能突变。 如果铁芯上绕有2个绕组,那么另一个绕组立即产生电流,也可以维持磁通量不变。 而次级绕组上的二极管,恰恰会在初级的开关管关闭的时候,允许电流通过了。于是,为了维持磁通量不变,次级立即会产生 N倍于初级关管时刻电流的电流。这个 N 取决于变压器线圈的匝比。 这就是所谓的 安匝平衡。 所以,反激和 Boost 升压的一个改进之处,是它输出有了一个N倍的电流放大,这导致了输出有了 N 倍的电压下降。于是反激相比 boost 升压电路,反而可以因为这个变比实现降压。 然后是输出又另一个线圈完成,于是输入输出就电气隔离了。 相比正激的优势 任何变压电路,都需要电感的参与。正激是隔离版的 Buck 。但是,他的变压器不是电感。他的变压器只是实现了电流的比例变换。变换后,还需要电感“续流”才能实现完整的回路。 也就是说,在正激变换器里,变压器+开关管,只是实现了非隔离 Buck 电路里的 “开关管” 的功能。另一个电感,还需要存在以维持开关管关闭的时候的输出。 所以,在正激变换器里,需要一个变压器变压,同时输出还需要有一个电感。 而反激变换器里,变压器同时承担电流放大和电感的功能。因此,反激变换器相比正激最大的意义,就是省去了一个输出侧的电感。 从而极大的降低了成本。 反激的劣势 反激的优势是便宜,而劣势则是漏感带来的能量损耗。理想的变压器当然没有漏感。然而现实中的变压器有。 意味着初级的开关管关断的时候,并不能100%的将能量转移到次级。 这部分不能转移到次级的能量,继续推动初级线圈的电流运动。然而此时开关管已经关断,于是电感的电流没有续流路径,反而会形成一个尖峰电压加在开关管上。 为了吸收这部分能量保护开关管,就需要一个由电容电阻构成的吸收电路,通过发热消耗掉漏感能量。 因此,反激的第一个劣势,就是变压器漏感一定会产生能量损耗。这部分损耗和初级线圈电流的平方成正比,和初级的漏感成正比。 电流越大,漏感导致的能量损失就越大。 因此反激一定要限制初级的峰值电流。也就限制了整个电源的功率不能太大。 元件参数的计算 在反激变换器里,最关键和最难的是变压器参数的计算。 反激的变压器,不单单是变压器,他还是电感。因此,反激的变压器,不能只看匝数。还得看电感。 因此,反激变换器里,变压器的几个关键参数需要设计阶段进行抉择: ...

May 24, 2025

记录使用 GP8891CAS 时踩的一个天坑

序 任何一个家电,必须得有一个低压供电电源。 要获得一个低压供电,通常的做法是接一个开关电源。 但是,外置的电源徒增成本。而且显得很不专业。最好的办法就是在 PCB 上集成一个供电电源。 想起来前年我刚刚入门硬件设计。做了一个 低压变频器。 到去年年初的时候,开始尝试制作 220V 市电版的变频器。事情见 这片文章。 那时候,我是不懂 ACDC 变换的。因此电路板上低压供电,是由电源模块实现的。 比如当时的照片 可以看到 画面中有2个 电源模块的位置。 没错,还得用俩电源模块。分别供应高压侧的栅极驱动,和低压侧的单片机。 而且还分别是 220V转 12V 和 220V 转5V 。虽然两个模块并不贵。三块多一个。但是,加起来也有七块钱了。 而且还让我的设计不紧凑,使用了外挂电源模块。显得很不高级。 后来,我改进了设计。因为我绘制低压的时候,经常就使用 32V转5V的 DCDC 电路。 因此,我使用了 DK501 这款能直接从 DC310V 经过 Buck变换降压到 12V 的芯片。 还是熟悉的 Buck 电路。 但是, Buck 降压是非隔离的。为了给单片机供一个隔离的电,我还是使用了一个 12V转5V的隔离电源模块。 这样让板子的外挂电源从2个变成了1个。。。。 FlyBuck 方案 我发现,要设计好电路,一定要先学会电源。没有电源任何事情都办不成。 于是我开始在看 B站上长江大学的唐老师的视频。唐老师是长江大学的老师,专门教电源电路的。他出了几百期视频,大部分就是在讲解 Buck/Boost/SEPIC 这类 DCDC 电路。 看了几百期视频,我才了解到,有一种廉价的隔离电源的方案,叫 FlyBuck 。 就是把 buck 电路的电感换成2个绕组的共模电感。 这样在共模电感的另一个线圈,就能直接获得一个同样电压的隔离供电。 于是,这就是我后来改进的方案了。后来这个方案被用在了 ACBuck 电路里。 ACBuck 使用 DK501 从 整流后的 310V 直流电直接 BUCK 降压到 12V, 但是,使用的 flybuck, 偷偷的把电感换成了共模电感。于是在主回路获得非隔离的 12V, 在另一个绕组获得隔离的 12V。 然后 12V 经过降压获得 3.3v 给单片机使用。 ...

May 13, 2025

设计一个 3V - 100V 超宽压输入,15V 输出的电源

DCDC 的困境 在设计一个电机控制器的时候,遇到了一个多电压的问题。 首先是单片机,需要 3.3V 供电。然后是传感器,需要 5V 供电,最后是栅极驱动,需要 15V (其实是 10-18V 都行 )供电。 如果使用降压 DCDC 的方式获得这些电压,意味着这个电机控制器,最低需要 15V 供电。 这样,就不能适应广泛存在的电压标准:12V。因此,使用降压的方式获得这些电压,通常意味着设计输入电压为 24V 和以上。 如果是 12V供电,则需要升压到 15V。如果想实现同时支持 12V 和 24V 供电,做法有两个。 - 使用 升降压 方案。需要4个MOS管,成本略高。 - 输入先降压到 5V, 然后升压到 15V。 降压后升压或者升降压的方案,意味着板子可以支持 6V 12V 24V 三个电压等级的应用。 但是,如果是单锂电池供电呢?则需要支持到 3V 输入。如果先降压到 3V, 则3V 到 15V 的升压倍数较大。Boost 变换会较为吃力。 可以先选择升压。3V 先升压到 16V。 然后 从 16V 降压到哦 15V 和 5V。如果输入超过 16V , 则前级的 Boost 芯片停止工作,直通到后面的 降压 15V 的芯片。 ...

May 2, 2025

直流 UPS 功能的电源

恒流恒压模式和电池的充电原理 开关电源分恒压模式,和恒流恒压模式两种。区别就在于,负载消耗的电流超过了电源的供电能力时电源的应对策略。 恒压电源会立即切断输出进入保护模式。可能可以经过一段时间的等待后重新打开输出。即 “打嗝模式”。而恒流恒压模式下,电源会减小输出电压,直到负载消耗的电流小于设定值。适用于负载电流会随着电压的降低而降低的情况使用。例如,充电。 电池是一个电压源,它自身的内阻极小。因此,如果外部电压低于电池,电池就会放电,以稳定电压。如果外界电压高于电池,电池则会充电,以稳定电压。 充电电流的大小,可以用 (电源电压-电池电压)/电池内阻 计算。而电池的内阻极小,电压会随着充电进行逐步提升,因此充电器需要有“恒压恒流”模式。 首先输出电池的满电电压,然后设定一个最大的电流。和电池并联后,开关电源的电压大于电池电压(除非是满电状态)再加上电池内阻很小,充电器会输出一个很大的电流。此时充电器立即进入恒流模式。降低输出电压,直到电流等于设定的电流就不再降低电压。 同时并联运行负载和对电池充电 如果负载消耗的是 直流电,那么将电池逆变成 220v 然后再由负载的电源转换为直流电,这对电池存储的能量无疑是巨大的浪费。而且电池的容量非常昂贵。因此,在低压系统里,最佳的 UPS 实践方法,是直接并联一组 12V 电池进行供电。当开关电源的输出消失,就是电池立即填补输出的时候。 但是,在 直接并联电池当 UPS 的12V 低压供电系统里,如果使用 12v 恒流恒压电源直接对负载供电并且并联一个电池,则无法控制电池的充电电流。 只要电池未进入涓流充电模式,那么电池总是倾向于吃完电源的输出电流。迫使电源进入恒流模式。 因此,充电电流总是会被动的设置为 充电器的输出电流 - 负载消耗电流。 如果负载消耗的电流是一个定数,倒是可以设定 充电器的输出电流=负载消耗的定数电流+期望的充电电流。充电器的输出电流 = 负载消耗的定数电流 + 期望的充电电流。 然而,现实中,负载的电流消耗总是波动的。而如果负载消耗电流波动较大,例如负载最大可消耗 10A 电流的情况下,就需要设置恒流 10A输出。这意味着电池最大必须接受 10A 的充电电流。必须假定负载有可能不消耗任何电流。而如果不配置 10A 的充电器,那么可能会在极端情况下,即使没有停电也会导致电池越用越没电。 因此,我们需要设计一种特殊的充电器,它只有一路 12V 输出,电池和负载并联到一起。但是却可以同时监控负载和电池的电流。总输出进行恒压恒流模式的同时,对冲入电池的电也加恒压恒流模式。 它的输出电压会维持在恰好满足负载的供电,并且对电池进行恒流恒压模式充电。也就是说,如果设定充电电流为 1A 。那么充电器会恰好输出电压使得电流 = 1A + 负载消耗电流。如果电池已经进入恒压充电阶段,则正好输出电池满电电压。即便负载的电流从 0A 到 10A 变化,也不会用更大的电流对电池充电。 这样的 UPS ,在电池亏电的情况下,就不会盲目的以最大电流模式输出,以期电池能吸纳剩余电流。也不需要特意配置一个小功率充电器限制电池充电电流又导致极端下电池边充边掉电。 而是可以恰到好处的按设定电流充电,而不管充电器本身的电流输出能力是多少。 实现原理 UPS 的原理是: 充电器为两路并联的 12V 输出。2个输出在内部是并联的,由同一个变压器绕组供电。 电池和输出实际上是并联的,因此停电后,电池会立即放电为负载供电。中间没有任何切换延迟。 同时进行电池限流的原理是: 输出虽然是并联的,但是使用了2个采样电阻分别采样两路输出的电流大小。 整个电源的输出部分,就有 恒压反馈,负载恒流反馈,电池恒流反馈,这三个负反馈控制环路。 ...

April 24, 2025

变频器原理和设计指导

从 Buck 降压电路说起 上图为一个基本的 Buck 降压电路。 Q1 和 Q2 是互补的两个 MOS/IGBT 管。 所谓互补,是两个同时只有一个会导通。要么是 Q1 打开,要么是 Q2 打开。 Q1 关闭的时候, Q2 必须打开。Q1 打开的时候,Q2 必须关闭。 Q1 和 Q2 可以使用一个 PWM 信号控制。 那么 pwm 信号的占空比,就决定了 Q1 打开的时间占比。也就决定了 OUTPUT 输出端的电压占 总 电压的比。 OUTPUT 处的电压 = VCC * pwm 占空比。 记住这个。 两路 Buck 降压电路 将上述降压电路复制成2份,就构成了一个逆变器。 为何呢? 看图 两个 Buck 电路,输出 OUTPUTA 和 OUTPUTB 。 如果 OUTPUTA 的电压 > OUTPUTB 的电压。那么对于接到 OUTPUTA和OUTPUTB的负载来说,电流就会从 OUTPUTA流出,经过负载后,流入 OUTPUTB. 如果 OUTPUTA 的电压 < OUTPUTB 的电压。那么对于接到 OUTPUTA和OUTPUTB的负载来说,电流就会从 OUTPUTB流出,经过负载后,流入 OUTPUTA. ...

April 19, 2025

防启动浪涌电流设计

启动浪涌 在许多用电设备里,都要配置一个巨大的储能稳压电容。 这个大电容会在设备启动的瞬间,吸收巨大的充电电流。形成浪涌。 为了避免浪涌电流,需要限制充电电流。一个典型的做法是使用 NTC 电阻。 NTC 电阻初始电阻较高。工作一段时间后电阻值下降。这样就以较低的成本解决了开机浪涌电流。 但是 NTC 毕竟不是导线,高温下电阻仍然有一些。对效率不利。 而且关机后立马插电开机,则 NTC 温度较高,当时电容却是空的。此时防止不了浪涌。 因此,通常的做法是使用继电器防浪涌。 插入插头的时候, 外部电源通过 R3 电阻 对 C1 充电。 等 C1 充满后,Q1 打开,继电器吸合,旁路掉启动电阻。 不过,都用上继电器了,使用 单刀双掷的继电器其实并不增加成本,反而还可以多一个功能:下电自动进行电容泄放。 如图: 一开始,继电器3 5 脚常闭。 2 5 脚常开。 于是,上电后,电源通过 R3 对 C1 充电。 C1 充满后,控制信号控制 MOS 导通,导致继电器吸合。 继电器的 3 5 脚断开, 2 5 脚闭合。 这样 R3 就被继电器旁路了。 断电后,继电器由于停电自动断开。 2 5 脚断开,3 5 脚自动闭合。 此时 C1 电容通过 R4 电阻进行释放。 也就是,实现了掉电自动对 C1 进行释放的机制。

April 19, 2025

DMA 大幅降低 SVPWM/SPWM 调制的 CPU 占用

S(V)PWM 和 DMA 在变频器里,FOC 通常使用 定时器 输出 PWM 实现。 通常来说,需要在每个 PWM 的益出中断里,重新计算三路输出的 PWM 占空比。 如果使用非常高的pwm频率,那么 pwm 的中断将非常频繁。这对于 cpu 时钟并不高的单片机来说,会极大的降低 cpu 处理其他业务逻辑的能力。 而这个问题,在使用 “同步调制” 的方式下,有一个很好解决的办法。 在同步调制下,载波频率随着输出的频率变化而变化。这意味着,pwm 的占空比实际上是周期性发生的。 比如使用 1:360 的同步调制下,每个 sin基波由 360个pwm方波构成。意味着,每隔 360 次,pwm 占空比就会重复。 因此,如果预先分配一个 360 份的 pwm占空比。然后使用 DMA 搬运 pwm占空比到 TIM 定时器。则整个 spwm 过程中, cpu 都不再需要参与。 如果需要改变输出频率,则 cpu 只须调节 pwm 的频率,甚至不需要更新 DMA 的数据。 直到 pwm 频率已经不适应输出频率,直到发生“换挡” — 切换调制比。 每次切换调制比的时候,就需要重新生成 pwm占空比序列,然后重新设置 DMA 控制器。 而且,三个 pwm 通道可以使用同一份 pwm 占空比循环数据。只要初始运行的时候,使用不同的起始地址。

April 14, 2025

简谐运动 和 CNC 运动插补

数控机床的基础知识 机床每个轴的伺服电机,期望输入的是步进信号:一个脉冲信号和一个方向信号。 因此,机床的运动控制器,需要将程序中的移动指令,转换为多个轴的步进信号。 例如一个分辨率为 0.001mm 的机床,控制器每发送一个脉冲信号,电机就旋转一个小角度,通过传动系统后,体现为主轴移动了 0.001mm。 对多轴联动机床来说,程序中的移动指令,要被控制器分解为多个轴的移动。然后控制器需要精确的控制每个轴的步进信号,使得多个轴可以协调运动,完成所谓的多轴联动。 例如程序指令是将主轴从 (0,0,0) 坐标移动到 (0.1,0.2,0.3)。那么控制器需要在 X 轴发送 100 个脉冲,Y 轴发送 200 个脉冲,Z 轴发送 300 个脉冲。 不仅仅是要发送这几个脉冲,而且要确保,这几个脉冲的间隔时间正好是 3:2:1 , 于是 X 轴发送 100 个脉冲,Y 轴发送 200 个脉冲,Z 轴发送 300 个脉冲 花费的时间恰好相等,这样,机床主轴在伺服电机的驱动下,就可以让主轴沿着直线从 (0,0,0) 坐标移动到 (0.1,0.2,0.3)。 过去,数控机床只能实现两轴联动。例如 将主轴从 (0,0,0) 坐标移动到 (0.1,0.2,0.3),机床需要分解成2个步骤执行。 首先抬起主轴,也就是 将主轴从 (0,0,0) 坐标移动到 (0,0,0.3)。 接着移动主轴到 (0.1,0.2,0.3)。无法实现三个轴同时运动。 这种机床,现在已经非常罕见了。人们形象的称呼其为 2.5轴机床。因为物理上有三个轴,但是只能2个轴实现联动。 不过控制器限制下的 2.5 轴机床虽然少见,但是将3轴机床当 2.5轴使用却还是主流。比如 3D 打印,就几乎只需要两轴联动。虽然实际上它的控制器是完全支持3轴联动的。 为了加工复杂曲面,机床会额外引入 3个旋转轴中的2个。三个旋转轴记为是 A B C 轴,分别对应在 X Y Z 轴上的旋转。由于主轴的刀具自身就在旋转,因此通常 主轴所在的轴是无意义。因此只需要2个旋转轴。通常主轴是在 Z 轴上,因此一般而言立式加工是 A B 两个旋转轴,而卧式加工的主轴是水平放置的,因此通常会使用 A C 轴 或者 B C 轴。 ...

March 7, 2025

极坐标在三相电力系统中的计算优势

在三相电力系统里,我们有三个相位差 120° 的火线。于是,也就有了三个相位差120°的电压和电流矢量。 三相平衡的前提下。对这个三相的电压电流矢量进行计算的时候,为了方便计算,会用到 park 和 clark 变换。目的是转成2个互相垂直的矢量。需要考虑的矢量个数,就从3个降到了2个。 但是,如果引入 极坐标系统,那么三相平衡的前提下,这3个电压矢量,就可以在极坐标下,合成为一个电压矢量。3个电流矢量,在极坐标系下就可以合成为一个电流矢量。 并且二者可以使用同一个坐标系。不需要专门引入一个旋转的坐标系。当然,就算要引入旋转坐标系,在极坐标系体系里,在原点旋转只需要一个加法。因为在三相平衡的条件下,电压和电流矢量都是从原点开始的。 在极坐标下,三相电压可以描述为 ( Vmax ,θv)。其中 Vmax 是相电压最大值,而 θv 为相位。 同理,三相对称电流也可以描述为 (Imax, θi)。其中 Imax 是相电流的最大值。而 θi 为相位。 虽然最终用于描述的变量都是2个。在 直角坐标系下,经过 clark 变换后, 电压也是描述为 (Ualpha , Ubeta)。 但是极坐标体系对计算过程更友好了。 比如,判定功率因素,只需要将 电压和电流的 相位相减,然后求余弦即可。 比如,计算有功功率,Vmax*Imax*cos(θv - θi)。。 在 foc 的控制中,我们主要的控制目标,就是 让 θi - θe = 90°。其中, θe 为转子的电角度。控制方式为调整 θv 相对 θe 的提前量。范围是 (θv - θe) ∈ [90°, 180°)。 本环应该采取慢速环。控制带宽应该低于电机的转动惯量。以免电流测量带来的 θi 高频波动影响 θv。 其次对扭矩的控制,我们主要控制 Imax = Iref 即可。而电流属于间接控制。其内环是 电压环。 电压环的控制目标,就是 Vmax。控制 Vmax = Vref 即可。 ...

February 26, 2025