找回密码
 立即注册
查看: 223|回复: 1

电机转速的计算方式咨询

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-11-01 20:51:20

2

主题

1

回帖

52

积分

注册会员

积分
52
发表于 2025-11-1 20:51:20 | 显示全部楼层 |阅读模式
/**
* 获取电机转速函数(考虑极对数)
* 通过PhaseTime变量计算电机当前转速
*
* @param pole_pairs 电机的极对数
* @return 电机转速,单位为RPM(每分钟转数)
*/
unsigned int Get_Motor_Speed(unsigned char pole_pairs)
{
    // PhaseTime单位是0.5微秒
    // 一圈机械转动需要 6 * pole_pairs 次换相
    // 所以一圈时间 = PhaseTime * 0.5 * 6 * pole_pairs 微秒
    // 转速(RPM) = 60秒 / 一圈时间(秒)
   
    if (PhaseTime == 0 || pole_pairs == 0) {
        return 0; // 防止除零错误
    }
   
    // 计算每分钟转数(RPM)
    // 一圈时间 = PhaseTime * 0.5 * 6 * pole_pairs 微秒
    //         = PhaseTime * 3 * pole_pairs 微秒
    // 1分钟 = 60,000,000 微秒
    // RPM = 60,000,000 / (PhaseTime * 3 * pole_pairs)
    // 简化为: RPM = 20,000,000 / (PhaseTime * pole_pairs)
   
    return (unsigned int)(20000000UL / (PhaseTime * pole_pairs));
}

通过这个方式获取转速麻烦看下对不对?
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:640
  • 最近打卡:2025-12-13 14:46:56
已绑定手机
已实名认证

123

主题

3277

回帖

8312

积分

版主

积分
8312
发表于 2025-11-4 09:36:44 | 显示全部楼层
我的phasetime是电角度转一整圈的时间,所以不能*6次换向
应该改为
return (unsigned int)(120000000UL / (PhaseTime * pole_pairs));
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-12-17 00:48 , Processed in 0.097217 second(s), 44 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表