ODrive的操作演示——控制AS5047P、霍尔电机和轮毂电机

Odrive无刷驱动器 开发过程学习记录(1)——window10系统下的基础配置 ** Odrive无刷驱动器 开发过程学习记录(1) **——window10系统下的基础配置 开发说明: *ODrive 硬件版本: v3.6-56V ODrive 硬件内部固件版本: fw-v0.5.1 odrivetool版本: 0.5.1.post0 (pip install odrive==0.5.1.post0)* 配置环境: windows10 一、基础硬件配置 1. ODrive 驱动开发板 2. 一至二个无刷电机,ODrive可以驱动两个无刷电机。 3. 一个功率耗散电阻。推荐使用5 阅读详情
AI摘要

本文围绕ODrive v0.5.1/v0.5.6固件,详细演示如何驱动AS5047P编码器航模电机(支持ABZ/SPI接口)、双3505电机、霍尔电机、轮毂电机及云台电机。重点涵盖SPI通信异常排查(如ENCODER_ERROR_ABS_SPI_COM_FAIL)、电源与接口优化方案、无感模式配置等关键操作要点,适用于嵌入式电机控制系统开发与调试。


 
ODrive、VESC和SimpleFOC 教程链接汇总:请点此链接
 

说明

本文主要结合本店的驱动器和电机,快速实现对电机的控制。
在这里插入图片描述

ODrive 购买链接:某宝购买
电机 购买链接:某宝购买
 
 

  • 关于ODrive的操作教程网上有很多,本节只是尽可能用最少的配置让电机转起来,不保证参数为最佳设置,
  • ODrive版本v0.5.1,
  • ABZ和ABI的叫法不同,指的都是一种编码器。

一、5008航模电机标配AS5047P

ODrive 购买链接:https://item.taobao.com/item.htm?ft=t&id=644329838237,图锐科技
电机 购买链接:https://item.taobao.com/item.htm?ft=t&id=643573104607,图锐科技

 

1.1、接ABZ接口

在这里插入图片描述

//5008电机AS5047P_ABI接口,接在M0上,电源电压12V,24V用以下配置也可以
odrv0.vbus_voltage                                                      //查看电压
odrv0.erase_configuration()                                             //清除之前的配置,恢复默认配置
odrv0.config.dc_bus_overvoltage_trip_level = 56
odrv0.config.dc_max_positive_current = 30
odrv0.config.dc_max_negative_current = -5
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT           //设置电机类型
odrv0.axis0.motor.config.pole_pairs = 7                                 //默认7
odrv0.axis0.motor.config.calibration_current = 5                        //默认10,10=0.88A,5=0.3A(万用表测母线电流)
odrv0.axis0.encoder.config.mode = ENCODER_MODE_INCREMENTAL              //选择编码器类型
odrv0.axis0.encoder.config.cpr = 4000                                   //AS5047P=4000,TLE5012B=16384
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL   //设置为速度模式
odrv0.axis0.controller.config.vel_gain = 0.02                           //默认0.167,速度环P参数
odrv0.axis0.controller.config.vel_integrator_gain = 0.2                 //默认0.33333,速度环I参数
odrv0.axis0.controller.config.vel_limit = 100                           //默认2,限制最大转速
odrv0.axis0.controller.config.input_mode = INPUT_MODE_VEL_RAMP          //速度爬升模式,否则速度变化时“噔”一声
odrv0.axis0.controller.config.vel_ramp_rate = 50                        //默认1非常小
odrv0.save_configuration()                                              //保存参数
odrv0.reboot()                                                          //重启

odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE           //电机校准,2秒后“哔”一声,然后正反转一圈
odrv0.axis0.error                                                            //查看是否有错误
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL                 //进入闭环,电流会增加约50mA

odrv0.axis0.controller.input_vel = 10                                        //速度限制会影响最大转速
odrv0.axis0.controller.input_vel = 0
odrv0.axis0.requested_state = AXIS_STATE_IDLE                                //进入空闲模式

 

