Close
0%
0%

Vertical LED digit display boards

Hang on, is that a display on your wall?

Similar projects worth following
Large 2 digit LED displays with segments formed by domed LEDs that are stacked vertically for multiples of 2 digits

Vertical display

This is the latest iteration of displays that use discrete domed LEDs to form segments developed for #6 segments suffice and implemented in #6 segment 2 digit LED display board and #7 segment 2 digit LED display board as well as other side projects such as #Ancient PMOS technology clock and #Ancient 12 hour display. But the time has come to declare a new project as several design decisions have been made for this series of displays.

  1. Vertical stacking versus horizontal stacking. Horizontal stacking seems natural to make multiples of 2 digits. However while looking in a shop window in Llanes, I saw a consumer LED clock where the digits were stacked vertically. I also realised that the clock on my smartphone lock screen also stacks vertically. Several advantages accrue:
    1. No separator between hours and minutes (and seconds, if present) is needed. The traditional blinking colon can be changed to a less prominent flashing dot.

    2. Portrait format instead of landscape which makes it easier to hang on walls. The MCU board can be attached to the bottom board providing some weight to keep the stack orthogonal.

    3. The display could be used to display say temperature and humidity without confusion from horizontal stacking.

  2. Chained shift registers with static drive for each segment versus segment-digit multiplexed display. The latter requires less components: a set of segment drivers and a set of digit drivers, whereas the former requires more drivers, one for each segment. Also a multiplexed scheme requires more MCU output pins and firmware support whereas a shift register chain only requires 3 lines minimum and 1 more if PWM dimming is implemented. Static drive also allows increasing the height of the stack with no change in lines, only chaining. If I use LED filaments later multiplexing becomes harder as the current per segment is around 30 mA so a fully lit digit would draw 210 mA divided by the per digit duty cycle, requiring more care with board tracks.

  3. Constant current LED drive. The 6 segment font has 4 or 5 LEDs per segment in the same display whereas it's fixed at 3 or 4 for all segments in the 7 segment font. This either requires different limiting resistors for the segments, which introduces a dependency on the supply voltage and the voltage drop of the LEDs which depends on the colour (junction type). This becomes even important for LED filaments which I hope to use as segments in a future design. For this reason I have chosen to implement constant current drive. In a previous iteration I used the TL431 to generate a bias rail for the drivers. Then it occurred to me that there already is a reference rail, the 3.3 V supply for the MCU. (This is also a good opportunity to transition to 3.3 V MCUs as the 5 V MCUs are getting fewer.) Granted this is bit high and results in wasting about 2.5V across the limiting resistor. But I have elected to use boost converters to provide the LED power which provide flexibility.

  4. Surface mount versus through hole technology. More transistors and resistors in the static drive method push the design towards SMT where the parts are cheaper and more can be packed on the board. It also allows automated assembly for those who want to avoid soldering lots of small parts.

  5. Eliminate flying wires. The connector on the display board is designed to plug into an 8 pin Dupont pin socket on the MCU drive board, no other connections are required.

  6. Use a boost converter to provide the LED power. I used to worry about the voltage provided by wall warts, usually 5V or 12V and this was reflected in the design that resulted. Now a wide range of wall wart voltages is accepted as the LED supply voltage can be adjusted by trimpot, and a small SMD LDO regulator provides a calm 3.3 V rail for the MCU, which does not need much current.

First prototype

I made a prototype with the vertical design and it looked like this. Straight away I realised that the proportion was wrong, the digit pairs...

Read more »

  • Generating PCB production files with kicad-cli

    Ken Yap6 hours ago 0 comments

    For a couple of versions now, KiCad has had a command line tool for generating production outputs. How does this improve the workflow? For one thing, instead of specifying outputs and options, and generating files from the GUI, you do it from the command line. This allows you to use scripts which results in reproducible results, free from having to ensure that all the right boxes have been filled in or ticked in the GUI. For this project i have used a Makefile. Here it is:

    PROJECT=6segment
    VERSION=7
    SCHFILE=$(PROJECT).kicad_sch
    PCBFILE=$(PROJECT).kicad_pcb
    LAYERS=F.Cu,B.Cu,F.Mask,B.Mask,F.Silkscreen,B.Silkscreen,Edge.Cuts
    OUTPUTDIR=output
    BOMFIELDS=$${QUANTITY},Reference,Value,Footprint,Description,Type,Manufacturer,MPN
    BOMLABELS=Quantity,Designator,Value,Package,Description,Type,Manufacturer,MPN
    BOMFILE=$(OUTPUTDIR)/$(PROJECT)-bom.csv
    POSFILE=$(OUTPUTDIR)/$(PROJECT)-pos.csv
    ZIPDIR=/var/tmp/Tmp
    ZIP=$(ZIPDIR)/$(PROJECT)-v$(VERSION).zip
    
    all:    gerbers bom pos zip
    
    $(OUTPUTDIR):
            mkdir -p $(OUTPUTDIR)
    
    gerbers:        $(PCBFILE) $(OUTPUTDIR)
            mkdir -p $(OUTPUTDIR)
            kicad-cli pcb export gerbers -o $(OUTPUTDIR) --no-protel-ext -l $(LAYERS) $<
            kicad-cli pcb export drill -o $(OUTPUTDIR) --excellon-separate-th $<
            kicad-cli pcb export ipcd356 -o $(OUTPUTDIR)/$(PROJECT)-netlist.ipc $<
    
    bom:    $(SCHFILE) $(OUTPUTDIR)
            kicad-cli sch export bom -o $(BOMFILE) --fields '$(BOMFIELDS)' --labels '$(BOMLABELS)' --group-by Value --ref-range-delimiter '' $<
    
    pos:    $(PCBFILE) $(OUTPUTDIR)
            kicad-cli pcb export pos -o $(POSFILE) --format csv --units mm --side back --use-drill-file-origin --smd-only $<
            sed -i -e '1s/Ref,Val,Package,PosX,PosY,Rot,Side/Designator,Value,Footprint,Mid X,Mid Y,Rotation,TB/' -e 's/bottom/B/' $(POSFILE)
    
    zip:    gerbers
            rm -f $(ZIP)
            zip -jo $(ZIP) $(OUTPUTDIR)/*.{gbr,drl,ipc}

    For the gerbers rule we generate the layers specified, then generate the two drill files, and finally a IPC-356 netlist to help the fabricator test the boards. A zip rule combines them into a file ready to upload.

    The other two rules generate the Bill of Materials (BOM) and Component Placement List (CPL, also called POS) files containing assembly information. This log will be edited after I have gone through the negotiations with PCBWay for those.

View project log

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates