Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

Half way done and wish I had made a PCboard

Status
Not open for further replies.

MrDEB

Well-Known Member
Building a 8 x 32 led matrix using 4 - TPIC6B595 chips (similar to 74hc595 but handles higher currents) 1 - uln2803, 4 - 8x8led matrix and one 40 pin pic.
All done with point to point wiring but wish I had done a PCboard. MIGHT have been easier.
One jumble of wires. Just wish I had a wider choice of wire colors so I could do a better job of color coding but it is what it is.
Been using a continuity tester after each section is done. LOTS of daisy chains as well.
Tomorrow we insert chips and hopefully write code to test. Using Swordfish.
 
I don't have a clue how you have your circuit arranged, but...

The TPIC6B595 can only sink current.

The ULN2803 can only sink current.

If the TPIC6B595s sink current for each column and exactly one column is ever illuminated at the same time (as should be the case when multiplexing an LED matrix), one port of the PIC can drive the rows (each port pin through its own current-limiting resistor) at up to ~20mA as long as the overall limits of the PIC aren't exceeded.

I'm not sure where the '2803 is in your circuit, but I'm almost certain it's not going to do what you want it to.


You might be better off using one of the 32x8 LED arrays from Sure Electronics on eBay for around $15. They use an HT1632C LED driver chip to handle all the busy work of multiplexing. You just send the data to be displayed over and SPI- like interface and the chip handles the rest.


image.jpg
 
Dang it I took the long way around for sure. Wish I had knowen about the HT1632C setup.
 
Here is what I did for connections. Hopefully it will work.
**broken link removed**
researching I found several references to using the 74595 or the TPIC6B595 in this manner.
 
I built a jumble of wires recently with pic and logic to test display and switching - was ok until it developed a fault!
 
No. The TPIC6B595 has a similar function to the 74HC595 in that it's a shift register. Its outputs are designed differently for high current/ high voltage operation (from TI):

Outputs are low-side, open-drain DMOS transistors with output ratings of 50 V and 150-mA continuous sinkcurrent capability. Each output provides a 500-mA typical current limit at TC = 25°C. The current limit decreases as the junction temperature increases for additional device protection.

This is going to be the case for any logic chip that can handle >5 volts.
 
Just to head off any "but you suggested the TPIC6B595..." comments, recall:

....
Using shift registers is a good idea (3 shift registers instead of 24 port pins) but the '595 is not the best choice. You need a power shift register to handle the current of 8 illuminated LEDs in a given column. The TI TPIC6B595 is one possible choice, which is in stock at Digikey for $1.74 each. Alternatively, you could use '595 shift registers to control ULN2003s.
...

I suggested the TPIC6B595 as an alternative to '595 shift registers controlling ULN2003s...meaning they would sink current.

Sorry for your confusion, but it's not going to work as you layer it out.
 
EGADS this is getting confusing at best. Going by the data sheet it appears that I have it right but perhaps my voltage is wrong?? but the link I posted shows it should work??
 

Attachments

  • rev 595.jpg
    rev 595.jpg
    608.4 KB · Views: 396
No. The TCIP6B595 can only sink current. No matter how you want or expect it to work, this chip can only act as a ground in the same manner as a ULN2003.

That would be the meaning of the word drain in the data sheet.

image.jpg


You can also see in the data sheet that the chip can only provide a ground connection on the output.

image.jpg
 
Last edited:
Not to be argumentative but the data sheet shows the load between the DRAIN outputs and GROUND
https://www.electro-tech-online.com/attachments/rev-595-jpg.87426/
I have it all connected up and in process of trying to write some code to get it working if indeed it will but??
Having used SHIFT.bas only once I need to perhaps assemble a one chip circuit on a breadboard with 8 leds. I viewed a website that showed using similar. Will try and locate and re read.
 
The loads are between the positive of a battery, presumably representing the power load supply and the drains!
 
