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

永盛开的机械郁金香

组件和用品

Arduino Nano R3
× 1
SG90 微伺服电机
× 1
TTP223 触摸传感器
× 1
1mm 黄铜线
× 1
2mm 黄铜管
× 1
0.3mm 绝缘铜线
× 1
WS2812 5050 NeoPixel LED
× 7
白色 SMD 1206 LED
× 30

关于这个项目

永恒之花,献给你永恒的爱。一份完美的情人节礼物,不仅是送给您所爱的人。只需轻轻一碰,这种机械郁金香就会绽放出任何可能的颜色。它的六个花瓣会慢慢张开并亮起。当花瓣闭合时,它们会产生令人难以置信的带有叶子图案的环境光。

它是如何工作的?

但在我告诉你如何创造这种美之前,让我们先简单谈谈它是如何工作的。郁金香由 6 个花瓣组成,每个花瓣带有 5 个 SMD 白色 LED。每个花瓣都与 Arduino 输出引脚之一连接。 Blossom 隐藏了 7 个 NeoPixel RGB LED。从电气的角度来看,整朵花都是地面的,花瓣中的脉是正电压。花瓣由推杆打开,推杆从茎一直向下延伸到基部。推杆由小型业余伺服器的运动控制。阀杆侧面的小叶子连接到底座内部的 TTP223 触摸传感器并创建电容式触摸板。木制底座包含伺服电机、触摸 IC 和 Arduino Nano。我们自己建一个吧!

你需要什么?

  • 1 毫米黄铜棒
  • 2mm 黄铜管,带 1, 2mm 孔
  • 0.3mm 带绝缘铜线
  • 一些用于基座的木头
  • Arduino Nano
  • TTP223 触摸传感器
  • 小型伺服

开始前您需要了解的内容

  • 如何焊接黄铜(很棒的文章)
  • 如何使用 Arduino 构建
  • 如何使用伺服器
  • 如何使用 LED 和 NeoPixels

我不会告诉你组件的任何尺寸和花朵的确切形状。我认为每一朵花都应该是独一无二的。

花瓣(4h)

先从最满意的部分开始——花瓣。请注意括号中的数字是执行该步骤所需的时间。

您需要的第一件事是开花的模板。我用石膏浇铸成管模。当它干燥时,我把它塑造成一朵郁金香花。你也可以 3D 打印它,但我没有 3D 打印机。石膏很棒,因为它很容易加工,铅笔可以在上面画画。单瓣是模板表面的 1/4,所以最后当有 6 个时,它们会彼此略微重叠,从而形成郁金香花的精确外观。我用铅笔在石膏表面画出花瓣的形状。当我对花瓣形状感到满意时,我用刀将其雕刻在石膏上,以帮助我在焊接时将杆固定到位。

花瓣由 1 毫米黄铜棒组成,一直围绕着形状。花瓣内部有 5 个 SMD 1206 白色 LED 和来自同一根电线的“静脉”结构。首先,创建圆周线,慢慢弯曲它。剪下一小段管子并将其穿过电线的底部平坦部分 - 这将是铰链花瓣将四处移动。将电线的末端焊接在一起,确保不要用焊料填充管子。它需要自由移动。用 LED 和静脉结构完成花瓣。看我制作一片花瓣。惭愧,这是我制作花的唯一镜头。

现在再制作 5 个。所有花瓣都必须完全相同。 这真的很关键。否则,它们在闭合时最终不会像一个漂亮的郁金香形状,甚至可能会卡住。

开花(1h)

到现在为止还挺好?是时候将所有花瓣焊接在一起了。花朵的基部是六边形 - 6 个花瓣。花瓣通过铰链固定在六边形上。然而,六边形略微不规则。我用普通的失败了。花瓣需要相互重叠,如果六边形是规则的,则不允许重叠。三个花瓣靠近中心(内花瓣),另外 3 个稍微偏移(外花瓣)。为此,我创建了一个模板并将其打印在纸上。红色形状是由两个嵌套的正六边形组成的最终不规则六边形。将所有铰链(管)焊接到六边形上。从模板中心出来的光线将帮助您将花瓣焊接到正确的位置。花瓣的中心需要遵循从六边形中心出来的射线线。最后,当您关闭花瓣时,您将拥有花朵的最终形状。不错吧?

创建杆和推杆 (1h)

这不是我制作花的方式。我首先完成了花朵内部的机制,然后在上面添加了一个茎和推杆。它在制作中增加了很多痛苦。有一次我几乎想把它扔掉,再也不回头。下次我会先从茎开始。所以你也应该这样做。

