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.
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.
I mentioned in the last post that I will be trying out the display modules. I found it easier to break away from the original TfaC Git Hub project and create a new one dedicated to the research and development for the display module. The new one is simply ClockDisplayModule.
The first consideration I needed was what 7-Segment displays. The original have a digit height of about 19mm. It is not possible to obtain this with the resources I have. So there is my first compromise. A near fit is about 20.32mm or a 15.24mm. In order to accommodate the usage of either of these, since neither is ruled out, I decided to create two branches on the ClockDisplayModule: largeDisplay and smallDisplay for the two 7-Segment sizes respectively.
The first thing I needed was the circuit diagram for connecting the MAX7221.
I decided to model most of the connections as global labels to avoid clutter on the diagram. It also meant I could separate out the various components of the module in terms of the array of 7-Segment displays, the indicator LEDs and the driver itself.
The data sheet for the driver recommends an electrolytic 10μF and a 0.1μF near the V+. The rest is pretty much as per the application notes on the data sheet. At the moment I have selected a 25KΩ for the Rset which controls the current to the LED segments. This may be also subject to review based on the final 7-Segment selected. I will be providing the working for the final calculation.
The 7-Segment displays have been modelled using the bus feature of KiCad. The common cathode of the displays goes back to the “digit select” on the MAX7221.
The indicators for the display will be implemented using discrete LEDs rather than any decimal point on the 7-segment display units. Mainly because they are not in a position that I consider useful.
I have not seen the MAX7221 driving discrete LEDs along with any 7-Segment display, but I am keen to try this out. I prefer to use discrete LEDs rather than any decimal point on the 7-Segment units as a matter of position. I believe that I will have to consider the ratings of the LEDs and possibly match them with the display segments to avoid any issues loading the MAX7221 inappropriately.
My participation in the Contextual Electronics course has given me the tip to place some zero Ohm resistors in series with the indicator LEDs. The MAX7221 is capable of limiting the current to the LEDs it is driving through the Rset (R101). However if I can not match the indicator LEDs correctly, I at least have the option of swapping the zero Ohm resistors with something more appropriate.
The next step will be to lay this all out onto a board. I already have the measurements I will use – that is the same size as the existing display panel – 3.5″x1.3″.