当前位置: 首页 > news >正文

直流无刷电机驱动记录

1、半桥驱动驱动芯片IR2104不好控制电磁刹车力度,因为IR2104的自举升压是靠IN输入端的PWM才能发挥自举作用,如果要做到刹车力度可调,就要把IN端置高电平,这样就没有了自举电压

2、三相电机驱动,可用六步换相法和正弦波控制法。六步换相的核心是BLDC根据霍尔值转动,在某两步之间调占空比,比如在1步停留1毫秒,在2步停留1毫秒,这样在步1和步2之间来回切换,电机角度就会停在1步和2步之间,此刻如果在步1和步2之间断电一段时间,这个时间就会让电机的的力度变弱,但电机仍然会停留在步1和步2之间,通过调节断电时间,就能调节磁场强度,通过调节步1或者步2的停留时间大小,就能调节磁场方向。而正弦控制法就比较复杂,用方波的占空比来尽可能地模拟成正弦波形,由于电机电流不能突变,方波输入一般会形成正弦波,正弦波的相位角就是磁场角度,磁场角度就是转子的目标角度,调节正弦的幅度(PWM占空比)就能调节磁场强度,从而实现磁场强度和磁场方向可调FOC, 正弦波的相位角度等于转子的角度乘以极对数+90度就会产生最大的扭矩,可以根据六步换相法,磁铁的变化范围找出0度变化瞬间所对应的磁铁角度,也可以通让Id≠0,Iq=0,PID算法的PI算法来让转子对齐,然后磁铁角度就是0。

3、用电机电流检测负债比用电机转速检测负载要实时和可靠。电流检测受影响因素:PWM 脉动、电机温升、电源波动、机械摩擦

4、用增量式PID控制电机时,PID的频率周期要固定,1ms周期比较合适,获取速度的周期最好接近PID的周期。获取速度的方式,用计算脉冲时长比较合适,如果用固定周期内计算多少个脉冲的方式来计算速度,速度值不够细分

5、FOC控制,三相输入的电角度相差120°,总共360°,下面是SVPWM的开环FOC代码,Uq是控制磁场强度,radian控制电角度,下面SVPWM自动转换成相差120°,可用于无霍尔的无刷电机,但由于没有闭环获取转子角度和三相各相的单独电流,运行起来容易丢步

