当前位置: 首页 > 工具软件 > doggo > 使用案例 >

#L1-作业2# 结合上Github的stanford doggo仓库和百度搜索两个信息源,对其原生控制硬件Odrive和无刷电机的控制方式进行了解,并发在自己的技术博客上

潘修文
2023-12-01
  1. 无刷电机的工作原理
  2. 1.无刷直流电动机由永磁体转子、多极绕组定子、位置传感器等组成。位置传感按转子位置的变化,沿着一定次序对定子绕组的电流进行换流(即检测转子磁极相对定子绕组的位置,并在确定的位置处产生位置传感信号,经信号转换电路处理后去控制功率开关电路,按一定的逻辑关系进行绕组电流切换)。定子绕组的工作电压由位置传感器输出控制的电子开关电路提供。
  3. 位置传感器有磁敏式、光电式和电磁式三种类型。
  4. 采用磁敏式位置传感器的无刷直流电动机,其磁敏传感器件(例如霍尔元件、磁敏二极管、磁敏诂极管、磁敏电阻器或专用集成电路等)装在定子组件上,用来检测永磁体、转子旋转时产生的磁场变化。
  5. 采用光电式位置传感器的无刷直流电动机,在定子组件上按一定位置配置了光电传感器件,转子上装有遮光板,光源为发光二极管或小灯泡。转子旋转时,由于遮光板的作用,定子上的光敏元器件将会按一定频率间歇间生脉冲信号。
  6. 采用电磁式位置传感器的无刷直流电动机,是在定子组件上安装有电磁传感器部件(例如耦合变压器、接近开关、LC谐振电路等),当永磁体转子位置发生变化时,电磁效应将使电磁传感器产生高频调制信号(其幅值随转子位置而变化)。 (来源网上,侵删!)
  7. odrive的一些控制原理
  8. 来源于此博主(点击链接查看)
  9. 环形位置控制
  10. 要启用环形位置控制,请设置axis.controller.config.setpoints_in_cpr = True
  11. 此模式对于连续的增量位置移动很有用。 例如,机器人会无限期滚动,或者挤出机马达或传送带会以受控的增量无限期地移动。
  12. 在常规位置模式下,pos_setpoint将增长到非常大的值,并且由于浮点舍入而失去精度。
  13. 在这种模式下,控制器将尝试仅在电动机旋转一圈之内跟踪位置。 具体而言,pos_setpoint的范围应为[0,cpr-1],其中cpr是一圈编码器计数值。 如果pos_setpoint增加到该范围之外(例如通过step / dir输入),则会自动将其约束到[0,cpr-1]范围内。注意:在此模式下,将使用encoder.pos_cpr 作为位置位置反馈,而非encoder.pos_estimate。
  14. 如果尝试以超过cpr/2步的大步幅增加位置,则电机将以相反的方向旋转至相同角度。当输入控制量干扰很大时,也会出现这种情况。 如果您有一个需要处理较大步幅的应用程序,则可以使用虚拟CPR,该虚拟CPR是编码器实际CPR的整数倍。 设置encoder.config.cpr = N * your_enc_cpr,其中N是一些整数。 选择合适的N为您的应用提供合适的位置设置范围。
  15. 速度控制
  16. 设置 axis.controller.config.control_mode = CTRL_MODE_VELOCITY_CONTROL。
  17. 现在,您可以使用 axis.controller.vel_setpoint = 5000 [count/s] 控制转速。
  18. 速度爬升控制
  19. 设置 axis.controller.config.control_mode = CTRL_MODE_VELOCITY_CONTROL
  20. 设置速度爬升速率 (绝对加速度): axis.controller.config.vel_ramp_rate = 2000 [counts/s^2]
  21. 启动速度爬升模式: axis.controller.vel_ramp_enable = True
  22. 现在,您可以使用 axis.controller.vel_ramp_target = 5000 [count/s] 控制转速。
  23. 电流控制
  24. 设置 axis.controller.config.control_mode = CTRL_MODE_CURRENT_CONTROL
  25. 现在,您可以使用axis.controller.current_setpoint = 3 [A] 来控制电机电流。
  26. 注意: 在电流控制模式下没有速度限制。 确保您不要使电机过载或超过编码器的最大速度。
  27. 只能说看了这么久也就对无刷电机有一定了解,仅此而已,我太菜了
 类似资料: