×

由PCB制成的火影忍者主题夜灯

消耗积分:2 | 格式:zip | 大小:0.27 MB | 2022-07-07

李猛

分享资料个

PCB图如下:

poYBAGK1NeKAZ6vIAABagiifHVo009.jpg

pYYBAGK1NemARGUYAACP47xC3Bg249.jpg

成分

定制PCB × 1
LED 0603 白色 × 15
电阻10K/1K × 2
ATTINY13A-SUR
微芯片技术
× 1
A03400 场效应管 × 1

描述

火影忍者主题夜灯

嘿伙计们怎么了。

这是一个很酷的东西,主要由 PCB 制成的以火影忍者为主题的台灯。

该项目的核心是驱动位于 Face 背面的一些 0603 LED 的 Attiy13A。

pYYBAGK1NfaAOLZRAABwvdK0Ih0284.jpg

poYBAGK1NfmAVaOuAACQASTHTE8072.jpg

头部部分是可拆卸或可更换的,这意味着我们可以准备两个或更多的火影忍者头部,并在背面添加不同颜色的 LED,然后我们可以将它们更换为我们需要的任何光色。

我已经在我的 PCBCad 软件中对火影忍者的脸进行了建模,然后将其发送到PCBway以获取样本。

收到 PCB 后,我组装了整个电路板,然后在上面添加了代码,这就是我制作这个项目的方式。

在这篇文章中,我将向你们展示我是如何通过几种简单的方式准备这个项目的。

所以让我们开始吧!

所需材料

定制PCB

阁楼13A

10K电阻

AO3400 场效应管

发光二极管 0603

转变

USB端口

3D 打印零件

锂离子电池

Arduino 作为 ISP 设置

基本理念

poYBAGK1Nf2ACw0ZAABal1qg7L0909.jpg

所以这里的想法是制作一个以火影忍者为主题的 PCB 艺术作品。

为了让这个设置有点用处,我在背面添加了 LED,这样我们就可以在我们想将此设置用作涂料夜灯时将它们打开。

poYBAGK1NgCAciDGAABO9jK5wSQ444.jpg

至于它的工作,这里使用 Attiny13A 作为主 MCU。Attiny13 控制打开或关闭 LED 的 MOSFET 栅极。

Mosfet 的状态通过按顺序按下按钮来改变。

第一次点击会将设置置于 FADE 序列中

第二次点击将使此设置保持在高模式

第三次点击将亮度降低 50%

第四次点击将关闭设置

现在让我们来谈谈这块板的PCB设计过程。

PCB设计流程

pYYBAGK1NgKATcSLAACl47RGhqE442.bmp

poYBAGK1NgWAXVFhAAB82O0OTiY131.png

因此,正如您在此处看到的,此 PCB 并不完全正常。

这种 PCB 的形状与传统的方形或圆形 PCB 完全不同。

在顶部,头部在那里,这个矩形部分是驱动板,它将固定头部并保留其他组件,如 MCU、USB 插座、开关。

pYYBAGK1NgeAAtGWAAB6qwvO14g073.jpg

此外,此 PCB 是分离式 PCB,这意味着我们必须通过用刀具切割此部分来将头部和底座部分彼此分开。

原理图

pYYBAGK1NgqASahjAAB4LLH3gK0940.jpg

我将所有带有 Mosfet 设置的 LED 和一个 CON3 接头放置在头部。

在 Base 上,我放置了所有重要的东西,例如 Attiny13A、USB 端口开关和 CON3 接头引脚。

这里的计划是在两个 CON3 引脚上添加公头和母头引脚。

通过这样做,我们现在可以在没有任何永久性焊点的情况下将头部移除或放置在底座上。

poYBAGK1Ng2AQZN0AAB3YN0AiSY793.jpg

pYYBAGK1Ng-AJeYzAABys2nZrps232.jpg

这个想法很酷,因为我们现在可以对来自不同电影或动漫的一堆东西进行建模,我们只需要使用 mosfet 设置在它们上面放置 LED,当我们将它们连接到底座时,它们就会工作。

