dual-mode 16-segments LED display module

A project I develop with the kids for H1 2017 at CercleJ.

Similar projects worth following
If you're looking for crazy technology, you'll be disappointed, but if you're eager to learn about electronics and how circuits are designed, you're welcome !

This dumb 80×100mm module displays one character with 16 segments made of 4 or 6 red LEDs each. That's 84 LED, controlled either by DIP switches or a couple of 74HC595.
It is being developed as a project for the first half of 2017 to show kids how electronic circuits are created and developed. This is also a great PCB to learn soldering skills (over 300 solder joints per module !) and testing procedures, without having to learn complicated programming techniques.

The system in itself is not very innovative but those who come to the workshop can see each step of the design with real professional tools and methods. This covers most aspects of electronic circuit design, from the concept (chosen during a brainstorm session) all the way to soldering a series of PCBs and testing them!

We came up with a project that looks similar to #RGB 16 Segment LED but in monochrome, both simpler and more sophisticated.

  • Simpler because there is no need of programming. This is because my workshops are about electronics, and I avoid writing code because it's worse than opening a can of worm. And they are too young for that.
  • More sophisticated because there are two operating modes, more circuits, more PCB real-estate...

But each module can be used in manual or serial mode :

  • Manual mode is easy for the "no programming" use, when the displayed symbols are static. Just configure the right switches and you're done. Maybe a bit troublesome but no need of anything else.
  • Serial mode is for dynamic displays (scrolling letters) thanks to integrated 74HC595 which can be driven by a basic SPI port.

A quantity of about 50 modules is considered for fabrication. This should be enough for displaying messages in the lab, for example, and/or expand the workshops to I/O programming (one day).

Other major considerations:

  • The PCB is limited to 80×100mm because that's the size of the working area of the educational-version of EAGLE. This was chosen over Kicad which is slightly more cumbersome, and the limited version of EAGLE has just what is required.
  • The DIP switches and the '595 are soldered on the top and take 30 to 40mm so the character height is max 65mm. That is pretty easy to see from a long distance, as the panel will be installed behind a window.
  • Better visual contrast is obtained with a matte black varnish on the PCB.
  • Each segment has an even number of LEDs for electrical reasons : each LED in a pair shares a common resistor, which reduces the number of soldering joints and parts list.
  • Data input comes from the right and the module outputs serial data to the left : this eases the construction of a scrolling display !
  • Power comes from a standard 5V power supply. Voltage range is ±10%, from 4.5V to 5.5V, we can test with a USB port for example.

00. The dawn of a new project
00. Getting our hands dirty at last
1. Tonight's idea...
2. Parts
3. Little by little
4. A little progress
5. Better working prototype

  • 2 × 74HC595 8-bits shift register with latch, DIP16 package
  • 2 × SIL resistor network, 300 Ohms, 9 resistors
  • 3 × SIL resistor network, 300 Ohms, 8 resistors
  • 84 × Red LED, 3mm, diffused, flat top
  • 1 × 1-bit DIP switch

View all 6 components

  • Better working prototype

    Yann Guidon / YGDES03/30/2017 at 02:39 0 comments

    Today we were able to finish 3 segments (2×6LED and 1×4LED, with their 330 Ohms series resistors) and the signal generator so we added the '595.

    The signal generator helps us control the segments in real time so we could measure the currents. The procedure is easy when there is no 595: just insert a milliampmeter between the power supply (5.5V when open) and the desired segment. We found 13mA for 6LED and almost 10mA for 4LED segments. That's more than what we calculated and rated !

    Since the 595 can supply at most 70mA, each segment should draw at most 70/8=9mA. But there are two factors that make this measurement misleading :

    1. The PSU is barely loaded and drops to 5.4V when mildly loaded. We calculated for 5V, yet here we get +10% bonus.
    2. The '595 has some inner resistance for each data pin so the segment voltage will be lower.
    3. The '595 has a single power pin through which all the current goes, which adds more resistance : more lit LEDs will drop the segments' voltage even more...

    3 is why we need to turn ALL the segments ON at the same time to make meaningful measurements. For now we have only 3.

    When the '595 is soldered we can't insert the milliampmeter in the signal. However we can measure the current indirectly by reading the resistor's drop : I=U/R.

    We get about 1.4V/330=4mA per pair of LED, which is the expected value : 6LED should be about 12mA and 4LED should be about 4mA. This gives an average of 10mA/segment, which will slightly drop as the PSU voltage reaches 5V and more segments are turned on (they are not all ON at the same time)

    So this incomplete prototype has shown that the design goals are met but we need to test with ALL the segments at the same time for a definitive measurement.

    Anyway we finally have something to play with !

  • A little progress

    Yann Guidon / YGDES03/23/2017 at 17:46 0 comments

    Some segments start to work :-)

    The light looks nice :-) It will be better on a black background.

    Many segments are still missing but we can at least test the resistor networks. Half of the segments are required to test the circuit with one 74HC595.

    And the signal generator is taking shape, it can generate a 5Hz signal or single pulses to help test the boards.

    I had to revise the resistor values because the original, theoretical values were wrong...

    Still missing: another debouncer for the data signal.

  • Little by little

    Yann Guidon / YGDES03/16/2017 at 03:45 0 comments

    Small steps...

    The system is getting better defined, a we're trying to make an all-circuit controller.

    We're also building a final prototype with the definitive parts, and the new LEDs are superior to the old we used before, as they "sit" directly on the PCB and require much less adjustments of position.

    That means : a lot of time will be saved when 4200 of them will be manually assembled !

  • Parts

    Yann Guidon / YGDES03/14/2017 at 05:46 0 comments

    Here I discuss about the main parts used by this project.

    • 74HC595 : that's the 8-bits shift registers, 2 are required for each module so overall 50×2=100 are required for the whole project. For simplicity reasons, it is used in dump SPI mode, with no additional latch signal, because we don't care about the looks when the display is updated. On the contrary, shifting all the segments can create a cool effect for no cost !
      Stock: OK, from personal stock (a stupid display project from 2009)
    • LEDs:
      - must be red/yellow/green because the forward voltage drop is lower and 2 or 3 can be wired in series. New green or blue LEDs require more than 2.5V, more resistors and more soldering...
      - 3mm is chosen because 5mm is a tiny bit too large. We have tried several models (from old stock) and chosen new diffused flat-top model with nice look and color (but slightly higher voltage drop)
      Stock: OK, bought specially for this project on eBay.
    • Resistors: individual resistors require too much soldering, despite the choice of red LEDs that cuts the numbers in half. There are still 50×42=2100 resistors to solder, or 4200 joints ! I have found the solution : SIL resistors modules.
      Each display module has 84/2=42 resistors, which is not a multiple of usual SIL models so a composite method is used : 2× 10-pins SIL with 9 resistors make 18 resistors, the remaining 24 are made of 3 SIL with 9 pins and 8 resistors.
      Value has been experimentally determined to 300 Ohms
      Stock: OK, bought specially for this project on eBay.
    • DIP switches : 2× standard cheap 8-switches for the data, and 1-bit switch for the mode.
      Stock: OK, bought specially for this project on eBay.

    Other parts (capacitors etc.) are common and do not require a particular consideration.

  • Tonight's idea...

    Yann Guidon / YGDES03/11/2017 at 18:19 0 comments

    After I created the project page, I was thinking about the boards that require development : the alphanumerical module itself, of course, and the small test board that sends the clock pulses during testing.

    Then there is the question of how to drive the 50 modules and display messages.

    One obvious solution is to use a Raspberry Pi with some sort of web interface (driven by the #micro HTTP server in C for example) but the workshops are about electronics, not computing or programming !

    Then it occured to me that it's totally fine to make a "semimanual" keyer that generates the required pulses when pressing on a given button...

    Of course the "normal approach" is to use an Arduino (or Pi) to scan a keyboard, and transform the keycode into a 16-bits synchronous serial stream. But the kids wouldn't learn much and programming would confuse them a bit.

    It's more interesting to generate the bitstream with hardware, particularly with a couple of 4017 and a large diode matrix : everything is exposed, with LEDs showing the paths of signals. This requires a significanly large PCB but this can become a fun subproject on its own for the last months of the workhop.

    Of particular interest is the circuit that generates exactly 16 pulses when a button is pressed. I have not yet figured it out completely but it's going to be very interesting. The 4017 can indicate when all the pulses have been sent to inhibit the clock but a single press of the button must send exacty one character, regardless of the pulse duration.

    Oh and I'll have to find nice buttons for the front plate, if possible DPST because a single press must both route the signals from the diode matrix, and start the oscillator.

    Another approach doesn't use a 4017 but 74HC165 parallel-in shift registers. There is still diode ROM but it is driven "backwards" compared to the 4017 version.

    A single push of the button will drive diode to 1) decode the data to send 2) start the oscillator. This way, only SPST buttons (classic !) are required. The kids can play with the diodes to generate the desired letter shapes. The '165 can latch all the 16 bits during a single clock cycle then shift them out later, when the button is released.

View all 5 project logs

Enjoy this project?



matseng wrote 03/14/2017 at 06:11 point

Starburst displays rules!  ;-)

  Are you sure? yes | no

Yann Guidon / YGDES wrote 03/14/2017 at 06:24 point

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

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