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万+

ES快速入门,一篇就懂!

Elastic Search 入门前言什么是搜索为什么常用数据库不适合做搜索什么是Lucene什么是Elastic SearchES核心概念ES使用正常启动索引​增删改查ES增加常见问题:ES删除ES查询欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的

qq1592的博客 9310

YOLOv8实战:用Labelme标注自定义数据集并训练分割模型(附完整代码)

本文详细介绍了使用Labelme标注自定义数据集并训练YOLOv8实例分割模型的完整流程。从环境搭建、数据标注与格式转换,到模型训练、调优、验证及部署,提供了实战代码和调优建议。文章还探讨了如何结合追踪目标技术,实现视频流中的实例分割与目标追踪,为计算机视觉应用提供了一套可复制的解决方案。

552

SimpleFOC、ODrive和VESC 教程链接汇总

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

loop222的博客 12万+

手把手实战:快速构建合同智能审查Agent

配置“模型供应商”,选择 “OpenAI-API-compatible”,输入申请到的 “API Key” 和 “URL” 后点击“保存”,如下图示例完成 “AlayaNew/DeepSeek-R1。至此,我们完成了合同智能审核Agent的构建,我们也可以在Dify中把这个智能体发布为API服务,这样企业其它应用如OA就可以通过API集成,在原合同流程中实现智能审核工作。该节点“输入变量”中,配置从“开始”节点中获取上传的文件,输出变量就是合同的内容,配置如下图。接下来我们开始创建智能体。

weixin_46880696的博客 4403

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

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

codenocold 1万+

手把手教你用差分放大电路搭建LC振荡器(实测频率误差分析)

本文通过一个差分放大电路搭建LC振荡器的实践案例,深入分析了实测频率与理论值产生显著误差的原因。核心在于共模电感的互感效应改变了谐振回路的等效电感,导致频率偏差。文章提供了从电路搭建、误差根源剖析到波形优化与稳定性提升的完整解决方案,帮助电子爱好者深入理解模拟电路的实际行为。

svm4gardener的博客 541

SMPLify-X关键点映射与OpenPose格式转换实战

本文深入解析了SMPLify-X与OpenPose之间关键点映射与格式转换的实战方法。针对SMPL、SMPL-H、SMPLX等参数化人体模型与OpenPose 2D姿态估计标准之间的数据鸿沟,文章详细对比了双方的关键点定义差异,并提供了核心的Python转换代码与映射表构建思路。通过清晰的步骤讲解与调试技巧,帮助开发者实现3D关节数据到OpenPose标准格式的高效、准确转换,为动作捕捉、3D姿态估计等应用奠定数据基础。

weixin_29046035的博客 166

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

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

loop222的博客 1万+

ICC2: 如何让CTS指定pin多长指定长度

这里create_clock不需要写到sdc里,在脚本里写就行,需要注意的是脚本里存在remove_clock_tree的话,add_buffer就要放remove_clock_tree后面,或者给guide buffer设don't touch也行。跟innovus的操作逻辑一样,如果要让tree上的某一点长长,要先考虑这个点后面的clock tree能正常balance。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?-5意味着长长5ns,相反正值意味着做短。

m0_61544122的博客 679

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

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

qq_21470441的博客 2434

【K8S系列】在 Kubernetes 中使用 Prometheus 进行监控的详细指南

Prometheus 是一个开源的监控和报警工具,广泛用于 Kubernetes 环境中。本文将深入探讨如何通过 Kubernetes 中的注解配置 Prometheus 的抓取设置,以高效监控服务,并确保系统的可靠性和可维护性。

颜淡慕潇 2万+

高压控制单元与接触器 —— BMS电池的“高压大门”

高压接触器在BMS电池管理系统中扮演着“高压大门”的角色,负责控制电池包与整车高压母线的连接与隔离。接触器的工作原理基于线圈产生的磁力吸合接点,通过主触点接通高压电流路径,辅助触点检测状态,灭弧结构保护接点。预充电路的设计是为了避免直接连接大电容时产生的浪涌电流冲击,通过预充电阻逐步充电,确保系统安全上电。接触器控制策略包括顺序控制、辅助触点检测、温度监控、故障断电和背靠背MOS辅助控制,以确保系统的高效和安全运行。工程师在选择接触器型号、控制线圈、检测状态、软件冗余控制和预充失败保护等方面提供了具体建议。

weixin_43199439的博客 812

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

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

weixin_42438635的博客 2194

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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

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

qq_21470441的博客 952

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

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

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

qq_42681425的博客 4339

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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、付费专栏及课程。

余额充值