在完成原理图并制作出完美的 PCB 后,我将 Gerber 数据发送给 PCB 制造商以获取样品。

从 PCBWAY 获取 PCB

poYBAGK1NhKADv2aAACD8jqch7U263.jpg

我将 Gerber 数据上传到 PCBWAY 的报价页面,这次我想做一些不同的事情,所以我选择了黄色阻焊层,我通常会得到白色阻焊层的 PCB,但这次我选择黄色的,因为火影忍者的头发是黄色的所以得到黄色阻焊层更有意义。

pYYBAGK1NhSAYvHVAAB6eXNyKyk907.jpg

我在一周内收到了 PCB,整体 PCB 质量非常好,这是意料之中的,因为 PCBWAY 总是提供优质的东西,

我已经使用他们的 PCB 服务一年了,我对他们的评价还是一样,PCB 的质量总是很高,这是一个加分点。

PCBWAY,你们干得好!

pYYBAGK1NhiARmcxAABqsqL2fks976.jpg

查看 PCBWAY  ,以更低的成本获得出色的 PCB 服务。

组装过程

poYBAGK1NhuAfpXfAACp4RYV6qo371.jpg

接下来是这个徽章的组装过程,其中包括 -

锡膏点胶工艺

取放过程

热板回流

和 THT 组件。

该项目共有 2 块 PCB,均具有 SMD 和 THT 组件。

首先是锡膏点胶工艺

焊膏

poYBAGK1Nh2ARXCjAACXiiYt6-k539.jpg

首先,我们在每个元件焊盘上放置焊膏,我使用的是带有焊膏分配注射器的通用焊膏(SN-Pb 比 63-37)。

我们首先将焊膏添加到头部,然后在基础 PCB 上。

拾取和放置

pYYBAGK1Nh-ABTSIAACFYgIOM1w123.jpg

然后我们将组件一个一个地添加到它们分配的位置。您可以查看每个组件的精确位置示意图。

热板回流

poYBAGK1NiKAUqF3AAC5jVQ2IBA243.jpg

将组件添加到其位置后,我们小心地提起 PCB 并将其放在 SMT 加热板上。

我制作了这个热板,专门用于制作需要 SMD 焊接的此类项目。市场上的电炉并不便宜,所以我做了一个最小版本,你可以从这里查看 -

但是无论如何,热板将PCB从下方加热到焊膏熔化温度,一旦PCB达到该温度,焊膏就会熔化,所有组件都会焊接到它们的焊盘上,

我们小心地抬起这块 PCB 并尽量不要摇晃它,因为焊膏仍然熔化,如果移动太多,组件可能会偏离它们的位置。

我们抬起PCB,然后将其放在较冷的表面上稍微冷却一下,以冷却PCB的热量。

THT 组件

poYBAGK1NiWAGZ3GAAB5-HBQO1c136.jpg

pYYBAGK1NiqACXokAABzpkKtlkk770.jpg

poYBAGK1Ni2AYjJ8AABuQBj-YnE338.jpg

我们添加了剩余的 THT 组件,例如 USB 端口、插头引脚、纽扣电池座和电源关闭开关。

PCB 已经完成,但它还不能工作,因为我们仍然需要刷新 attiny13A 以用一些甜美的代码行填充它。

代码和刷机过程

pYYBAGK1Ni-ASGy4AABbRy2H8zM195.jpg

至于刷机过程,我们不能通过任何 USB 直接对 ATTINY13 进行编程,我的意思是有一种方法可以直接从 USB 端口对 Attiny 进行编程,但我没有这样做。

poYBAGK1NjKAYfUaAACVBp8qAzA145.jpg

相反,我将使用 ISP 闪存方法,该方法将利用 attiny13 的 SPI 引脚在其中烧录引导加载程序,然后烧录。

以这种方式将 Attiny85 与 Arduino 连接起来。

Vcc 到 Vcc

地到地

D10-RST 服装

D11-莫西

D12-味噌

D13-SCK

(同样在将 ISP Sketch 上传到您的 Arduino 之后,不要忘记在您的 Arduino 板的 Reset 和 GND 引脚之间添加一个 10uf Cap)