1.2、接SPI接口

  • 用官方的ODrive板子:
    SPI接M0端子,进入闭环后电机稍微动一下就报错,查看错误:ENCODER_ERROR_ABS_SPI_COM_FAIL,
    百度后找到这个:https://www.bilibili.com/read/cv12631507/。
    用M1接口控制好点,但是转速不能过高,否则也报错。
    应该跟ODrive的电源是通过M0的DRV8301降压有关,或者单片机和两路DRV8301通过SPI通信,导致SPI复用过多。
    (本人实际测试,仅对我测试的板子负责)

  • 本店改版后的ODrive,使用单独的电源芯片,并且SPI接口没有过多复用,不存在这个问题,M0/M1都能很好的转动。
    在这里插入图片描述

//5008电机AS5047P_SPI接口,接在M0上,电源电压12V,24V也可以
odrv0.erase_configuration()                                           //清除之前的配置,恢复默认配置
odrv0.config.dc_bus_overvoltage_trip_level = 56
odrv0.config.dc_max_positive_current = 30
odrv0.config.dc_max_negative_current = -5
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT         //设置电机类型
odrv0.axis0.motor.config.pole_pairs = 7                               //默认7
odrv0.axis0.motor.config.calibration_current = 5                      //默认10,10=0.88A,5=0.3A(万用表测母线电流)
odrv0.axis0.encoder.config.mode = ENCODER_MODE_SPI_ABS_AMS            //设置编码器类型
odrv0.axis0.encoder.config.abs_spi_cs_gpio_pin = 1                    //选择CS引脚
odrv0.axis0.encoder.config.cpr = 2**14                                //14bit
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL    //设置为速度模式
odrv0.axis0.controller.config.vel_gain = 0.02                         //默认0.167,速度环P参数
odrv0.axis0.controller.config.vel_integrator_gain = 0.2               //默认0.33333,速度环I参数
odrv0.axis0.controller.config.vel_limit = 100                         //默认2,限制最大转速
odrv0.axis0.controller.config.input_mode = INPUT_MODE_VEL_RAMP        //速度爬升模式,否则速度变化时“噔”一声
odrv0.axis0.controller.config.vel_ramp_rate = 50                      //默认1非常小
odrv0.save_configuration()                                            //保存参数
odrv0.reboot()                                                        //重启

odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE            //电机校准,2秒后“哔”一声,然后正反转一圈
odrv0.axis0.error                                                             //查看是否有错误
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL                  //进入闭环,电流会增加约50mA

odrv0.axis0.controller.input_vel = 10                                         //设置速度,速度限制会影响最大转速
odrv0.axis0.controller.input_vel = 0
odrv0.axis0.requested_state = AXIS_STATE_IDLE                                 //进入空闲模式

//如果以上操作没有错误,可以保存校准参数,以后不用每次都校准(ABZ编码器必须每次上电校准)。
odrv0.axis0.motor.config.pre_calibrated = True        //True=上电跳过校准使能1
odrv0.axis0.encoder.config.pre_calibrated = True      //True=上电跳过校准使能2
odrv0.axis0.config.startup_closed_loop_control = False    //True=上电进入闭环,False=上电空闲状态
odrv0.save_configuration()
odrv0.reboot()

 

1.3、无感模式

去掉编码器接线,就是无感控制

//无感模式配置,5008电机,KV335,固件0.5.1
odrv0.erase_configuration()                                                   //清除之前的配置,恢复默认配置
odrv0.config.dc_bus_overvoltage_trip_level = 56
odrv0.config.dc_max_positive_current = 30
odrv0.config.dc_max_negative_current = -5
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT                 //设置电机类型
odrv0.axis0.motor.config.current_lim = 20                                     //默认10
odrv0.axis0.motor.config.direction = 1                                        //默认0,设定电机转向,必须配置
odrv0.axis0.motor.config.calibration_current = 5                              //默认10,5=0.38A
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL    //设置为速度模式
odrv0.axis0.controller.config.vel_gain = 0.01                                 //默认0.167,速度环P参数
odrv0.axis0.controller.config.vel_integrator_gain = 0.05                      //默认0.33333,速度环I参数
odrv0.axis0.controller.config.vel_limit = 100                                 //默认2,限制最大转速
odrv0.axis0.controller.config.input_mode = INPUT_MODE_VEL_RAMP                //速度爬升模式
odrv0.axis0.controller.config.vel_ramp_rate = 50                              //默认1非常小
odrv0.axis0.sensorless_estimator.config.pm_flux_linkage = 5.51328895422 / (7 * 335)     //永磁磁链配置,极对数=7,KV335
odrv0.save_configuration()
odrv0.reboot()

