OdriveFOC-无刷电机控制(指令篇)
文章目录
前言
现在硬件平台已搭建,软件已安装,接下来就是关键的给控制器下发指令,按照预想控制电机。
没有搭建好的同学可看前文:
【电机控制】OdriveFOC-无刷电机控制(硬件篇)
【电机控制】OdriveFOC-无刷电机控制(指令篇)
【电机控制】OdriveFOC-无刷电机控制(软件篇)
【电机控制】OdriveFOC无刷电机速度环位置环
提示:以下是本篇文章正文内容,下面案例可供参考
一、打开Odrivetool
1.Odrivetool
在开始菜单下(点击键盘上的windows键)输入cmd后Enter
在连接好Odrive的情况下,输入如下代码打开odrivetool
odrivetool
有蓝色字样表示成功连接
二、配置
1.报错处理
将配置重置为出厂默认值。
odrv0.erase_configuration()
#取消超速报错
odrv0.axis1.controller.config.enable_overspeed_error = False
#电源吸收电流的能力 单位(A)
odrv0.config.dc_max_negative_current = -3
2.设置编码器、电机参数
电机极对数,每个电机不一样,问店家参数
odrv0.axis0.motor.config.pole_pairs = 7
设置编码器模式,我的是AS5047P,ABZ
odrv0.axis0.encoder.config.mode = ENCODER_MODE_INCREMENTAL
脉冲数为4000
odrv0.axis0.encoder.config.cpr = 4000
保存设置,下次重启不用重新设置
odrv0.save_configuration()
3.校准编码器、电机参数
校准电机参数,会出现滴的一声,然后电流滋滋声
odrv0.axis0.requested_state = AXIS_STATE_MOTOR_CALIBRATION
保存电机参数
odrv0.axis0.motor.config.pre_calibrated = True
校准编码器,会正转一圈,反转一圈
odrv0.axis0.requested_state = AXIS_STATE_ENCODER_OFFSET_CALIBRATION
查看是否报错(每一步都可以查看)
dump_errors(odrv0)
Odrive校准电机编码器
三、闭环模式
1.进入闭环模式
输入指令,进入闭环(速度环、位置环、电流环都需要这一步!)
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
2.位置环
位置环设置
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_POSITION_CONTROL
设置转到第1圈的位置
odrv0.axis0.controller.input_pos = 1
3.速度环
速度环设置
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL
速度环增益设置
odrv0.axis0.controller.config.vel_gain = 0.03
设置以速度为5运转
odrv0.axis0.controller.input_vel = 5
四、json配置(用现有例程直接用)
1.准备json文件
首先你需要准备好配置文件,这个文件的参数相当于例程,直接准备好的
2.加载json文件
启动odrivetool
odrivetool
擦除配置
odrv0.erase_configuration()
退出
quit
加载下载好的json文件(注意你自己的路径,这是我的路径,每个人不一样!)
odrivetool restore-config C:\Users\17802\Desktop\config.json
再启动odrivetool
odrivetool
3.配置电机参数
电机极对数,每个电机不一样,问店家参数
odrv0.axis0.motor.config.pole_pairs = 7
设置编码器模式,我的是AS5047P,ABZ
odrv0.axis0.encoder.config.mode = ENCODER_MODE_INCREMENTAL
脉冲数为4000
odrv0.axis0.encoder.config.cpr = 4000
速度环增益设置(如果抖动就调小,我的一开始是0.5,非常抖,调到0.03平稳)
odrv0.axis0.controller.config.vel_gain = 0.03
电流限幅(看电机支持多少A,我的是10A,限幅如果是10A非常烫,因此设置5A)
odrv0.axis0.motor.config.current_lim = 5
保存设置(设置完毕后,必须保存!!)
odrv0.save_configuration()
4.控制指令
以速度5,位置10转动
odrv0.axis0.controller.config.vel_limit =5;odrv0.axis0.controller.input_pos = 10;
五、备用指令
将配置重置为出厂默认值。
odrv0.erase_configuration()
重启
odrv0.reboot()
保存设置(设置完毕后,必须保存!!)
odrv0.save_configuration()
查看报错
dump_errors(odrv0)
清除报错
dump_errors(odrv0, True)
总结
本文仅仅简单介绍了OdriveFOC-无刷电机控制(指令篇),评论区欢迎讨论。