自学内容网 自学内容网

foc原理odrive驱动板的使用,以及功能介绍


使用的灯哥开源的odrive驱动板,外接编码器

驱动板引脚:

板载STM32F405RGT6

编码器的安装:

磁体距离编码器芯片1~2mm最佳;

外接编码器不支持SPI功能;

板载编码器支持SPI;

接线:

电机三相线和板子接口,mr30接口

三条线和电机三相线接起来

电机参数

电机类型,大电流的选这个

5010电机主要需要极对数以及KV值

360KV ;7对极

编码器设置

cpr,每转一圈计数多少次

odrive控制

控制指令

打开odrive:

activate python39//激活python39
odrivetool// 打开odrive

odrv0.reboot//重启

odrv0.axis0.config.can_node_id = //设置电机的id

odrv0.save_configuration()//配置完成后需要保存配置

odrv0.save_configuration()//配置完成后需要保存配置

设置模式

odrv0.axis0.controller.config.control_mode 
//力矩控制
CONTROL_MODE_TORQUE_CONTROL
//速度控制
CONTROL_MODE_VELOCITY_CONTROL
//位置控制
CONTROL_MODE_POSITION_CONTROL

闭环控制

//速度模式
odrv0.axis0.controller.input_vel = [速度目标值]

//位置模式
odrv0.axis0.controller.input_pos = [位置目标值] 
//位置控制1是转到1圈的位置,0.5就是半圈的位置
    

//力矩模式
odrv0.axis0.controller.input_torque = [位置目标值]
    

pid控制

//速度环增益
//速度环积分
//位置环增益

//阻尼
odrv0.axis0.controller.config.vel_gain//最大到0.06,0.07就乱了

//位置模式出现误差回到指定位置,未归位的时间越长,力会越大
odrv0.axis0.controller.config.vel_integrator_gain

odrv0.axis0.controller.config.pos_gain//位置模式到达指定位置的速度

    
设置输入模式
odrv0.axis0.controller.config.control_mode

//1、关闭输入
INPUT_MODE_INACTIVE


//2、直接控制
INPUT_MODE_PASSTHROUGH
//在这种输入模式下,根据所设置的控制模式control_mode来控制电机,指令包括input_pos/input_vel/input_torque, 输入指
//令后电机直接运转至目标值。

    
//3、速度爬升
INPUT_MODE_VEL_RAMP
//这种输入模式下,驱动器需要在速度控制模式下,并会从当前的速度值逐渐爬升/下降到输入
//到 input_vel 的目标速度值。在这种模式下,需要配置
//爬升速率
//载惯量
odrv0.axis0.controller.config.vel_ramp_rate[turn/sec]
odrv0.axis0.controller.config.inertia[Nm/(turn/)]


//4、梯形轨迹模式
INPUT_MODE_TRAP_TRAJ
// 这种输入模式下,驱动器需要在位置控制模
// 式下,通过 input_pos 输入目标位置值,电
// 机按照加速-匀速-减速到达设定位置,即速
// 度变化轨迹为梯形,位置变化接近曲线。
//◼ 梯形轨迹下的速度限制
//◼ 梯形轨迹下的加速度限制
//◼ 梯形轨迹下的加速度限制
odrv0.axis0.trap_traj.config.vel_limit
odrv0.axis0.trap_traj.config.accel_limit
odrv0.axis0.trap_traj.config.decel_limit


//5、力矩爬升
INPUT_MODE_TORQUE_RAMP
// 这种输入模式下,驱动器需要在力矩控制模式下,
// 并会从当前的力矩值逐渐爬升/下降到输入到
// input_tor的目标速度值。在这种模式下,需要
// 配置
// ◼ 力矩爬升速度
odrv0.axis0.controller.config.torque_ramp_rate
其他指令
//查看电压
odrv0.vbus_voltage

调PID

调试准则

先调整内环,再调整外环

先调整角度环P

1、先调速度:

vel;

调之前把位置环的p清零;

调电机的阻尼

odrv0.axis0.controller.config.vel_gain = 0.05时摩擦感强烈;

在位置模式下调试

odrive官网上面,只是调试了位置环的p,速度环的P、I;

没有负载的情况下调试好后,加上负载后再调,因为有负载的情况下是不一样的;

如果用手转电机,设置积分会使得,电机不在指定角度的时间越久,电机回位置的力越大;

位置环的p,越大,转的越快,定一个稳定的值后调试v的p和i;

速度环的p越大,转的越快,太大会超调,会抖动;

速度环的i,如果偏差一直在的话,电机的力矩会越来越大;

结论

5010电机、AS5047p传感器:

1、官方odrive只是调了位置环的P以及速度环的P、I;

先调p、再调I

2、速度模式下:

位置环的p没用;

只有速度环的p有用:

p越高阻尼越大,速度给高时会越抖,但是速度低时候就比较稳定;

p越低阻尼越小,速度低时比较抖动,但是速度高时就不怎么抖动;

3、位置模式下:

a、位置环p设置数值,给定某个位置,他才会转动:

p越大,去这个位置的速度越快;

b、速度环p决定了阻尼大小,p越大,阻尼越大,太大会超调,就有噪声;

c、速度环I决定了力矩,在没到指定位置时,他的力矩会给的越来越大,用手拧电机,一定角度后保持几秒就能明显感觉到力矩变大了;

d、能转差不多50圈,再多就会启动过流保护,会阻止电源给电机供电;


原文地址:https://blog.csdn.net/user2604530353/article/details/142381444

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!