菜菜博士

博士在网络的家

被销售绑架

在芯片销售行业,有一个怪现象。买芯片的人是孙子。 在线的电子元件商城是行业老鼠,属于行业灰色地带(只是被业内人士定义为灰色。实际上100%合理合法的白色产业)。 不仅仅买芯片的时候是孙子。在研发 pcb 的时候,更是孙子。需要找芯片厂求来芯片手册。没有手册,就算买到芯片了也用不起来。 芯片的价格是卖方市场。能打几折买到芯片,就决定了最终产品的竞争力。因此为了赚钱,买方要无下限跪舔卖方的...

FlyBuck的限制

在 这篇 文章里,我夸奖了 flybuck 拓扑结构。 不过,在实际使用的时候,发现 flybuck 并没有想象中那么美好。 第一点,flybuck 并不是任何 buck 芯片都能工作。而是只有能工作在强制 CCM 模式的 同步整流buck 芯片才能工作。 因此只有 Ti 的寥寥数个芯片,被打上了 FlyBuck 标志的才能用在 flybuck 上。而因为 FlyBuck 是 Ti 的商...

LLC 真的是天才发明

开关电源 传统上,交流电通过一个巨大的变压器进行变压。因为交流电通过磁耦合的方式传递能量。传递能量的频率为交流电的频率。每次传递的能量取决于变压器铁芯的磁通量。磁通量从最大到最小,最小到最大, 经历一次能量传递。 变压器要增大功率,要么增加磁通,要么提高频率。显然工作在50hz交流电下的变压器,只能选择增大磁通的方式增加功率。由于材料能承受的磁通量密度是有上限的。过大的磁通密度会饱和。所...

变频器制作-第12部分 电源,还是电源

说到供电 一个变频器,需要4组电压供电,分别是 DC 300V, DC 12V, DC 5V, 隔离 5V. 300v 是高压, 12v 和 5v 乃低压。 只不过, 12v 和 5v 和 300v 的高压,负极是连到一起的。因此,这个负极,是不安全的负极。这个负极,是整流桥的负极。这个负极会有一个对地的脉动电压。 其中, 300V DC 由一个整流桥 + 一个 LC 滤波器获得。 ...

变频器制作-第11部分 pwm模式用对了吗?

话说高级定时器 不管是 AT32 还是 CH32 还是 EG32 还是 GD32 还是 RP32. 各种 32 单片机,都是使用的 防STM32 的外设。 因此,他们都会有一种叫“高级定时器”的设备,用来产生多路互补PWM波。 在高级定时器的设置里,能产生的波形是以下机制的排列组合 计数器模式 向上计数溢出置0,向下计数到0重置,向上然后向下计数。后两者称为中央对称...

变频器制作-第十部分 6pwm和死区时间

3pwm vs 6pwm 三相桥需要6个开关管。控制6个开关管需要控制器输出六路pwm信号。 这将占用单片机6个 IO 口。考虑到 pwm 信号控制的开关管中,上下管是交替导通的。也就是所谓的互补。 因此在一些场景下,也可以使用 3pwm 模式控制6个开关管。 3pwm的信号控制3个上管,对应的下管控制信号由一个反相电路生成。 咋一看,似乎节约了3个IO引脚。诞生 3pwm模式有一个重...

220v 逆变器大功告成

起 在 这篇 文章里,我被风扇厂的老板教育了成本控制。 思来想去,我发现还是有必要制作 220v 的变频器以降低对电机的要求。 经过数次炸板改版后,最终在今天制作完成了。听到家里 220v 的电机,而不是自己改绕的电机,也发出了熟悉的 vvvf 音乐,心情还是非常激动的。 制作 首先, 220v 属于强电,而单片机实验 3.3v 属于弱电。强电和弱电需要隔离。 我首先想到的是使用光...

单片机也能支持 co_await 协程啦

序 在 这篇文章 里,我为单片机编写了一个简单的 executor。 然后利用这简单的 executor, 再搭配 Duff’s device 就用上了 stackless coroutine 了。 但是,Duff’s device 也有其缺陷。最明显的就是,在 ASIO_CORO_REENTER(this){ xx } 的函数体里,无法定义变量,也无法使用 switch 指令。 这挺...

准备制作直流UPS

问题 现在很多需要停电维持工作的东西,其实都是直流供电的。比如监控。比如树莓派,比如路由器,比如光猫。 在万能的宝上搜索直流UPS,是能找到一些现成的产品。 但是,统统不是我设想中的那种工作方式。 我设想中的UPS,既不是后备式,也不是在线式。 后备式UPS,在市电正常的情况下,电池处于充电状态。当检测到市电故障,则立即将输出切换到电池。 在线式UPS,电池一直处于边冲边放状态。负...

编译期对象构造优化 .bss 为 .rodata

问题 为了提高性能,我编写了一个查表法算 sin 的函数。为了适配不同 ROM 大小的 mcu, 这个表还有大有小多个版本。最大的表,里面有 1800 项,因为是保存的 0-90度的 sin 指,因此分辨率达到了 0.05度。 而且,为了进一步提高性能,表里存放的,并不是 float, 而是我自己编写的定点数 float_number。 问题就出在这个float_number 上。 ...

