Low voltage between VSupply and Drain on tpic6b595

I purchased a board from Crossroads to drive my scoreboard. Functionally everything is working as expected. The code I built with Crossroads drives Home, Visitors, Period, and even clock. I started designing and building the physical layout and connected the LED’s to the correct a-g and although everything is functioning, the lights didn’t seem bright. I took a step back and attached a 9V battery to the screw terminals and started measuring some voltages with a multi-meter. On the board there is a V+ which when voltage is measured between it and ground, provides 9V. That seems correct. When I measure between V+ and any of the drains which are “lit” I’m only getting 1V. Any of the drains not “lit” are producing zero volts as I would expect. (example, if my number is zero, a,b,c,d,e, and f should be lit but g is not lit) I looked at the specs of the tpic6b595 and I would expect voltage from Vsupply (V+) to drain to be 9v in my example but I’m a novice at reading specs. I tested the voltages at the 595 and its running off 4.5 volts as expected (Vcc) My question is am I incorrectly measuring the voltage at the drain? Should voltage from V+ to Drain be 1V or should it be 9V? Anything I should do code wise to increase the brightness? Any advice on the measuring of this LED driver is appreciated so I can learn if its functioning properly. I included picture of board with my measure points.

We need to see a schematic of how you have wired it up, not a photo. Also mark where you took the measurements from.

While we might trust you, no-one in their right (digital) mind opens zip file attachments.

Please do not do it.

Paul__B: Duly noted: removed zip. The directions on how to post dont mention NOT to post zips in the section on “if code is too large or too many files.” I looked. My bad.

Grumpy_Mike: If posted correctly, you should see the picture of the schematic from the Crossroads site. I bought the board from him; I didn’t wire anything up. There is a pin labeled DISP PWR. When I connect a multimeter lead to that pin (including directly touching the pin on the chip to eliminate a connection issue) and ground, I get the expected 9V.

When I connect the ground lead of the multimeter to any of the LED letters (with zero as the LED display) I get 1 V on a-f and 0 V on g. Because my multimeter has a 10V setting I dont need to change anything to measure the battery, or the DISP PWR or the +5V to chip because I thought maybe I bumped something on the meter.

I was expecting the drain pins on the 595 to “go to ground” meaning shouldn’t I have 9V between DISP PWR and a-f like I do when I directly connect to ground?? My main goal for this post is to understand the voltage characteristics of this 595 register since I’m getting what I perceive as low voltage.

What do you have the “display power select” jumper set to?

How do you know for sure you have a zero symbol displayed? So many .ino attachments, i gave up finding loop() after the third one i tried. Please just attach code in-line witb your post, but using code tags <>.

The TPIC outputs will float if you send a zero to them, and your meter could read anything. When you send a one, they should go to ground as you say.

Maybe set your meter to resistance or continuity and measure between the tpic outputs and ground.


I didn’t wire anything up

Then that is your problem.

Those shift registers have an open drain output. That means that they only pull down, they will not be at any voltage unless you connect a pull up resistor to them. So they will read just a low value when not active pulled down by being set to zero.

Grumpy_Mike: That makes sense. I will attach the strip LED's and take a reading. If not working as expected I'll put a small value resistor on it with the strip LED's and take a reading. Maybe the LED's I have are the culprit (too much resistance or not enough)

Thank you for explaining how that drain actually works. I thought it was like a logic "on/off" or "open/ground" without thinking it was looking for load to help pull it down. With just the meter it didn't have load.

PaulRB: Thank you for your suggestions. I agree running 4 .ino files is a pain. To answer your questions the DISP PWR jumper is set to the 9V source instead of the 5v USB source. I know I have zero because I have a number of serial print lines going to monitor so I can validate its working

/* For displaying the actions on the monitor to verify coding/remote working */

Sounds like maybe the TPIC doesn't go to ground on its own like you and I think. Grumpy_Mike suggests I need a load to draw it down.

Thanks again for everone's help.

BillPricePMP: I know I have zero because I have a number of serial print lines going to monitor so I can validate its working

The code you just listed doesn't prove that at all!

I would write a very simple test sketch that sends (shifts) zero to all output, waits 2 seconds, then sends one to all outputs, waits 2 seconds, and repeats.

BillPricePMP: Sounds like maybe the TPIC doesn't go to ground on its own like you and I think. Grumpy_Mike suggests I need a load to draw it down.

No, I think Mike is saying the same thing as me, except....

Grumpy_Mike: they will read just a low value when not active pulled down by being set to zero.

Mike, don't you have to set them to one to get them to pull down? See "8.2 Functional Block Diagram" in the data sheet. Also in 8.3.3 it says:

