亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Avenger Assembled:钢铁侠头盔和 Arc Reactor

组件和用品

Arduino UNO
× 1
Adafruit NeoPixel Ring:WS2812 5050 RGB LED
× 1
Adafruit 电容式触摸传感器突破 - MPR121
× 1
舵机(Tower Pro MG996R)
× 1
4xAA 电池座
× 1
9V 电池夹
× 1
跳线(通用)
× 1

必要的工具和机器

3D 打印机(通用)
我们使用了一个 Lulzbot Mini,它已经完美地工作了 1 年多(除了我们的 flexystruder 头,它有从来没有工作:()

应用和在线服务

Arduino IDE
Autodesk Netfabb
fritzing

关于这个项目

复仇者组装:3D 打印和 Arduino 控制的钢铁侠头盔和电弧反应堆。

介绍和动机:

我制作这款头盔的动机始于我制作的第一个头盔。这是我在网上找到的一些视频中的硬纸板 Antman 头盔。真的很酷(作为漫威的超级粉丝),所以我决定我真的想做一个钢铁侠头盔。我刚刚去过华盛顿特区的 National Maker Faire,每个人都喜欢 Antman 头盔。这更加激励我制作钢铁侠。我经历了几个原型,从另一个硬纸板头盔开始。那个头盔太小了,所以我自己设计了头盔,这次我把它组装起来,看起来更像是戴在我头上的一个球,而不是电影中的那个。最后,我去了一个纸模型。这个纸模型看起来很棒,但我又遇到了一个问题。纸模型太脆弱了。我试图修复它,但它不起作用,所以我决定用 3D 打印头盔。我终于做出了一个足够稳定且足够大以适合我的头部和电机的产品。

  • 制作头盔和电弧反应器:

3D 打印:

1) 将其拆分为多个部分 - 软件

创建这个头盔的第一步是在网上找到文件,然后打印出来。我找到的文件是一个机动钢铁侠头盔。我从thingiverse下载的文件分为三部分:主体部分、下巴和面板。由于这三个部分对于我的打印机构建板来说都太大了,我不得不找到可以将我的头盔切割成多个部分的软件。在网上查找时,我在网上找到了名为 netfabb basic 的免费软件。我下载了该工具并将我的文件上传到它。 Netfabb basic 非常易于使用,我能够将头盔的各个部分剪下来。然后我将零件打印到主头盔、下巴和面板上。在浏览印刷品时,我会将这些碎片用胶带粘在一起并检查尺寸是否合适。当所有部件都完成打印并且 1 ½ 卷灯丝用完后,我得到了 24 件式头盔。

2) 选择合适的粘合剂

下一个挑战是找到合适的粘合剂将部件粘合在一起。胶水要发挥作用,必须满足三个要求:

  • 它必须以牢固的纽带将各个部分结合在一起,
  • 有一个快速的治愈时间
  • 易于打磨。

我们测试了 4 种不同的胶水,E6000、JB Weld KwikWeld、JB Weld Plastic Bonder 和 Loctite Plastic Bonder 环氧树脂。最终,我们最终使用了 KwikWeld,因为它满足所有三个要求。要连接这些部件,第一步是将要粘合的侧面变得粗糙。我用锉刀将光滑的侧面弄粗糙,直到这件作品的侧面粗糙,带有小凹槽和口袋。这将有助于这件作品粘在一起。然后我们将 JB KwikWeld 与等量的硬化剂和钢混合在一起,然后将其均匀地涂抹在两侧并将它们压在一起。如果您有夹子,请将其滑入夹子中并擦去多余的胶水。干燥大约需要 10 分钟,但它有助于保持更长的时间。

  • 3) 设计伺服机构

制作钢铁侠头盔的下一个挑战是设计伺服机构。由于我一直在努力弄清楚如何使用事物页面上的图片将伺服器连接到头盔 我决定自己做。首先,我计划了伺服器的位置并测量了从伺服器到连接位置的直线。然后我估计了伺服器的角度。第一个设计有点偏离,角度太尖了。下一个我修好了,它刚刚好。然后我将手臂拧入伺服器和连接位置,看看它是否合适。它做了!最后,我设计了一个夹子来安装在伺服器周围并将其打印出来。我组装了所有东西,我们做了第一次测试。它不稳定,面板没有以平滑和平等的方式一路向上。为了解决这个问题,我将一个金属衣架弯曲成矩形,并将其放入 3D 打印部件应该放置的插槽中。然后我设计了夹子放在衣架下面,以防止它掉落。我用钢锯在头盔顶部切槽,然后将所有东西放回原处。我们第二次尝试了,效果很好!

4)组装及涂装

终于,它准备好画画了。我把所有东西都拆开,做了第一层白色底漆。完成底漆后,我用油漆胶带遮住下巴的一部分,并将头盔涂成红色。对于面板,我将其全部涂成金色。由于黄金干得很快,很快就完成了,但红色油漆干得非常慢,所以我把它放在外面晾干。在所有部件都干燥后,我从下巴上取下胶带,并遮住了下巴附近仍然是白色的所有东西。然后,我用锡纸把它放在头盔的其余部分。然后我把白色部分涂成金色,等待它变干。然后我重新组装了头盔再次 并将它们放在一起。然后我做了最后的测试,成功了!

5) 电弧反应堆:

接下来是制作电弧反应堆。我首先测量了新像素环的大小并设计了一个盒子来容纳它。然后,对于盖子,我使用了 thingiverse 上某人的设计并对其进行了修改以满足我的需求。您可以在此处找到原始模型:http://www.thingiverse.com/thing:33021 新设计具有几乎完全相同的功能,尽管它的某些部分有点不成比例。我打印了外壳和顶部,它们非常合身。唯一的问题是,Neopixel 对于这种情况来说太小了。原来我的计算错了,所以我回去改了。这次很合适。接下来,我添加了两个让电线穿过的孔,并在顶部添加了一个用于插入绳子的杆,这样我就可以将它戴在脖子上。最后,我添加了一个由半透明 abs 细丝制成的拆弹器,可紧贴外壳。印刷部分终于完成了!

电子产品:

一旦 3D 打印完成,我们就知道我们有一个很好的平台来嵌入一些电子产品。对于这个项目,我们想控制连接到头盔面板的 1 个伺服电机。我们还想控制 Arc Reactor 中的 Neopixel 环。我们使用 Arduino Uno 作为该项目控制系统的基础。但是,还有许多其他类型的电路板也可以使用,因此我们保留了软件和硬件的通用性。事实上,我们在这个项目中交替使用了 Uno 和 Arduino101。这也将允许未来的扩展和使用 101 的板载 BLE 制作连接头盔的潜力!

钢铁侠需要启动头盔的伺服电机和弧形反应器的新像素环。我们使用 MPR121 ADAFRUIT 12 键电容式触摸传感器突破来提供基于触摸的界面。该分线板支持 12 个不同的输入,并使用 I2C 与 Uno 通信。 12 个触点为未来的扩展留出了足够的空间,而 I2C 是 Arduino 系列标准 IDE 包的一部分,使我们能够在不重新编程的情况下互换电路板。它有很好的文档记录,并且提供的软件示例使您可以轻松理解如何在我们的草图中使用它。

我们用裸露的末端连接电线来充当我们的电容式触摸开关。虽然我们没有看到像机械开关那样的传统“开关弹跳”,但单次触摸会产生多次点击,如 loop() 在 arduino 草图中对董事会进行投票。为了避免伺服“颤动”响应这些点击,我们在读取触摸时实施了 1/4 秒的软件延迟机制。在测试了Uno和MPR121之后,我们添加了伺服电机和电源。

考虑到在负载下使用伺服电机以及希望在 2016 年纽约创客嘉年华“现场部署”该项目,该项目最重要的考虑因素之一是电源。我们被告知,电源设计是电气工程中最重要但最不迷人的领域之一。我们俩都不是电气工程师,因此我们提出的解决方案是将我们阅读的内容、我们理解的内容、可用的内容以及我们开始工作的内容结合起来。因此,我们并不声称这是最好的解决方案,并期待任何改进建议。

由于伺服器上的负载、反电动势的可能性以及 https://www.arduino.cc/en/Reference/Servo 的建议,我们选择与 Uno 分开为伺服器供电。伺服电机电源和地连接到 4XAA 电池组的电源和地。非常重要的是 Uno 的地、舵机和电池组必须全部连接以完成电路。我们这样做是将 Perma-Proto 板的接地轨、4XAA 电池组和来自 Uno 接地引脚的电线连接在一起,如下面的 Fritzing 示意图所示。

最初我们还使用 4XAA 电池组为 Neopixel 环供电。我们改变了这一点,因为在打开和关闭 Neopixel 环时似乎有一些伺服的“颤动”。然而,这可能是由于我们测试时电池电量不足。不幸的是,我们在 Maker Faire 的前一天晚上注意到了这一点,而且我们已经在 Perma-Proto 上。我们决定将 Neopixel Ring 直接连接到 Uno 并同时更换新电池。这解决了问题,但没有回答问题。也许在我们将来努力改进项目时,我们会追求这一点。

整个电路在面包板上制作原型,然后简单地移到 Adafruit ¼ Perma-Proto 板上。使用安全外壳,这是为您的项目快速创建可部署包的最简单方法之一。我们用蓝色 HIPS 灯丝设计并打印了一个定制外壳,如下所示。整个带电池的装置都被装进了创客嘉年华的相机包!

软件:

目前有 2 个版本的草图,IronMan02.ino IronMan04.ino .两者都适用于本文所述的硬件设置。

第一个, IronMan02.ino 是“搞定”版本,遵循“完美是完成的敌人”的精神。 我们有一个截止日期,这个版本虽然不优雅,但完成了工作。在此版本中,您将看到我们创建了代表头盔和 Arc Reactor 的对象。这样做是为了在未来版本中在 arduino 上实现多任务处理,所以这不是一个完整的仓促工作。我们强烈推荐阅读 Adafruit 的 Bill Earl 撰写的关于 arduino 多任务处理的三篇系列文章。我们的代码基于,尤其是 IronMan04.ino, 是基于这组 3 个教程中的示例、想法和建议。这些文章将带您超越 arduino 编程的基础知识,让您的项目真正起飞!

