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