3 Simple Ways to
Share What You Make

With Instructables you can share what you make with the world — and tap into an ever-growing community of creative experts.

PhotosPhotos

Share one or more photos of a project, recipe, or whatever you've made, quickly and easily.

Step by StepStep-By-Step

Share your step-by-step photos with text instructions of what you made so others can do it too!

VideoVideo

Share your how-to video. You'll need your embed code from a video site such as YouTube.

LED Cube 8x8x8

Step 71Hardware debugging: Broken LEDs

Hardware debugging: Broken LEDs
Disaster strikes. A LED inside the cube is broken!

We had a couple of LEDs break actually. Luckily the hardest one to get to was only one layer inside the cube.

To remove the LED, just take a small pair of needle nose pliers and put some pressure on the legs, then give it a light touch with the soldering iron. The leg should pop right out. Do this for both legs, and it's out.

Inserting a new LED is the tricky part. It needs to be as symmetrical and nice as the rest of the LEDs. We used a helping hand to hold it in place while soldering. It went surprisingly well, and we can't even see which LEDs have been replaced.
« Previous StepDownload PDFView All StepsNext Step »
12 comments
Feb 21, 2012. 8:02 PMSomegod says:
Is it possible to have it modulated by sound from the software aspect?
Feb 23, 2012. 4:49 AMtriumphtotty says:
:o)  I have been working on this.  Using an 8-bit FFT library and one of the analogue input pins on the ATmega32, it's possible to control the effects, or write new ones, directly on the AVR board without resorting to RS232 control. It's very fast (10-15fps at least).  The only "problem" was reallocating something from the ATmega32 to free up an ADC pin.  I moved PA7 onto PD7 and modified ISR(TIMER2_COMP_vect) to suit.  The code is a tad messy, but it does work!  This code compiles almost unmodified in WinAVR:

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1286718155

I simply used an LM386 with an Elecret microphone.  1K resistor between mic and Vcc (for power/signal) and use the 200 gain capacitor as suggested in the spec sheet with the output going to PA7:

http://www.national.com/mpf/LM/LM386.html
Jan 22, 2012. 9:41 AMfluetke says:
Hi chr,

I have a (for me) very odd problem with my led cube, two rows of my cube don't work properly, they seem to display one column of an animation copied to all of the rows columns. And here's the tricky part, if I move my finger near one of the misbehaving ICs, they go completely crazy, blinking all leds of the respective row completely randomly.

I trieb to switch them, but with no result. The wiring looks good so far, I checked for shorts each time a new line of the latch array bus was completed and found none.

Could someone help me with this? Because right now I'm completely clueless.

thank you
Jan 23, 2012. 5:25 AMtriumphtotty says:
That sounds vaguely familiar. Check that your Vcc and GND connections are good on all your latch array chips with a meter. I had a bad joint on one of my Vcc connections (around 10-15Ohm from memory), and that whole row did some bizarre stuff. The latch appears not to clear properly, i.e. it acts like a weird memory chip.
Jan 23, 2012. 8:40 AMlscarmic says:
this very well may be the cause of the things i'm seeing (see post below). i noticed when i touch the soldering iron to a pin (can't remember which off hand). the latch in question would clear and display correctly for a static image such as setvoxel().

guess i just need to recheck all of the joints. is there any good advice on doing that? is it enough to simply heat them up and hope for a better connection or should i worry about removing any of the old solder and applying new?

thanks!
Jan 23, 2012. 9:17 AMtriumphtotty says:
Sorry, the GND on the 574s is pin 10 and on the 138 it's pin 8. Have the circuit off and disconnected if using a multimeter. It's possible to short out the pins quite easily if not careful, and putting Vcc onto a CMOS that trying to pull LOW will kill it!!
Jan 23, 2012. 9:13 AMtriumphtotty says:
If you have a multimeter, then simply switch it to a low Ohms scale (200 or 2Kohm for example) and put the black lead onto a "good" Vcc point on your board, and with the red lead check pin 20 of all your 574s and pin 16 of your 138 give <1 Ohm. You'll find a duff connection quickly. Then do the same with GND. Find a sold GND point with your black lead, and check pins 1 on the 574s and 138 with the red. If you don't have access to a multimeter, then you'll need to rely on visually testing/resoldering the pins unfortunately. You shouldn't have to desolder then resolder unless anything was dirty. Reflowing the solder over the joints and checking it flows well onto the copper pads should be all you need!
Jan 23, 2012. 4:56 PMfluetke says:
thanks for the suggestion I'll try that one i get back to the "workshop",
btw. while measuring the voltage I found that nearly no IC got the whole 5V VCC, they all measured around 3.5 to 4.5 Volts, but most ICs worked correctly.
I assume the filtering caps in front of the ICs are either soldered badly, as the voltage in front of the caps measures 5.2V constant, it looks like 300°C wasn't enough temp for soldering correctly in a cold basement.

