- 博客(100)
- 资源 (6)
- 收藏
- 关注
原创 FOC 启动 预定位
永磁同步电机(PMSM)的**$d$轴电感** ($L_d$) 和**$q$轴电感** ($L_q$) 通常不相等(特别是对于凸极电机)。如果施加电流方向与转子磁链方向刚好成 $180^\circ$(即处于不稳定的平衡点),定位可能会失败或产生较大误差。($L_d \neq L_q$)来确定位置,不会强制转子移动,适用于高精度和需要静止定位的场合。如果不知道转子永磁体的确切位置,控制器可能会施加一个错误的电流矢量,导致电机在启动时产生。(即永磁体 $d$ 轴与施加磁场 $d$ 轴对齐)。
2025-12-08 09:26:53
232
原创 FOC + SVPWM
FOC + SVPWM 是高性能电机控制的核心技术,在 STM32 上实现需要结合硬件外设和软件算法。输入包括电流、位置、参数等,输出为 PWM 波形。代码实现涉及 ADC、TIM、PI 控制、SVPWM 算法等模块。建议从简单模型入手,逐步构建完整控制系统。
2025-12-06 11:51:14
836
原创 [中微方案为例] 电机转速设置方式,市场主流
采样通道:ADC_CH_13(通过 P12 引脚,VSP 模式时配置为模拟输入)输入引脚:P23 (PORT2, PIN3) - CCP0B 捕获。输入引脚:P23 (PORT2, PIN3) - CCP0B 捕获。固定转速:1000 RPM(可修改。频率范围:30Hz ~ 500Hz。电压范围:0.6V ~ 4.5V。占空比范围:12% ~ 90%外部频率信号输入到 P23。根据电压值计算目标转速。停止占空比:≤12%启动占空比:≥20%停止电压:≤0.6V。启动电压:≥0.8V。停止频率:≤30Hz。
2025-12-04 17:08:08
393
原创 BLDC 电机驱动核心:六步换向(方波驱动)
六步换向,也常被称为梯形波驱动或120∘120^\circ120∘导通模式,它是一种根据转子位置,周期性地切换定子绕组电流的技术,以产生持续的转矩。在任何给定的时刻,只有三相绕组中的两相导电,一相接电源(高电位),一相接地(低电位),而第三相绕组保持浮空(高阻态)。一个标准的 BLDC 电机有三相绕组(U、V、W),由六个开关管(通常是 MOSFETs)组成的三相逆变器(H桥)驱动。电机每旋转360∘360^\circ360∘。
2025-12-01 11:02:47
1055
原创 STM32输入捕获:精准捕捉信号的“硬核神器”
简单来说,输入捕获就是让STM32定时器“盯住”某个GPIO引脚,一旦检测到电平跳变(上升沿/下降沿),就立刻把当前定时器计数器(CNT)的值“快照”到捕获/比较寄存器(CCR)里。整个过程由硬件自动完成,不受中断延迟、CPU负载的影响,哪怕是高频信号也能稳稳捕捉。举个直观的例子:如果定时器时钟配置为1MHz(每1μs计数一次),当第一个上升沿到来时,CNT值是5000;第二个上升沿到来时,CNT变成15000。那么信号周期就是,对应频率就是100Hz。这种精度,是软件延时(比如delay_ms()
2025-12-01 09:12:36
812
原创 [灵动微电子 MM32BIN560CN MM32SPIN0280]读懂电机MCU 模拟输入运放放大
MM32SPIN560C 的集成运放为电机控制系统提供了灵活高效的信号调理解决方案,正确配置运放参数对系统性能至关重要。在实际应用中,应根据具体场景(电流采样、电压监测或反电动势检测)选择合适的工作模式和参数,并注意PCB布局和噪声抑制等细节问题。通过合理利用运放模块,可显著提高电机控制系统的精度和可靠性,为实现高性能电机驱动奠定基础。如需更详细的参数配置,建议参考《MM32SPIN560C 用户手册》中关于运算放大器的具体章节。
2025-08-31 23:15:39
1201
原创 [灵动微电子 MM32BIN560CN MM32SPIN0280]读懂电机MCU之 刹车中断源
根据手册“15 TIM1/8 高级定时器”章节(以TIM1为例),刹车中断的中断源本质是“能触发定时器刹车功能的外部信号或内部信号”,核心分为硬件引脚中断源和内部外设联动中断源中断源类型具体来源手册对应章节核心作用硬件引脚中断源TIM1_BKIN引脚(PB12)15.5.18 TIMx_BDTR(刹车和死区寄存器)外部硬件信号触发(如紧急停机按钮、外部保护电路)内部外设联动源比较器输出(COMP1~COMP5)12.4.4 比较器通道选择、15.4.5 比较输出。
2025-08-29 00:13:48
947
原创 [灵动微电子 MM32BIN560CN MM32SPIN0280]读懂电机MCU之串口DMA
MM32SPIN560C 串口打印用 DMA 的核心逻辑是“UART 触发 DMA 请求,DMA 自动完成数据搬运”,配置时需遵循“时钟使能→UART 参数配置→DMA 通道配置→使能传输”的流程,且严格参考手册中寄存器的位定义(如DMA_CCRx的方向、地址递增配置,UART_GCR的发送使能)。通过 DMA 传输,CPU 无需等待串口发送完成,可专注于其他任务,大幅提升系统效率。
2025-08-29 00:03:22
901
原创 [灵动微电子 MM32BIN560CN MM32SPIN0280]读懂电机MCU之比较器
对于初学者来说,MM32SPIN0280的比较器不用一开始就掌握所有细节,先记住它的核心作用——“监测电压、判断状态、联动保护”。在实际电机控制项目中,从简单的电流监测入手,逐步尝试配置迟滞电压、轮询功能、中断联动,慢慢就能熟练运用。手册中还有更多关于比较器寄存器的详细描述(比如每个位的具体含义、滤波功能配置),后续可以结合实际需求深入阅读。只要跟着步骤一步步实践,你会发现,这个“电压裁判”其实一点都不难,而且能为电机控制提供非常重要的安全保障和灵活的功能扩展。
2025-08-28 23:23:22
976
原创 [灵动微电子MM32SPIN0280]从灵动微电子看电机专用MCU
对比维度MM32SPIN0280(电机专用)普通通用MCU核心定位电机驱动与控制专属优化多场景通用适配关键外设高级定时器(死区/刹车)、5路COMP、4路OPAMP普通定时器、1~2路COMP、无OPAMP故障响应硬件刹车(<5μs)、PVD电压监测软件关PWM(>10μs)、基础电源监测电源管理负载突变适配、电机启停功耗优化静态低功耗、无负载适配集成度减少4~6个外部元件需外接运放、驱动芯片开发难度配套电机控制库,周期<1个月需自行开发算法,周期>2个月。
2025-08-28 11:15:38
616
原创 [灵动微电子 霍尔FOC MM32BIN560C]从引脚到应用
信号调理,运放输入配置,GPIOB,PB11,OPAMP3_INM,OPAMP3反相输入(反馈网络),模拟输入,模拟量。电机驱动,上桥PWM输出,GPIOB,PB3,BLDC1_WH,W相上桥臂PWM输出,复用极,能(TIM1),PWM。信号调理,运放输入配置,GPIOB,PB1,OPAMP2_INM,OPAMP2反相输入(反馈网络),模拟输入,模拟量。信号调理,运放输入配置,GPIOA,PA8,OPAMP4_INM,OPAMP4反相输入(反馈网络),模拟输入,模拟量。
2025-08-26 22:29:58
1211
原创 [灵动微电子霍尔有感方案MM32BIN560C] 1.霍尔传感器代码分析
从硬件获取原始信号 ->对信号进行滤波和确认 ->HALLCheck监控信号的有效性。最终,的输出(一个1-6的数字)会被电机控制主循环直接用来从一个速查表中选择对应的MOSFET开关组合,从而驱动电机转过下一个60度,如此循环往复。
2025-08-24 19:23:44
1022
原创 [FOC电机控制] 线电压和V000矢量背后的知识
线电压为0通常表示没有电压驱动,电机不会产生扭矩,基本处于静止或保护状态。在正常调节中,这是“停机”、“保留状态”或“安全保护”模式的一部分。注意:如果电机在工作过程中突然出现线电压为0,可能意味着硬件故障或控制异常,应及时排查。
2025-08-18 11:52:08
328
原创 [FOC电机控制] 电压频谱图
FOC三相电压频谱图能够揭示电机驱动系统中的电压波形及其频率成分。通过分析频谱图,我们可以识别出电压波形中的基频成分、低阶谐波和高阶谐波,进而优化控制策略(如选择合适的PWM频率和调制方式),以减少谐波对电机的负面影响,提高系统效率和稳定性。FOC(场定向控制)三相电压频谱图是分析三相交流电机(如永磁同步电机、感应电机等)在FOC控制下的电压波形频率成分的重要工具。通过频谱图,可以观察到电压波形的频率分布及其对电机性能的影响。
2025-08-10 20:28:09
892
原创 [FOC电机控制] 电气角度重要性远超机械角度
当需要控制电机的物理运动(如机器人关节位置、传送带速度)时,需将机械角度作为反馈(例如通过编码器测量机械角度),再转换为电气角度用于FOC控制。部分无传感器FOC算法(如高频注入)在低速时需要结合电机的机械凸极特性,此时会间接涉及机械角度的估算,但最终仍需转换为电气角度使用。简单说:FOC“直接使用”的是电气角度,但在涉及电机物理运动的场景中,机械角度是连接控制目标(如“转10圈”)与电气角度的必要桥梁。转速是机械特性(单位时间内的机械转动角度,如r/min),需要通过机械角度的变化率计算。
2025-08-06 16:26:20
514
原创 [FOC电机控制]-高速刹车机制
电机高速刹车时,就是让电机自己发电,然后用下桥开关把电流‘一半一半’地短路掉,把转动的能量变成热量消耗掉,这样电机就能又快又安全地停下来。如果你还想看图解或者有其他细节想了解,随时告诉我!
2025-08-06 14:39:18
528
原创 [FOC电机控制]-什么是定时器刹车功能
定义:刹车功能允许在特定条件下,立即关闭定时器输出,停止PWM信号,从而切断驱动电机的功率。作用:提供快速响应的硬件保护机制,避免电机反转过快、短路、电气故障等造成的损坏。
2025-08-06 13:50:16
664
原创 modbus四种寄存器
掌握这四种寄存器的区别是使用Modbus协议的基础,具体操作需参考设备手册中的寄存器映射表。,每种寄存器有不同的读写属性和用途。Modbus协议中定义了。
2025-06-20 08:50:09
2440
原创 【python tinker】GUI丝滑教程-
避免卡顿:将耗时操作移到子线程中,主线程保持响应 UI。主线程更新 UI:使用queue或after()来将数据传回主线程并更新 UI。守护线程:通过设置来确保子线程在主线程退出时自动结束。这些技巧可以帮助你在 Tkinter 中更流畅地实现多线程操作,避免界面卡顿。除了使用threading和queue除了使用线程和队列来处理耗时任务,还可以通过进度条、任务分割、变量绑定和新窗口等方式优化 Tkinter 的性能,避免界面卡顿。这些技巧帮助提升用户体验,让你的应用在处理复杂任务时仍然保持流畅响应。
2025-06-12 10:55:20
1226
原创 Python 中,线程类型
主线程是程序的入口线程。子线程是由主线程或其他线程创建并执行任务的线程。守护线程会在主线程退出时自动结束。非守护线程需要等所有任务完成后才会退出。一次性线程在任务执行完成后就结束。你在使用时可以根据需要选择合适的线程类型。主线程不需要显式创建,所有程序代码从主线程开始执行。子线程是通过创建并启动的,可以并行执行任务。守护线程通过设置,主线程结束时守护线程会自动退出。非守护线程是默认的线程类型,主线程结束时不会影响它,直到它自己的任务完成。一次性线程会在执行完指定任务后立即结束。
2025-06-12 08:23:15
698
原创 linux debug技术
(打桩这个根据字面意思就知道是打标记点,然后将标记点连接操作,形容出轨迹)静态代码插桩技术比较可靠,不会因为用户的不当使用而导致内核崩溃。ftrace的名字由function trace而来,它利用gcc编译器的profile特性在所有函数入口处添加了一段插桩代码,ftrace重载这段代码来实现跟踪功能。gcc编译器的“-pg”选项会在每个函数入口处加入mcount的调用代码,原本mcount由libc实现,因为内核不会链接libc库,因此ftrace编写了自己的mcount stub函数。
2025-05-24 21:26:24
771
原创 【FOC电机控制】为什么svpwm要不停变换占空比
FOC算法会计算电机当前需要的电压矢量 ( V_\alpha ) 和 ( V_\beta )(在α-β坐标系下)。A2:SVPWM算法会确保三相占空比始终满足 ( U + V + W = 0 )(无中线电流)。➤ 下一个PWM周期(如100μs后),FOC会根据新的转子位置重新计算,占空比再次变化!A3:STM32的硬件PWM和DMA可以辅助计算,实际CPU开销很小(<5%)。A1:与PWM频率相同(例如10kHz时,每秒更新10,000次)。:通过动态调整三相PWM的占空比,让电机“看到”的是一个。
2025-04-12 04:09:25
1346
1
原创 [视频编码]rkmpp 实现硬件编码
命令参数的描述说明如下:命令参数描述说明-i输入的图像文件。-o输出的码流文件。-w图像宽度,单位为像素。-h图像高度,单位为像素。-hstride垂直方向相邻两行之间的距离,单位为byte。-vstride图像分量之间的以行数间隔数,单位为1。-f图像色彩空间格式以及内存排布方式,默认为NV12。-t码流文件的协议类型。-tsrc源码流格式,仅在测试整体编解码性能时使用。-n最大解码帧数。测试时若码流较长,可仅输出前n帧。-g。
2025-03-08 23:48:02
762
原创 libasound2-dev 安装报错
面向alsa编程时候遇到没有头文件,检查系统没有这个头文件是缺少alsa库。basound2-dev 安装报错。
2025-02-20 00:38:56
725
原创 [Linux Codec驱动]音频路由概念
音频路由信息是音频系统中一个重要的组成部分,理解其含义和功能对于调试和开发音频设备驱动程序至关重要。它定义了音频信号的流向,并确保不同音频组件能够正确交互。函数的详细注释版本,以帮助理解每一部分的功能和逻辑。cCopy Code。
2024-10-16 20:38:13
1645
原创 rtthread空闲线程与定时器
同时,也可以使用RT-Thread内置的钩子函数机制,将自定义的代码插入到系统中已有的功能中,实现对系统的扩展。rt_thread_delay()函在这里插入代码片数适合在线程中间暂停一段时间,并等待某些事件的发生,而rt_timer_start()函数则适合在后台执行一些周期性的任务,例如轮询外部设备状态或者定时发送数据等。在这个过程中,空闲线程会持续处理其他的任务并更新系统的时基,直到指定的时间到达后,被挂起的线程才会被重新加入到就绪队列中,并等待调度器进行调度。
2023-06-18 16:38:28
1527
原创 /dev/random
dev/random设备是Linux系统中的一个随机数发生器,它可以产生高质量的随机数,这些随机数可以用于加密、认证等安全性要求较高的场景。使用/dev/random设备非常简单,只需要从该设备文件中读取足够多的字节即可获取随机数。具体步骤如下:打开/dev/random设备:通过open系统调用打开该设备文件,得到一个文件描述符。读取随机数:通过read系统调用从文件描述符中读取随机数,读取的字节数可以根据需要进行控制。关闭设备文件:读取完随机数后,需要关闭设备文件以释放资源。
2023-06-17 01:28:38
1899
原创 RT-Thread相同优先级线程
在上述代码中,我们使用一个简单的轮询调度算法,通过将当前线程放到队列末尾,并选择下一个就绪的线程来实现时间片轮转。当然,如果你想要改变这种行为,可以通过修改调度器的代码来实现不同的调度策略。例如,你可以实现一个简单的轮询调度算法,让每个线程依次执行一定的时间片,从而避免某些线程长时间得不到执行的情况。如果你想要实现不同于默认的调度算法来处理相同优先级的线程,可以编写自己的调度器代码并将其替换为默认的调度器。需要注意的是,调度器的修改可能会影响系统的稳定性和实时性,因此在修改之前应该进行充分的测试和评估。
2023-06-17 01:23:53
1617
原创 编译内核驱动为模块,没有指定架构的时候出现错误
编译内核驱动为模块,发现报错一堆,发现./arch/x86/include/asm/arch_hweight.h:55:42: error: expected ‘:’ or ‘)’ before ‘POPCNT64’ 这种报错,最后发现是编译命令问题,你要指定架构。
2023-05-17 01:17:36
1185
原创 flutter安装各种问题汇总
再将 kPubDevHttpHost 和 kgCloudHttpHost 两个常量 分别修改为 https://pub.flutter-io.cn/ 和 https://storage.flutter-io.cn/(解决第二个)Flutter SDK路径/flutter/packages/flutter_tools/lib/src/http_host_validator.dart。链接:https://www.jianshu.com/p/d1a923b9d298。解决 设置环境变量SDK安装文件夹。
2023-04-01 15:25:24
1284
原创 保持通过samba服务器修改文件的权限不变动
sudo vi /etc/samba/smb.conf 在末尾加上一下内容,我的管理员用户root,密码cw,共享路径path=/home,注意vim强制保存只读文件的命令是:w!sudotee%#共享名,也就是网络地址后缀 \\192.168.221.128\share[share]# 描述符,是给系统管理员看的comment = Share folder# 共享目录路径path = /home# 客户端上传文件的默认权限#create mask = 0700 这里...
2022-03-30 17:59:51
3201
quicker.em 支持sourcesight4已测
2019-02-01
银行家算法
2019-03-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