你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32机器人手臂控制器

[复制链接]
丿灬幸灬 发布时间:2018-11-2 21:10
本帖最后由 丿灬幸灬 于 2018-11-5 11:27 编辑

功能:提供电源,PWM电平转换,和Wii Nunchuck连接器。
用于与EEZYbotARM MK2一起工作。


这个STM32扩展板有一个开关调节器可控制3到6个舵机。它还将一个3.3 V PWM信号从单片机转换为5 V电平,并具有电源启动信号。
一个独特的功能是它的Wii Nunchuck连接器。通过I2C让它成为控制机械臂(如EEZYbotARM MK2)的理想设备,。我使用Nunchuck,通过固件在线Mbed编译器来直观的控制EEZYbotARM MK2。

更人性化的固件

修订后的pcb已经发货,但预计将于周二到达,所以不幸的是他们无法赶上Hackaday奖机器人技术竞赛的截止日期。同时,我一直在调整固件。固件在Mbed上,所以您也可以为其他支持的微控制器编译它。我一直在使用STM32L073和STM32L476 MCUs,所以它们至少在正确的引脚上具有所需的PWM功能。

EEZYBot手臂MK2使用三个伺服器控制手臂和第四伺服器的末端执行器。Wii Nunchuck控制器有一个操纵杆和两个按钮。这实际上允许控制三个“轴”。其中两个来自操纵杆(上/下和左/右),第三个来自两个按钮。最初,我的固件使用这三个直接控制三个主要的伺服,例如,移动操纵杆上下移动一个伺服。这很容易实现,但它不是很直观的使用,因为手臂的末端不只是水平或垂直移动,而是沿着一个更复杂的轨迹。

我想最好是能向上/向下,手臂的末端能垂直移动。这是一个有点复杂的实现,因为它涉及到移动多个伺服器和做一些数学计算,以找出他们需要如何移动。数学只是高中的三角学,如下面的草图所示。从本质上讲,我需要计算角度α(α的总和₁和α₂)和γ,可以用来计算主臂的角度(l₁)和小胳膊贴上(l₂)。

11111.png

这个数学计算是在pos_to_angle函数中实现的:

  1. <font color="#000000">void pos_to_angle(double *horz_angle, double *vert_angle, double radius, double height)
  2. {
  3.     double alpha1 = atan(height/radius);
  4.     double bf_2 = radius*radius + height*height;
  5.     double alpha2 = acos((bf_2 + L1*L1 - L5*L5)/(2*sqrt(bf_2)*L1));
  6.     *horz_angle = PI/2 - (alpha1 + alpha2);
  7.     double beta2 = acos((L1*L1 + L5*L5 - bf_2)/(2*L1*L5));
  8.     *vert_angle = PI - beta2 - alpha1 - alpha2;
  9. }
  10. </font>
复制代码

我做了一个加快的机械臂运行视频演示

固件首先允许你校准,这涉及到定位手臂,使主臂是垂直的,另一个是水平的。按下开关2执行校准,节省了每个伺服电机的偏移量。注意,固件的编写是为了与EEZYBot ARM MK2一起工作。使用其他机器手臂,你需要调整常量(如l₁)和可能是数学,如果手臂有不同的运动的联系。

实际上操作手臂是非常直观的。操纵杆上的上/下水平移动末端执行器。背面的两个按钮垂直移动,操纵杆上的左/右旋转手臂围绕底座旋转。要打开/关闭末端执行器,同时按下两个按钮会激活另一个“模式”,其中操纵杆上的上/下现在打开/关闭末端执行器。

我对这个项目的进展非常满意。假设正在交付的修订2 pcb修复了电源启用信号的问题,这个项目将被完成!


Gerbers2完成

Gerbers2完成了。第一次修订版的改动如下:

将POW_EN信号改为STM32单片机上的5V容忍度引脚,这样保护二极管就不会夹紧电压,防止PFET关闭(在前面的日志中讨论过)。
使接头稍微宽一点。第一个版本太窄了,我不得不把它归档。
将一些PWM信号移动到不同的引脚。STM32 MCUs不是完全与pin兼容的,所以我选择了在更多MCUs上有PWM可用的引脚。
为提供标头添加了一些丝网标签(主要用于调试)。
PCB在GitHub上。