void init_foc(FOC_STRUCT *pfoc) { // ---------------------------------- // 开环参数 // ---------------------------------- // 电角速度(每次更新增加多少弧度) pfoc->speed = 0.0f; // 缓慢加速 pfoc->accel = 0.0001f; // 最大速度限制 pfoc->speed_max = 0.01745329252;//0.013962634;//0.00872664626;//sync Uq // 输出电压幅值(0.0 ~ 1.0) // 建议先小一点 pfoc->Uq = 0.12f; pfoc->max_duty = 3600; pfoc->radian = 0; pfoc->radian_limit = RADIAN_MAX_ONCE; } // ---------------------------------- // SVPWM输出 // ---------------------------------- void SVPWM_Update(FOC_STRUCT *pfoc, uint32_t *pccr1, uint32_t *pccr2, uint32_t *pccr3) { //-------------------------------- // 生成旋转矢量 //-------------------------------- double ys = fmod(pfoc->radian, RADIAN_AMX); float Valpha = pfoc->Uq * cosf(ys); float Vbeta = pfoc->Uq * sinf(ys); //-------------------------------- // 三相反Clark变换 //-------------------------------- float Va = Valpha; float Vb = -0.5f * Valpha + 0.8660254f * Vbeta; float Vc = -0.5f * Valpha - 0.8660254f * Vbeta; //-------------------------------- // SVPWM零序注入 //-------------------------------- float Vmax = fmaxf(Va, fmaxf(Vb, Vc)); float Vmin = fminf(Va, fminf(Vb, Vc)); float Voffset = 0.5f * (Vmax + Vmin); Va -= Voffset; Vb -= Voffset; Vc -= Voffset; //-------------------------------- // 限幅保护 //-------------------------------- if(Va > 1.0f) Va = 1.0f; if(Va < -1.0f) Va = -1.0f; if(Vb > 1.0f) Vb = 1.0f; if(Vb < -1.0f) Vb = -1.0f; if(Vc > 1.0f) Vc = 1.0f; if(Vc < -1.0f) Vc = -1.0f; uint32_t max_duty = pfoc->max_duty; //-------------------------------- // 转PWM占空比 //-------------------------------- *pccr1 = (uint32_t)((Va * 0.5f + 0.5f) * max_duty); *pccr2 = (uint32_t)((Vb * 0.5f + 0.5f) * max_duty); *pccr3 = (uint32_t)((Vc * 0.5f + 0.5f) * max_duty); //-------------------------------- // CCR保护 //-------------------------------- if(*pccr1 > max_duty) *pccr1 = max_duty; if(*pccr2 > max_duty) *pccr2 = max_duty; if(*pccr3 > max_duty) *pccr3 = max_duty; }
http://www.jsqmd.com/news/1167451/

相关文章:

  • Codeforces vs LeetCode:针对ACM竞赛的5大算法平台刷题路径对比
  • 如何快速搭建多平台音乐播放器?music-api终极解决方案指南
  • 听书别再被会员和广告打断:把NAS变成自己的私人有声图书馆
  • 安全测试工具箱 v2024:5类工具实战配置与10个常见部署报错解决
  • 手把手带ChatGPT写出工业级Python代码,含pytest覆盖率验证+Black格式强制+Git提交规范
  • 如何用Mac Mouse Fix让普通鼠标获得超越苹果触控板的体验
  • 从鲁迅到马斯克:跨时代/跨身份语气迁移提示词工程(含12种人格向量映射表)
  • ascii-art性能优化技巧:处理大型图像与复杂文本的最佳实践
  • 3步完美解决Windows经典游戏兼容性问题:DDrawCompat终极指南
  • 别再抄ChatGPT示例了!20年老炮总结的Python教学黄金三角:意图对齐 × 错误预埋 × 反向调试法
  • 终极解决方案:3步彻底修复Visual C++运行库依赖问题
  • 3步自动化配置OpenCore EFI:黑苹果安装终极简化指南
  • 2026年7月最新浪琴杭州富阳万达广场维修保养服务电话 - 浪琴官方售后服务中心
  • 答辩PPT被批‘太土‘?2026年开题/答辩PPT制作全攻略
  • 2026-07-11:构造奇偶一致的数组Ⅱ。用go语言,给定一个长度为 n 的整数数组 nums1,所有元素互不相同。需要构造一个同样长度为 n 的数组 nums2,使得 nums2 的每个元素都必须
  • CANN/cannbot-skills TritonGPU操作详解
  • Linux系统一键配置conda、cuda、pytorch
  • 私域运营工具有哪些?适合门店商家的小程序功能对比
  • 终极指南:让老款Mac免费升级到最新macOS的完整解决方案
  • OpCore Simplify:让OpenCore配置变得前所未有的简单
  • LingBot-Video:MoE架构下的物理合理视频生成技术解析
  • CANN Runtime内存语义同步指南
  • TMC7300+PIC18LF24K50驱动有刷直流电机方案解析
  • AutoRemesher在虚拟城市中的应用:如何优化城市模型的网格
  • 2026年7月最新宁波欧米茄官方售后客服中心地址电话及服务网点分布 - 欧米茄服务中心
  • Cosmos-Predict2.5输入输出规范:如何准备完美的文本、图像和视频输入
  • 国内免费AI助手实战:GPT-4平替方案与集成指南
  • PlantCV案例研究:在作物育种中的实际应用与效果评估
  • 2026年7月热风循环隧道炉工厂推荐,倍速链线/流水线设备/二手流水线/高温隧道炉烘干线,热风循环隧道炉厂商哪个好 - 品牌推荐师
  • Terraforming Rails测试优化完全手册:彻底解决Rails测试的随机失败问题