花瓣的运动是由 1 毫米黄铜推杆在黄铜管内自由移动造成的。花瓣通过一个非常小的六边形连接到推杆,每侧都有 2 毫米长的小铰链 - 推杆头。在穿过六边形中心的小杆的帮助下,六边形垂直坐在推杆上。这是钟表匠的工作。

为了创建推杆头,我创建了第二个模板。首先,弯曲电线以形成微小的六边形。然后切割 2 毫米长的小管子并将它们穿过电线。焊接电线以完成六边形。再次确保不要将管道焊接到电线上。继续将电线焊接到六边形的中心。并通过焊接垂直于推杆头中心的 1 毫米电线来完成杆。欢呼!你有你的推杆。

建立茎。将黄铜管切割成所需的长度。 现在是第二个关键部分。 茎需要完全垂直于花朵的六边形基部,需要在它的确切中心,并且需要有足够的空间让推杆头向下移动以关闭花瓣。首先,我将两根电线焊接到杆的一端以创建 V 形扩展。这些将是将茎连接到六边形底座顶点的 6 根线中的 2 根。

因此,将花朵倒置并将 V 形扩展焊接到六边形底座的 2 个相对顶点。检查形状。如果你把一根杆子放在茎里,它需要从花的中心出来。 慢慢来,让它变得完美。 这真的是很关键的部分。当你觉得没问题时,在六边形的其余顶点和杆的顶部之间再焊接 4 根电线。确保不要焊接管内的孔!

花瓣机制(6h)

这是您最初开始制作花朵时会后悔的部分。有一次我差点把它扔进垃圾桶。但是,嘿,我不是有史以来最有耐心的人。你要钉它!对于这一部分,我的灵感来自蒸汽机及其杆、活塞和飞轮。

给自己做一个试验台。将花的茎固定在向上的位置。将推杆的头部向上穿过阀杆。焊接垂直于推杆底端的短管,并用 1 毫米黄铜线为自己制作一个小连杆,以连接伺服器和推杆(见上图)。您应该能够使用伺服器上下移动推杆。通过连接您的 Arduino 来尝试一下。在开始焊接花瓣和推杆头之间的连杆之前,您需要使用 Arduino 调整伺服运动。编写代码以在推杆头端与开花六角形底座齐平时在最高位置以某种方式上下移动推杆。而在最低的位置,它坐落在开花的V形底座的底部。

当推杆向上移动时,它会将连杆和花瓣向下推。当它向下移动时,它会拖动连杆,花瓣正在闭合。

花瓣目前缺少一个关键部分——花瓣别针。这个铰链使花瓣移动。铰链位于一根杆上(见下图),该杆被焊接到平行于其底部的每个花瓣上。花瓣销需要位于花瓣表面上方,才能使其完全打开,如动画所示。用管子上的铰链制作一个这样的棒,并将其焊接到第一个花瓣上。这将需要对杆的大小及其与花瓣基部的距离进行大量试验,以允许推杆完全打开和关闭花瓣。使用试错法。将杆焊接到合适的位置并在推杆销和花瓣销之间添加连接杆。如果你的推杆在上面,花瓣处于完全打开的位置,推杆销和花瓣销之间的空间就是连杆的长度。

现在试着用推杆上下移动看看发生了什么。如果它在没有任何摩擦的情况下工作正常并且可以关闭和打开花瓣,那么您就完成了(第一个花瓣)!如果没有,请尝试不同长度的连杆或不同的杆位置。为了完成开花,在剩下的 5 个花瓣上复制相同的杆和连杆。当花朵打开时,3 个外花瓣需要稍微低一点,以便它们在关闭时与内花瓣正确重叠。最后,您应该能够关闭和打开花朵。 不要惊慌 如果你第一次尝试没有做出完美的形状。这仅意味着所有花瓣并不完全相同。可能需要进行大量微调才能创建完美的形状 - 连杆的长度和杆的位置略有不同。花点时间在这里!奖励就在附近。

彩虹雌蕊(1h)

如果你做到了这一步,你就是一个国王,最困难的部分就在你身后。在花朵内部,我放置了 7 个 NeoPixels LED 从内部发光。这些 LED 只需要一根数据线来控制,并且可以菊花链连接。我在两个小六边形之间焊接了其中的 6 个(当然是另一个模板)。下六边形为地线,上六边形为正电压。将合适的 NeoPixel 引线焊接到这些六边形环上。这些 LED 以 45 度角放置,以照射到两侧。为了让它更好地将第七个 LED 放入上六边形的中心。最后但并非最不重要的是连接 DATA IN 和 OUT 引线以创建菊花链。

