第1步:你需要什么 - 硬件和电子产品
原始项目设计师居住在欧洲,随后使用公制测量和常用材料。例如,他用于身体的压板是5mm厚的标准。美国的类似材料是1/8“,厚度约为3.7mm。这在开口处留下了一个间隙,最初设计为压配合。而不是纠正图纸,我只是使用Gorilla Glue来固定这些接头。/p》
他还使用了M3螺纹螺母和螺栓,这些螺母和螺栓在美国当地的五金店不是标准配置。我只是在线订购硬件,如下面的零件清单所示。
22 - M3 x 0.5 x 23mm支架
15 - M3 x 15mm垫片
40 - M3螺丝
M3六角螺母
M3 25mm螺丝
1 - 弹簧
3/4“双面安装胶带
5 - SG 5010 TowerPro Servo
1 - SG92R TowerPro迷你伺服
1 - SG90 TowerPro迷你伺服
2.54 mm单排直针接头
1 - 半尺寸面包板
1 - 女性/男性‘延长’跳线 - 40 x 6“
1 - 12”x 24“蓝色亚克力板或您喜爱的服务提供商的激光切割件
2 - 3mm x 20mm + 4mm x 5mm关节轴承垫片3D打印(见下文)
1 - 控制面板 *参见接线注意事项章节
1 - 漫射RGB(三色)10mm LED
1 - Arduino Uno
1 - 标准LCD 16x2 +附加功能 - 白色蓝色
1 - i2c/SPI字符LCD背包
1 - MCP3008 - 8通道10位A带SPI接口的DC
DC Barrel Jack
AC至直流适配器
伺服延长电缆 - 各种长度
此臂的几乎所有部件均采用1/8英寸丙烯酸切割而成。两个关节轴承垫片确实需要然而,要打印。此外,原设计要求两个关节间隔基座与轴承轴高7mm。当我开始组装上臂时,由于TowerPro伺服系统的高度,很快就会发现它们太高了。我不得不用一个只有3毫米高的底座制作新的关节轴承,顺便说一下,它仍然有点太高但可以控制。您需要记下伺服系统的相对高度并考虑两个下臂之间的距离:
伺服高度+伺服喇叭+关节轴承+双面胶带= 47mm +/- 3mm。
第2步:手臂组装
在开始之前,请确保将所有的伺服系统!如果在施工过程中的任何时候,如果您手动移动伺服的位置,则需要在将其固定到框架之前重新定位。对于始终需要一致移动的肩舵伺服系统尤为重要。
使用M3 25毫米螺钉和六角螺母将底座伺服系统安装到顶部底板上。不要过度拧紧!
注意:您可能需要对螺纹进行锁紧,以尽量减少使用过程中螺母的松动。
如果您使用我上面的零件清单,您接下来想要通过将每个M3 x 0.5 x 23mm支架螺纹连接在一起,然后用六角螺母将它们连接到上基板来组装5个底座垫片。
用5个M3螺丝将下底板安装到支座上。
使用丙烯酸安全粘合剂将肩板连接到两个伺服安装板上。我在这里使用了Gorilla Glue。
注意:两个伺服板中的每一个都在后面有一个孔,允许插入一个加固垫片连接它们。确保孔对齐!
* 虽然您有方便的胶水,但请继续将手腕安装板与夹板主板连接。
* 您也可以选择将腕部伺服板粘到两个腕关节板上。我没有选择这样做,而是将它们与支架连接在一起,如下所述。
将现已固化的肩部组件安装到基座伺服系统上。我使用了伺服系统中最宽的喇叭,它是六根安装喇叭。
将下臂框架添加到肩部伺服系统可能会非常棘手。我建议在继续之前将喇叭固定在下臂框架上。
注意:确保在将肩胛骨组件安装到框架上之前将其放在肩部组件的中心位置。这两个伺服系统必须一致移动,如果它们未对准,则至少会导致伺服抖动,如果不对准,可能会损坏框架或伺服系统。
* 每个肩舵都安装在安装板背面的支架上,而不是让舵机通过板 - 这样就可以将喇叭推到伺服轴上以一定角度固定螺丝。尚未将伺服固定到安装板上。
* 接下来,添加内部伺服并安装臂
通过推动舵机穿过空间组装上臂框架和伺服器在手臂中然后将垫片插入两个上臂板之间并用M3螺钉固定。
在肘关节垫片的背面添加双面胶带并修剪多余的胶带。
将垫片安装在伺服器底部,作为弯头执行器。
将上臂组件滑入下臂组件框架并固定伺服喇叭螺钉。
在两个下臂板之间添加加固支架。我使用了两个而不是全部四个来降低重量。
将双面胶带添加到上腕关节垫片的背面并修剪多余的胶带。
将垫片安装在伺服器底部,作为手腕执行器。
将外腕板连接到腕部伺服喇叭上,并用喇叭螺丝固定。
使用两个腕关节板和支座组装腕部伺服板。
使用伺服夹板将腕带伺服固定在伺服板上。
由于喇叭螺丝被打开,因此在将夹具组件连接到该喇叭之前,您需要将腕带固定到伺服器上。
在将夹具伺服喇叭连接到伺服系统之前,松散地组装夹具以便贴合。这将允许您在上一步中拧紧喇叭。
将夹具喇叭安装到伺服器上,然后拧紧固定夹具接头的螺钉。
注意:不要完全拧紧这些螺母和螺栓,因为它们需要松动以使夹具移动。
第3步:布线和控制面板
我将这个项目构建为一个开发平台,用于我以后的教育项目的一些想法。所以,我的大部分连接都是简单的杜邦连接器。我做的唯一焊接是MCP3008。如果你能为这个组件找到一个分线板,那么你应该能够构建这个无焊接臂。
有三组组件:
输入 - 这些项目从用户获取信息,由操纵杆和mcp3008 ADC组成。
输出 - 这些项目通过向用户显示状态或使用位置数据更新伺服来向世界传达数据。这些项目是LCD屏幕,LCD背包,RGB LED,伺服驱动板和最后的伺服。
处理 - Arduino汇总了最后一个从输入接收数据的组,并根据代码指令将数据输出到输出。
上面的Fritzing原理图详细介绍了所有组件的引脚连接。
输入
我们将从输入开始。操纵杆是模拟设备 - 意味着它们呈现可变电压作为Arduino的输入。三个操纵杆中的每一个都有两个模拟输出,用于X和Y(上,下,左),共有6个输入到Arduino。虽然Arduino Uno有6个模拟输入可供使用,但我们需要使用其中两个引脚进行与屏幕和伺服控制器的I2C通信。
因此,我整合了MCP3008模数转换器(ADC)。该芯片最多可接收8个模拟输入,并通过Arduino的SPI通信引脚将其转换为数字信号,如下所示:
MCP引脚1-6 》 可变输出拇指操纵杆
MCP针脚7和8 》 无连接
MCP针脚9(DGND)》 接地
MCP引脚10(CS/SHDN)》 Uno引脚12
MCP引脚11(DIN)》 Uno引脚11
MCP引脚12(DOUT)》 Uno引脚10
MCP引脚13(CLK)》 Uno引脚9
MCP引脚14(AGND)》 接地
MCP引脚15和16 》 + 5V
示意图中仅示出了原理图中的操纵杆连接。根据购买的操纵杆及其安装方式,您的连接可能与我的不同。不同品牌的操纵杆可以具有不同的引出线,并且还可以不同地定向X和Y.重要的是了解ADC上的每个输入代表什么。每个引脚代表我的代码中的以下关系:
引脚1 - 基极 - 此引脚上的模拟数据将旋转机器人上的最低伺服
针脚2 - 肩部 - 此针脚上的模拟数据将旋转基座伺服上方的两个伺服电机
针脚3 - 肘部 - 此引脚上的模拟数据将从肩舵旋转下一个伺服
引脚4 - UP/DN手腕 - 此引脚上的模拟数据将旋转腕部伺服,上升和降低夹具组件
针脚5 - 夹具 - 此针上的模拟数据将打开和关闭夹具
针6 - 旋转手腕 - 此针上的模拟数据将旋转夹具
注意:购买和安装零件清单中引用的拇指操纵杆时,请记住模块的方向可能与我的不同,因此,测试x和y输出以正确连接到ADC。此外,如果您使用我的3D打印控制面板,安装孔可能会偏离我的。
输出
Adafruit PWM/伺服控制器使这个项目变得非常简单。只需将Servos连接到伺服头,即可处理所有电源和信号连接。除非您发现带有超长引线的伺服电机,否则您需要获得一组不同长度的伺服电缆延长线,以便所有伺服电缆都能连接到控制器板。
伺服电机连接如下:
位置0 - 基础伺服
位置1 - 肩部伺服(伺服Y电缆)
位置2 - 弯头伺服
位置3 - 手腕1伺服
位置4 - 夹持器伺服
位置5 - 手腕2伺服
此外,VCC和V +都连接到+5 V和GND连接到地。
注1:这里有一个大注: 整个项目的供电电压是通过伺服控制板上的电源接线盒。伺服控制器上的V +引脚实际上是从接线盒向电路的其余部分供电。 如果您需要对Uno进行编程,我强烈建议在将Uno连接到PC之前断开V +引脚,因为从伺服器获取的电流可能会损坏您的USB端口。
注2:我正在使用6V AC到DC墙式适配器为项目供电。我推荐一个可以提供至少4A电流的适配器,这样当一个或多个伺服电机被绑定时,电流的突然上升不会使系统掉电并重置Arduino。
16X2 LCD屏幕连接到Adafruit LCD背包,以利用伺服控制器已经使用的I2C接口。伺服控制器上的SCL和背包上的CLK都连接到Uno上的Pin A5。同样,伺服控制器上的SDA和背包上的DAT都连接到Uno上的Pin A4。此外,5V连接到+5伏,GND连接到地。背包上的LAT没有任何连接。
最后,RGB LED连接到Uno上的引脚7(红色),6(绿色)和5(蓝色)。 LED的接地极通过一个330欧姆的电阻连接到地。
处理
最后但并非最不重要的是,未列出剩余的Arduino连接以上内容如下:引脚5V连接到+5伏,GND连接到地。
在我的设置中,我使用面包板的侧轨将所有电源线和地线连接在一起,并将所有设备的I2C引脚连接在一起。
第4步:代码
如前所述,我最初将此项目构建为本地制作者的演示马戏团。我打算让它成为儿童和成人在我们的展位上玩耍的东西。事实证明,它比我想象的更受欢迎 - 所以,孩子们正在争夺它。因此,当重新编写时,我加入了一个实现时间限制的“演示模式”。
手臂坐在那里等着有人移动操纵杆,当他们这样做时,开始一个60秒的计时器。在60秒结束时,它停止从用户输入并“休息”15秒。短暂的注意力集中在他们身上,这个休息时间大大减少了对坚持时间的争夺。
基本操作
以下参考部分列出的代码非常简单。数组使用最小,最大范围,原始位置和当前位置跟踪6个关节。当手臂通电时,启动功能定义了与MCP3008,LCD背包(以及随后的屏幕)通信所需的库,并定义了LED引脚。从那里它做了一个基本的系统检查,然后继续回家。主页功能从夹具开始向下移动到底座,这样可以最大限度地减少在正常情况下绑定的可能性。如果手臂完全伸展,那么在给手臂供电之前最好手动将其固定住。由于通用伺服系统不提供其位置的反馈,因此我们需要将每个伺服系统放置在预定义的位置并跟踪每个位置的移动距离。
主回路首先以等待模式启动 - 寻找操纵杆离开其中心位置。一旦发生这种情况,主循环会将状态更改为倒计时状态。当用户移动每个操纵杆时,操纵杆相对于中心的相对位置将增加或减去当前已知位置并更新适当的伺服。一旦伺服器在一个方向上达到其定义的极限,操纵杆就会停止。用户需要向另一个方向移动操纵杆才能再次移动操纵杆。这是对伺服器施加的软件限制,无论其硬件停止如何。此功能允许您在需要时将手臂的移动保持在指定的操作区域内。如果将操纵杆释放到中心,则移动将停止。
这段代码只是一个普遍的起点。您可以根据需要添加自己的模式。一个示例可以是无定时器的连续运行模式,或者可以将操纵杆按钮添加为输入并写入记录/回放模式。
-
机械臂
+关注
关注
12文章
515浏览量
24616
发布评论请先 登录
相关推荐
评论