我不会使用 Arduino UNO 和面包板来完成这项工作,而是使用我为闪烁 Attiny 或 Atmega MCU 而制作的 DIY Attiny Programmer。

您可以从这里查看更多详细信息-

基本上,我们将 Attiny13 放入 dip 插座并使用 Arduino IDE 刷新 MCU。

3D打印身体

pYYBAGK1NjSAZKoIAABHzCWJ0qo295.jpg

poYBAGK1NjeAWDw_AABexi8oUzs314.jpg

这种设置需要一个类似盒子的底座,它可以将锂离子电池固定在内部,并且可以在顶部放置电路。

所以我在 fusion360 中对这个身体进行了建模,然后在我的 Ender 3 上进行了 3D 打印。

该项目的所有重要打印设置和 STL 文件都可以从该项目的页面下载。

但无论如何,在得到零件 3D 打印后,剩下要做的就是最终组装。

总装

poYBAGK1NjmAJ-WpAABw2rJMKPM884.jpg

pYYBAGK1Nj2AafqXAABxQcSg9QU342.jpg

最终组装包括以下过程,

首先,我们在底座内部添加锂离子电池,然后用两个 M3 大圆头螺钉在其上添加电路

然后我们使用提供的 JST 连接器将电池连接到电路上。

最后,我们用四个 M2 大圆头螺钉添加 Base Lid,组装完成。

现在我们可以将头部放在底座上并按下开关来初始化整个设置。

结果

我们按下按钮,LED 序列开始,我们再次按下按钮,LED 进入另一种模式。我们再次按下按钮,然后 LED 进入另一种模式,这个过程将继续进行。

最后,结果将如下所示!

添加在

poYBAGK1NfmAVaOuAACQASTHTE8072.jpg

pYYBAGK1NkGAA90OAAB4hpW3GsE590.jpg

此外,我们可以准备一个具有相同原理图的佐助头,我们可以根据我们需要的夜灯,火影忍者或佐助来交换头。

今天就到这里了,如果你们需要任何帮助,请发表评论,我很快就会回来做另一个项目!

另外,感谢PCBWay对这个项目的支持,看看PCBWAY以更低和经济的成本获得高质量的 PCB 服务。

安息吧!

代码

代码

C/C++

  int switchPin = 4; //4
  int led1Pin = 0;//0
   
  int brightness = 0;// how bright the LED is
  int fadeAmount = 5;// how many points to fade the LED by
   
   
  int val;
  int val2;
  int buttonState;
  int Mode ; //= 0;
   
  void setup()
  {
  pinMode(switchPin, INPUT_PULLUP);
  pinMode(led1Pin, OUTPUT);
  buttonState = digitalRead(switchPin);
  }
   
  void loop(){
   
  val = digitalRead(switchPin);// read input value and store it in val
  delay(10); // 10 milliseconds is a good amount of time
  val2 = digitalRead(switchPin); // read the input again to check for bounces
   
  if (val == val2) { // make sure we got 2 consistant readings!
  if (val != buttonState) {// the button state has changed!
  if (val == HIGH) {// check if the button is pressed
  if (Mode == 0) {
  Mode = 1;
  } else {
  if (Mode == 1) {
  Mode = 2;
  } else {
  if (Mode == 2) {
  Mode = 3;
  } else {
  if (Mode == 3) {
  Mode = 0;
  }
  }
  }
  }
  }
  }
   
  buttonState = val; // save the new state in our variable
  }
   
  // Now do whatever the lightMode indicates
  if (Mode == 0) { // FLIP FLOP
  digitalWrite(led1Pin, LOW);
  }
   
  if (Mode == 1) {
  analogWrite(led1Pin, brightness);
  brightness = brightness + fadeAmount;
  if (brightness <= 0 || brightness >= 255) {
  fadeAmount = -fadeAmount;
  }
  }
   
  if (Mode == 2) {
  digitalWrite(led1Pin, HIGH);
  delay(50);
   
  }
  if (Mode == 3) {
  analogWrite(led1Pin, 100);
  delay(50);
  }
  }

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !