Wrapping up the Timed LED Lighting Controller Project


I have written about the Timed LED Lighting Controller in previous posts. Starting with the original entry “Stairwell Foot Lighting System. In this entry I will be wrapping up the project and describing the change of direction from the initial design and layout. There may be a bit of overlap but it will be minimal as the project took a small deviation along the way.

Continue reading Wrapping up the Timed LED Lighting Controller Project


Display Revisited

While waiting for the display board to return from OSHPark, I was also interested in an alternative module. I had mentioned this idea before and it was time to start taking a closer look. For the purpose, I created another branch in GitHub rather than creating a whole new project.

The key feature of this implementation is that it does not use a dedicated display driver. The idea is to “roll my own” so to speak. This would incorporate the 7 segment display, but using a micro controller to drive them. Aside from the complexity of setting this up, there are a number of advantages, such as, having control over the API to drive the display.

digitDriver The setup for the controller basically stays the same as for implementation with the MAX7221. But instead, a 74LS138 will be used as a 3 bit to 8 bit decoder/demultiplexer. In other words, this will take a binary coded decimal value from 0-7 and use that to drive up to eight lines. In my case, I have six. Four digits and one line for the indicators (auto-time and alarm enabled), and one for the colon. In addition to the 74LS138, there is a 74HC4511 Binary Coded Decimal to 7 segment driver. These two components together could drive up to 8, 7 segment displays.


On the previous board, I had used a 4 layer model. Routing was quite challenging all the same where the network of traces for the seven segment displays clash with those for the controller. For this new, alternative approach, I decided to try two separate boards. One for the controller/driver circuit and the other for the display only. The idea is to then plug one board onto the other and solder the pins.


Further work is needed to program this device. I will be using SMD controllers so this means I will have to program them on-board. So there is more stuff to learn there.

The controller I have decided on is will be the ATMega88. I was going to use the ATMega8 but the 88 was easier to source at the time. No other technical grounds apart from convenience.

I am still waiting on delivery of the boards for the MAX7221 based display so in the mean time, the next stage will be to start looking at the actual controller board. There will be some mechanical aspects to that problem.

  • The board must fit into the existing housing
  • The buttons on the base of the housing must still be usable and have the same function
  • The board should not be the same size as the original as this will add to the overall cost (though two versions of the display have already blown the budget).
  • Provision is needed to plug the RCF77 module into the new main board.

Getting Connected

The layout is now done and made the rather gutsy decision to send it off to OSHPark for fabrication. In hindsight, I could have done this cheaper in that I actually opted for a 4 layer board with the ground and power on the inner layers just to get them out of the way. I did try a 2 layer board but with the busses running for the segment and digit lines, it was very tight for space especially around the driver chip.

I had to create the footprints for both the 7-Segment units and the MAX7221. The MAX7221 has probably the highest risk of fitting since the package description was anything but clear. It was stated as a 24-SOIC Wide with about five variations on the length – none of which can be determined from the part numbers. The part number that I am able to readily obtains is MAX7221EWG or MAX7221CWG. For this, I have selected the set of dimensions that would give me the largest pad size in the assumption this will simplify assembly. The length of the package itself does not seem to impact the placing of the pads, so I am confident, it should be OK.

The ordered boards are shown below. A couple of points, again learned from my experiences with Contextual Electronics – Label the Pin-Headers! it is annoying to have to look back on the schematic each time I want to connect up a board. The other is position the buffer resistors for the LEDs sensibility – As I mentioned in the last post, there could be a good reason to swap out the zero Ohm resistor with something more appropriate. In order to avoid damage to other parts i.e. the plastic of the 7-Segment displays, I have positioned these on either away from the 7-Segment displays or on the Fron-side (the 7-Segment displays are on the back side).



What’s next?

It is easy to rest on my laurels and think, “OK, I have three or so weeks before I get the boards back, I can concentrate my efforts on the Contextual Electronics course work”. However, there are other things to do

  • Verify the calculations for the Rset
  • Verify the specifications of the discrete LEDs and determine if the zero Ohm resistor is all I need.
  • Consider working on the other branch for the layout of the larger displays.
  • Consider re-working the layout for a 2-layer board to reduce the cost.
  • Start work on the Controller based display module.

The next post will reveal what I have decided to work on.