让 PlatformIO 支持 EG6832

近来做变频器,也研究了不少mcu。让我的代码移植到了 ESP32, ESP32S3, ESP32C3, RP2040, STM32F405, AT32F415, AT32F421。 这些 mcu 都有一个共同点: platformio 支持。其中 ESP32, ESP32S3, ESP32C3, RP2040, STM32F405 受 platform 官方支持,而 AT32F415, AT...

PCB和芯片

进来做变频器,画了不少 PCB 板子。突然发现画 PCB 和芯片设计,有极大的共同点。 先说走线和分层 现时 PCB 上的元件,主要以表面贴片为主。元件浮于PCB表面。特别是,我为了节约打样成本,使用的都是单面贴片工艺。更像芯片了。元件只集中于pcb的一个表面。然后线路在 pcb 和 pcb 的另一面。 如果把电路板倒过来,让贴片元件朝下当“底面”,那就是 元件为底层,上层为走线层。 ...

三相的恒功率优势

在 这篇 文章里,我曾经说,三相电是恒功率的。 现在我用一张更直观的图演示这个结论。 因为电压*电流=功率。所以图片里是使用的纯电阻负载的功率。 每一相的功率,总是会不断的从 0 到最大,然后从最大到 0. 所以这就是单相电娘胎里带来的劣根性: 每秒钟有100次的功率变化。而且最低是无功率输出。 但是,如果是三相,情况就发生了变化。虽然每相还是会不断的变化输出功率,但是三者的和...

foc速成班

前言 在我开始研究 foc 的时候,所有的书籍都在介绍 park 变换和 clarke 变换。有一种魔力告诉你,没这俩变换,就写不成 foc. 然而事实的真相并不是如此。 foc 要控制什么 首先得了解,在 foc 发明前,电机是如何控制的? foc 发明以前,无刷电机采取的是六步换向法。电机每旋转60度,控制器就要进行一次“电子换向”。控制器输出的,是同一时刻 只有2条线有输出的方...

变频器制作-第九部分之ESP32C3 也能输出svpwm

前言 先看以下乐馨官方的 ESP32S3 和 ESP32C3 的对比 很明显,ESP32C3 缺乏 MCPWM 设备。 所谓 MCPWM, 就是专门为产生svpwm设计的电路。他能产生6路互补的PWM信号,并且实现中央对齐。然后还能实现在PWM信号的特定位置产生同步事件。app据此可以在这个同步事件上实现电流采样。 一度我以为 ESP32C3 是无法用于驱动电机的。 直到一次偶然...

标准库 sin 之错

标准库 sin() 在 C 语言里,有一个计算三角函数的函数, sin() , 其定义为 double sin(double) 由于 sin 的结果大概率为无理数,所以使用 浮点数为参数也未尝不可。 但,我要说但是了。 在工业界,不管是土木工程还是机械制造,我们都倾向于使用“角度”而不是”弧度“。 转换一下很困难? 如果所有的程序都在干角度转弧度这件事,那只能说明库错了。库逼迫大...

制作变频器-第八部分

载波比得多少合适 在 上一篇 文章里,我讲解了同步调制和异步调制。 那时候,实现的同步调制是有问题的。主要在同步调制在载波比的计算上出了问题。 原来的想法是,载波比是要能被3整除。同时还得是奇数。 其实这个公式说的是,正弦波半周上的 pwm 波的数量,得是能被3整除。同时还得是奇数。 也就是说,其实整个周期的载波比,是能同时被6整除. 同时还得是2的奇数倍。 于是发现了代码中的错误...

单片机的行业怪病

从单片机的存储空间说起 别说市面上没有几百家也与几十家的单片机品牌。就是同一个单片机厂家,其单片机型号也是十分繁多的。 这些名目繁多的单片机型号,归根结底,是 核心性能,存储容量,和封装引脚 数量的排列组合。 其中,存储容量是极为关键的区分价格的因子。核心性能,都会划分为 低性能,主流性能,高性能。存储容量也会分成小容量,中容量,大容量,超大容量。 但是,即使是低端低性能单片机,如果...

制作变频器-第七部分

从第一次烧变频器说起 第一次烧变频器,也是第一次绕电机。 由于没有供实验用的小功率低压异步电机。所以只能买一个现有的,利用它的外壳,转子,定子。而替换掉它 的线圈。不就可以了? 于是说干就干。买了一个落地扇电机。主要是他小,而且便宜。糟蹋了不心疼。 然后 拆! 绕好后的效果就是这样 然后,绕好的视频演示 BV1mg4y1o7rF 然后,mos管就烧了。 研究问题根...

制作变频器-第六部分

从多任务说起. 前序日子,都在进行核心代码的开发。终于最近进入了 UI 界面的开发了。 虽然叫 UI, 但是其实并没有窗口。也没有命令行。 而是几个 LED 灯 + 一个旋钮 + 一个红外遥控器。 这些也算是能和用户交互了,所以,算UI没什么问题吧? 一旦进入 UI 的开发领域,马上就遇到单片机的一个掣肘了: 没有操作系统。 为什么UI需要操作系统呢? 因为 UI 是由多个子任...