- 博客(77)
- 收藏
- 关注
转载 【电机控制simulink仿真#2】BLDC(二):六步换相系统搭建
输出的数据决定输入,而输入的数据又反过来影响输出,这个相互的过程,如果没有传播时间条件,则必然有同一时刻某个量拥有两个值。时序系统中,如果输入与输出相互联系,但整个系统环路没有任何延迟,将很有可能形成。我们是通过霍尔传感器的位置信息,进行120度除以及磁极运算后,得到的霍尔相位。而我们使用的是增量式霍尔传感器,给的是过程量,所以必须进行。根据表格,我们的换向逻辑用角度表示应该为,[1 0 0 0 0 1] A相上桥、C相下桥打开。[0 0 1 0 0 1] B相上桥、C相下桥打开。
2025-08-06 01:44:16
7
原创 【嵌入式电机控制#25】BLDC : 速度环控制
此章代码比较复杂,这里给出速度环的程序+控制算法框图。请对注释进行代码理解、实操后,在回来看框图回忆。
2025-08-05 16:37:58
149
原创 【嵌入式电机控制#24】BLDC:霍尔测速(高难度,重理解)
前面我们实现了霍尔传感器检测转子位置、改变导通策略的换相方法,但是无刷电机自身存在着难以直接消除的非线性。也就是说,我们无法保证给定占空比后的速度是准确的,这个时候我们就必须。此部分开始,将会进入电控算法中代码整体的部分,这不是代码本身造成的,而是无刷控制逻辑本身需求就很高。后面做FOC使用了SDK库,工作量将会减少很多。
2025-08-04 14:17:08
858
原创 【电机控制Simulink仿真】BLDC(一):三相逆变系统的建模
电控算法工程师除了需要在ARM等控制器上进行算法编写、底层调试,还需要会在MATLAB平台中对电机系统建模进行仿真。本专栏将着重讲解PMSM、BLDC 以及 广义伺服系统的Simulink仿真设计。若不理解BLDC工作原理,请跳转嵌入式实践教程分享:Simulink实际上是MATLAB中的一个工具,用于控制设计、机械设计等对可视化要求较高的环境下。MATLAB以及Simulink的安装请各位自行搜索,本文使用2020b版本的MATLAB进行演示,版本之间界面操作有区别,还请各位仔细权衡。
2025-08-03 01:51:58
927
原创 六步控制项目分享:面向飞机\船舶\车载\工业环境下的发动机散热系统
例如:当缸体温度超过 100℃时,PID 控制器输出占空比提升至 80%,风扇与水泵转速同步提高 30%,增强散热能力。飞机发动机散热系统采用六步控制的 BLDC 电机作为核心驱动部件,针对发动机工作时产生的大量热量,通过精准调控散热风扇和冷却液泵的运行状态,维持发动机在适宜温度区间(80-110℃)内稳定工作,保障动力输出效率与设备寿命。发动机启动后,系统默认进入预热模式,BLDC 电机以 30% 额定转速运行,风扇低速送风、水泵小流量循环,避免发动机因骤冷骤热产生应力损伤。3. 轻量化与防护。
2025-08-02 00:31:15
354
原创 【嵌入式电机控制#23】BLDC:开环运动控制框架
此章对上节内容进行补充,增加了调速、刹车充电一体化等运动控制功能,是后续机器人、飞行器底层驱动编写的基础,此框架务必熟悉。
2025-07-31 20:15:26
175
原创 【嵌入式电机控制#22】BLDC:六步换向开环驱动
接下来讲述如何进行六步换向的开环控制,此章节代码于上节有明显区别,务必仔细甄别避免烧毁电机。此外,由于Cube不是一个单独针对控制算法代码的生成平台,所以后面有些底层细节需要手动调整。一、Cube初始化配置(1)初始化ShutDown引脚,记住高电平为开启,低电平为关闭其中,输入滤波器和延迟参数,需要根据实际情况调整这里注意,需要修改配置代码中的PWM配置为OC配置。PWM配置中,波形占空比会存在预装载,这会导致我们每一段PWM开头的脉宽是不确定的。
2025-07-31 09:52:55
442
原创 【嵌入式电机控制#18】有刷直流串级控制
接下来介绍位置速度电流三闭环系统的控制框架,// ADC结果,电压结果,adc电流值初始化{ //距离环中断//计算计数器绝对计数值//进行距离PID//获得了速度占空比//速度占空比不能超过设定最大值//速度环中断//这里不能用获取counter再清零的方式算转速,因为我们还要算绝对位置//所以用两次绝对量做差算速度//计算实际转速 脉冲总数/PPR/减速比/倍频系数 * 频率 * 单位换算//进行速度PID计算else。
2025-07-29 23:53:14
630
原创 【嵌入式电机控制#17】电流环(四):电流闭环控制
但不代表这个系统设计能有效调节所有电机系统,我这里只给了一个方法论,在大型产品研发过程中,控制算法工程师常会利用自己的控制理论、嵌入式、数学等知识设计新的算法。前面介绍了很多电流相关的代码,内容比较乱,但其实是循序渐进的,这里整理出电流闭环控制所需的所有算法以及对应流程,帮助大家加深印象。注意初始化时频率必须比ADC采样频率高,并且最好把优先级设置低于ADC中断,不然ADC还没采集完就一直被定时器中断打断。接下来进行关键代码解析,默认硬件层过压过流保护已经生效,驱动层不再处理。. 任意定时器的中断回调。
2025-07-29 15:33:12
338
原创 【嵌入式电机控制#21】BLDC:六步换向输出检测
使能OSSR寄存器 OSSR = 1 此时上图的独立Idle配置被覆盖掉,若互补通道全部关闭则都输出高阻,若只关闭一个,关闭的通道输出无效电平(按上面的配置看,这里无效输出是0)配置计数参数:预分频调为1(也就是不分频,图上表示为0),自动重装载值4200(准确说应该配置为4199,下图有错),计数方式中心对齐。PWM模式1,计数阈值0,输出比较开,快速模式开,极性全都是高,空闲位暂时不用管。所以,一个电角周期(六步)下来,TI1输出序列为 0 1 0 1 0 1。其中,三个输入信号做异或,并通入TI1。
2025-07-29 10:38:12
826
原创 【嵌入式电机控制#20】无刷直流电机硬件案例
以下是一个保护电路,由于我们现在使用的总线电压较高,当采集电压过大时,这个部分可以有效保护我们的单片机不被烧毁。上图是本原理图所用MOS管的输入特性曲线,可以很明显看到,它的开启电压是3-4V,只有到达7-8V时才进入饱和区。上图中,上半部分用于六步控制,而下半部分是专门为PMSM的FOC控制设计的电路,这里暂且不做介绍。需要注意的是,我们只是讲了一个相位的驱动电路硬件设计,而标准的BLDC三相驱动电路中,会有。其中有反接的二极管和一个电阻并联,二极管起充放电缓冲的作用,而电阻进行限流,
2025-07-26 20:37:52
735
原创 【嵌入式电机控制#19】BLDC:六步换相
与BDC的霍尔编码器不同,BLDC的霍尔传感器检测转子所带磁极产生的磁场:规定从内向外的磁场方向为正向,
2025-07-25 14:41:25
878
1
原创 【嵌入式电机控制#16】电流环(三):过采样提高采集精度&看门狗监测总线电压
这段代码实现了一个逻辑:如果电压异常被WD连续检测出六次,则强制关闭电机,然后关闭定时器PWM输出。采样定律只能确定采样周期的上限(采样频率的下限),实际采样周期的选择受多方面影响。1. 对于响应快波动大、易受干扰(压力、流量)的过程,应该选较高的采样频率。2. 对于过程响应慢,滞后大(温度、化学成分等)选取较低采样频率。(4) 窗口看门狗实现总线电压监测。(3) 定时器中断采样数据进一步处理。为不失真的复现信号的变化,采样频率。(1)adc.h修改配置。(2)adc.c 采样DMA。
2025-07-19 19:28:17
525
1
原创 【嵌入式电机控制#15】电流闭环控制(二):电流采样
(1)main.c中ADC的DMA中断回调 (2)main.c中的定时器中断处理 需要对平均值滤波后的采样信号进行动态偏差校准处理 原理: 采样电路刚启动时存在零漂、偏置等,导致测量值=真实值+误差。 而此时理论上ADC的电流应该是0,由于误差,将它提升到了一个非零值。那么这个非零值就是长期存在的规律性误差。 那么,我们是否可以找到它的正常工作开始的零状态响应,然后作为一个基准偏差,让后续数据减去? 此节内容较为简单,
2025-07-17 13:17:04
118
原创 【FreeRTOS#5】任务挂起与恢复实例
xTaskToSuspend: 待挂起任务的任务句柄,为NULL表示挂起正在运行的任务自身。xTasktoResume: 无论任务被重复挂起多少次,Resume一次就能恢复就绪态。在上一节中讲述了关于任务创建和删除的例程,在代码中有一个任务优先级的问题没有解决。pdFALSE: 任务恢复后不需要进行任务切换。中断中恢复被挂起的任务。我们直接从上一节的例程修改,任务1和2没有区别,只要修改3就可以。返回值为:pdTRUE: 任务恢复后需要进行任务切换。我们给启动任务的优先级是最低的,其实这样有一定风险。
2025-07-16 16:56:30
431
原创 【嵌入式电机控制#14】电流闭环控制(一)
优点:能正反转运行,启动快,调速精度高,动态性能好,调速静差小,调速范围大,能加速,减速,刹车,倒转,能在负载超过设定速度时,提供反向力矩,能克服电机轴承的静态摩擦力,产生非常低的转速。启动快,能加速,刹车,能耗制动,能量反馈,调速性能与双极模式相差不多,电机特性也比较好。因为电机存在电感,电流的大小方向无法突变,所以单极H桥刹车时难以减速到0,并且不能突然倒转。当POWER侧的管子导通,地侧的管子关断,则电机流向及电机电压、电流、采样电流变化曲线如下。优点:控制电路简单,如果接成H桥模式,也能正反转。
2025-07-15 16:59:17
653
原创 【嵌入式基础知识梳理#7】E2PROM实验重要问题提炼
以上提及的四个API都是以字节方式访问的,如果单个传输字节数>8就会有很诡异的事情出现。接收字符串开头会出现发送字符串结尾的内容,而结尾会出现随机数字,归根结底讲,这是因为开头内容其实是上一次指针越界的内容,而因为结尾不能读取到被正确赋值的数。解决方法:增加循环判断条件,先MemWrite写前8个,再写越位的,依次进行。总而言之,像AT24Cx、IMU这种设备地址内还带从地址的,我们直接用master发送接收。
2025-07-15 10:24:47
199
原创 【嵌入式电机控制#13】PID参数整定的全面步骤
再反过来,从此时的比例系数Kp逐渐减小,直至系统振荡消失.记录此时的比例系数Kp,设定PID的比例系数Kp为当前值的60%~70%。采样周期指的是控制系统中对输出量采集的时间间隔,采样周期越短,采样效果越好,控制效果越丝滑连续,但采样率依赖于硬件资源。在比例系数Kp确定后,设定一个较小的Ki,然后逐渐增大它,直到系统出现震荡,再反过来逐渐减小Ki,直到系统震荡消失,记录此时Ki,设定实际Ki为当前值的%56-%67。调成这样已经不错了,震荡几乎是消失了,接着记录Kp=0.23,使用0.7Kp=0.161。
2025-07-12 18:36:18
649
原创 【嵌入式电机控制#12】增量PID速度环
若有一运控系统,受到200的阶跃输入,经过PI调节后,一直保持在170,存在30的稳态误差长时间无法消除,那么随着时间的推移,这个30会不断地重复叠加进积分项中,导致我们的积分项特别大比如(99999).然后,假设我们不做刹车和PID参数清零,再次输入一个150的阶跃,此时会给系统一个20的误差,你的电机最大转速才300RPM,如果强行给它设定400的目标,而我们因为安全隐患给了一个输出量限幅,产生原因:位置式PID中,如果系统始终无法达到目标值,则SUM值就会变得很大,ek-1:第k-1次偏差。
2025-07-11 14:30:37
612
原创 【嵌入式基础知识梳理#6】CAN总线深度理解(一)
CAN(控制器局域网),是ISO国际标准串行通信协议。为了解决汽车行业中线束较多、需要利用多个LAN进行大量数据高速通信的问题,CAN应运而生。1986年,德国著名企业博世汽车研发出CAN通信协议。2011,CANFD提出低速CAN:10~125Kbps,总线长度可达1000米高速CAN:通信速率125Kbps~1Mbps,总线长度小于等于40米FD通信速率5Mbps,兼容经典CAN。
2025-07-11 11:03:42
838
原创 【嵌入式基础知识梳理#5】RS-485理论基础
RS485是一种串行通信标准,采用差分信号,噪声容限大,常用于工控等需要长距离通信的场合。485具有强的组网功能,在串口协议上还可以指定MODBUS协议。485有两种使用方式:1. 串口基础协议:封装了基本数据包格式的协议(基于数据位)2. MODBUS:使用基本数据包组合成通讯帧格式的高层应用协议具体485特点与其他电平标准对比如下,优点概述:1. 接口电平低,不易损坏芯片2. 传输速率高3. 传输距离远,支持节点多。
2025-07-09 10:05:47
652
原创 【嵌入式基础知识梳理#4】USART通用同步异步收发器
USART通用同步异步收发器UART通用异步收发器两者都能实现与外设的全双工异步通信,我们常用的USART大多数情况下也只是使用异步。
2025-07-08 15:43:20
223
原创 【嵌入式基础概念梳理#3】RS232(标准串口)
这样,我们接收数据时检查1的个数,约定为某类型校验时,检查结果是否还是为奇/偶。通常,我们需要传输更远时用232通信而不用CMOS/TTL通信。(1)232电平: Logic 1 :-15V~-3V。TXD(Pin3):串口数据输出。RXD(Pin4):串口数据输入。DSR(Pin6):数据发送就绪。DCD(Pin1):数据载波检测。(2)CMOS电平:Logic 1 : 3.3V。在奇偶校验位插入0/1使得数据帧中1的个数为奇数。在奇偶校验位插入0/1使得数据帧中1的个数为偶数。
2025-07-08 13:33:41
714
原创 【嵌入式电机控制#12】PID控制入门:深入理解PID控制原理
这两章内容帮大家梳理了经典控制中PID算法的深度理解以及在电机控制的应用,如果要上手实际项目还需要学习更多测试调试技巧。
2025-07-07 15:26:54
608
原创 【嵌入式电机控制#11】PID控制入门:对比例算法应用的深度理解
把控制系统输出量的一部分或全部,通过一定方法和装置返送回系统的输入端,然后将反馈信息与原输入信息进行比较,再将比较结果施加于系统进行控制,避免系统偏离预定目标。(可以做DE或CE严格推导)2. 当Kp=1.6时,由于误差被放大,曲线迅速超调,但是超调量控制在了1一下,所以它之后会缓慢震荡,然后回到目标稳态。(Step Input),它的幅值与我们的目标速度相同,这也是我们嵌入式系统中常用的一种控制器输入,它的响应叫做。控制论的基本概念,将系统输出反馈输入端,并以某种方式改变输入,进而影响系统功能的全过程。
2025-07-06 21:50:24
576
原创 【嵌入式电机控制#小补充1】针对控制器滞后问题的解决方案
刚开始,ki,kp,kd都较小。我们接入一个低通滤波器,打开电源,发现如图所示的现象。也就是说,我们的开环系统无法及时对滤波结果做出反应,导致出现了一个短暂的上升期。可以发现速度响应阶段出现了一个明显的上升,然后又短暂跌落,接着逐渐缓慢上升。(2)调整控制器参数,Kp,Ki,Kd调大一点,让它的效果更贴近滤波参数。(4)滤波系数暂且不动,继续调整PID,让它能够稳定,快速的达到稳态。不知道大家在初次把滤波器使用进PID的时候,有没有出现过这样的问题。(1)首先排查硬件问题,检查开环涉及到的硬件线路。
2025-07-06 19:41:20
251
原创 【嵌入式电机控制#10】自动控制系统导论
利用自动控制装置,对关键参数进行自动控制,使它在受到外界干扰而偏离正常状态时,能够被自动的调节回到目标范围内。
2025-07-04 14:31:05
602
原创 【嵌入式电机控制#9】编码器滤波算法
本文介绍了两种滤波算法及其应用。冒泡排序滤波通过遍历数组找出最大值和最小值,去除极端值后取平均,时间复杂度O(n)。一阶低通滤波公式Y(n)=q*X(n)+(1-q)*Y(n-1),通过调节滤波系数q(0-1)平衡响应速度和平滑度:q越小曲线越平滑但响应慢,q越大响应越快但噪声明显。代码实现展示了两种算法的结合使用,并对比了不同q值下的波形效果。文章指出滤波算法只能削弱高频噪声,无法识别真正异常信号,强调要根据实际需求合理选择滤波参数。
2025-07-04 11:26:16
594
原创 【嵌入式电机控制#8】编码器测速实战
第二种是Encoder中断+其他定时器中断,通过其他定时器预设定的中断频率,来对速度采样频率进行自由的改动,不受编码器采样频率的限制,但。注意明确一个关系,大部分直流减速电机的机械结构,是编码器套在主轴,而电机轴是经过机械传动减速后转动的,所以我们把这类电机叫做减速电机。虽然我们没手写编码器的ISR,但是我们还是需要它的中断测量总计数值,它没有被禁用只是在后台默默的为我们计数。通俗的讲,它把一个电平信号扫描十次,然后判断是否有高低反转的不稳定情况,如果信号不稳定,则丢弃这一帧。它起到一个什么作用呢?
2025-07-03 16:48:18
936
原创 【嵌入式电机控制#6】编码器原理与内部构造
编码器是一种将直线位移和角位移数据转换为脉冲信号、二进制编码的设备。常用于测量物体运动的位置、角度或速度。
2025-07-02 21:07:36
762
原创 【FreeRTOS#3】FreeRTOS任务创建与删除
例如,BaseType_t 和 TickType_t,二者分别是可移植层定义的定义类型,主要架构的自然类型或最有效类型,以及用于保存 RTOS ticks 计数的类型。(4)uint8_t 类型变量以 uc 为前缀,其中“u”表示“unsigned” , “c”表示“char ”。(2)uint32_t 类型变量以ul为前缀,其中“u”表示“unsigned”,“l” 表示 “long”(3)uint16_t 类型变量以us为前缀,其中“u”表示“usigned”,“l”表示“long”。
2025-07-01 13:27:02
600
原创 【嵌入式电机控制#5】有刷电机开环调速
我们这里增加了一个Speed函数用来直接修改输出比较寄存器,来控制PWM,而在PWMset函数中我们在调用Speed的同时也对+-所对应的旋转方向做了处理;以上就是直流有刷电机开环测试时的代码框架,想要深入学习电机控制,就必须对最基本的代码格式熟悉,尽量不要自己发挥,否则很容易出错误。先做一个分析,这个题目要求我们利用一个比较值寄存器,通过按键中断来对比较值进行修改并及时输出对应的PWM;对应的按键中断程序如下图所示(消抖参数根据实际情况调节)这道题的主要目的是练习我们的控制框架(代码书写规范)
2025-06-30 13:41:55
251
原创 【嵌入式电机控制#4】有刷电机软硬件结合部分(二)(高难度,重理解)
然后再进入TIM1设置界面,选择内部时钟,然后设置PWM通道1的互补输出。CNT<Pulse)且极性polarity为low的情况下,输出结果与CNT和Pulse的比较结果相反,当小于Pulse时,比较结果为1,极性反相,输出为0。其次,因为我们的CubeMX跟寄存器配置有区别,这里不能用默认的定时器开启,否则我们在开启PWM输出的时候波形可能是中间一截出来的,会影响系统性能。若OISx=OSIxN=0时,与前面相似,只有CCxP=CCxNP=1时,OCx=OCxN=1,其余时候OCx=OCxN=0。
2025-06-30 01:23:47
915
原创 【嵌入式电机控制#2】直流有刷电机硬件部分
1. 定子:产生固定的磁场 2. 转子: 由一个多个绕组构成,通电后在磁场中受力运动 3. 电刷:将外部磁场电流输入到转子绕组上 4. 换向器:改变绕组中电流的流向 1. 额定电压:电机正常工作的电压 2. 额定电流: 负载电流,电机带负载正常工作时的电流 3. 额定转速: 负载转速,单位RPM 4. 额定扭矩: 电机额定电流下输出力的大小,常用kg.cm N.M 5. 减速比:
2025-06-26 16:06:23
999
原创 【LeetCode#第167题】两数之和Ⅱ
1. head大于小解,tail大于等于大解 =》则必然有一刻head等于小解,tail大于大解 =》此时头尾指向和必然大于target =》则tail左移即可得到结果,head没有机会右移 =》不存在head大于小解tail大于等于大解,与题设矛盾。2. head小于等于小解,tail小于大解 =》某一刻有tail等于大解,head小于小解 =》头尾指向和小于target =》此时head右移即可求解,tail没有机会左移 =》不存在head小于等于小解,tail小于大解,与题设矛盾。
2025-06-25 13:02:45
344
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人