odrv0.axis0.requested_state = AXIS_STATE_MOTOR_CALIBRATION               //电机校准,2秒后“哔”一声结束
odrv0.axis0.error                                                        //查看是否有错误
odrv0.axis0.controller.input_vel = 10
odrv0.axis0.requested_state = AXIS_STATE_SENSORLESS_CONTROL             //电机启动并运行,vel=10

odrv0.axis0.controller.input_vel = 50                                   //设置目标速度,最大速度为限制速度
odrv0.axis0.controller.input_vel = 0
odrv0.axis0.requested_state = AXIS_STATE_IDLE                           //进入空闲模式

//如果以上操作没有错误,可以保存校准参数,以后不用每次都校准(ABZ编码器必须每次上电校准)。
odrv0.axis0.motor.config.pre_calibrated = True        //True=上电跳过校准使能1
odrv0.axis0.encoder.config.pre_calibrated = True      //True=上电跳过校准使能2
odrv0.axis0.config.startup_closed_loop_control = False    //True=上电进入闭环,False=上电空闲状态
odrv0.save_configuration()
odrv0.reboot()

 
固件0.5.6和0.5.1的配置稍微有点差异,下面说下0.5.6版本的配置:

//无感模式配置,5008电机,KV335,固件0.5.6
odrv0.erase_configuration()
odrv0.config.dc_bus_overvoltage_trip_level = 56
odrv0.config.dc_max_positive_current = 30
odrv0.config.dc_max_negative_current = -5
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT
odrv0.axis0.motor.config.current_lim = 20                                      //默认10
//odrv0.axis0.encoder.config.direction = 1                        //0.5.1版本是motor.config,在0.5.6 此句可以不配置
odrv0.axis0.motor.config.calibration_current = 5                              //默认10,5=0.38A
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL    //设置为速度模式
odrv0.axis0.controller.config.vel_gain = 0.01                                //默认0.167,速度环P参数
odrv0.axis0.controller.config.vel_integrator_gain = 0.05                     //默认0.33333,速度环I参数
odrv0.axis0.controller.config.vel_limit = 100                                //默认2,限制最大转速
odrv0.axis0.controller.config.input_mode = INPUT_MODE_VEL_RAMP               //速度爬升模式
odrv0.axis0.controller.config.vel_ramp_rate = 50                             //默认1非常小
odrv0.axis0.config.enable_sensorless_mode = True                             //0.5.6版本 需要配置为无感模式
odrv0.axis0.sensorless_estimator.config.pm_flux_linkage = 5.51328895422 / (7 * 335)  //永磁磁链配置,极对数=7,KV335
odrv0.save_configuration()
odrv0.reboot()

odrv0.axis0.requested_state = AXIS_STATE_MOTOR_CALIBRATION        //电机校准,2秒后“哔”一声结束
odrv0.axis0.error
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL      //进入闭环,电机转速约 9 turn/s

odrv0.axis0.controller.input_vel = 50                             //设置目标速度,最大速度为限制速度
odrv0.axis0.controller.input_vel = 0
odrv0.axis0.requested_state = AXIS_STATE_IDLE                     //进入空闲模式

 

二、同时控制两个3505电机

ODrive 购买链接:https://item.taobao.com/item.htm?ft=t&id=644329838237,图锐科技
电机 购买链接:https://item.taobao.com/item.htm?ft=t&id=643573104607,图锐科技
 
在这里插入图片描述

//3505电机AS5047P_ABZ接口,电源电压12V
odrv0.erase_configuration()
odrv0.config.dc_bus_overvoltage_trip_level = 56
odrv0.config.dc_max_positive_current = 30
odrv0.config.dc_max_negative_current = -5
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT
odrv0.axis0.motor.config.pole_pairs = 10                                //默认7,3505电机10对极
odrv0.axis0.motor.config.calibration_current = 4                        //默认10,4=0.33A(万用表测母线电流)
odrv0.axis0.encoder.config.mode = ENCODER_MODE_INCREMENTAL              //选择编码器类型
odrv0.axis0.encoder.config.cpr = 4000                                   //AS5047P=4000,TLE5012B=16384
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL   //设置为速度模式
odrv0.axis0.controller.config.vel_gain = 0.02                           //默认0.167,速度环P参数
odrv0.axis0.controller.config.vel_integrator_gain = 0.2                 //默认0.33333,速度环I参数
odrv0.axis0.controller.config.vel_limit = 100                           //默认2,限制最大转速
odrv0.axis0.controller.config.input_mode = INPUT_MODE_VEL_RAMP          //为2,速度爬升模式,否则速度变化时“噔”一声
odrv0.axis0.controller.config.vel_ramp_rate = 50                        //默认1非常小

