完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
0.前言
ODrive比较适合大电流的无刷电机使用,对于云台电机(小电流低转速)并没有使用电流环(好像SimpleFOC也没有电流环)。并且网上仅有少数的大电流无刷电机的配置例程,没有小电流无刷电机的配置例程。今天踏了一遍这个坑,遇到了很多错误,最后也逐渐摸索出了解决方法。 主要配置流程 参考博客 1.硬件介绍 1.1.硬件
电机直接随意接三相即可。 买来的电机上AS5048A编码器只给焊接了PWM接口的三根线,SPI接口没给焊,需要自己焊接。并且间距比较小,焊接的线要细一点。焊接后,接线注意:
注意:进行配置前建议首先执行一遍擦除配置odrv0.erase_configuration(),然后odrv0.reboot()重启 ODrive 以确保配置恢复为固件默认配置。 2.1.基本配置 这部分属于整个ODrive板子的配置,和电机无关,所以云台电机和大电流电机配置一样。
这里需要注意,虽然说使用的是小电流的云台电机,但是经过我的测试,电机类型如果配置成云台电机的话,编码器校准总是失败。并且电机类型是云台电机,那么运行电机校准指令是没有任何反应的,而去看错误也不会报任何错误,此时就会很迷惑。实际是因为对于云台电机没使用电流环,所以就不用运行电机校准来检测电机的电阻和电感了。所以这里先配置成大电流电机,把电机的限制电流设小一点即可。最后等都配置好了,再把电机类型改成云台电机。
odrv0.axis1.motor.config.resistance_calib_max_voltage = 5
保存配置参数并重启 ODrive ,已使某些配置参数生效。 odrv0.save_configuration()odrv0.reboot() 3.校准工作 注意:进行参数校准前请确保电机转子能够自由旋转而且不能有偏载,即负载均匀和较弱的摩擦负载才行,重载或类似弹簧载荷不行,否则将影响参数自动校准 3.1.校准电机
注意由于使用的AS5048A是绝对编码器,没有索引信号,所以不用进行索引校准,直接进行偏移校准即可。
将自动检测的电机参数保存并重启,等待 ODrive 重新连接到 odrivetool。 odrv0.save_configuration()odrv0.reboot() 4.切换电机类型 这一步非常重要。因为之前为了成功进行编码器校准将电机设置成了大电流电机,这个时候如果直接进入闭环控制的话,电机的电流声音特别大,能明显听出来。估计这也是Odrive对云台电机不使用电流环的原因,因为电流的噪声太大了,加上电流环还不如不加。所以此时要把电机类型改为云台电机,然后保存配置,重启。此时再进入闭环,就会发现电机的电流声小了很多。 5.控制电机运行
注意由于使用的是绝对值编码器,所以每次重新启动后不需要进行编码器的索引校准(即无须寻找零点的位置)。如果使用的是ABZ的增量式编码器,那么每次开机后都需要进行编码器索引校准,就是一直朝着一个方向转直到找到Z相信号。 可以添加自动进入闭环模式的功能,配置 ODrive 启动后自动进入闭环控制模式,然后保存配置,这样每次重新启动后电机自动进入闭环运行模式,我们只需要发送位置控制指令即可。 odrv0.axis1.config.startup_closed_loop_control = Trueodrv0.save_configuration() 7.PID参数调节 7.1.官网教程 调整电动机控制器是释放ODrive潜力的必不可少的步骤。通过调整,控制器可以快速响应系统中的干扰或变化(例如施加的外力或设定值的变化)而不会变得不稳定。正确设置三个调整参数(称为增益)可确保ODrive能够以最有效的方式控制电动机。这三个值是:
start_liveplotter(lambda:[odrv0.axis1.encoder.pos_estimate, odrv0.axis1.controller.pos_setpoint]) 7.2.云台电机自己调参总结
8.1.遇到的错误 1.MOTOR_ERROR_PHASE_RESISTANCE_OUT_OF_RANGE 电机相电阻超出范围。多数是因为电机的接线有问题,此时可以关闭ODrive,用万用表测量ODrive上的端子的线电阻和电机参数中的是否一致。可以使用以下命令查看电阻和电感: odrv0.axis1.motor.config.phase_resistanceodrv0.axis1.motor.config.phase_inductance 2.ENCODER_ERROR_CPR_POLEPAIRS_MISMATCH 编码器CPR值和电机极对数匹配错误。这里首先检查设置的编码器值和电机极对数值是否正确。我一开始遇到这个问题,查看后发现这两个值并没有错误。后来发现还是编码器校准没有成功的原因。因为一开始我把电机配成了云台电机,然后进行编码器偏移校准的时候,电机只会左右转很小的范围(几度那样),相当于抖几下。这时候电机其实并没有正确完成编码器的校准。正常的编码器校准,电机会左右转动大概半圈,这样基本上就是完成了编码器校准。 这个时候的解决办法就是如前所述把电机先配置为大电流电机,当所有的校准都完成后,再把电机的类型改成云台电机。 3.CONTROLLER_ERROR_OVERSPEED 电机超速。原因我猜是因为启动时SPI类型的编码器的噪声很大导致的,解决方法前面配置的时候就说过,就是把电机的最大转速设置的非常高,但是最大电流有限制,所以电机也不会转的很快。 4.ENCODER_ERROR_ABS_SPI_COM_FAIL SPI编码器失败。这个具体什么原因不知道,感觉还是因为SPI的编码器不稳定,因为我时常会出现原来正常,后来突然不能用了,就是报出了这个错误。大体可以从一下几个方面检查:
编码器索引信号尚未找到。此错误常在执行编码器偏移校准的时候出现,有两个原因: 1.在编码器校准的时候执行了索引校准命令,然后又去执行偏移校准。实际上由于使用的是绝对值编码器,所以无须进行索引校准,就算进行了也找不到,此时再去进行偏移校准自然会报错。 2.编码器配置中的odrv0.axis1.encoder.config.use_index = True,这里配置成仍旧使用索引信号,所以后面会出错。将此配置改成False即可。 6.AXIS_ERROR_INVALID_STATE 电机轴的非法状态。此时通常是因为命令顺序跳跃造成的,比如尚未进行电机校准或者编码器校准,就要进入闭环模式。在ODrive官网的故障排除的地方有讲解。 8.2.注意事项 1.错误解决方式
|
|
|
|
只有小组成员才能发言,加入小组>>
1970 浏览 0 评论
7367 浏览 4 评论
34750 浏览 18 评论
4595 浏览 0 评论
21978 浏览 33 评论
496浏览 2评论
701浏览 1评论
3069浏览 1评论
710浏览 1评论
2431浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-20 01:52 , Processed in 1.039244 second(s), Total 64, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号