这种结构需要两根连接到基座的电线 - VCC 和 DATA。地面取自花框。将一根细的 0.3 绝缘铜线焊接到 VCC 的上环,将第二根焊接到 DATA 菊花链中的第一个 LED。这些电线最后会落到底座上。使它们至少是茎长的 3 倍。在焊接之前,这些电线的末端需要从它们的透明绝缘层中释放出来。热不会破坏它。用小刀剥去绝缘层。您现在可以测试 LED 以确保它们正常工作。对这些铜线要轻柔。如果您不小心剥去末端以外的任何地方的绝缘层,您可能会短路!

最后的黄铜焊接工作即将开始!将雌蕊结构放在花朵的中心。将其从开花的六边形底座稍微偏移,以便为花瓣连接杆留出足够的空间。对我来说,它在开花六边形上方 1 厘米处。用黄铜棒连接所有顶点以形成坚固的结构。花就做好了!现在测试一下,看看花瓣是否还能自由移动。

生根(2h)

花瓣和 NeoPixel LED 都需要电源线才能发光。整个花卉雕塑将是一个地面,但 NeoPixels 有 6 个花瓣和 2 根电线,需要连接到基座中的 Arduino。为此,带有透明绝缘层的 0.3 毫米细铜线将缠绕在阀杆管上。 Neopixels 的两条线已经完成。将另外 6 根焊接到铰链附近每个花瓣上的松散静脉线,然后将线穿过花朵结构沿着茎向下。确保不要将这些电线弯曲成锐角,它很快就会断裂。

现在收集靠近阀杆管上端的所有电线,并使用捆扎带固定它们。不要把它拧得太紧,让电线穿过它。现在很好地组织开花内的所有电线。确保花瓣可以自由移动并且推杆也不会与电线碰撞。完毕?现在收紧捆扎带。

电线现在不受控制地绕着阀杆飞来飞去。你需要耐心地慢慢地把它们包在茎上。紧密而均匀。我至少花了一个小时才完成这一步。当您在杆的末端时,放置另一条捆扎带将电线固定在那里,并使用透明强力胶将它们固定到位。确保不要用推杆密封管道!

缺少的最后一根电线是接地。将另一根铜线焊接到杆的底端。你最终应该从花中伸出 9 根电线。 现在将所有电线连接到 Arduino 是明智之举 并测试是否有短路,所有LED是否亮起。

花盆(2h)

我想让花从人造花盆里长出来,这样也能隐藏所有的电子设备。我用一块木头把它加工成一个高4厘米、直径9厘米的圆柱体。我没有车床,所以我用圆锯切割原始形状,然后用冲压钻作为临时车床。然后我用手工铣刀雕刻了一个深 2.5 厘米、直径 7 厘米的开口,以安装伺服、Arduino Nano 和触摸传感器 IC。在圆柱体的底部,还有一个小开口,可以精确安装Arduino Nano USB端口,可以从侧面连接USB线。

如果你有你的花盆,在你的花茎直径上钻一个洞,在花生长的地方——可能在中心——用电线。尝试适合你的花。 小心电线。 如果将它们弯曲成锐角,它们就会断裂。最后,我还在底座内侧加了一个大孔,为舵机臂和连杆腾出更多空间。

你可以做任何你喜欢的花盆形状,只要记住你需要把所有的电子设备都装进去。

触摸叶垫(1h)

机械郁金香需要某种互动元素,让人们可以让它开花。我从我的 Arduinoflake 项目中选择了 TTP223 触摸传感器 IC。但是在哪里放置触摸板?我决定在茎的一侧添加一小片叶子,这样既可以使花朵更自然,又可以充当电容式触摸板。当触摸它时,它会触发 TTP223 传感器并告诉 Arduino 打开花朵。当您完成如此复杂的雕塑时,这对您来说将是小菜一碟。使用与花瓣相同的技术,只需省略 LED。我还为自己创建了一个模板。在茎孔旁边的底座上再钻一个小孔,将叶子固定到位。

如果您不想或不能使用电容式触摸传感器,您可以在底座上添加一个普通按钮。它会做同样的工作。

拼凑起来(2h)

这是组装的最后一步!你紧张吗?再次将花茎插入底座的孔中。现在,这是重要的一步。切割前测量两次!将花朵开放至完全开放。并将推杆的末端从阀杆中取出,与阀杆齐平。现在,当您再次关闭花朵时,推杆应从茎中抽出。垂直于推杆焊接一个短管。这将是连杆与伺服臂的铰链。当你松开花和杆时,它应该完全打开,因为管子也会起到止动作用。

