Kurukshetra
+91 8813083500
robocircuits@gmail.com

# LED Cube 4x4x4

Learn Robotics

## LED Cube 4x4x4

Chapter 1

1.1 Introduction

The Led Cube 4x4x4 or in short led cube is a relatively simple fully programmable cube based on the Arduino Nano Board. To be able to build the LED Cube you need to be able to work with a soldering iron and have a strong sense of persistency this is because you’ll need to redesign the scheme to fit your purpose and any mistake can cause the cube not to react. By completing a project about LED’s and Arduino programming, I hope to learn more about the aforementioned things because of an interest in Electronics, Arduino and computers as a whole and the possibility of acquiring a future career in that sector.

Image 1

Chapter 2

Construction and Working

2.1 Components Needed

Arduino Nano Board x1 320 INR

LEDs (blue) x64 64 INR

USB type A to B x1 70 INR

2.2 Circuit Diagram

Image 2

Description

Here the LED Cube is made from 4 LED matrices. The vertical Negative pins of which are connected to each other and form a cube of 4x4x4. Each LED can be addressed individually through giving power and ground to particular pins. Here power means digital 1 and ground means digital 0.

The LED cube have 16 –ve and 4 +ve inputs which are being connected as follow

[Vertical-Pin]

(1,1)-13, (1,2)-12, (1,3)-11, (1,4)-10, (2,1)-9, (2,2)-8, (2,3)-7, (2,4)-6, (3,1)-5, (3-2)-4, (3-3)-3, (3,4)-2, (4,1)-1, (4,2)-0, (4,3)-A5, (4,4)-A4

[Layer-Pin]

a-A0, b-A1, c-A2, d-A3

2.3 LED Cube design

Image 3

Chapter 3

Components Description

3.1 Arduino Nano

Arduino is an open-source platform used for building electronics projects. Arduino consists of both a physical programmable circuit board (often referred to as a microcontroller) and a piece of software, or IDE (Integrated Development Environment) that runs on your computer, used to write and upload computer code to the physical board.

The Arduino platform has become quite popular with people just starting out with electronics, and for good reason. Unlike most previous programmable circuit boards, the Arduino does not need a separate piece of hardware (called a programmer) in order to load new code onto the board – you can simply use a USB cable. Additionally, the Arduino IDE uses a simplified version of C++, making it easier to learn to program. Finally, Arduino provides a standard form factor that breaks out the functions of the micro-controller into a more accessible package.

What’s on the board?

There are many varieties of Arduino boards that can be used for different purposes. Some boards look a bit different from the one below, but most Arduinos have the majority of these components in common:

Image 4

Power (USB / Barrel Jack)

Every Arduino board needs a way to be connected to a power source. The Arduino UNO can be powered from a USB cable coming from your computer or a wall power supply that is terminated in a barrel jack. In the picture above the USB connection is labeled (1) and the barrel jack is labeled (2).

Pins (5V, 3.3V, GND, Analog, Digital, PWM, AREF)

