zhuqing3000 发表于 6 天前

电机转速的计算方式咨询

/**
* 获取电机转速函数(考虑极对数)
* 通过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));
}

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

王昱顺 发表于 3 天前

我的phasetime是电角度转一整圈的时间,所以不能*6次换向
应该改为
return (unsigned int)(120000000UL / (PhaseTime * pole_pairs));
页: [1]
查看完整版本: 电机转速的计算方式咨询