Led matrix brightness control with uln2803

Hi! I need help please) I am try to control led 8x8 single matrix using Nano + 2 74hc595 (one for row, one for col). Before using uln2803 i just connect matrix directly to 74hc595 and use it 13pin (connected to arduino 3 pin) for brightness control. But in this case leds was dimming depending of how many it was turned on. After adding uln2803 (inputs to 74hc595 output, and outputs to the leds) dimming problem solves, but i can't controll brightness by pwm 13 pin of 74hc595 - leds junt blinks.

So my question is how can i drive brightness of whole matrix and use uln2803 at the same time?

Thanks.

The ULN2803 doesn't have an enable.
Do you use one ULN2803 for the row and one for the column ? How ?

I’m using only 1 ULN2803 for row, cols connected directly to 74hc595

Could you use the /OE with a PWM signal for brightness control ?

Yes, i use analogWrite on 3pin that connected to 74hc595 on cols (also i try on rows and both, result same)

I'm not sure how your wiring is.
Could you make a schematic ? You can draw it on paper and make a photo of it.

but i can't controll brightness by pwm 13 pin of 74hc595 - leds junt blinks.

I assume that says just blinks.

How is your supply decoupling on the shift registers?
I addition to the 0.1uF ceramic capacitors you should already have on the shift registers power and ground, I would add a large electrolytic capacitor of 100uF or bigger across your shift register's power pins as well.

Grumpy_Mike:
I assume that says just blinks.

exactly.

I'll try capacitor, thanks. Scheme: Dropbox - Schematic-Arduino-LED-Dot-Matrix-Display1.jpg - Simplify your life

PS, i tryed to to use transistors between second 74HC and matrix - this was increase brightness, but same blinks.

Thanks for the schematic.
Pin 3 is used for PWM ? I'm not sure if it is okay to cascade two 74HC595 and use only one with /OE. It think it is okay.

The 5V could indeed be too weak for all the leds. See if that capacitor makes a difference.

Do you have the circuit on a breadboard ? Some breadboards are really very bad, they don't make good contact.

You can connect a PWM pin (any of 3,5,6,9,10,11 I think) to multiple OE/ inputs.

Yes, pin 3 for pwm. This is soldered, so contact is ok. Maybe problem is caused how darlington pairs works, but not sure. Also i think better solution use single tlc5940 (and i will try it), but i'm interesting to find who caused blinking)

How are you scanning that matrix. The way the circuit is you should be scanning by row. See:-
http://www.thebox.myzen.co.uk/Workshop/LED_Matrix.html

So that the first shift register output is only driving one LED at a time. The and the second has your walking bit .

Grumpy_Mike:
I would add a large electrolytic capacitor of 100uF or bigger across your shift register's power pins as well.

Nothing changed

Hi,

Scheme: Dropbox - Schematic-Arduino-LED-Dot-Matrix-Display1.jpg - Simplify your life

Where are your led series resistors?

Post your sketch.

Paul

PaulRB:
Where are your led series resistors?

Leds are dimm enough without any resistor.

Here is part of sketch for multiplexing:

void display() {
  for (int col = 0; col < 8; col++) {
    digitalWrite(PIN_DISPLAY, LOW);

    SPI.transfer(screen[col][0]);//row
    SPI.transfer(screen[col][1]);//col
    digitalWrite(PIN_DISPLAY, HIGH);
  }
   digitalWrite(PIN_DISPLAY, LOW);
   SPI.transfer(screen[7][0]);//row
   SPI.transfer(B00000000);//col
   digitalWrite(PIN_DISPLAY, HIGH);
}

imsamurai:
Leds are dimm enough without any resistor.

Always use series resistors! The only exception is if you are using special led driver chips with built-in constant-current driver circuits. Neither 74hc595 nor uln2803 have constant-current drivers. Your led dimness may be due to an incorrect sketch. When your sketch is fixed you could accidentally blow the leds.

imsamurai:
Here is part of sketch for multiplexing:

I should really say I'm not going to waste my time reading the part of your sketch you have chosen to post, and that you must post it all. In this case I can see from what little you have posted that its probably is wrong, but post the whole thing so I can be sure. It appears to be sending 18 bytes of data to the shift registers without any multiplexing delay between the rows/columns.

  1. you need resistors.
  2. it is dim because you are not leaving any time between refreshes.

You should only do one refresh at an interval given either by a millis time trigger in the loop or as a timed interrupt.

Ok, for resistors i know, but for now i want to find the problem use as less as possible parts.
I use Timer1 for refresh, try at different intervals - almost the same. But at some intervals i can see not only jitter whole matrix, but something like interferencing of 2 frequences (all blinks but i see brighten ripple(s)). I know that there is 2 frequency - pwm on OE and row/col lighting. But seems uln affect on frequency that drives OE.

If you won't post your whole sketch we can't help you fix it.