odrv0.axis1.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT
odrv0.axis1.motor.config.pole_pairs = 10
odrv0.axis1.motor.config.calibration_current = 4
odrv0.axis1.encoder.config.mode = ENCODER_MODE_INCREMENTAL              //选择编码器类型
odrv0.axis1.encoder.config.cpr = 16384
odrv0.axis1.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL
odrv0.axis1.controller.config.vel_gain = 0.02
odrv0.axis1.controller.config.vel_integrator_gain = 0.2
odrv0.axis1.controller.config.vel_limit = 100
odrv0.axis1.controller.config.input_mode = INPUT_MODE_VEL_RAMP
odrv0.axis1.controller.config.vel_ramp_rate = 50

odrv0.save_configuration()                                              //保存参数
odrv0.reboot()                                                          //重启

odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE           //电机校准,2秒后“哔”一声,然后正反转一圈
odrv0.axis0.error                                                            //查看是否有错误
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL                 //进入闭环,电流会增加约50mA

odrv0.axis1.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
odrv0.axis1.error
odrv0.axis1.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL

odrv0.axis0.controller.input_vel = 10                                        //速度限制会影响最大转速
odrv0.axis1.controller.input_vel = 10

odrv0.axis0.encoder.vel_estimate  //读取实际转速
odrv0.axis1.encoder.vel_estimate  //读取实际转速

 

三、霍尔电机

在这里插入图片描述

odrv0.erase_configuration()
odrv0.config.dc_bus_overvoltage_trip_level = 56
odrv0.config.dc_max_positive_current = 20
odrv0.config.dc_max_negative_current = -3
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_GIMBAL                  //60W以内肯定不是大电流
odrv0.axis0.motor.config.pole_pairs = 2                                  //默认7,内转子霍尔电机极对数
odrv0.axis0.motor.config.calibration_current = 2
odrv0.axis0.motor.config.current_lim = 20                                //默认10
odrv0.axis0.encoder.config.mode = ENCODER_MODE_HALL
odrv0.axis0.encoder.config.cpr = 12
odrv0.axis0.encoder.config.bandwidth = 100
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL
odrv0.axis0.controller.config.vel_gain = 0.02                           //默认0.167抖动严重
odrv0.axis0.controller.config.vel_integrator_gain = 0                   //默认0.33333,速度环I参数
odrv0.axis0.controller.config.vel_limit = 50                            //默认2,限制最大转速
odrv0.axis0.controller.config.input_mode = INPUT_MODE_VEL_RAMP
odrv0.axis0.controller.config.vel_ramp_rate = 50                        //默认1,非常小,加速度
odrv0.save_configuration()
odrv0.reboot()

odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
odrv0.axis0.error
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
odrv0.axis0.controller.input_vel = 10   //电机转动
odrv0.axis0.controller.input_vel = 0    //停止

//如果以上操作没有错误,可以保存校准参数,以后不用每次都校准(ABZ编码器必须每次上电校准)。
odrv0.axis0.motor.config.pre_calibrated = True        //True=上电跳过校准使能1
odrv0.axis0.encoder.config.pre_calibrated = True      //True=上电跳过校准使能2
odrv0.axis0.config.startup_closed_loop_control = False    //True=上电进入闭环,False=上电空闲状态
odrv0.save_configuration()
odrv0.reboot()

 

四、轮毂电机

在这里插入图片描述