尝试第一个PCB


这周我收到了PCB,我焊接了一个。

到目前为止,它基本是起作用的。我到目前为止遇到的主要问题是电源启动信号,它被拉到5v,它的门在应该很高的时候太低了几百毫伏,所以它控制的PFET不会关闭。

3.png

当POW_EN被拉低时,PFET就会打开马达。


我在STM32L476上使用pin PA4在开漏模式来控制它。我认为这应该是工作的,但不幸的是,这个大头针不是一个5v容忍大头针。查看数据表,我认为是pin上的保护二极管导致了这个问题。这意味着电源启动信号不幸地不能工作在这个修改的PCB。它应该连接到一个5v的容忍度引脚,也称为数据表中的“TT”引脚,例如PA2。




从更积极的方面来看,平移电路正在工作。在调试完上面的问题后,我损坏了顶部的铜层,所以我做了一个混乱的焊接修复如下所示重新连接5V引体向上。NFETs将3.3V PWM从微控制器转换为5V用于伺服系统。注意,由于FETs是反向的,PWM信号的占空比也需要反转。我成功地移动了一个伺服电机,并且开始使用在线Mbed编译器组装一些固件。项目在这里


4.jpeg


一个丑陋的修复短针R7到Q2到R13。这是在5v网络上。Q2是没用的,因为它永远不会关闭。

5.png




nfts将3.3 V PWM信号转换为5V。您可以控制多达6个伺服器。



最后,我还检查了Nunchuck接口。不幸的是,连接器有点太窄了,所以我不得不把它打磨一下。但是在Mbed上使用wiflood chuck库可以很好地实现I2C通信。


用于控制舵机的Nucleo扩展板
6.jpg


我想要控制的EEZYbotARM MK2。

我决定使用我的Prusa i3mk2,并且已经为EEZYbotARM MK2机器人手臂的部件进行了3d打印。它使用了三个更大的MG995或MG946伺服电机,以及一个更小的塑料SG90伺服电机,用于“抓取器”(正式称为“末端执行器”FYI)。我没有给电路布线,也没有买现成的东西,而是决定做一个PCB来驱动伺服电机。这让我有机会添加一些现有解决方案中不可用的东西:Wii Nunchuck连接器。


伺服电机采用PWM信号控制,厂家指定工作电压为4.8 V - 6.6 V。STM32核板在3.3 V下工作,我读到过3.3 V PWM可能用于驱动伺服电机。但是,为了安全起见,我添加了一些FETs来将3.3V PWM转换为5v。
77.png

另一台伺服电机的PWM信号(此电压为7.2 V,而非6.6 V)

88.png
6伺服电机连接器



最后,我添加了一个Wii Nunchuck连接器。这基本上是一个PCB卡边缘连接器我从这里复制的。我使用一个简单的I2C接口,打算用它来控制机械手臂
9548371525490976144.png

Wii Nunchuck连接器(J2)。
这个PCB是一个STM32扩展板,所以它使用了与主板一起工作的Morpho板。
第一个版本的第一个布局已经完成,并且已经被发送去制作。

相关资源见GitHub代码见mbed
原文请见hackaday

STM32 Servo Expansion Board Schematic Rev 2.pdf

下载

63.76 KB, 下载次数: 13

STM32 Servo Expansion Board Schematic.pdf

下载

117.85 KB, 下载次数: 15

收藏 1 评论5 发布时间:2018-11-2 21:10

举报

5个回答
mzy2364 回答时间:2018-11-2 21:54:58
厉害  谢谢分享
stm1024 回答时间:2018-11-3 10:05:16
五个自由度?这些小零部件都是3D打印的吗?价格如何?有木有性价比高的加工,推荐一下?
丿灬幸灬 回答时间:2018-11-3 14:12:58
stm1024 发表于 2018-11-3 10:05
五个自由度?这些小零部件都是3D打印的吗?价格如何?有木有性价比高的加工,推荐一下? ...

EEZYbotARM.zip (4.99 MB, 下载次数: 12)
stm1024 回答时间:2018-11-3 17:56:13

啊,谢谢,我是想问一下你是找谁打印的,质量还不错~推荐一下
zjczm 回答时间:2018-11-5 10:10:19
厉害厉害。学习一下

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版