您现在可以将茎粘到底座上。确保阀杆管端与底座内部齐平,为伺服臂留出尽可能多的空间。我又用了强力胶。确保不要将推杆与阀杆管粘在一起。 这会毁了你的工作!

接下来,粘在叶垫上。在将铜线焊接到它之前,以便能够将叶垫连接到 TTP223 触摸传感器。

将花倒置。小心雕塑周围,现在不要打破它!那就太浪费了!首先,将伺服器置于最终位置。它的手臂应该已经从测试台上准备好了。只需找到伺服臂在基座内自由移动并将连杆连接到推杆的最佳位置即可。为了将伺服器固定到位,我使用了一块金属板和两个螺钉。我想在这里灵活处理伺服故障或错误放置的情况。但如果你有信心,你可以把它粘起来。

如果您有 TTP223 模块,请将电线焊接到原始 TTP223 模块触摸板上的叶焊盘(组件所在的另一侧)。您需要刮掉保护丝膜以露出铜层。粘上触控模块。

花瓣线(有 6 根)必须通过限流电阻连接到 Arduino。花瓣基本上是 LED。我使用了焊接在一小块穿孔板上的六个 200 欧姆电阻器。把它粘进去。

基座的最后一个组件是 Arduino Nano 本身,它是机械郁金香的大脑。将其放入底座的开口中,以便它可以连接到您的计算机并将其与所有其他组件连接:

  • 伺服数据线⭢ D9(Adafruit_TiCoServo库需要)
  • TTP223 触摸传感器数据⭢ D2(利用中断)
  • Neopixel 数据 ⭢ A0(任何输出引脚都可以)
  • 花瓣 ⭢ D3、D4、D5、D6、D10、D11(任何输出引脚都可以)
  • 花地线⭢ GND
  • Neopixel VCC 线⭢ 5V
  • TTP223 触摸传感器 GND ⭢ GND
  • TTP223 触摸传感器 VCC ⭢ 5V
  • 伺服地线⭢地线
  • 伺服VCC ⭢ 5V

编码(1h)

编程是最简单的部分。您已经有了伺服的代码。现在您只需要能够控制 NeoPixels、花瓣上的 LED 和触摸传感器。看看我附上的代码。它将为您提供让您的花卉开花所需的一切。如果你使用我的接线方案,你可以马上使用它。但不要忘记更改伺服打开和关闭值。他们肯定会有所不同。

大功告成!

不要忘记分享您的创作!喜欢这篇文章。还要考虑支持 通过在我的 Tindie 商店购买我的一些产品。

你可以在我的 Twitter 帐户上找到我和我的最新项目。

代码

  • flower.ino