odrv0.erase_configuration()
odrv0.config.dc_bus_overvoltage_trip_level = 56
odrv0.config.dc_max_positive_current = 30
odrv0.config.dc_max_negative_current = -5
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT
odrv0.axis0.motor.config.pole_pairs = 15
odrv0.axis0.motor.config.calibration_current = 10
odrv0.axis0.motor.config.resistance_calib_max_voltage = 5	     //默认2,配置电机校准时的电压
odrv0.axis0.motor.config.current_lim = 20                        //默认10
odrv0.axis0.encoder.config.mode = ENCODER_MODE_HALL
odrv0.axis0.encoder.config.cpr = 90                              //默认8192,15对极*6=90
odrv0.axis0.encoder.config.bandwidth = 100	                     //配置编码带宽
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL   //设置为速度模式
odrv0.axis0.controller.config.vel_gain = 0.2                     //默认0.167,速度环P参数
odrv0.axis0.controller.config.vel_integrator_gain = 0.07         //默认0.33333,速度环I参数
odrv0.axis0.controller.config.vel_limit = 10                     //默认2,限制最大转速
odrv0.axis0.controller.config.input_mode = INPUT_MODE_VEL_RAMP	 //速度
odrv0.axis0.controller.config.vel_ramp_rate = 5			         //加速度
odrv0.save_configuration()
odrv0.reboot()

odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
odrv0.axis0.error
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
odrv0.axis0.controller.input_vel = 10   //电机转动
odrv0.axis0.controller.input_vel = 0    //停止

//如果以上操作没有错误,可以保存校准参数,以后不用每次都校准(ABZ编码器必须每次上电校准)。
odrv0.axis0.motor.config.pre_calibrated = True        //True=上电跳过校准使能1
odrv0.axis0.encoder.config.pre_calibrated = True      //True=上电跳过校准使能2
odrv0.axis0.config.startup_closed_loop_control = False    //True=上电进入闭环,False=上电空闲状态
odrv0.save_configuration()
odrv0.reboot()

 

五、云台电机

在这里插入图片描述
 

odrv0.erase_configuration()
odrv0.config.dc_max_positive_current = 56
odrv0.config.dc_max_negative_current = -5.0
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_GIMBAL //云台电机
odrv0.axis0.motor.config.pole_pairs = 7                 //电机极对数
odrv0.axis0.motor.config.calibration_current = 2.5      //设置越大电流越大电机发热严重;设置太小电机没劲校准失败
odrv0.axis0.encoder.config.mode = ENCODER_MODE_SPI_ABS_AMS            //编码器类型AS5047P的spi接口
odrv0.axis0.encoder.config.abs_spi_cs_gpio_pin = 1                    //选择CS引脚
odrv0.axis0.encoder.config.cpr = 2**14                                //14bit
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL //速度模式
odrv0.axis0.controller.config.vel_gain = 0.02                         //速度环P参数
odrv0.axis0.controller.config.vel_integrator_gain = 0.5               //速度环I参数
odrv0.axis0.controller.config.vel_limit = 10                          //限制最大转速600RPM
odrv0.axis0.controller.config.input_mode = INPUT_MODE_VEL_RAMP        //速度爬升模式
odrv0.axis0.controller.config.vel_ramp_rate = 10                      //速度爬升率

odrv0.save_configuration()
odrv0.reboot()

odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
odrv0.axis0.error                                     //如果校准失败,修改calibration_current
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL

odrv0.axis0.controller.input_vel = 5  //设置目标速度,5圈/秒
odrv0.axis0.controller.input_vel = 0  //停止

//如果以上操作没有错误,可以保存校准参数,以后不用每次都校准(ABZ编码器必须每次上电校准)。
odrv0.axis0.motor.config.pre_calibrated = True        //True=上电跳过校准使能1
odrv0.axis0.encoder.config.pre_calibrated = True      //True=上电跳过校准使能2
odrv0.axis0.config.startup_closed_loop_control = False    //True=上电进入闭环,False=上电空闲状态
odrv0.save_configuration()
odrv0.reboot()

 
 
ODrive 购买链接:https://item.taobao.com/item.htm?ft=t&id=644329838237,图锐科技
电机 购买链接:https://item.taobao.com/item.htm?ft=t&id=643573104607,图锐科技
 
 
 
(完)
 


SimpleFOC调参2-速度、位置控制 simpleFOC studio调节速度环、位置环过程总结 阅读详情

相关推荐

AS5047P STM32CubeMX HAL库 调试

【代码】AS5047P STM32CubeMX HAL库 调试。

sinat_22081411的博客 2537

ODrive移植(一)—— 国产替代方案(VScode版移植)

