Shop OBEX P1 Docs P2 Docs Learn Events
LED Driver Questions — Parallax Forums

LED Driver Questions

Duane DegnDuane Degn Posts: 10,588
edited 2012-03-07 17:05 in Propeller 1
I have a project that uses eight 6" 7-segment displays. I use is as a clock and timer and I'm currently upgrading it to receive data to display with a nRF24L01+ module.

attachment.php?attachmentid=89375&d=1328635740



I was asked in the project thread for a schematic. As I started looking at the wiring I had done a couple of years ago and looking at the datasheets for the displays, I realized I'm not sure if I'm driving these displays correctly.

Here's a schematic using the Prop Tool's font.
*****************************************************
   LED Display / TPIC6B595 Shift Register Schematic
*****************************************************
               internal
               resistor pin 9  50Ω
      ┌──────────────── DRAIN0
      │               segment DP
      │┌┐ pin 3   50Ω
      ├┤            ├────────────── DRAIN1
      │└┘ segment G
      │
      │┌┐ pin 2   50Ω
      ├┤            ├────────────── DRAIN2
      │└┘ segment F
  12V │            
     │┌┐ pin 4   50Ω
   │  ├┤            ├────────────── DRAIN3
   │  │└┘ segment E
   └──┤
      │┌┐ pin 6   50Ω
      ├┤            ├────────────── DRAIN4
      │└┘ segment D
      │ 
      │┌┐ pin 7   50Ω
      ├┤            ├────────────── DRAIN5
      │└┘ segment C 
      │ 
      │┌┐ pin 8   50Ω
      ├┤            ├────────────── DRAIN6
      │└┘ segment B
      │ 
      │┌┐ pin 1   50Ω
      └┤            ├────────────── DRAIN7
       └┘ segment A
    
                                TPIC6B595
                             5V  
                                 ┌──────┐
                           NC   │ ┫1•  20┣       NC                
                          Vcc   ┣─┫2   19┣─┐     GND                              
  _ShiftRegisterDataA  SER IN ──┼─┫3   18┣─┼┐    SER OUT
                       DRAIN0 ──┼─┫4   17┣─┼┼─── DRAIN7
                       DRAIN1 ──┼─┫5   16┣─┼┼─── DRAIN6             
                       DRAIN2 ──┼─┫6   15┣─┼┼─── DRAIN5         
                       DRAIN3 ──┼─┫7   14┣─┼┼─── DRAIN4     
                       /SRCLR   ┣─┫8   13┣─┼┼┳── SRCK  _ShiftRegisterClockA
                           /G ┌─┼─┫9   12┣─┼┼┼┳─ RCK   _ShiftRegisterLatchA
                          GND ┣─┼─┫10  11┣─┫│││  GND
                              │ │ └──────┘ ││││
                              ┣─┼──────────┘│││
                              │┌┼───────────┘││            
                              │││            ││
                              │││ ┌──────┐   ││
                           NC │││ ┫1•  20┣   ││  NC                
                          Vcc ││┣─┫2   19┣─┐ ││  GND                              
                       SER IN │└┼─┫3   18┣─┼┐││  SER OUT
                       DRAIN0 ┼─┼─┫4   17┣─┼┼┼┼─ DRAIN7
                       DRAIN1 ┼─┼─┫5   16┣─┼┼┼┼─ DRAIN6             
                       DRAIN2 ┼─┼─┫6   15┣─┼┼┼┼─ DRAIN5         
                       DRAIN3 ┼─┼─┫7   14┣─┼┼┼┼─ DRAIN4     
                       /SRCLR │ ┣─┫8   13┣─┼┼┫│  SRCK   
                           /G ┣─┼─┫9   12┣─┼┼┼┫  RCK    
                          GND ┣─┼─┫10  11┣─┫│││  GND
                              │ │ └──────┘ ││││  
                              ┣─┼──────────┘│││    
                              │┌┼───────────┘││
                              │││            ││
                              │││ ┌──────┐   ││
                           NC │││ ┫1•  20┣   ││  NC                
                          Vcc ││┣─┫2   19┣─┐ ││  GND                              
                       SER IN │└┼─┫3   18┣ │ ││  SER OUT (not connected on last chip)
                       DRAIN0 ┼─┼─┫4   17┣─┼─┼┼─ DRAIN7
                       DRAIN1 ┼─┼─┫5   16┣─┼─┼┼─ DRAIN6             
                       DRAIN2 ┼─┼─┫6   15┣─┼─┼┼─ DRAIN5         
                       DRAIN3 ┼─┼─┫7   14┣─┼─┼┼─ DRAIN4     
                       /SRCLR │ └─┫8   13┣─┼─┘│  SRCK  
                           /G ┣───┫9   12┣─┼──┘  RCK    
                          GND ┣───┫10  11┣─┫     GND
                              │   └──────┘ │   
                              ┣────────────┘     
                              │             
                               Ground

 

