自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 SimpleFOC、ODrive和VESC 教程链接汇总

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

2021-11-10 13:48:16 63401 15

原创 ODrive移植keil(九)—— 抗齿槽效应算法

在永磁电机中,即使定子中没有电流通过,也会存在一个电磁转矩,这个转矩叫齿槽力矩(Cogging Torque)。用手转动电机,会感觉到它从当前点“跳跃”并“稳定”在另一个点,电机有“一格一格”的顿挫感(俗称颗粒感)。当电机低速转动时,表现为“一顿一顿”,当电机高速转动时,电机的振动和噪声会更大。某疆早期的2312电机齿槽效应非常大,后来的电机齿槽效应明显变小了。5008电机的齿槽效应小,改善效果不明显,用齿槽效应大的电机测试,改善效果还是很明显的。

2023-12-08 09:00:23 2438 3

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

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

2023-10-19 17:28:23 2246 4

原创 ODrive移植keil(七)—— 插值算法和偏置校准

ENCODER_cpr 为接口对应的cpr,比如AS5047P的ABZ接口cpr=4000,SPI接口的cpr=16384,注意区分。读取后的角度为原始数据,再在encoder_update() 中处理,数据处理包含了两部分:锁相环和插值,目前支持四种编码器:ABZ、AS5047P、MT6701、MA730,本例以ABZ信号为例,发送指令“P”(不需要回车换行),同时用手转动电机,查看角度打印,使用SPI接口,SPI读出角度为绝对值,更容易找到规律,

2023-10-14 18:10:02 1891 5

原创 ODrive移植keil(六)—— 测量电阻电感和电流环PI参数整定

最初移植的时候,我也用函数指针实现中断中的函数运行,但是发现函数指针太不直观了,非常容易被忽视和忘记更改指针,所以用了标志位的方法,不高级但却实用。发送指令“C”(不需要回车换行),3秒钟后电机“嘀”一声,校准完毕,打印测量结果,同时打印整定后的电流环PI参数。在ODrive代码中,设定了测量电流 I,根据检测到的电流不断调整 U,大概3秒钟,最终稳定电流到设定值,电阻电感测量的相关代码在motor.c文件中,可自行查看,上面也讲过了原理,所以就不再细说,

2023-10-12 10:31:43 1445

原创 ODrive移植keil(五)—— 开环控制和电流变换

如果转速设置太大,电机会振动,可以调高 target_voltage_ 以达到更大的转速,但是注意电机电流,注意发热。ODrive的程序架构,也是我在基本移植完代码后才焕然大悟的,如果事先有架构意识,不至于看代码的时候那么痛苦。Park变换的θ是当前读出的角度,而Park逆变换是下次FOC计算时的角度(当前角度+估算的下次转过的角度),3、Uq设置太大,电机发热严重,Uq设置太小,电机没劲转不动或者转不快,所以一定要根据电机相电阻设置大小,4、θ不是当前的角度,是目标角度,就是下次计算时的角度。

2023-10-11 10:57:06 1846 1

原创 ODrive移植keil(四)—— PWM触发ADC采样

ADC以DMA的方式转换,代码单独执行这个操作是没问题,但在初始化阶段随着片内外设配置的增加,或者代码执行顺序的变换,就会发生错位。网上找到过很多解释错位原因以及改正办法,但从来都没有彻底解决过这个问题,此次移植又遇到了这个问题,曾经的解决办法测试一遍后都失效了,最后发现用TIM2更新触发的方式不再错位。ADC1多通道规则转换时,如果使用DMA方式,经常会发生AD值错位的现象,比如第一个AD值的高字节放入的是低字节的数据,而低字节是第二个AD值的高字节数据,以此类推,转换值全部失效。

2023-09-16 18:08:18 2484 1

原创 ODrive移植keil(三)—— USB虚拟串口和快速正弦余弦运算