flower.inoArduino
Tulip 源代码
#include #include #include "SoftPWM.h"#define NEOPIXEL_PIN A0#define TOUCH_SENSOR_PIN 2#define SERVO_PIN 9//#define SERVO_OPEN 1750#define SERVO_OPEN定义SERVO_SAFE_MIDDLE 1000#define SERVO_CLOSED 775#define RED 0#define GREEN 1#define BLUE 2float currentRGB[] ={0, 0, 0};float changeRGB[] ={0, 0, 0};byte newRGB[] ={ 0, 0, 0};#define MODE_SLEEPING 0#define MODE_BLOOM 3#define MODE_BLOOMING 4#define MODE_BLOOMED 5#define MODE_FADE 6#define MODE_FADING 7#define MODE_FADED 8#define MODE_FALLINGASLEEP MODE_BLOOM_BLOOM 3#define MODE_BLOOMING 4#define MODE_BLOOMED ] ={3, 4, 5, 6, 10, 11};Adafruit_NeoPixel 像素 =Adafruit_NeoPixel(7, NEOPIXEL_PIN, NEO_GRB + NEO_KHZ400);Adafruit_TiCoServo 伺服;int 伺服变化 =1; // openintservoPosition =SERVO_SAFE_MIDDLE;void setup() { Serial.begin(115200);像素。开始();伺服.附加(SERVO_PIN,SERVO_CLOSED,SERVO_OPEN); pinMode(TOUCH_SENSOR_PIN,输入); attachInterrupt(digitalPinToInterrupt(TOUCH_SENSOR_PIN),_touchISR,RISING);随机种子(模拟读取(A7)); SoftPWMBegin(); pixelUnifiedColor(pixels.Color(0, 0, 0)); //pixelsUnifiedColor(pixels.Color(255, 70, 0)); prepareCrossFade(140, 70, 0, 140);伺服.写(servoPosition);}int计数器=0;字节速度=15;无效循环(){布尔完成=真;开关(模式){ case MODE_BLOOM:prepareCrossFadeBloom(500);改变模式(MODE_BLOOMING);休息; case MODE_BLOOMING:done =crossFade() &&done; done =openPetals() &&done; done =petalsBloom(counter) &&done; if (done) { changeMode(MODE_BLOOMED); } 休息; case MODE_FADE://准备CrossFade(0, 0, 0, 800);改变模式(MODE_FADING);休息; case MODE_FADING:done =crossFade() &&done; done =closePetals() &&done; done =petalsFade(counter) &&done; if (done) { changeMode(MODE_FADED); } 休息; case MODE_FADED://准备CrossFade(140, 70, 0, 140);改变模式(MODE_FALLINGASLEEP);休息; case MODE_FALLINGASLEEP:done =crossFade() &&done; done =closePetals() &&done; if (done) { changeMode(MODE_SLEEPING); } 休息; case MODE_RAINBOW:彩虹(计数器);休息; } 计数器++;延迟(速度);}无效改变模式(字节新模式){如果(模式!=新模式){模式=新模式;计数器 =0; }}void _touchISR() { if (mode ==MODE_SLEEPING) { changeMode(MODE_BLOOM); } else if (mode ==MODE_BLOOMED) { changeMode(MODE_FADE); }}// 花瓣动画boolean petalsBloom(int j) { if (j <250) { return false; // 延迟 } if (j> 750) { return true; } int val =(j - 250) / 2; for (int i =0; i <6; i++) { SoftPWMSet(petalPins[i], val); } return false;}boolean petalsFade(int j) { if (j> 510) { return true; } } for (int i =0; i <6; i++) { SoftPWMSet(petalPins[i], (510 - j) / 2); } return false;}// animationsvoid prepareCrossFadeBloom(unsigned int duration) { byte color =random(0, 5); switch (color) { case 0:// 白色 prepareCrossFade(140, 140, 140, duration);休息; case 1:// 红色 prepareCrossFade(140, 5, 0, duration);休息; case 2:// 蓝色 prepareCrossFade(30, 70, 170, duration);休息; case 3:// 粉色 prepareCrossFade(140, 0, 70, duration);休息; case 4:// 橙色 prepareCrossFade(255, 70, 0, duration);休息; }}无效彩虹(int j){ uint16_t i;字节数 =pixel.numPixels() - 1; pixel.setPixelColor(pixels.numPixels() - 1, 100, 100, 100); for (i =0; i =SERVO_OPEN) { return true; }伺服位置++;伺服.写(伺服位置); return false;}boolean closePetals() { if (servoPosition <=SERVO_CLOSED) { return true; } } 伺服位置 --;伺服.写(伺服位置); return false;}// 实用函数void pixelUnifiedColor(uint32_t color) { for (unsigned int i =0; i  0 &¤tRGB[i]  newRGB[i]) { currentRGB[i] =currentRGB[i] + changeRGB[i]; } else { currentRGB[i] =newRGB[i]; } } pixelUnifiedColor(pixels.Color(currentRGB[RED], currentRGB[GREEN], currentRGB[BLUE])); /* Serial.print(currentRGB[RED]); Serial.print(" "); Serial.print(currentRGB[绿色]); Serial.print(" "); Serial.print(currentRGB[BLUE]); Serial.println(); */ return false;}uint32_t colorWheel(byte wheelPos) { // 输入 0 到 255 之间的值以获取颜色值。 // 颜色是过渡 r - g - b - 回到 r。车轮位置 =255 - 车轮位置; if (wheelPos <85) { return pixel.Color(255 - wheelPos * 3, 0, wheelPos * 3); } if (wheelPos <170) { wheelPos -=85; return pixels.Color(0, wheelPos * 3, 255 - wheelPos * 3); } wheelPos -=170; return pixels.Color(wheelPos * 3, 255 - wheelPos * 3, 0);}

制造工艺

  1. 黄铜
  2. 便携式电容式触摸钢琴
  3. Arduino Touch Breakout 游戏
  4. 智能触控开关板
  5. 什么是机械联动?
  6. 如何制造精密机械部件
  7. 为什么需要机械铁工?
  8. 机械压力机简介
  9. 什么是机械压力机?
  10. 机械轴承简介
  11. 机械冲床快速指南
  12. 了解机械轴承