SimpleFOC(五)—— 双电机控制

本文档详细介绍了如何使用SimpleFOCv2.1.1库进行双电机控制,包括硬件连接、程序修改及上传、电机初始化和操作。还探讨了速度模式和速度力矩混合模式的切换,适合对电机控制感兴趣的读者。



双电机控制不能使用SimpleFOC v2.2.2的库有bug。需要退回到v2.1.1的版本。20220608

一、硬件说明

1、硬件清单

序号名称数量
1Arduino UNO1
2simpleFOCShield V2.0.32
3带磁编码器的云台电机2
412V电源1
5方口USB线1

如下图所示:
在这里插入图片描述

2、硬件连接

⑴、驱动板背面跳线

  两个驱动板,一个接9、5、6、8,另一个接3、10、11、7。
在这里插入图片描述

⑵、编码器接线

  Arduino UNO的主板提供两路5V电源,所以两个编码器可以分别接5V,
在这里插入图片描述

  注意:
  背面跳线为9、5、6、8,对应的编码器接模拟信号A0,
  背面跳线为3、10、11、7,对应的编码器接模拟信号A2,

在这里插入图片描述

⑶、全部接线

  ①、两个SimpleFOCShield V2.0.3驱动板与Arduino UNO主板堆叠连接,
  ②、USB线连接Arduino UNO主板,与主板通信并提供5V电压,
  ③、12V电源并联两个驱动板TB_PWR接口,注意正负极,
  ④、电机三根相线分别连接驱动板,
  ⑤、电机编码器的模拟接口与排母连接,注意正负极。
  连接如下图:
在这里插入图片描述
在这里插入图片描述
  

二、程序演示

1、打开例程

  打开的是V1版本不带电流采样的例程,
在这里插入图片描述

2、修改程序

  官方例程用的是ABZ编码器,但当前电机用的是AS5600编码器,使用模拟接口。
  ①、修改电机极对数为7,
  ②、修改编码器为模拟接口,
  例程为只读文件,可以验证上传,如需保存要“另存为”。
在这里插入图片描述
在这里插入图片描述

3、验证上传

在这里插入图片描述

4、打开串口监视器

在这里插入图片描述

5、等待初始化

  初始化完成,电机开始转动,
在这里插入图片描述

6、观测电机

  当前程序选择的是力矩模式,此时对电机施加阻力,电机表现为固定大小的力矩,使劲捏紧电机会停止,
在这里插入图片描述

7、发送指令

  分别给两个电机设定不同的电压值,设置指令“A”对应电机1,指令“B”对应电机2,
在这里插入图片描述

8、电机操作

  不同电压值,电机转速不同,表现出大小不同的力矩,如果此时有电流表可以观测到电流也不相同。
在这里插入图片描述
  

三、其他控制模式

1、速度模式

  ⑴、程序中已经罗列了速度控制模式的参数,所以可以很方便的从当前的力矩模式更改为速度模式。PID参数如果不合适请自行匹配修改。
在这里插入图片描述
  ⑵、程序上传后等待电机转动,初速度只有2rad/s(力矩模式表示初始力矩为2V电压),
在这里插入图片描述
  ⑶、设置指令调整电机速度,此时设置的速度单位为rad/s,
在这里插入图片描述
  

2、速度和力矩混合模式

  ⑴、修改电机1为速度模式,电机2为力矩模式(力矩模式不用PID调节),
在这里插入图片描述
⑵、设置指令,观察两个电机的转动
在这里插入图片描述


(完)
  
请继续阅读相关文章:
SimpleFOC(一)—— 简介(附有文件下载链接)
SimpleFOC(二)—— 快速入门 (开环控制)
SimpleFOC(三)—— AS5600角度读取
SimpleFOC(四)—— 闭环控制
SimpleFOC(六)—— PowerShield和AS5047P
SimpleFOC(七)——STM32(Bluepill)的应用
SimpleFOC(八)—— 理论+实践 深度分析SVPWM
SimpleFOC(九)—— 霍尔电机控制

### 双电机转矩分配控制策略 #### 实现方法 双电机转矩分配控制策略的核心在于如何合理地将总需求转矩分配给两个电机,使得整个系统达到最优性能。通常情况下,这种分配依据具体应用的需求而定。 对于双足机器人的步态和平衡控制而言,在实现过程中会涉及到同时控制两个电机的情况[^2]。这不仅限于简单的同步动作,更涉及复杂的动态调整机制。例如,在行走过程中,当一只脚着地时,另一只脚抬起准备迈出下一步;此时就需要精确计算两腿关节处电机所需施加的不同大小的力矩,以保持身体姿态稳定并顺利过渡到下一个步伐状态。 针对多电机的位置同步控制方面,则可以采用SimpleFOC库来进行操作。此库允许初始化多个无刷直流电动机及其驱动程序,并配置它们进入闭环位置控制模式下工作。通过设定各台设备的具体参数(如极对数),再利用`AngleController`类来建立联系并协同管理这些装置的动作路径。在实际运行期间不断调用相应的方法刷新当前所处的角度信息,进而达成预期的效果——即让几部马达按照预定计划共同完成特定任务而不发生冲突或误差累积现象[^4]。 然而值得注意的是上述描述主要集中在位置而非直接讨论转矩本身。因此如果要专注于研究有关转矩方面的内容的话: - **基于负载特性**:根据机械结构设计原理以及外部环境因素影响分析得出结论认为哪一侧应该承担更多负荷量级; - **实时反馈调节**:借助传感器获取即时数据输入至控制器内部经过处理后再输出指令信号改变各自功率输出水平直至满足整体优化目标为止; - **预设比例分配**:事先定义好固定不变的比例关系用于指导正常运转状态下两者之间力量对比情况的选择方案之一种方式而已并非绝对准则而是取决于项目具体情况而变化灵活应对各种挑战。 ```cpp // 假设有两个电机对象 motorA 和 motorB float totalTorque = calculateTotalRequiredTorque(); // 计算所需的总扭矩 float torqueForMotorA, torqueForMotorB; if (conditionBasedOnLoadCharacteristics()) { torqueForMotorA = totalTorque * predefinedRatio; torqueForMotorB = totalTorque - torqueForMotorA; } else { // 动态调整逻辑... } motorA.setTorque(torqueForMotorA); motorB.setTorque(torqueForMotorB); void loop() { updateSensors(); adjustTorquesAccordingToFeedback(); } ``` #### 应用场景 此类技术广泛应用于需要精细操控多自由度运动部件的各种场合之中,比如工业自动化生产线上的装配机器人手臂、医疗康复辅助器具内的微型传动单元乃至前述提到过的仿生型步行者模型等等。特别是在后者案例里边儿,由于人体工学考量加上安全防护措施的要求,所以往往更加依赖精准可靠的驱动力调配手段来保障使用者体验质量不受损害的同时还能有效预防意外事故的发生概率降到最低限度内。 #### 控制算法 为了确保良好的响应特性和稳定性表现,常选用先进有效的现代控制理论作为支撑框架构建起完整的解决方案体系。其中包括但不限于自抗扰控制(ADRC)[^1]这类具备较强鲁棒性的设计方案,它可以在面对复杂干扰源存在的情况下依然维持较高的精度等级不被轻易破坏掉原有的良好秩序感;还有像滑模变结构(SMC)这样的非线性调控思路也十分适合解决具有高度不确定性特征的任务难题。当然除此之外还有很多其他类型的经典或者新兴流行趋势下的智能决策支持工具可供选择使用,最终目的是为了让整个控制系统能够在尽可能宽泛的工作范围内都能表现出色且易于维护升级换代。
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值