我们面临的一个问题是面板打开和关闭太快。我们通过使用 delay() 解决了这个问题 功能减慢和平滑面板的运动。是的,如果Reallyevilbadguy 博士准备用他的超级死亡激光打钢铁侠的脸,你希望头盔快速闭合,但为了演示目的,更慢、更平滑的运动看起来更好。

// 向上移动头盔,1/4 秒时间块以避免在触摸帽上颤动/弹跳。 switch void up() { if((millis() - lastSwitched)> 250 ) { lastSwitched =millis(); if (!helmetUp int currPos =0; while( currPos  

使用 delay() 的问题 功能是微控制器在 delay() 期间不能做任何其他事情 .我们使用上面第二个版本 IronMan04.ino 中 adafruit 教程中的指导解决了这个问题 .

第二个版本,IronMan04.ino ,包括我们想要实现的 2 个主要元素,但在 Maker Faire 之前没有时间完成:

  • 一键/触控面板控制
  • 多任务处理

当我们与人们谈论我们最初的项目时,每个人的反应是,你应该只有一个按钮/触摸传感器来上下移动头盔。我们完全同意并决定在有时间时实施。我们的解决方案涉及使用几个状态变量:

  • 翻转 - 保持面板状态
  • 翻转 - 指示面板当前是否正在转换位置
  • 方向性 - 表示向上或向下移动面板

setup() , 我们总是以开放或向上配置启动头盔。这不是绝对必要的。无论初始状态如何,切换面板开关将使您在第二次按下时进入正确状态。但是,我们编写了代码以考虑到面板的初始状态为 up,因此在开始时没有浪费按钮按下。这是最好的方法吗?我们不确定,但由于一些最伟大的科学头脑花了多年时间研究控制理论,我认为我们对这个项目做得很好!

由于我们在循环中轮询来自 MPR121 的触摸,因此用户感知到的触摸会产生许多触摸信号。这类似于传统的开关弹跳,我们通过软件来处理它。我们希望对触摸传感器做出快速响应,并且确实希望实现多任务处理,因此不要在 loop() 的 switch/case 中阻止多次触摸 函数,我们使用 millis() 放置一个计时块 头盔中的功能 ArcReactor 对象,如 Helmet 中的此代码片段所示 对象:

void flipFaceplate() { // 防止抖动/反弹的计时块 if ((millis()-lastFlipped)> 500 ) { . . . 

同样,通过不使用 delay() 我们在项目中保留多任务处理的功能。为 500 毫秒的延迟间隔使用一个变量以允许更改和测试可能更明智,但我们第二次猜测 500 是正确的,只是这里有点草率。

为了在舵机的旋转角度平滑地扫描舵机,我们需要缓慢增加舵机的旋转。通过使用 millis() 检查当前时间,在伺服电机的角度步长上放置一个时间块 功能:

void Update() { if ( flipping &(millis()-lastMoved)>=15 ) { lastMoved =millis(); if ( 方向性 ==UP ) { currentPos =currentPos + 3; } else { currentPos =currentPos - 3; Serial.print("当前位置:");Serial.print(currentPos);头盔伺服。写(currentPos); } if ((currentPos>=upAngle) || (currentPos <=downAngle)) { flipping=false; } }}; 

再一次,我们在没有 delay() 的情况下实现了这个 功能。如果您构建这个项目,并仔细观察,您会发现在 Uno 上运行 IronMan04.ino 时,您可以翻转面板并同时打开和关闭 Neopixel。使用 IronMan02.ino,delay() 导致被阻塞,直到伺服完成移动。谢谢比尔厄尔!

更新函数的最后一行检查以确保我们没有超出面板的上部或下部位置,如 loop() 函数调用 Update() 它会在头盔最后一次移动后不断检查这一点,然后设置翻转 变量为 false 以指示面板已完成向上或向下移动。在下一个循环中,翻转 false,整个函数基本上被跳过了。

 if ((currentPos>=upAngle) || (currentPos <=downAngle)) { flipping=false; } 

未来方向:

我们可以用这个项目做很多事情,但不确定从哪里开始!发光的眼睛是其中之一。也许添加与 arduino101 的 BLE 连接?语音接口?贾维斯绝对是在呼唤这个!

代码

钢铁侠头盔和电弧反应堆项目!
https://github.com/lachendeKatze/Iron-Man

示意图


制造工艺

  1. 井盖
  2. 熨斗
  3. 铸铁炉
  4. 足球头盔
  5. 电池
  6. UnifiedWater v1
  7. 钢铁侠
  8. Arduino Power
  9. 英特尔 Arduino 101 BLE Blynk Tank
  10. Arduino101 / tinyTILE BLE:相亲太阳镜
  11. 了解锻铁