但是我实际的测试,从软件中断退出后仍然会执行第二个更新中断,并且我觉得在软件中断中等待第二次更新中断,很浪费时间,所以就没有使用这个方案。以上测试证明了USB虚拟串口移植成功,但在实际应用中,只需要USB收发数据,不需要USART2,所以屏蔽掉相关配置。单片机的USB通信,一般都是以虚拟串口的方式实现,ODrive使用自定义的接口,所以才需要用zadig驱动。DSP库优化后的运算,运算时间大约261520 us,精度在0.000001f,我本来是打算描述下移植的细节的,但是隔的时间太久了,已经记不清细节,

2023-09-15 17:07:40 1208

原创 ODrive移植keil(二)—— ODrive的程序架构

本节及之后的教程将把odrive移植到keil环境下,为了降低移植难度,同时也为了让大家更容易学习掌握移植后的代码,本次移植,只移植电机的核心控制功能,实现常用的一些功能。这部分代码会让人看得很无助,因为所有的代码都在此时执行,比如最下面的开环控制,都已经闭环了难道它还在运行,它运行的意义是什么?ADC1的规则通道转换所有闲杂的ADC,比如温度检测,不需要时效,软件触发后将一直在后台转换;国外的电机驱动技术领先国内这是不争的事实,“洋务运动”一直都在,只是在不同的领域不同的范围,

2023-09-07 11:16:30 2765 3

原创 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,

2023-09-01 17:51:00 5918 5

原创 VESC操作入门(三)——PPM输入控制和ADC输入控制

注意操作时动作要慢,不要快速的上下划动摇杆,电机转速突变容易产生高压反电动势,本人的12V小功率开关电源就这样被击穿了。因为上面测试PPM时使用了带AS5047P编码器的电机,固件中默认使能了SPI接口,所以需要重新烧写不支持SPI接口的固件,本人测试用的10K和20K电位器接入ADC引脚后都不起作用,直到使用4.7K电位器,引脚电压才可以被改变,vesc可用于电动滑板车,所以AD引脚应该接的是一个转把,本人查找资料,发现电动车转把不是电位器,此时操作摇杆就可以控制电机转动,向上电机正转,向下电机反转。

2023-06-02 18:01:12 2511 1

原创 SmartKnob移植ESP32和STM32——棘轮手感

SmartKnob 利用电机模拟机械旋钮的效果,且模式灵活多变,自带高级感,据说宝马的车内旋钮就是这样的。github网址:https://github.com/scottbez1/smartknob。

2023-05-17 14:01:02 4055 4

原创 VESC操作入门(二)——双轮毂电机控制和CAN通信

要想让两个电机同时转动,需要在1000ms内连续发送两个指令,手工操作CAN盒的方式肯定达不到。只能通过代码的方式,而能够在最短的时间内实现这个功能的代码,非arduino莫属。VESC中会限制电机的最小速度,修改了限制后,虽然可以设置更小的速度,但是电机有抖动,尝试修改了PID,作用不大,电机齿槽效应导致的抖动,PID无能为力。VESC和ODrive的CAN通信类似,都只有简单的指令,大部分操作都需要通过USB事先配置好。VESC的CAN波特率默认500K,默认使能,接线既可使用,不需要任何配置。

2023-05-04 18:30:58 3711 5

原创 ODrive的梯形轨迹

实际应用中,需要电机又快又稳的转到指定位置,梯形轨迹(INPUT_MODE_TRAP_TRAJ)本质上是一个分段函数的轨迹规划,是一个先加速,再匀速,再减速的三段函数的过程。2804电机100kv,12V电源,最高速度为1200RPM = 20 转/秒。AS5047P_SPI接口,电源电压12V,24V都可以。1.1.2、位置模式,梯形轨迹。1.1.1、速度模式。

2023-04-20 16:55:23 1213

原创 ODrive的CAN通信

