|
ATTINY13A-SURMicrochip Technology
|
x 1 | |
|
8205S |
x 1 | |
|
Resistor 10K/ 1K |
x 2 | |
|
led red 0603 |
x 12 | |
|
coin cell Holder |
x 1 |
|
Autodesk Fusion 360Autodesk
|
|
|
OrCad Cadance |
|
|
arduino IDEArduino
|
Majin Vegeta on a PCB
Hey Everyone What's up!
So this is my Majin Vegeta PCB Badge or PCB Art (actually I'm not sure what to call this thing I made)
It's basically a Blinky Board powered by an Attiny13A Microcontroller, 12 LEDs constantly Fades IN and OUT in this setup with the help of 8205S Mosfet Driver IC.
In a nutshell, it's an Over-Engineered Blinky Board with lots of LEDs and an anime character printed on the TOP silkscreen.
Pretty sick right?!
In this post, I'm going to show you guys how I made this Blinky Board in a few easy steps.
Let's get started.
Supplies
Following are the things I used in this built
- Custom PCB
- Attiny13A SOIC8 MCU
- SMD LEDs RED 0603
- 8205S Mosfet IC
- 10K 0603 Resistor
- 1K 0603 Resistor
- SMD Button
- THT Switch
- Solder paste
- 3D Printed Frame
- Header Pins
- USB Micro THT Port
- Coin Cell holder
- Coin Cell, CR2032
Prologue
So recently I've been making these cool-looking PCB badges of nerdy stuff from movies and anime!
For example, I made a Goku Badge, in which the famous character Goku is doing his Kamehameha chi blast attack, so added LEDs in Kamehameha place and drive those less in a chasing sequence to create an illusion of the Kamehameha and I also made a Flux Capacitor Badge.
https://www.pcbway.com/project/shareproject/Goku_PCB_Badge.html
https://www.pcbway.com/project/shareproject/Flux_Capacitor_PCB_Badge.html
My point here is that we can make anything into PCB, just visualize and get creative with the idea.
But why make PCB Badge when you can prepare a 3D Printed body of that character?
You see, it's more convenient to make a PCB Badge than making a whole 3D Printed body of XYZ stuff, let me explain why.
Badge shape can be made in PCB Cad software, we can add our character's drawing on the PCB Silkscreen, then place components like LEDs around the drawing. In the end, we generate Gerber data and send it to a PCB manufacturer.
That PCB Manucature will produce the Badge professionally and we don't have to do anything except for the unboxing and the assembly process.
By the way, I used PCBWay Service for this PCB Badge this time! more about that in few mins!
Schematic of the PCB
Here's the main schematic of the whole PCB which is actually pretty simple.
Attiny13A is connected with an SMT Button and a con6 Header pin which is for programming the microcontroller.
Mosfet IC 8205S Drives all the 12 LEDs and the Attiny13A Controls the Mosfet IC's Gate.
PCB Designing Process
To Design this Majin Vegeta PCB
- I first think about adding Vegita's face in the PCB and adding LEDs on it.
- I Google-searched a few images and finally choose the image in which a huge M was written on his forehead.
My goal here is to add RED LEDs in this M Shape.
- we convert this image into a BMP image as my software only imports logos in BMP format, which is a standard format for importing image. Other software includes adding PNG so you can skip this converting process and import your image into the PCB Cad software. (how to do that? well in my OrCAD software, I have to make a logo file first and then add the image into this logo file, later then I can import the logo file into my PCB design. this process is long and your software probably can directly import the image so search around for any imported image option or just google how you can do that in your PCB cad software)
- Next, we place all the components around the logo or on the logo like in my case, LEDs are on this character's forehead.
- then we connect tracks and do the general thing which is required in a PCB Designing process. which is to connect tracks one by one.
- then we have to import the Gerber data and our PCB-making Process is complete!
- But before sending the PCB File to the manufacturer, open the Gerber data in any PCB Rendering software, your software already has this feature so just see how your PCB will look after getting manufactured.
- after making sure that everything is fine, we send it to any PCB manufacturer that we like. In my case, I send the Gerber data to PCBWay for samples!
Getting PCBs Ready
I will be using a White PCB Soldermask color with a Black Silkscreen.
Why?
because it will look like a Manga Panel and also, white PCBs look great with black silkscreen.
To get the PCBs Ready, I send the Gerber data to PCBWay for samples!
I received PCBs in a week and the PCBs were nice as expected.
I really like the quality of the white solder mask, also it was a tough job as the silkscreen that I have laid out o this board was not completely symmetrical but PCBWAY did an excellent job of manufacturing this PCB with no error whatsoever.
PCBWay you guys rock, check out PCBWay service for getting great PCB service at less cost.
By the way, yes I have included that famous line in this PCB!
"It's over 9000" haha.
Assembly Process
The Assembly process of this badge includes four different processes, which are-
- Solder paste Dispensing
- Pick and Place Process
- Hotplate Reflow
- Adding THT Components
#1 Solderpaste Dispensing
The First Step of the assembly process is to dispense or apply solder paste to the pads of each component.
Solder paste if you don't know is basically a semi-liquid mixture of very small solder balls and flux.
I added solder paste to each components pad with help of a solder paste dispensing syringe.
but the right way to do this process is to use a stencil.
#2 Pick and Place Process
Next, we carefully pick all the components with an ESD tweezer and place them in their assigned place one by one.
this one is a manual process so you have to do this properly, check the alignment and polarity of components so shorting can be avoided in the next process.
#3 Hotplate Reflow Process
After this, I carefully lift the PCB and place it on a reflow hotplate for SMT REFLOW.
Hotplate SMT Reflow is a process of heating the PCB to the solder paste melting temperature which is usually 170-250°C depending on solder paste Sn-Pb Ratio.
I'm using my DIY Hotplate for this project though, it doesn't have a temperature control feature but it works.
https://www.hackster.io/Arnov_Sharma_makes/diy-smt-hotplate-project-8157a5
After a few mins when the solder paste completely melts, we remove the PCB and let it cool down for a moment.
#4 Adding THT Component
Next, we add THT Components to the PCB which are USB Port, Coin Cell holder, Header pins, and THT Switch with a soldering iron.
After this, we remove any shorting that might occur during the Hotplate process and that's pretty much the assembly process of this whole board.
Now we flash code into the Attiny13 and see the result!
CODE and Flashing Process
This is the code that I have used in this project, it's a Switch-based Sketch that has few modes in it.
On the first button press, LEDs will start their fading sequence.
On Second Tap, LEDs will stay in HIGH Mode.
And on Third Tap, LEDs will turn OFF.
Then this whole process will loop.
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 pressedif (Mode == 0) {
Mode = 1;
} else {
if (Mode == 1) {
Mode = 2;
} else {
if (Mode == 2) {
Mode = 0;
}
}
}
}
}
buttonState = val; // save the new state in our variable
}
// Now do whatever the lightMode indicatesif (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);
}
}
Getting Attiny13 Core Installed on Arduino IDE
As for the Flashing Process, we cannot directly program ATTINY13 through any USB, I mean there's a method for programming the Attiny straight from the USB port but I'm not doing that.
Instead, I'll be using the ISP flashing method which will utilize the SPI Pins of attiny13A to burn the bootloader in it and then Flash.
But Before starting the Flashing process, we first need to download and install the Attiny13 Core files in Arduino IDE.
https://github.com/MCUdude/MicroCore
Preparing the Arduino As ISP Setup and Final Flashing!
AVRs chips usually come blank, they need to be set up to be Arduino IDE compatible but to do that you need an AVR programmer do to that, for example, a USBASP.
Fun Fact, you could make your own AVR Programer with an Arduino Uno or a Nano board in a very easy step.
- Connect your Arduino board with com port and select the following sketch
- Example>ArduinoISP upload this sketch onto your board
- After uploading, go to the tools menu and choose the Arduino as ISP option in the programmer section.
- Now for flashing Attiny13A, we can select the Attiny13A in the Board section.
The programming process uses VCC, GND, and four data pins.
Wire the Attiny13 with Arduino in this way.
- VCC to VCC
- GND to GND
- D10 of Arduino Nano to RST Pin of Attiny13A
- D11 of Arduino Nano to MOSI
- D12 of Arduino Nano to MISO
- D13 of Arduino Nano to SCK of Attiny13A
also right after uploading ISP Sketch to your Arduino, do not forget to add a 10uf Cap between Reset and GND pins of your Arduino board.
Instead of using an Arduino UNO and a breadboard for this job, I will use my DIY Attiny Programmer which I made for flashing the Attiny or Atmega MCUs.
which you can check out from here- https://www.hackster.io/Arnov_Sharma_makes/multiple-attiny85-13a-programmer-84adf8
connect the Board to the Arduino as ISP Setup in the above wiring config.
choose the right port, right programmer (Arduino as ISP), and hit Burn Bootloader wait for few seconds, you will get done burning the bootloader message.
Now Open the sketch that you want to upload to this AttinyGo to the Sketch menu and select Upload using the programmer.
And your Sketch will get uploaded onto the attiny13.
3D Printed Frame
Now, this PCB itself cannot be mount anywhere, so I design a wall mounting frame.
For Designing the frame, I used Fusion360.
- I First took measurements of the PCB and the THT components' location and size to model the PCB first.
- then I designed a Base Frame around the PCB that I modeled.
- In the end, I exported its mesh file (STL FILE) and then 3D Printed it on my ENDER 3 with Black PLA at 10% Infill with a 0.5mm Nozzle.
- I used Three Truss head 2.8mm Screws to mount the PCB onto the 3D Printed Frame and the project was completed.
As for the Power Source to run this PCB, we can power it directly from USB Port or we can add Coin Cell to this setup. (CR2032 Cell)
Result
This PCB Badge or Frame is working nicely, Fading is working and the normal ON and OFF feature is working as well.
And I'm pretty happy with the results overall.
With the 3D Printed Frame, I mounted this Setup on a wall with two nails.
Features, Conclusion, and Further Improvements
Here's what I learned so far by making a few of these Fancy PCBs.
- Silkscreen is not just for labeling parts, it can be used to improve the artistic aspect of any boring PCBs just by adding few shapes or random polka dots or something similar. (geometrical shapes or stuff)
- White Soldermask with Black Silkscreen is the best combination ever to design great looking PCBs
- Complex Shapes can be made with PCBs but it's better to design them first in Fusion360 and then use the DWG file or other format to model the PCB shape.
- try to use less complex images for silkscreen printing, Image should be a black and white image with high details.
- Double-check the electrical setup before exporting the Netlist for PCB Editor. (because I missed a ground line for two LEDs)
Changes/ alteration and improvements list-
Now, I made one mistake in this PCB, I forget to add a connection between the Negative terminal of two LEDs to the drain of mosfet. because of this, two LEDs didn't turn ON, solution here was simple, I added a small wire to both of the Led's negative terminals and connect them with a nearby drain line.
this corrected the problem but I will be editing this on the PCB Directly in revision 2 of this project.
Anyways, Comment if you need any help! Peace out
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 = 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);
}
}
Majin Vegeta on a PCB
*PCBWay community is a sharing platform. We are not responsible for any design issues and parameter issues (board thickness, surface finish, etc.) you choose.
- Comments(0)
- Likes(0)
- 0 USER VOTES
- YOUR VOTE 0.00 0.00
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
More by Arnov Arnov sharma
- Delete Button XL Greetings everyone and welcome back, and here's something fun and useful.In essence, the Delete Butt...
- Arduino Retro Game Controller Greetings everyone and welcome back. Here's something fun.The Arduino Retro Game Controller was buil...
- Super Power Buck Converter Greetings everyone and welcome back!Here's something powerful, The SUPER POWER BUCK CONVERTER BOARD ...
- Pocket Temp Meter Greetings and welcome back.So here's something portable and useful: the Pocket TEMP Meter project.As...
- Pico Powered DC Fan Driver Hello everyone and welcome back.So here's something cool: a 5V to 12V DC motor driver based around a...
- Mini Solar Light Project with a Twist Greetings.This is the Cube Light, a Small and compact cube-shaped emergency solar light that boasts ...
- PALPi V5 Handheld Retro Game Console Hey, Guys what's up?So this is PALPi which is a Raspberry Pi Zero W Based Handheld Retro Game Consol...
- DIY Thermometer with TTGO T Display and DS18B20 Greetings.So this is the DIY Thermometer made entirely from scratch using a TTGO T display board and...
- Motion Trigger Circuit with and without Microcontroller GreetingsHere's a tutorial on how to use an HC-SR505 PIR Module with and without a microcontroller t...
- Motor Driver Board Atmega328PU and HC01 Hey, what's up folks here's something super cool and useful if you're making a basic Robot Setup, A ...
- Power Block Hey Everyone what's up!So this is Power block, a DIY UPS that can be used to power a bunch of 5V Ope...
- Goku PCB Badge V2 Hey everyone what's up!So here's something SUPER cool, A PCB Board themed after Goku from Dragon Bal...
- RGB Mixinator V2 Hey Everyone how you doin!So here's a fun little project that utilizes an Arduino Nano, THE MIXINATO...
- Gengar PCB Art Hey guys and how you doing!So this is the GENGAR PCB Badge or a Blinky Board which is based around 5...
- R2D2 Mini Edition So here's something special, A Mini R2D2 PCB that speaks ASTROMECH.Astromech is a fictional language...
- C-3PO Blinky Board Hey guys and how you doing!So this is the C3P0 PCB Badge or a Blinky Board which is based around 555...
- WALKPi Breadboard Version Greetings everyone and welcome back, Here's something loud and musical.Similar to a traditional walk...
- BOXcilloscope Greetings to everyone, and welcome back.This is BOXcilloscope, a homemade portable oscilloscope that...
-
-
Helium IoT Network Sensor Development board | H2S-Dev V1.2
91 0 0 -
-
-
-
-
-
3D printed Enclosure Backplate for Riden RD60xx power supplies
176 1 1