But i found it very interesting that the ICs would go completely nuts when I moved my finger near them, I didn't need to touch them, hovering 5-10mm above the ICs was enough to trigger the random behaviour.
Jan 24, 2012. 12:08 AMtriumphtotty says:
Photo of how I soldered in capacitors. My dad's technique for saving board space when prototyping, and it saves space on tripad boards too as it uses the "inside" hole on the tripad for the capacitor. Quite neat I think!
Jan 24, 2012. 12:04 AMtriumphtotty says:
Hmmmm... Those filtering capacitors aren't "in front" of anything. They should be in parallel with the ICs. Vcc should go to pin 20 and one end of the filtering cap. GND should go to pin 10 and the the other end of the cap. Have you wired them in series? Ideally the caps should be as close to Vcc/GND as possible. I soldered mine underneath the IC sockets for this reason.
Jan 24, 2012. 12:26 AMfluetke says:
Ah, whoops.
You're absolutely right, I wired them in series.
No clue why I thought they had to be soldered like that,
I'll try to resolder them and see if that fixes the problem.

Thank you.
Jan 18, 2011. 3:08 AMmahdy2009 says:
hey M:chr

I have got the same problem
but I have one question Can be use DM74LS574N
Instead of 74hc574
Is this the problem?


thank you !
Jan 23, 2012. 6:03 AMtriumphtotty says:
No, the LS series can only supply around 0.5mA of current in the HIGH state, which is how the 574's operate in this circuit. You either need 74HC or 74AC 574, as these can supply 20mA per pin. The HC574 can output a total of 70mA continuous and the AC574 a massive 400mA continuous. Read the data sheets for the exact brand of chips you buy, as some manufacturers chips have different output characteristics to others.
Jan 21, 2012. 6:15 PMalahamm says:
Hi Mahdy; YES you can. The main difference is that the HC stands for High Speed CMOS .CMOS can be powered up to 15v ( or 18 ),
LS stands for LOW Power Schottky and can only run UP TO 5v!
Jan 21, 2012. 10:46 AMlscarmic says:
Hey all, not sure if this is the right place for this question, but here goes. I'm starting small and doing an Arduino controlled 4x4x4 cube. To make it as easily scalable as possible, i've chosen to run the 8x8x8 code with simple modifications for the reduced size. Everything else is the same. Connections are as follows:

D0-D3 = data bus
D8-D10 = latch select
D11 = OE
A0-A3 = layer transistors

Simple enough.

The super slimmed down code (slimmed to simply turn one LED on) looks like this:

#define AXIS_X 1
#define AXIS_Y 2
#define AXIS_Z 3

volatile unsigned char cube[8][8];
volatile int current_layer = 0;

void setup()
{
  int i;
 
  for(i=0; i<14; i<plus><plus>)
    pinMode(i, OUTPUT);
    DDRC = 0xff;
    PORTC = 0x00;
 
    TCCR2A = 0x00;
    TCCR2B = 0x00;

    TCCR2A |= (0x01 << WGM21);
    OCR2A = 10; 
    TCNT2 = 0x00; 
    TCCR2B |= (0x01 << CS22) | (0x01 << CS21); 
    TIMSK2 |= (0x01 << OCIE2A);
}

ISR (TIMER2_COMPA_vect)
{
  int i;
  PORTC = 0x00;
  PORTB &= 0x0f;
 
  PORTB |= 0x08; // output enable off.
 
  for (i=0; i<4; i<plus><plus>)
  {
    PORTD = cube[current_layer][i];
    PORTB = (PORTB & 0xF8) | (0x07 & (i<plus>1));
  }
 
  PORTB &= 0b00110111; // Output enable on. 
  
  PORTC = (0x01 << current_layer);
 
  current_layer<plus><plus>;  //not sure why this wouldn't show in the post
 
  if (current_layer == 4)
    current_layer = 0;
}


void loop(){
    int i,x,y,z;
  while (true)
  {
       setvoxel(0,3,2);
  }
}

// Set a single voxel to ON
void setvoxel(int x, int y, int z)
{
if (inrange(x,y,z))
  cube[z][y] |= (1 << x);
}

// This function validates that we are drawing inside the cube.
unsigned char inrange(int x, int y, int z)
{
if (x >= 0 && x < 4 && y >= 0 && y < 4 && z >= 0 && z < 4)
{
  return 0x01;
} else
{
  // One of the coordinates was outside the cube.
  return 0x00;
}
}

The problem is that in addition to voxel 0,3,2 turning on, the entire row 0 plane comes on too (that is, the 16 voxels from 0,0,0 to 3,0,3). I loaded the effect_planboing function just to see what would happen and same thing, the XZ planes along the Y axis for row 1, 2 and 3 work fine, but the row 0 plane just stays full on. 

So, any ideas? I checked the latch for row 0 thinking there might have been a problem causing it to be stuck "ON" but that doesn't seem to be it. 

Thanks for any suggestions!

LSC
Jan 16, 2011. 11:53 AMmatrex says:
hi chr i wanna to tell you i have some problem withe the project i finish all step but when i try to switch on she work but the (led) is too weak i don't know were the problem so if you have some information abut this problem let me know OK
i be thanks full (^ ^)

Pro

Get More Out of Instructables

Already have an Account?

close

All Steps Viewing
View all steps of an Instructable on the same page when you're a Pro Member.

Upgrade to Pro today!
651
Followers
7
Author:chr
I like microcontrollers and LEDs :D