官方网站:https://odriverobotics.com/github网站:https://github.com/odriverobotics/ODrive官方使用说明:https://docs.odriverobotics.com/v/latest/guides/getting-started.html,在左下角选择对应的版本,比如ODrive-V3.6的当前最新版本是0.5.6,

loop222的博客 1万+

odrive搭建差速小车+轮毂电机+RC航模控制器

参考: 1.远程控制接口的描述 2.轮毂电机运动配置参数

weixin_42438635的博客 2587

ODrive应用 #1 ODrive入门指南

ODrive 入门 文章目录ODrive 入门硬件需求需要准备以下硬件:ODrive 接线Wiring up the motorsWiring up the encodersSafety & Power UPDownloading and Installing ToolsWindowsOSXLinuxFirmwareStart `odrivetool`Configure M02. Set ...

codenocold 8万+

别再到处找教程了!一份超全的SimpleFOC、ODrive、VESC实战指南(附避坑清单)

本文提供了一份全面的SimpleFOC、ODrive和VESC电机控制实战指南,涵盖硬件选型、环境搭建、基础控制到高级应用的详细步骤,并附有避坑清单。通过实战案例和故障排查技巧,帮助开发者快速掌握三大平台的核心技术,提升电机控制项目的成功率。

weixin_30790841的博客 496

ODrive 核心参数配置实战指南

本文提供ODrive核心参数配置实战指南,详细解析电机参数、编码器校准、控制器调优等关键配置步骤。针对ODrive驱动器,分享实际调试技巧与安全配置建议,帮助用户避开常见陷阱,实现精密电机控制。

efc12345678的博客 217

ODrive移植keil(八)—— 闭环控制

定点运算早就存在,但是ST采用定点运算配合它的电机库,极大的推广了这一技术,我觉得目前市面上只要是定点运算的电机驱动器,应该都会受到ST的影响,或者直接就师承ST。发送指令“C”,3秒钟后电机“嘀”一声,然后正转8个电角度,反转8个电角度,同时串口打印校准参数。如果限速,电机只能达到限制转速。发送指令“C”,3秒钟后电机“嘀”一声,然后正转8个电角度,反转8个电角度,同时串口打印校准参数。发送指令“C”,3秒钟后电机“嘀”一声,然后正转8个电角度,反转8个电角度,同时串口打印校准参数。

loop222的博客 1万+

RACECAR电机控制与电池管理实战指南

电机控制与电池管理是移动机器人系统稳定运行的基础技术,涉及闭环控制原理、电流-电压-温度多维耦合建模及实时状态估计。其核心在于弥合硬件物理行为与ROS软件抽象之间的语义鸿沟,通过精准的PID整定、四维电池状态(电压/电流/温度/SOC)联合估算,实现从指令到扭矩的可靠转化。该技术广泛应用于教育机器人平台(如RACECAR)、ROS小车开发、嵌入式运动控制系统调试等场景,尤其适合已完成基础ROS部署但面临实车抖动、续航误判、响应延迟等工程问题的学习者与一线工程师。

weixin_33721427的博客 361

高性能开源伺服器ODRIVE

​ODrive是一个基于STM32的高性能FOC伺服驱动器,其可以同时驱动两个无刷电机,早期被大量使用与3D打印机或自制CNC车床电气系统的设计中,知名极客James Bruton使用其作为大部分自己制作机器人伺服驱动的核心单元,之前Stanford开源的8自由度四足机器人Doggo同样也采用了Odrive作为核心的驱动器。 步进电机在爱好机器人项目中无处不在:如果您今天制作机器人或自动化项目,您很可能会使用它们。几乎所有从3D打印机和CNC铣床到机器人或汽车的项目都使用它们。然而,在工业自动化领域,无刷

电机与控制 3万+

瑞萨RA6M4平台I2C驱动移植实战:MPU6050传感器集成指南

本文详细介绍了在瑞萨RA6M4平台上进行I2C驱动移植并集成MPU6050传感器的实战指南。通过FSP配置工具添加I2C主栈,适配MPU6050官方驱动,实现传感器数据读取与调试,为嵌入式开发提供完整的解决方案。

banana的博客 109

Python xlwings报错解决:从‘NoneType‘到完美运行WPS表格的完整指南

