完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
Odrive无刷驱动器 开发过程学习记录(2)
——电机系统的参数配置和校准 开发说明: *ODrive 硬件版本: v3.6-56V ODrive 硬件内部固件版本: fw-v0.5.1 odrivetool版本: 0.5.1.post0 (pip install odrive==0.5.1.post0)* 配置环境: windows10 上次在windows环境下,将odrive的基础配置进行了详细的讲解,本次文章将进行电机参数的配置,并使电机进入闭环控制状态。 首先按下述方式连接好odrive: 连接流程:24V电源——USB接口——功率耗散电阻——盘式无刷电机——编码器 配置主要经过四大步骤: 1.配置电机限制值以及硬件参数 2.编码器配置 3.参数保存 4.点击校准 一、 电机基础配置 1.Win+R打开运行框, 输入cmd打开命令终端 2.Odrive连接电脑,并电源供电,PWR灯亮 3.在命令终端输入“odrivetool”,打开Odrive工具 打开后显示已连接 Odrive驱动器 4.进行电机限制值配置 - 1.设置限制电流odrv0.axis0.motor.config.current_lim = ? (A)该命令作用是:设置无刷电机运行时的最大电流 例如:本次设置M0电机最大电流为10A,则输入: odrv0.axis0.motor.config.current_lim = 10 电机电流限制 odrv0.axis0.motor.config.current_lim 单位为 [A] 出于安全考虑,ODrive固件内部默认电流限制设置为10A。 这是相当小的,但是对于初次调试驱动器是有好处的。 配置完 ODrive 后,可以将其增加到60A以提高性能。 请注意:重新设置电流限制值后需要重新设置电流采样范围 - 2.设置电流采样odrv0.axis0.motor.config.requested_current_range = ? (A)该命令作用是:odrive电流采样就只会采样范围以内的电流值。这个值通常可以设置相比限制电流值更大一些。 例如:本次设置M0电机电流采样值为90A,则输入: odrv0.axis0.motor.config.current_lim = 90 - 3.电机转速限制值odrv0.axis0.controller.config.vel_limit = ? (turn/s)该命令作用是:控制电机最大转速,电机将被限制为该转速,电机转速超过此值将报错。可以改成感觉合适的值,或者可以最大调到超过电机本身最大转速的值,那么电机将以它本身最大速度去响应控制。 例如:本次设置M0电机转速限制值为2000.0 (turn/s),则输入: odrv0.axis0.controller.config.vel_limit = 2000.0 - 4.电机校准电流限制值 odrv0.axis0.motor.config.calibration_current = ? (A)该命令作用是:此值为电机在校准过程中,运行通过的最大电流值。同样可以改成感觉合适的值,如果您使用的是小功率电机(即15A额定电流),则可能需要将此值适当调小。 5.设置相关硬件参数 - 1.功率耗散电阻的电阻值 odrv0.config.brake_resistance = ? (Ohm)该命令作用: 耗散电阻就是刹车电阻,如果不使用设置为0。请注意,您的接线和螺钉端子中可能会有一些额外的电阻。因此,如果使用时遇到问题,则可能需要将此参数在功率耗散电阻阻值的基础上增加约0.05欧姆。 例如:本次M0电机使用耗散电阻为3.35 (Ohm)(加入额外电阻),则输入: odrv0.config.brake_resistance = 3.35 - 2.永磁电机中的磁极对数(磁钢个数除以2) odrv0.axis0.motor.config.pole_pairs = ? 该命令作用是: 设置无刷电机中磁极对数,这是电机固有参数,可以通过数磁极数或者电机厂家提供的磁极参数获得。 下图为本次使用电机的参数。 例如:因为定子极数为28 ,28 / 2 = 14,极对数为14,则输入: odrv0.axis0.motor.config.pole_pairs = 14 - 3.选择电机类型 odrv0.axis0.motor.config.motor_type = ? 当前支持两种类型的电机: 大电流电机(MOTOR_TYPE_HIGH_CURRENT) 云台电机(MOTOR_TYPE_GIMBAL)。 注意:不要把非小电流云台电机配置为 MOTOR_TYPE_GIMBAL ,这样可能会使电机或 ODrive 过热。 博主就因设置错误导致烧掉Odrive的mos管! 本次选用的是大电流电机,则输入: odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT 二、编码器的配置 - 1.使用编码器 cprodrv0.axis0.encoder.config.cpr = ? (编码器每转计数)该命令作用:设置编码器每转计数 [CPR],这是每转产生的脉冲数(PPR)值的4倍。通常,这在编码器的手册中会有说明。 例如:本次编码器使用cpr = 16384 ,则输入: odrv0.axis0.encoder.config.cpr = 16384 如果不使用编码器,则设置无传感器模式运行 三、保存设置 输入代码: odrv0.save. confguratin() 作用:将所有带有 .config 的参数保存到 ODrive 内部 FLASH 中,以便 ODrive 在重启后配置的参数仍然有效。 参数设置一览: 配置完成之后,你可以直接输入命令查看,你的参数设置是否正确: 输入命令回车,就会输出当前命令设置的参数值。 输入代码:odrv0.reboot() 或者 对重新Odrive上电一次, 检测并完成设置项目的保存 四、电机校准 - 1.进行电机特性测量和编码器校准odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE该命令输入后,大约2秒钟后,应听到电机发出哔声。 然后电机将在一个方向上缓慢旋转几秒钟,然后在另一方向上缓慢旋转几秒钟。 这个过程是在做什么? ODrive 首先测量电机的电气特性(即电机相电阻和相电感),然后进行编码器偏移校准。 Odrive无刷驱动器电机校准视频 - 2.保存校准结果odrv0.axis0.motor.config.pre_calibrated =True输入此命令后,校准结果就会被Odrive保存。 - 3.使用此命令进入位置控制状态 odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL每次重启后,都可以输入此命令来进入位置控制状态。 此时 ODrive 将保持电机转子的位置。如果用手去扭动电机轴,电机会试图阻止转子被扭动,您可以调高odrv0.axis0.motor.config.current_lim, 这样电机将能提供更大的扭力去对抗您的旋转。如果电机进入闭环运行后开始抖动,或在您用手去扭动电机轴后开始抖动,您需要降低控制器增益。 本次电机系统的参数配置和校准完成,下面将设置电机PID与位置控制指令。 |
|
|
|
只有小组成员才能发言,加入小组>>
2439 浏览 0 评论
9119 浏览 4 评论
36802 浏览 19 评论
5031 浏览 0 评论
24780 浏览 34 评论
1539浏览 2评论
1758浏览 1评论
2205浏览 1评论
1564浏览 0评论
535浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 12:14 , Processed in 1.384235 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号