The above schematic has three shift registers but only one display shown. Each digit of the display has its own TPIC6B595 chip. There are six display digits and six TPIC6B595 chips. I control the shift registers with two different sets of data, clock and latch pins.

Clock120206b.png


My main concern is whether or not 50ohm resistors are enough to limit the current to each segment of the display.

The display's datasheet list the forward voltage as 11.6V(Min.), 12V(Typ.) and 12.4V(Max.).

The forward current "Absolute Maximum Rating" is 20mA.
Peak forward current (Duty Cycle = 1/10, 10KHz) is 30mA.

I'm concerned that a small change in the driving voltage will result in a large change in the current through the LEDs.

I have in the past, powered this display with 12V. I'd like to continue to do so but I also don't want to burn out the display.

I used a 50 ohm resistor (measured 49.8) and tested the current at two different voltages.

Tests with 11.94V power source.

Current through segment "G" of one of the displays: 26.6mA
Voltage drop across 49.8ohm resistor: 1.37V

Current through decimal point of one of the displays: 9.28mA
Voltage drop across 49.8ohm resistor: 0.463V

Tests with 13.09V power source.

Current through segment "G" of one of the displays: 44.0mA
Voltage drop across 49.8ohm resistor: 2.25V
Current through decimal point of one of the displays: 12.4mA
Voltage drop across 49.8ohm resistor: 0.614V

These measurements don't take into account any internal resistance the TPIC6B959 chips might have.

The decimal point has a different circuit than the other segments. I'm pretty sure there is a resistor on the diplays circuit board to limit the current to the decimal point. I don't recall the size of the resistor, the displays I have are not easily accessible so I can't easily measure the resistance to the resistor.

I'm pretty sure the safer way to driver these displays would be to use a higher voltage (probably 24V) and then use larger values on the current limiting resistors to keep the current through each segment under 20mA.

I do wonder if there are other alternatives besides using a higher voltage.

The program I use to control this display uses a 50% duty cycle but I'm only using a frequency of 1000Hz with the PWM. I'm not sure if that frequency is high enough to keep from hurting the LEDs even with a reduced duty cycle.

I'd really like to use 12V to power this display. I'd also like to be able to power this from a batter pack. Either ten NiMH cells or three LiPo cells. Of course batteries will add to the problem because they will have different voltages depending on their state of charge.

I'm thinking of using an ADC chip to monitor the voltage of the battery pack (or other power source) and adjust the PWM duty cycle to the display accordingly. Does anyone have any thought on the practicallity of such an approach?

Any ideas on PWM frequency I should use?

The TPIC6B595 lists the "High-level input voltage" as 0.85 Vcc (Vcc is 5.0V). So far the Prop has been able to drive the chips just fine. Is there any thing I need to worry about with using a lower logic level (besides if it works or not)?

I probably should have asked these questions a couple of years ago but I don't think I knew enough then to know what I should have asked.
781 x 634 - 1M

Comments

  • tonyp12tonyp12 Posts: 1,951
    edited 2012-03-07 16:26
    Don't skip on resistors, never share a resistor with led's that are in parallel.
    Electricity will always take the path of least resistance and one string of the Leds will take the grunt.
  • Duane DegnDuane Degn Posts: 10,588
    edited 2012-03-07 17:05
    tonyp12 wrote: »
    Don't skip on resistors, never share a resistor with led's that are in parallel.
    Electricity will always take the path of least resistance and one string of the Leds will take the grunt.

    The LEDs don't share resistors. The parallel portions shown in the schematic are internal to the segments. Each segment has its own resistor but not each line of LEDs shown on the schematic. There isn't a way to add resistors to each line of LEDs without hacking into each segment (I'm not sure it would even be possible then).
Sign In or Register to comment.