The pins on your Arduino are the places where you connect wires to construct a circuit (probably in conjuction with a breadboard and some wire. They usually have black plastic ‘headers’ that allow you to just plug a wire right into the board. The Arduino has several different kinds of pins, each of which is labeled on the board and used for different functions.

GND (3): Short for ‘Ground’. There are several GND pins on the Arduino, any of which can be used to ground your circuit.

5V (4) & 3.3V (5): As you might guess, the 5V pin supplies 5 volts of power, and the 3.3V pin supplies 3.3 volts of power. Most of the simple components used with the Arduino run happily off of 5 or 3.3 volts.

Analog (6): The area of pins under the ‘Analog In’ label (A0 through A5 on the UNO) is Analog In pins. These pins can read the signal from an analog sensor (like a temperature sensor) and convert it into a digital value that we can read.

Digital (7): Across from the analog pins are the digital pins (0 through 13 on the UNO). These pins can be used for both digital input (like telling if a button is pushed) and digital output (like powering an LED).

PWM (8): You may have noticed the tilde (~) next to some of the digital pins (3, 5, 6, 9, 10, and 11 on the UNO). These pins act as normal digital pins, but can also be used for something called Pulse-Width Modulation (PWM).

AREF (9): Stands for Analog Reference. Most of the time you can leave this pin alone. It is sometimes used to set an external reference voltage (between 0 and 5 Volts) as the upper limit for the analog input pins.

Reset Button

Just like the original Nintendo, the Arduino has a reset button (10). Pushing it will temporarily connect the reset pin to ground and restart any code that is loaded on the Arduino. This can be very useful if your code doesn’t repeat, but you want to test it multiple times. Unlike the original Nintendo however, blowing on the Arduino doesn’t usually fix any problems.

Power LED Indicator

Just beneath and to the right of the word “UNO” on your circuit board, there’s a tiny LED next to the word ‘ON’ (11). This LED should light up whenever you plug your Arduino into a power source. If this light doesn’t turn on, there’s a good chance something is wrong. Time to re-check your circuit!

TX RX LEDs

TX is short for transmit, RX is short for receive. These markings appear quite a bit in electronics to indicate the pins responsible for serial communication. In our case, there are two places on the Arduino UNO where TX and RX appear – once by digital pins 0 and 1, and a second time next to the TX and RX indicator LEDs (12). These LEDs will give us some nice visual indications whenever our Arduino is receiving or transmitting data (like when we’re loading a new program onto the board).

Main IC

The black thing with all the metal legs is an IC, or Integrated Circuit (13). Think of it as the brains of our Arduino. The main IC on the Arduino is slightly different from board type to board type, but is usually from the ATmega line of IC’s from the ATMEL company. This can be important, as you may need to know the IC type (along with your board type) before loading up a new program from the Arduino software. This information can usually be found in writing on the top side of the IC. If you want to know more about the difference between various IC’s, reading the datasheets is often a good idea.

Voltage Regulator

The voltage regulator (14) is not actually something you can (or should) interact with on the Arduino. But it is potentially useful to know that it is there and what it’s for. The voltage regulator does exactly what it says – it controls the amount of voltage that is let into the Arduino board. Think of it as a kind of gatekeeper; it will turn away an extra voltage that might harm the circuit. Of course, it has its limits, so don’t hook up your Arduino to anything greater than 20 volts.

The Arduino Nano is a small, complete, and breadboard-friendly board based on the ATmega328P; offers the same connectivity and specs of the UNO board in a smaller form factor.

The Arduino Nano is programmed using the Arduino Software (IDE), our Integrated Development Environment common to all Arduino boards and running both online and offline.

Image 5

### Use your Arduino Nano on the Arduino Desktop IDE

If you want to program your Arduino Nano while offline you need to install the Arduino Desktop IDE to connect the Arduino Nano to your computer, you’ll need a Mini-B USB cable. This also provides power to the board, as indicated by the blue LED (which is on the bottom of the Arduino Nano 2.x and the top of the Arduino Nano 3.0).

#### Open your first sketch

Open the LED blink example sketch: File > Examples >01.Basics > Blink.

#### Select your board type and port

You’ll need to select the entry in the Tools > Board menu that corresponds to your Nano board.

Image 6

#### Upload and Run your first Sketch

To upload the sketch to the Arduino Nano, click the Upload button in the upper left to load and run the sketch on your board:

Image 7

Wait a few seconds – you should see the RX and TX leds on the board flashing. If the upload is successful, the message “Done uploading.” will appear in the status bar.

3.2 LEDs

Image 8

A light-emitting diode (LED) is a two-lead semiconductor light source. It is a p–n junction diode that emits light when activated. When a suitable current is applied to the leads, electrons are able to recombine with electron holes within the device, releasing energy in the form of photons. This effect is called electroluminescence, and the color of the light (corresponding to the energy of the photon) is determined by the energy band gap of the semiconductor. LEDs are typically small (less than 1 mm2) and integrated optical components may be used to shape the radiation pattern.

USB Cable

The term USB stands for “Universal Serial Bus”. USB cable assemblies are some of the most popular cable types available, used mostly to connect computers to peripheral devices such as cameras, camcorders, printers, scanners, and more.

Image 9

Detail of USB Cable Construction

The USB cable standard allows for these advantages over serial cable types:

• USB cables are “Hot Pluggable”, in other words you can connect and disconnect the cables while the computer is running without fear of freezing the computer
• USB cables are fast, transferring up to 480Mbps. Compare that to serial communication which transfers data at about 20Kbps
• USB cables carry power as well as signals. This allows for “USB powered” gadgets as well as recharging batteries in cameras and other USB peripherals
• USB cables are designed with several distinct connector types, making it easy to identify which plug goes into the computer and which plug goes into the peripheral device
• USB cables are a universal standard and are fairly easy to find and to afford

USB Connectors

As mentioned above, USB cable assemblies are designed with several distinct connector types. The most common types you will see are called Type A and Type B, though you may see “mini-B” connectors with either 4 or 5 pins. The different connector types have an important strategic purpose to them. They are designed so you cannot plug two computers into one another, and you cannot plug two peripheral devices in together.

Image 10

Chapter 4

Project development Stage

Running a wire to the anode of each led would obviously be impractical, and would look really bad. One way to get around this is to split the cube into 4 layers of 16×16 LEDs. All the LEDs aligned in a vertical column share a common anode (+). All the LEDs on a horizontal layer share a common cathode (-). Now if i want to light up the LED in the upper left corner in the back (0, 0, 3), I just supply GND (-) to the upper layer, and VCC (+) to the column in the left corner. If i only want to light up one led at a time or only light up more than one layer at the same time. This works fine. However, if I also want to light up the bottom right corner in the front (3, 3, 0), I run into problems. When I supply GND to the lower layer and VCC to the front left column, I also light up the upper right led in the front (3, 3, 3), and the lower left LED in the back (0, 0, 0). This ghosting effect is impossible to work around without adding 64 individual wires. The way to work around it is to only light up one layer at a time, but do it so fast that the eye doesn’t recognize that only one layer is lit at any time. This relies on a phenomenon called Persistence of vision. Each layer is a 4×4. If we flash 4 16 led images one at a time, really fast, we get a 4x4x4 3d image. Soldering grids of 4×4 LEDs freehand would look terrible! To get 4 perfect 4×4 grids of LEDs, we use a template to hold the them in place. I wanted to make the cube as easy as possible to make, so I chose to use the LEDs own legs as much as possible. The distance between the lines in the grid was decided by the length of the LED legs. I found that 25mm (about an inch) was the optimal distance between each led (between the center of each led that is!) to enable soldering without adding or cutting wire. Find a piece of Cardboard to make a 4×4 grid of 2cm on. Draw up a 4×4 grid of lines. Make dents in all the intersects with a center punch or a pen. Drill the 16 holes with a pen or scissor. Your LEDCube template is done.

Image 11

We make the cube in 4 layers of 4×4 LEDs, then solder them together.

Create a layer.
Put in the LEDs along the back and along one side, and solder them together

Insert another row of LEDs and solder them together. Do one row at a time to leave place for the soldering iron!

Repeat the above step 2 more times.

add cross bracing in the front where the led rows are not connected.

Repeat 4 times.

Now that we have those 4 layers, all we have to do is to solder them together.

Put one layer back in the template. This will be the top layer, so choose the prettiest one 🙂

Image 12

Image 13

Image 14

Put another layer on top, and align one of the corners exactly 25mm (or whatever distance you used in your grid) above the first layer. This is the distance between the cathode wires.
Hold the corner in place with a helping hand and solder the corner anode of the first layer to the corner anode of the second layer. Do this for all the corners. Check if the layers are perfectly aligned in all dimensions. If not bend a little to adjust. Or re-solder of it’s the height distance that’s off. When they are perfectly aligned, solder the remaining 12 anodes together.
Image 15
Repeat 3 times.

Image 16

Now solder the LED Cube on the PCB. Make sure it stand straight. While handling the cube make sure not to hold it tight or it will damage the shape of LED Cube.

Image 17

Now solder the Female header pins on the PCB for arduino and mount the arduino Nano on it. So our construction is complete.

Chapter 5

Programming

To program the led cube just plug your led cube to the computer and download the software “Arduino IDE” from arduino.cc.

You might need to install drivers of arduino nano manually. Just open your Drivers and Printers folder from control panel select the undefined device click on update driver browse it to the folder where your arduino ide is installed and click ok. Drivers will be automatically installed.

Test the microcontroller by using one of the preloaded programs, called sketches, in the Arduino Programmer. Open one of the example sketches, and press the upload button to load it. The Arduino should begin responding to the program: If you’ve set it to blink an LED light, for example, the light should start blinking.

To upload new code to the Arduino, either you’ll need to have access to code you can paste into the programmer, or you’ll have to write it yourself, using the Arduino programming language to create your own sketch. An Arduino sketch usually has five parts: a header describing the sketch and its author; a section defining variables; a setup routine that sets the initial conditions of variables and runs preliminary code; a loop routine, which is where you add the main code that will execute repeatedly until you stop running the sketch; and a section where you can list other functions that activate during the setup and loop routines. All sketches must include the setup and loop routines.

Once you’ve uploaded the new sketch to your Arduino, disconnect it from your computer and integrate it into your project as direct

Code to be uploaded

/*Led cube 4x4x4

code version 5

Arduino

*/

int niz[]={2,3,4,5,6,7,8,9,10,11,12,13,A0,A1,A2,A3};

int nizK[]={2,3,4,5,9,13,A3,A2,A1,A0,10,6};

int nizP[]={7,8,12,11};

int niz1[]={2,3,4,5,7,8};

int niz2[]={2,6,10,A0,7,11};

int niz3[]={A0,A1,A2,A3,11,12};

int niz4[]={5,9,13,A3,8,12};

int nizRES[]={5,4,9,3,8,13,2,7,12,A3,6,11,A2,10,A1,A0};

int niz5[]={2,6,3,7};

int niz6[]={4,8,5,9};

int niz7[]={10,A0,11,A1};

int niz8[]={12,A2,13,A3};

int niz9[]={2,6,10,3,4,8,12,11};

int niz10[]={2,7,12,11,8};

int niz11[]={2,7,12,A3,A2,13};

int niz12[]={2,3,4,5,6,10,A0};

int niz13[]={6,7,8,9,3,11,A1};

int niz14[]={10,11,12,13,4,8,A2};

int niz15[]={A0,A1,A2,A3,5,9,13};

int niz16[]={3,2,6,7,11,10,A0,A1,A2,A3,13,12,8,9,5,4};

int niz17[]={2,7,12,8,3,4,5,9,13,A3,A2,A1,11,6,10,A0};

int niz18[]={2,3,4,5,6,10,A0};

int niz19[]={2,3,4,5,7,11,A1};

int niz20[]={2,3,4,5,8,12,A2};

int niz21[]={2,3,4,5,9,13,A3};

int niz22[]={2,6,10,A0,7,8,9};

int niz23[]={2,6,10,A0,11,12,13};

int niz24[]={2,6,10,A0,A1,A2,A3};

void setup(){

for(int i=0;i<16;i++)pinMode(niz[i],OUTPUT);

}

void loop(){

sve();

odozgo();

levo();

krug();

zmija();

d1();

trapez();

RG();

resetka();

RG();

slucajno();

kockice();

kocka();

strela();

skener();

zmija2();

zmija3();

}

void sve(){

for(int j=0;j<16;j++)

{

digitalWrite(niz[j],HIGH);

delay(100);

digitalWrite(niz[j],LOW);

}

for(int j=0;j<16;j++){

digitalWrite(niz[j],HIGH);

}

delay(500);

for(int j=0;j<16;j++){

digitalWrite(niz[j],LOW);

}

}

void odozgo(){

int k=0;

while(k<4){

for(int j=k;j<16;j+=4){

digitalWrite(niz[j],HIGH);

}

delay(300);

for(int j=k;j<16;j+=4){

digitalWrite(niz[j],LOW);

}

k++;

}

}

void levo(){

int k=4,p=0;

while(p<4){

for(int j=k-4;j<k;j++){

digitalWrite(niz[j],HIGH);

}

delay(300);

for(int j=k-4;j<k;j++){

digitalWrite(niz[j],LOW);

}

k+=4;p++;

}

}

void krug(){

int k=0;

while(k<4){

for(int j=0;j<12;j++)

{

digitalWrite(nizK[j],HIGH);

digitalWrite(nizK[j+6],HIGH);

delay(100);

digitalWrite(nizK[j],LOW);

digitalWrite(nizK[j+6],LOW);

}

k++;

}

}

void zmija(){

for(int j=0;j<12;j++)

{

digitalWrite(nizK[j],HIGH);

delay(150);

}

for(int j=0;j<4;j++){

digitalWrite(nizP[j],HIGH);

delay(150);

}

for(int j=3;j>=0;j–){

digitalWrite(nizP[j],LOW);

delay(150);

}

for(int j=12;j>0;j–)

{

digitalWrite(nizK[j],LOW);

delay(150);

}

}

void RG (){

for(int j=0;j<16;j++){

digitalWrite(niz[j],HIGH);

}

delay(1000);

for(int j=0;j<16;j++){

digitalWrite(niz[j],LOW);

}

}

void d1(){

int k=0;

while(k<4){

for(int i=0;i<12;i++){

digitalWrite(nizK[i],HIGH);

}

delay(200);

for(int i=0;i<12;i++){

digitalWrite(nizK[i],LOW);

}

for(int i=0;i<4;i++){

digitalWrite(nizP[i],HIGH);

}

delay(200);

for(int i=0;i<4;i++){

digitalWrite(nizP[i],LOW);

}

k++;

}

}

void trapez(){

for(int i=0;i<6;i++){

digitalWrite(niz1[i],HIGH);

}

delay(500);

for(int i=0;i<6;i++){

digitalWrite(niz1[i],LOW);

}

for(int i=0;i<6;i++){

digitalWrite(niz2[i],HIGH);

}

delay(500);

for(int i=0;i<6;i++){

digitalWrite(niz2[i],LOW);

}

for(int i=0;i<6;i++){

digitalWrite(niz3[i],HIGH);

}

delay(500);

for(int i=0;i<6;i++){

digitalWrite(niz3[i],LOW);

}

for(int i=0;i<6;i++){

digitalWrite(niz4[i],HIGH);

}

delay(500);

for(int i=0;i<6;i++){

digitalWrite(niz4[i],LOW);

}

}

void resetka(){

int k=0;

while(k<16){

for(int i=0;i<16-k;i++){

digitalWrite(nizRES[i],HIGH);

}

delay(200);

for(int i=0;i<16-k;i++){

digitalWrite(nizRES[i],LOW);

}

k++;

}

}

void slucajno(){

int k=0,x;

while(k<20){

x=random(0,16);

digitalWrite(niz[x],HIGH);

delay(200);

digitalWrite(niz[x],LOW);

k++;

}

}

void kockice(){

for(int i=0; i<4; i++)

{

digitalWrite(niz6[i], HIGH);

}

delay(500);

for(int i=0; i<4; i++)

{

digitalWrite(niz6[i], LOW);

}

for(int i=0; i<4; i++)

{

digitalWrite(niz8[i], HIGH);

}

delay(500);

for(int i=0; i<4; i++)

{

digitalWrite(niz8[i], LOW);

}

for(int i=0; i<4; i++)

{

digitalWrite(niz5[i], HIGH);

}

delay(500);

for(int i=0; i<4; i++)

{

digitalWrite(niz5[i], LOW);

}

for(int i=0; i<4; i++)

{

digitalWrite(niz7[i], HIGH);

}

delay(500);

for(int i=0; i<4; i++)

{

digitalWrite(niz7[i], LOW);

}

}

void kocka(){

for(int i=0; i<4; i++)

{

digitalWrite(niz5[i], HIGH);

}

delay(500);

for(int i=0; i<4; i++)

{

digitalWrite(niz5[i], LOW);

}

for(int i=0; i<8; i++)

{

digitalWrite(niz9[i], HIGH);

}

delay(500);

for(int i=0; i<8; i++)

{

digitalWrite(niz9[i], LOW);

}

for(int i=0; i<12; i++)

{

digitalWrite(nizK[i], HIGH);

}

delay(500);

for(int i=0; i<12; i++)

{

digitalWrite(nizK[i], LOW);

}

}

void strela(){

for(int i=0; i<4; i++)

{

digitalWrite(niz5[i], HIGH);

}

delay(500);

for(int i=0; i<4; i++)

{

digitalWrite(niz5[i], LOW);

}

for(int i=0; i<5; i++)

{

digitalWrite(niz10[i], HIGH);

}

delay(500);

for(int i=0; i<5; i++)

{

digitalWrite(niz10[i], LOW);

}

for(int i=0; i<6; i++)

{

digitalWrite(niz11[i], HIGH);

}

delay(500);

for(int i=0; i<6; i++)

{

digitalWrite(niz11[i], LOW);

}

delay(50);

}

void skener(){

for(int i=0; i<7; i++)

{

digitalWrite(niz18[i], HIGH);

}

delay(500);

for(int i=0; i<7; i++)

{

digitalWrite(niz18[i], LOW);

}

for(int i=0; i<7; i++)

{

digitalWrite(niz19[i], HIGH);

}

delay(500);

for(int i=0; i<7; i++)

{

digitalWrite(niz19[i], LOW);

}

for(int i=0; i<7; i++)

{

digitalWrite(niz20[i], HIGH);

}

delay(500);

for(int i=0; i<7; i++)

{

digitalWrite(niz20[i], LOW);

}

for(int i=0; i<7; i++)

{

digitalWrite(niz21[i], HIGH);

}

delay(500);

for(int i=0; i<7; i++)

{

digitalWrite(niz21[i], LOW);

}

for(int i=0; i<7; i++)

{

digitalWrite(niz18[i], HIGH);

}

delay(500);

for(int i=0; i<7; i++)

{

digitalWrite(niz18[i], LOW);

}

for(int i=0; i<7; i++)

{

digitalWrite(niz22[i], HIGH);

}

delay(500);

for(int i=0; i<7; i++)

{

digitalWrite(niz22[i], LOW);

}

for(int i=0; i<7; i++)

{

digitalWrite(niz23[i], HIGH);

}

delay(500);

for(int i=0; i<7; i++)

{

digitalWrite(niz23[i], LOW);

}

for(int i=0; i<7; i++)

{

digitalWrite(niz24[i], HIGH);

}

delay(500);

for(int i=0; i<7; i++)

{

digitalWrite(niz24[i], LOW);

}

for(int i=0; i<7; i++)

{

digitalWrite(niz12[i], HIGH);

}

delay(500);

for(int i=0; i<7; i++)

{

digitalWrite(niz12[i], LOW);

}

for(int i=0; i<7; i++)

{

digitalWrite(niz13[i], HIGH);

}

delay(500);

for(int i=0; i<7; i++)

{

digitalWrite(niz13[i], LOW);

}

for(int i=0; i<7; i++)

{

digitalWrite(niz14[i], HIGH);

}

delay(500);

for(int i=0; i<7; i++)

{

digitalWrite(niz14[i], LOW);

}

for(int i=0; i<7; i++)

{

digitalWrite(niz15[i], HIGH);

}

delay(500);

for(int i=0; i<7; i++)

{

digitalWrite(niz15[i], LOW);

}

for(int i=0; i<7; i++)

{

digitalWrite(niz12[i], HIGH);

}

delay(500);

for(int i=0; i<7; i++)

{

digitalWrite(niz12[i], LOW);

}

for(int i=0; i<7; i++)

{

digitalWrite(niz13[i], HIGH);

}

delay(500);

for(int i=0; i<7; i++)

{

digitalWrite(niz13[i], LOW);

}

for(int i=0; i<7; i++)

{

digitalWrite(niz14[i], HIGH);

}

delay(500);

for(int i=0; i<7; i++)

{

digitalWrite(niz14[i], LOW);

}

for(int i=0; i<7; i++)

{

digitalWrite(niz15[i], HIGH);

}

delay(500);

for(int i=0; i<7; i++)

{

digitalWrite(niz15[i], LOW);

}

}

void zmija2(){

for(int i=0; i<16; i++)

{

digitalWrite(niz16[i], HIGH);

delay(100);

}

for(int i=0; i<16; i++)

{

digitalWrite(niz16[i], LOW);

}

}

void zmija3(){

for(int i=0; i<16; i++)

{

digitalWrite(niz17[i], HIGH);

delay(100);

}

for(int i=0; i<16; i++)

{

digitalWrite(niz17[i], LOW);

}

}

Chapter 6

PCB designing and etching

6.1 PCB Designing

I designed the PCB layout on a graph paper using pencil.

Image 18

Image 19

6.3 Etching

Image-20

The following steps are to be followed during etching:

1. Put designed PCB in aqueous solution of ferric chloride. Ferric chloride solution is 100gm of ferric chloride so 200ml of water heated at about 55 degree Celsius, stirred and adds HCL acid to speed up the etching.
2. Stir the solution to allow the solution to repeatedly interact with copper. After 15-30 minutes etching is over. Ensure no under etching. Wash the PCB in water.

6.4 Drilling

Image-21

Drilling of holes for connecting components. Diameter of holes varies from component to component.; 0.5mm for resistors (1/4W) and ceramic capacitors; 0.8mm for ICs, LED, presets, connector and electrolyte capacitor.

6.5 Cleaning

After drill, clean the PCB by paint by acetone

Image 22

6.6 Soldering

A circuit consists of active and passive component to fulfil gain, oscillation modulation, detection, switching, etc. These components are firmly joined with each other on PCB tracks with the help of materials. When a component in the circuit becomes faulty, it needs to be replaced. There need to be disordering of the component from the PCB and soldering a new component in that place. Thus soldering is the process of interconnecting the components in the circuit and disordering is the process of removing a soldered component from the circuit.

Image 23

Soldering of Components

6.6.1 Solder joint:

The solder is not some sort of glue. When soldering is done properly the solder becomes an integral part of the metal structure of the joint.

When an atomic bond is formed between the metal and the solder, resulting in a new alloy at the joint, the solder is said to have wetted the metal. This wetness cannot be shaken off. Only clean surface can be wetted.

6.6.1.1 Dry Solder Joint:

A solder joint is dry when the solder does not form inter-atomic bond with the metals to be joined. A dry solder joint lacks the strong cohesive force.Causes and remedies for dry solder joint:

Dirt, dust or grease on the joint will cause a dry solder the metal should be cleaned by alcohol dispenser, brush, eraser or sandpaper.

Oxide on metal is the main cause of a dry solder joint. Flux is used to remove the oxide.

If the tip of the iron contains dust, dirt, grease or flux, these can become part of the joint resulting in dry joint. Hence the tip should be cleaned by sandpaper or by abrasive cloth.

Another important cause is ‘inadequate heat’. Soldering should be done at the correct temperature, and heat should be applied for the correct time.

6.6.1.2 Cold Solder Joint:

A joint which has protrusions, pits, cracks and pin holes, is called a cold solder joint. It is not uniform and looks dull.

Cold solder joint results when joint is disturbed while it is cooling. To avoid that the solder should be allowed to cool without disturbing it in any way.

6.6.2 Good and Bad Solder Joint

6.6.2.1 Good Joint:

A good solder joint has the following characteristics:

It cannot be wiped or knocked off without scrapping or filing. It is broad based having feather like shape, as shown in figure.

The soldering angle (α) is 300 to 450 with the horizontal as shown in figure.

It has smooth surface It does not contain voids

There is no residue of flux on the surface.

There is no oxide on the surface.

The solder does not bridge the adjacent tracks on PCB.

It consists of a thin inter-metallic layer between solder and base metal.

Its electrical conductivity is excellent…

Image 24

A bad solder joint has following characteristics:

It does not wet the base metal. So it is dry and can be easily wiped.

It is like round or elliptical ball. The solder angle is more than 450.

Image 25

Shape of bad solder joint (angle greater than 450)

It has protrusions hence it is prone to high voltage arcing.

It has voids which make it weak and resistive.

When the inter-metallic layer become too thick, the joint becomes brittle and has tendency to develop cracks due to temperature variations.

The solder may be too thin.

The surface in contact is small and gives higher resistance and low power handling capacity.

6.6.3 Soldering Material:

6.6.3.1 Soldering wire:

Image 26

Solder is basically metal wire with a “low” melting point, where low for our purposes means low enough to be melted with a soldering iron. For electronics, it is traditionally a mix of tin and lead. Tin/lead solders, also called soft solders, are commercially available with tin concentrations between 5% and 70% by weight. The greater the tin concentration, the greater the solder’s tensile and shear strengths. Alloys commonly used for electrical soldering are 60/40 Tin/lead (Sn/Pb) which melts at 188 °C (370 °F) and 63/37 Sn/Pb used principally in electrical/electronic work. The 63/37 is a eutectic alloy, which has the lowest melting point (183 °C or 361 °F) of all the tin/lead alloys; and the melting point is truly a point — not a range

6.6.3.2 Use of Flux:

Image 27

Copper gets oxidized. The oxidized layer of the copper acts as an insulator betweenthe solder and the pure copper. The solder cannot wet the metal due to this layer, which prevents formation of inter-atomic bond. So if flux is applied to the surface of the oxidized metal, it will dissolve the copper oxide on being heated. This solution is lighter than the molten solder and when molten solder is applied, the flux solution containing copper oxide comes up and the molten solder reaches the pure copper surface.

6.6.3.3 Soldering Iron:

The function of a soldering iron is to heat the connection to be soldered. An ordinary soldering iron used in servicing work consists of three parts: (i) Handle (ii) Heater (iii) Tip, as shown in figure:

Image 28

4.6.4 Tools Used For Desoldering:

6.6.4.1 Wick: Wick is a porous tool which has built-in capillaries to suck the molten solder in the same way as cotton wick suits cokes oil. It consists of placing the heated wick on the joint to be desoldered. The solder will melt and will be sucked in by the wick due to capillary action.

Image 29

4.6.4.2 Desoldering Gun

Image 30

Chapter 7

Applications

LED Cube is quite useful for Students in learning Microcontroller and Arduino programming. This project is quite useful for Students for learning electronics basics.

LED Cube can be used for illuminating rooms or can be a building block for 3D animations.

Understanding matrices and Layers can be done easily with it.

Chapter 8

Further Improvements

• A new kind of LED Cube can be designed with RGB LEDs which can make 3D animations along with color combinations. For that we need to include multiplexers in this project.
• A more complex 5x5x5 LED Cube or 8x8x8 Cube can be designed using the same technique using multiplexers.
• Rosberry pi can be used to control the LED Cube over the internet.
• Bluetooth Modules or WiFi modules can be used to control the LED cube wirelessly.

Chapter 9

Conclusion

I started this project in july and completed it under the guidance of Mr. Vikas in April. I found this project very useful and quite a interesting task. The shouldering and building part of the cube is the best part. Designing and etching of PCB is found a different experience. I learn PCB designing, Drilling, Etching, Soldering, and programming of Arduino Board. I am quite happy that I choose this project.