本文深入解析了使用Python xlwings库自动化WPS表格时遇到的经典'NoneType'报错(AttributeError: 'NoneType' object has no attribute 'apps')的根源与解决方案。核心在于pywin32版本与WPS的兼容性问题,文章提供了从版本降级、依赖管理到构建健壮自动化环境的完整实战指南,帮助开发者彻底解决兼容性难题,实现稳定运行。

n4o5p6q7r的博客 303

SimpleFOC、ODrive和VESC 教程链接汇总

一、SimpleFOC系列教程 SimpleFOC(一)—— 简介(附有文件下载链接) SimpleFOC(二)—— 快速入门 (开环控制) SimpleFOC(三)—— AS5600角度读取 SimpleFOC(四)—— 闭环控制 SimpleFOC(五)—— 双电机控制 SimpleFOC(六)—— PowerShield和AS5047P SimpleFOC(七)——STM32(Bluepill)的应用 SimpleFOC(八)—— 理论+实践 深度分析SVPWM SimpleFOC(九)——

loop222的博客 12万+

手把手教你用Simulink搭建DSOGI-PLL模型(附完整代码下载)

本文详细介绍了在Simulink中搭建高鲁棒性DSOGI-PLL模型的完整工程实践指南。针对传统锁相环在非理想电网下的不足,文章深入剖析了双二阶广义积分器锁相环(DSOGI-PLL)的核心原理与优势,并提供了从模块构建、系统组装到参数整定与测试验证的全流程手把手教程,附有完整代码下载,助力工程师应对谐波、电压跌落等复杂电网工况。

weixin_29223603的博客 388

ODrive应用 #8 平衡车轮毂电机和遥控器设置指南

平衡车轮毂电机和遥控器设置指南 应大家的要求,这里提供了有关如何设置ODrive以使用RC PWM输入来驱动平衡车轮毂电机的详细说明。 每个步骤都附带说明,因此希望您可以顺利的完成配置。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zvpfdX79-1575348380810)(img/IMAGE ALT TEXT HERE.jpg)] 点击上方图片播放视频 电机...

codenocold 1万+

SigFit实战:从FEA到光学仿真的热力耦合分析全流程解析

在光机系统与芯片封装等精密工程领域,热与力的耦合效应是影响产品性能与可靠性的核心物理问题。有限元分析(FEA)是预测结构在热、力载荷下变形与应力的基础工具,但其结果通常无法直接用于评估光学性能。这需要一座桥梁,将物理场数据转化为光学设计语言。其核心原理在于数据映射与面形表征技术,例如通过泽尼克多项式拟合,将离散的节点位移分解为离焦、像散等标准光学像差。这项技术的工程价值在于,它实现了多物理场仿真的闭环,使工程师能在设计阶段精准预测热变形或应力对波前误差、调制传递函数等关键光学指标的影响。其典型应用场景包括高

weixin_28630185的博客 337

三边定位的最小二乘法运用

已知:条件基站到移动台的距离D,基站的坐标(xi,yi,zi) 求:移动台的坐标(x,y,z) 运用最小二乘法的核心是找到最小二乘法的矩阵形式即 Ax=B 在本次实验中通过三边定位计算得到 A=[A;2*(xi-x1),2*(yi-y1),2*(zi-z1]; %系数矩阵A b=[b;D1^2-Di^2+xi^2+yi^2+zi^2-x1^2-y1^2-z1^2]; %增广矩阵b

qq_26250141的博客 1万+

SimpleFOC移植STM32(八)—— 霍尔电机

假如霍尔电机是2对极,那么cpr=12,示意图刚好相当于一个钟表,假如当前电机的电角度在12点,q轴如上图,电机的转矩将一直保持这个状态,直到触发到下一个霍尔跳变,代码检测到新的角度,产生新的矢量q1并持续到下一个状态,所以simpleFOC对霍尔电机的控制效果等同于六步换相法。当然SimpleFOC提供了一个最简单的控制方法,保证电机能够转起来,你不要一看它的控制效果不好扭头就走,你知道了原理下一步就可以把ODrive的角度插值法移植过来,电机就可以实现ODrive的效果,是不是很简单。

loop222的博客 1万+

朱长江《偏微分方程简明教程》答案第一章部分

偏微分方程简明教程第一章习题1.1 第一章 习题1.1 1、指出下列方程的阶,并判断它是线性的还是非线性的。如果是线性的,说明它还是其次的: (1)ut−(uxx+uyy)+1=0;(2)ut−uxx+xu=0;(3)ut−uxxt+uux=0;(4)ux2+uuy=0;(5)utt−uxx+t2+x2=0;(6)ux+eyuy=0;(7)ut+uxxxx+1+u=0;(8)ux(1+ux2)−12+uy(1+uy2)−12=0;(9)∂4u∂x4+2∂4u∂x2∂y2+∂4u∂y4=0;(10)∂3u∂x

ymengm的博客 6760

【ODrive】驱动两台无刷霍尔电机实例

直流无刷霍尔电机设置指南,ODrive FOC

qq_21470441的博客 2434

【Halcon-2D测量】add_metrology_object_rectangle2_measure 函数功能(用于向2D计量模型中添加旋转矩形(rectangle2类型)计量对象)

HALCON算子add_metrology_object_rectangle2_measure解析摘要 该算子是HALCON 2D计量模块的核心算子,用于添加旋转矩形计量对象并配置测量参数。主要功能包括:定义旋转矩形几何轮廓(中心坐标、主轴角度、长短半长);生成垂直于矩形边界的测量区域;设置边缘提取预处理参数(高斯平滑、振幅阈值)。关键注意事项:MeasureLength1必须小于矩形长短半长;角度参数Phi需使用弧度单位;多线程需同步模型句柄。该算子适用于方形螺母、PCB板边框等矩形零件的精密测量,需与a

weixin_45590420的博客 1223

LPDDR6 tdbR2dbR_L cross row技术探讨

LPDDR6 tdbR2dbR_L cross row技术探讨

zilan23的博客 47

odrive 使用can通讯搭建差速小车

1:标定电机 电机的标定 2:配置ODrive的can通讯接口 can通讯配置

weixin_42438635的博客 2194

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【ODrive 0.5.6】驱动两台无刷霍尔电机实例

因此,为了获得可靠的霍尔信号,建议您在这些引脚上添加一些滤波电容器。如果您有不同的电机,您需要数一下磁铁的数量或拥有一份可靠的数据手册来获取这些信息。悬浮滑板的轮毂电机相比业余飞行器电机具有较高的电阻,所以我们希望在电机校准中使用稍高的电压,并设置电流感应增益以提高灵敏度。此外,我们还应该从速度控制模式开始,因为这可能是您对有轮机器人所需的方式。电机的电感也相对较高,因此我们需要将电流控制器的带宽从默认值降低以保持其稳定性。在下一步我们将开始给电机供电,因此我们希望首先应用上述需要重启的一些设置。

qq_21470441的博客 952

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【电机控制】OdriveFOC-无刷电机控制(指令篇——配置0.5.6版本!)

现在硬件平台已搭建,软件已安装,接下来就是关键的给控制器下发指令,按照预想控制电机。【电机控制】OdriveFOC-无刷电机控制(硬件篇)【电机控制】OdriveFOC-无刷电机控制(软件篇)提示:以下是本篇文章正文内容,下面案例可供参考本文仅仅简单介绍了OdriveFOC-无刷电机控制(指令篇),评论区欢迎讨论。

qq_42681425的博客 4339

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ODrive入门配置

ODrive入门配置,安装Python和odrivetool

loop222的博客 1万+

ODrive无刷电机伺服驱动快速上手:接线、配置与校准实战

无刷电机因高效率、长寿命被广泛用于机器人和自动化设备,但传统伺服驱动成本高、调试复杂。FOC矢量控制通过磁场定向与三环调节,能让无刷电机实现类似伺服的位置、速度和力矩控制,工程落地却需处理编码器反馈、三相逆变、PID整定等难题。开源方案ODrive将FOC控制固化成一块驱动板,只需接好电机与编码器,配置极对数、相电阻、相电感等参数并完成校准,即可进入闭环控制。这种低成本伺服方案在机械臂关节、轮毂电机、差速机器人底盘等场景中极具实用价值。以ODrive v3.6为例,本文结合AS5047P编码器,梳理了从硬件

weixin_29163797的博客 231
上一篇: SimpleFOC之ESP32(八)—— ABZ编码器电机
下一篇: ESP32直接烧写bin文件
loop222
博客等级 码龄8年 4091粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值