读取当前电压值(MSG_GET_VBUS_VOLTAGE)cmd_ID=0x17,msgID = node_ID | cmd_ID = 0x057,发送后没有反应,看代码需要rtr为1,打勾。设置Axis请求状态(MSG_SET_AXIS_REQUESTED_STATE)cmd_ID = 0x07,Adress=(node_ID

2023-04-20 16:21:45 2227 2

原创 ODrive运放电路的分析和替代方案

下图第80行,max_unity_gain_current = 边缘 x 波动 x 采样电阻导数 = 0.9 x 1.35 x 2000 = 2430,下图第81行,requested_gain = 2430 / 电流采样范围,代码通过设置的电流采样范围,计算出需要的放大倍数。如果电流采样范围设置120A,放大倍数为20倍,如果电流采样范围设置240A,放大倍数为10倍,如果电流采样范围设置30A,放大倍数为80倍,如果电流采样范围设置60A,放大倍数为40倍,ODrive的采样电阻为0.5mΩ,

2023-04-18 16:45:55 3477 2

原创 SimpleFOC移植STM32(九)—— ABZ编码器电机

ABZ或者ABI,叫法不同但指的都是同一种编码器,也叫增量式编码器。ABZ编码器最大的优点就是接口统一,兼容性好。不像SPI接口的磁编码器,不同厂家的芯片甚至同一厂家的不同型号,通信协议各不相同,换个编码器就要重新写代码。光电编码器的信号输出有开漏和推挽多种形式,不确定信号类型情况下,在单片机接口上最好能接 上拉电阻,光电编码器的工作电压一般为5V,接3.3V后不工作。驱动板103没有5V电源输出。磁编码器输出的ABZ信号一般为推挽输出,有一定的驱动能力,所以有没有上拉电阻不重要。

2023-04-10 18:06:49 6338 2

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

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

2023-04-07 18:15:18 4522 1

原创 VESC简介与国产替代方案

官方网站:https://vesc-project.com/github网站:https://github.com/vedderb在上面1.3节中,本杰明说了“与软件不同,硬件布局不是非常可重用的”。不同功率的板子,硬件设计差别一定非常大,而软件可以很容易修改和重用。代码架构反映了本杰明的这一想法,即固件要容易修改和重用。一般我们写代码,会用一个头文件做全局宏定义。

2023-03-20 16:06:46 8114 1

原创 ESP32的CAN通信

上面的库里都提到了MCP2515,所以简单介绍下。在Arduino中,考虑到跨平台的兼容性,这个芯片被拿出来频繁使用。在一些没有CAN外设的单片机上,比如UNO上古老的MEGA328P就没有CAN功能,还必须使用MCP2515。MCP2515简单来说是一个把SPI接口转换为CAN接口的转换芯片,在单片机普遍没有集成CAN外设的年代,他可以做为外挂实现CAN通信。

2023-03-20 16:05:39 7513 19

原创 ODrive入门配置

ODrive入门配置,安装Python和odrivetool

2023-03-15 16:42:06 4745

原创 VESC操作入门(一)——控制霍尔电机、无感电机和AS5047P

VESC操作入门,控制霍尔电机、无感电机和AS5047P

2023-01-18 17:46:38 12137 8

原创 SimpleFOC移植STM32(七)—— 移植STM32F405RGT6

SimpleFOC移植STM32

2022-12-22 11:27:14 9221 6

原创 ESP32直接烧写bin文件

flash_download_tool 下载bin文件到ESP32drive

2022-10-05 17:50:31 6770 3

原创 JCFOC使用说明

JCFOC电机驱动器使用说明

2022-09-18 11:44:00 2293 1

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

应该跟ODrive的电源是通过M0的DRV8301降压有关,或者单片机和两路DRV8301通过SPI通信,导致SPI复用过多。SPI接M0端子,进入闭环后电机稍微动一下就报错,查看错误:ENCODER_ERROR_ABS_SPI_COM_FAIL,本店改版后的ODrive,使用单独的电源芯片,并且SPI接口没有过多复用,不存在这个问题,M0/M1都能很好的转动。本文主要是结合本店的驱动器和电机,通过配置的参数,快速实现对电机的控制。用M1接口控制好点,但是转速不能过高,否则也报错。

2022-05-24 11:34:32 13174 6

原创 SimpleFOC之ESP32(八)—— ABZ编码器电机

目录 SimpleFOC教程目录:请点击 

2022-02-03 22:51:32 19828 3

原创 SimpleFOC之ESP32(七)—— 霍尔电机

目录一、霍尔电机介绍二、ESP32drive控制霍尔电机2.1、原理图2.2、读霍尔角度2.3、控制霍尔电机三、ESP32drive-D控制霍尔电机3.1、原理图3.2、读霍尔角度3.3、控制霍尔电机 SimpleFOC教程目录:请点击 一、霍尔电机介绍霍尔电机就是带霍尔传感器的直流无刷电机,下图 霍尔有两种安装方式,120度和60度,120度安装方式的稍微常见一些,下图 主要应用于车轮,特别是电动自行车,几乎都是霍尔电机,下图如果是做机器人底盘,霍尔电机是个很好的选择;如果是

2022-01-31 15:30:12 15837 5

原创 SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈

目录说明一、ESP-NOP1.1、简介 SimpleFOC教程目录:请点击 说明一 开始并没打算做ESP32的产品和教程,在B站无意中看到了老外的触觉控制(Haptic Control),觉得非常炫酷,甚是心动。仔细研究了Dagor这个项目,国内貌似没有销售这个产品,板子上用的TI芯片正缺货,我就想能不能用分立元件搭建电路,实现同样的功能,凭借十几年的经验我觉得应该可以拿下。过程还算顺利,两个月做了四版PCB,实现了Dagor的全部功能。这个产品借鉴了老外的创意,参考了老外的代码,只能算半个原

2022-01-29 18:00:23 9844 3

原创 SimpleFOC之ESP32(九)—— WIFI、UDP和TCP

目录说明 SimpleFOC教程目录:请点击 说明你一般是怎么看教程的,是不是直接往下翻,找到接线图和代码比划一番结束,所以你也看不到这段话是不是!这让我想起了电影《卧虎藏龙》里碧眼狐狸偷了武功秘籍,但是不识字只能看图比划,而她的徒弟识字,不仅看图还读了心经所以武功超越了师父。文字往往才是核心技术,图片不过是外在的表现形式。simpleFOC的官方代码到上一篇就结束了,网上相关的教程也很少提到无线通信这块。电机控制是个很硬件的技术,无论是硬件设计还是嵌入式编程;而无线通信因为协议的复杂性,更适

2022-01-28 12:00:20 11214 3

原创 SimpleFOC之ESP32(五)—— 电流闭环控制Lowside

目录说明一、原理说明1.1、为什么要采样电流1.2、电流检测方式 LowsideCurrent1.3、运放电路设计二、硬件介绍2.1、原理图2.2、准备清单2.3、硬件连接三、程序演示3.1、打开示例3.2、修改代码3.3、验证上传3.4、串口发送指令3.5、观察电机运行 SimpleFOC教程目录:请点击 说明本文教程只适配ESP32drive,注意区分电流采样模式。 一、原理说明1.1、为什么要采样电流  FOC(Field-Oriented Control),即磁场定向控制,磁

2022-01-25 14:51:54 9259 6

原创 SimpleFOCStudio安装使用说明及PID调试

目录说明一、SimpleFOCStudio安装1.1、为什么要采样电流 SimpleFOC的教程比较多,做了一个总链接,欢迎点击阅读:SimpleFOC教程链接汇总 说明一、SimpleFOCStudio安装1.1、为什么要采样电流

2022-01-23 14:05:25 9450

原创 SimpleFOC移植STM32(六)—— 双电机控制和力矩反馈

目录一、说明二、硬件介绍1.1、原理图 SimpleFOC的教程比较多,总链接方便查找阅读:SimpleFOC教程链接汇总 一、说明二、硬件介绍1.1、原理图

2022-01-11 14:33:28 10763 3

原创 SimpleFOC之ESP32(六)—— 双电机控制

目录一、硬件介绍1.1、原理图1.2、准备清单1.3、硬件连接二、代码演示2.1、I2C接口说明2.2、速度模式2.3、其它模式 SimpleFOC的教程比较多,做了一个总链接,欢迎点击阅读:SimpleFOC教程链接汇总 一、硬件介绍1.1、原理图1.2、准备清单序号名称数量1ESP32-DevKitC12simpleFOCShield V2.0.323云台电机24USB线1512V电源16杜邦线若干Sim

2021-11-20 18:10:37 11184

原创 SimpleFOC之ESP32(四)—— 电流闭环控制Inline

目录说明一、硬件介绍1.1、原理图1.2、硬件清单1.3、硬件连接二、程序演示 说明    SimpleFOCShield板载电流采样为Inline模式,所以本章只讲SimpleFOCShield的操作,ESP32drive为Lowside模式,稍后另起一章讲解。一、硬件介绍1.1、原理图1.2、硬件清单序号名称数量1ESP32-DevKitC12simpleFOCShield V2.0.313云台电机14USB线1512V电源

2021-11-20 16:03:48 9649 4

原创 SimpleFOC之ESP32(三)—— 闭环控制

目录一、硬件介绍1.1、原理图1.2、ESP32drive方案1.2.1、准备清单1.2.2、硬件连接1.3、SimpleFOCShield方案1.3.1、准备清单1.3.2、硬件连接二、代码演示 — I2C接口2.1、I2C接口说明2.2、速度模式2.3、位置模式三、代码演示 — SPI接口3.1、SPI接口说明3.2、修改示例 一、硬件介绍1.1、原理图 1.2、ESP32drive方案1.2.1、准备清单序号名称数量1USB转串口12ESP32driv

2021-11-18 14:31:38 8469

原创 SimpleFOC之ESP32(二)—— 开环控制

目录注意事项一、硬件介绍1.1、原理图1.2、ESP32drive方案1.2.1、准备清单1.2.2、硬件连接1.3、SimpleFOCShield方案1.3.1、准备清单1.3.2、硬件连接二、修改底层代码三、程序演示3.1、开环速度模式3.2、开环位置模式 注意事项1、电机的三根线可以任意接在驱动器的ABC三相上,不用区分;2、开环控制最好选择Ω级的电机,尽量不要用mΩ级的航模电机,容易烧MOS和电机。开环控制在实际中也就启动时用用,这不是电机控制的一个常态。3、电机控制要尽快操作,不要停留

2021-11-07 21:20:48 12652

原创 SimpleFOC之ESP32(一)—— 搭建开发环境

目录说明一、ESP32介绍二、Arduino IDE的ESP32开发环境搭建2.1、安装Arduino IDE2.2、下载ESP库文件2.3、安装ESP32库文件2.4、安装ESP32编译器2.5、Python安装2.6、选择ESP32开发板三、点亮LED3.1、硬件准备3.2、示例演示 说明    2016年春天的时候第一次接触ESP8266,用的ESP-12的模块,串口转wifi通信。本来是很简单的工作,串口发送数据完事,按照习惯看下手册,这一看把我绕晕了,它的与众不同的Xtensa内核,Free

2021-11-07 15:11:05 36580 7

原创 SimpleFOC(九)—— 霍尔电机控制

目录一、原理说明1.1、霍尔电机 一、原理说明1.1、霍尔电机霍尔电机就是带霍尔传感器的直流无刷电机。通过霍尔传感器判断电机当前运动状态,控制器根据霍尔采集的信号控制三相输出,让电机持续正常的工作,霍尔传感器的优点是便宜,而且几乎可以安装在任何无刷直流电机上,缺点是,由于角度测量的量化相对较高,因此低速运行不够平滑,使用霍尔传感器的另一个原因是,在无法接近电机轴,或者无法将传感器安装到电机轴上的情况下,霍尔传感器安装在电机转子周围,这使得它们非常非侵入性且易于集成,最常见的应用就是电动自

2021-10-05 18:23:46 30918 6

原创 SimpleFOC移植STM32(五)—— 电流采样及其变换

目录一、原理说明1.1、电流采样1.1.1、为什么要采样电流1.1.2、电流采样方式1.1.2.1、低侧电流采样1.1.2.2、高侧电流采样1.1.2.3、内置电流采样1.2、电流变换1.2.1、AD转换1.2.2、clark变换1.2.3、Park变换1.2.4、PID运算二、硬件说明2.1、SimpleFOC V2.0.3 的参数2.2、PowerShield V0.2 的参数2.3、SimpleMotor 的参数2.4、电流实际波形 一、原理说明1.1、电流采样1.1.1、为什么要采样电流 

2021-09-28 17:54:50 33388 19

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除