When data in the output buffers is low, the DMOS transistor outputs are OFF. When data is high, the DMOS transistor outputs have sink-current capability.

Yes of course I was talking about the drive on the gate.

It is an open / ground output if you like to think of it that way.

just throwing more code information out there for clarity. (I hope)

byte displayArray[] = {
  B00111111,  // 0.  high bit = output sinks current 
  B00000110,  // 1.  DP-g-f-e-d-c-b-a
  B01011011,  // 2.          a
  B01001111,  // 3      f          b
  B01100110,  // 4          g
  B01101101,  // 5      e   dp    c
  B01111101,  // 6          d
  B00000111,  // 7
  B01111111,  // 8
  B01100111,  // 9
  B00000000,  // 10 blank

   digitalWrite(ssPin, LOW);
    SPI.transfer (blank); // D0 not used
    SPI.transfer (blank); // D1 not used
    SPI.transfer (blank); // D2 not used
    SPI.transfer (displayArray[clockSecOnes]); // D3
    SPI.transfer (displayArray[clockSecTens]); // D4
    SPI.transfer (displayArray[clockMinOnes]); // D5
    SPI.transfer (displayArray[clockMinTens]); // D6 
    SPI.transfer (displayArray[period]);  //D7 
    SPI.transfer (displayArray[rightOnes]);  //D8 
    SPI.transfer (displayArray[rightTens]);  //D9
    SPI.transfer (displayArray[leftOnes]);  //D10 
    SPI.transfer (displayArray[leftTens]);  //D11

    digitalWrite(ssPin, HIGH);  

The measurement you made of 1V between the shift register output and a +9V means that there is 8V on that pin with respect to ground.

This is not a very real measurement because in effect your meter input is floating. If you put a 1K resistor between the shift register output and DSP_PWR and measure across that, you will see 5V as you write a one to that pin and zero volts if you write a zero.

No luck tonight. I put 1k as suggested (brown,black,red, gold) and still had 1v across it. Changed to different chips on the board. Same result. Again connected LEDs in parallel with the resistor and not very bright being only driven by 1v. Connected serial and got really really dim LEDs as expected. Tested DISP PWR TO GND on chips and voltage is correct 9v hopefully trying to see if GND to chip was not connected. Everything seems to be functional but DISP PWR to Drain is still low voltage. I might just have to pm Crossroads to see what I'm missing. I don't know if there isn't some resistance built into the 595?? I'm stumped and will continue to build as is even though the LEDs are not bright enough for outdoor use when connected to the drains. I took pictures of me measuring if that's helpful. Thank you

Why are you measuring voltages with respect to the DSP_PWR pin? This is the positive supply. You normally measure voltages between the ground and what you are trying to measure.

Grumpy_Mike: I am measuring between DSP PWR and ground. Since the drain are supposed to be grounded when Bit=1 based on TI spec sheet (section 8.2; and figure 14) When I put my leads on DSP PWR and drain port my thought is it should either be open (bit=0) or grounded (bit=1)

Based on my novice research (TI Spec Sheet) I'm guessing figure 14 and Table 1 best describe what I'm seeing. voltage to LED's will never be line voltage due to current limiting capabilities of the chip. If I want to drive a higher voltage to my LED's I probably need to connect a mosfet or 2n2222 and use the drain to simply "switch" the voltage to the LED's. Dunno how much I'll continue to mess with it since its working fine but "brighter is better"

Thanks for all your helpful advice. It has been a pleasure working with you. Talk to you again on the next issue.

Grumpy_Mike: I am measuring between DSP PWR and ground.

No you are not. If you think you are then you are not understanding the situation.

port my thought is it should either be open (bit=0) or grounded (bit=1)

Your thought is wrong, you can only "see" the connection to ground you can not "see" open on a meter. A voltage measurement of 1V between DSP_PWR and an output means that the "real voltage" is DSP_PWR - 1V, but as open means nothing then you are not actually measuring anything.

voltage to LED's will never be line voltage due to current limiting capabilities of the chip.

Very wrong. That chip does NOT have a voltage output it has a current sinking output. If you want to translate that into a voltage output then you need a pull up resistor. Then the voltage sourcing capability is limited by the value of that pull up. Thinking it has any sort of voltage output is just plane wrong.

The chip is expecting you to have this series connection:
9V - LED anode, LED cathode to resistor, resistor to chip output pin. The pin will go low when switched on (1 shifted in).
The pin will go high (maybe up to 9V) when switched off, pulled up by the 9V-LED-resistor. The pin will cannot drive the output high by itself.

There might be multiple LEDs in series. Most LED strips have 3 LEDs in series with a current limit resistor and powered from 12V.