Last edited:
The data sheet is clear about this. It's an open drain chip. It can ONLY SINK CURRENT.

Of course, you're welcome to imagine anything you like.
 
Your circuit needs to put 5 volts on the anode of the LED while the 2803 puts ground on the cathode. Your chip can not put 5 volts on the anode the way it is hooked up. You may be able to salvage your work by using the chip to turn the LED off instead of on.
 
I see my error. Now to see if I can salvage as per ronv's suggestion or purchase said unit Jon suggested BUT I need this up and working by August 17th if I can or else forget the project. As I stated we spent $4100 on new refrigeration equipment and I wanted to "brag" about how cold our beer is during the county fair.
Getting a componet from China takes a long time sometimes 3 weeks.
 
You can probably still make this work. Arrange the anodes in rows and the cathodes in columns.

Drive each row via a current limiting resistor from one pin of a port (one port used for the rows). Use the shift registers to SINK current from each column, one at a time. Only one column is illuminated at a time, so each port pin only drives one LED at any instant. Much like the illustration below, with the ULN2803 replaced by the high power shift resister.

image.jpg
 
Well, you could make a label "The beer temperature is:" and use two seven-segment digits.
 
It's unfortunate that you don't carry over any knowledge from one project to the next; it's as if you flush anything that might have been learned down the drain.

Because in fact, I already discussed exactly what you're trying to do now way back when you were trying to scroll a message across a single 8x8 matrix.

There are a couple more topics to cover in As a Stomach Turns.... even if MrDEB has moved on to massacre.... I mean conquer... other projects. Call this the appendix.

What happens if we want to add a second or even third matrix so we can display more information instead of scrolling it across the matrix a character at a time? If we expand the current scheme, we'll need another port to drive the columns on each additional matrix - the rows are connected in parallel, so the single port can support many digits when multiplexing. Four ports (32 port pins) to drive a three-matrix display isn't very practical.

One method to expand our display would be to replace the ULN2803 with a serial/parallel shift register such as the TI TPIC6A596 Power Logic 8-bit Shift Register for each matrix. A single high bit is shifted out activating each row in turn. The shift registers cascade, the output of one feeding into the next. We'll need only three port pins to control any number of cascaded shift registers: clock, data and output enable.

The procedure is very similar to what we did previously:
1. Disable the shift register outputs.
2. Shift a single high bit into the register.
3. Set PortB to the data for the first column.
4. Enable the shift register outputs.
5. Wait a short period while column is displayed.
6. Disable the outputs.
7. Send one clock pulse to shift the single high bit.
8. Set PortB for the column output.
9. Enable the shift register outputs.
.... and so on.

There's a limitation to how many matrices we can support this way. In order to have a flick-free display, each additional display requires a faster scan rate and each column is activated for a shorter percentage of the time. Three matrices might be as many as are practical with this method. Each output of these shift registers can handle 350 mA so they have plenty of sink capacity. They cost less than two bucks.

There's an on-line simulator for '595 shift registers so you can see how they work. Remember, we want only one output sinking current at a time - one active column.

If you had continued along the same path, expanding on the method I'd explained back then, you'd have a working circuit and a head start on the software development.

In general, the options for adding matrices (or seven-segment digits for that matter) are:

1. Multiplex more matrices. The down side is that for each matrix you add, the smaller percentage of time each column is illuminated, and the dimmer the display gets. You can increase the LED current to compensate for this (with most arrays) since each LED is on for only a short period and off for most of the time, but if the software stalls and stops scanning columns, continuous high current through one column will destroy LEDs.

2. Use a dedicated driver chip per array as Mike suggested. This has the advantage that the display can be driven at full brightness no matter how many arrays are used. Dedicated driver chips like the MAX7219 take care of all the busy work. The downside is that update speed may fall off if many arrays are used.

3. Use a single chip solution like the HT1632C. This takes care of many details and makes it easy to address any dot.
 
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top