关注分享主机优惠活动
国内外VPS云服务器

DIY桌面机械臂__FOC电机驱动(电机如何驱动机械臂)

总结:硬件框架和模型设计 机械臂的核心是关节处的伺服电机。 根据手稿的设计理念,每个伺服电机都是一个独立的控制系统,通过总线进行控制。 表单检索数据和控件。

### DIY桌面机器人手臂__FOC电机驱动器(#002)

目录 前言 1. 硬件架构及型号 1. 硬件原理图 2. 2. 创建和测试电路 1. 创建和修改电路 2. 程序设计和 PID 角度控制 2.1 AS5600 传感器 2.2 SVPWM 控制开环 2.3 闭环 PID 控制

简介

我之前写过这个在设计桌面机械臂的手稿时,最初的过程需要基本的模拟、测试和可行性分析,但后来在实现过程中我觉得我可以做到。 我们还了解了先进的伺服电机机器人节点。 由于我没有多少钱,所以我想从头开始学习和设计机器人模块。 虽然我不是机械工程出身,但我对控制系统有浓厚的兴趣,所以我开始在博客上分享我的项目实施和过程,希望能够交流并说,“让我们一起讨论吧。”

1.硬件框架和模型

机械臂设计的核心部分是关节处的伺服电机。 按照DIY手稿的设计思路,每个伺服电机都是一个独立的控制系统。 ,通过CAN总线采集和控制数据。

测试电机为2804云台电机,为7极对无刷电机。 我之所以选择这个,是因为在淘宝上只要几块钱就可以买到。 需要预先考虑的一点是,硬件驱动程序的 PCB 部分与电机安装集成在一起。

1.硬件原理图

三相MOS驱动器采用L6234P,最大电压52V,最大瞬时电流5A,足够转动这个小电机了。 整体式的该机依然采用常用的STM32F103C8T6,但最近价格大幅上涨,所以已换成与GD32同型号。 该传感器采用具有 12 位角分辨率的磁感应器件 AS5600,以 12 V 驱动,并通过 MT2492 DCDC 降压至 5 V。

无刷电机驱动器的硬件原理图和PCB图如下。

底层和顶层

二、型号及安装

为了方便设计和安装,电机和驱动板采用绘制为 3D 模型,如下所示。

板子比电机大 由于安装孔的位置和零件数量较多,板子尺寸无法减小,而且圆形看起来不紧凑,但这并没有对后续设计影响较大。 正在测试中。

2. 电路制作和测试 1. 电路制作和修改

拿到电路板和元件后,立即进行焊接和测试。 下图显示了一侧已完成的焊接。

直到我写软件的时候,我才注意到原理图中并没有AS5600的接口。 审查 PCB 规则后,通常是电路板设计的最后一步。 这样的错误是极其愚蠢的。

然后,我通过将跳线直接连接到两个读出焊盘 PB11 和 PB10 来通过程序测试。

支架的中心部分是根据电路板的结构来设计的,但是这样设计的问题是,每次改电路的时候,有些模块会触碰,我觉得需要被重新设计。 !

2. 编程和 PID 角度控制

首先要做的是调整所有单独的模块,然后再进行下一步。

接下来调整PID参数,进一步实现A。 正常条件

2.1 AS5600传感器

首先读取AS5600传感器的参数,并通过串口打印出来进行观察。 最初,我们考虑使用STM32硬件I2Cmaster来实现I2C协议,因为与模拟IO相比,它具有更快的响应速度,并且不占用CPU资源,但随后的测试表明,系统中断会对I2C协议产生负面影响。 快速读取I2C后来决定模拟IO,因为程序部分受到影响,直接卡住了。

2.2 SVPWM控制开环

这里采用简单的foc设计来实现电机的开环运行。

2.3 闭环PID控制

由于控制电机的核心代码没有积分,所以静态误差是不可接受的,将来会改进。

void my_close_p_con( void){ float a_er=0; float an_p_cofe=15; //角度比例参数 float vq_p_cofe=30; //瞬时比例参数 float vq_d_cofe=450; for static float a_er_l=0; float an_pid_o=0; //角度pid输出 float vq_pid_o=0; //扭矩PID输出 float an_pid_max=0.3; //最大牵引角度(我不知道他们为什么给它起这个名字) float d_dat=0; //导出分量 float ang_shift=0; //绝对角度控制参数 s_a=FilterDeal(getAngle()); //滤波后的电机角度值 a_er=target_angle-s_a; *an_p_cofe; //仅对角度进行比例控制 if(an_pid_o>an_pid_max)//限制 { an_pid_o=an_pid_max; } else if(an_pid_omax_p) //扭矩限制{ vq_pid_o=max_p; ang_shift=init_ang_bias+s_a+an_pid_o; //绝对角度等于静态标定偏差加上跟踪角度值加上pid偏移,实现角度控制 S_Uq=vq_pid_o ; // 执行a_er_l=a_er. //保存错误

更新时间:2021 - 9 - 6

请继续更新,一起交流。 ! !

未经允许不得转载:主机频道 » DIY桌面机械臂__FOC电机驱动(电机如何驱动机械臂)

评论 抢沙发

评论前必须登录!