As preparation for the large and complex MCP PCB design I have started with the radio panels to test a.o. the principle of driving 7-segment displays from X-Plane by an Arduino with ArdSimX or SimVim and MAX7219 drivers.
When looking at the COM, NAV and ADF panels I noticed that these are quite similar so I had a look if it would be possible to design a universal PCB that can be used for all three variants. Main consideration for this is cost: when ordering PCBs at JLCPCB you always need to order in multiples of 5 with a minimum order of 5 identical PCBs.
With a universal design a single order would be sufficient for 5 radio panels.
Using mostly direct Arduino connections that also was approximately the amount of panels that could be controlled with a single Arduino Mega.
During initial tests on a breadboard with custom Arduino code I have also worked with daisy-chained MAX7219 drivers, which works nice, but this is not supported by SimVim.
For maximum flexibility I decided to support both multiplexed and daisy-chained mode however, with the mode selectable by a number of jumpers. Note that only SimVim non-daisychained mode has been tested so far.
Besides the radio panels a backplane PCB was designed with the exact height of 2 radio panels with the idea to directly plug in the Captain COM and NAV panel for easy connection and with flatcable connections to the other panels.
The Arduino is piggy-backed to the backplane PCB.
Although the original plan was to fit the radio panels in one of my two ‘cockpit boxes’, the smaller than real PCB size became a challenge, especially because I wanted to include the 6 frequency band switches, LEDs and ‘panel’ and ‘test’ switches of the COM panel and because these are soldered directly on the PCB.
This is the reason that the busses that connect the radio panel to the backplane are split in three: a three and four pin bus for the MAX7219s and a large bus for the inputs and outputs.
Besides the direct Arduino connections the backplane design also uses two 74HC4067 multiplexers: one output mux for the MAX7219 clocks and one input mux for some of the switches.
The rotary encoders all have direct Arduino connections.
Because multiplexers are sold very cheap on break-out boards I added connectors to connect the break-out boards with the backplane PCB.
This PCB also contains the option to add a powerFET with optional heatsink for PWM modulation of the panel backlights.
The first radio panel that I assembled showed a problem: one segment of all the active frequency display digits remained off. Swapping of the MAX7219 (luckily I used sockets) showed that it was caused by a faulty MAX7219.
This experience learned me to use a more cautious way of assembling the rest of the radio panels (see video below):
I now start with only soldering the MAX7219 sockets and next I connect supply wires from series resistors on a breadboard to the segment and digit output pins in the socket.
Then I apply power and loosely place the most significant digit to see that all segments are working before soldering two opposite pins of it. Once the digit is in the correct position the other pins are soldered. Next the same method is used for the least significant digit and with a front panel it is checked that the digits fit in the panel opening. After that the other digits are added; the last two are both checked at the same time before soldering because otherwise there is not enough room left for wiggling the last one to check its connections.
With this way of working I’m sure that all the digits work and if there’s a problem later I know that there must be some other cause.
With initially one partly assembled COM radio panel I have tested all five panel backplane connections and then assembled a NAV and an ADF variant of the panel.
The NAV panel uses the same LED micro switch for the test switch as the six switches used on the COM panel (not functional in ZIBO yet though).
The ADF panel has two holes for toggle switches at the COM AM and HF2 switch positions and at the back side of the PCB are connected with wires to the inputs that are used for the VHF1 and VHF2 switches in the COM variant:
With the three radio panels and backplane connected some more tests were performed with the following lessons learned:
- these backplane and radio panels work, but use a lot of direct Arduino connections and as SimVim doesn’t support multiple Arduinos like ArdSimX did,
how am I going to interface the other cockpit systems? Using more muxes seems the way to solve this, but requires a new shield PCB for the Arduino.
- external mux breakout boards are fragile. Especially because the locations and orientation of their connectors at the prototype backplane could have been better.
- One of the comments on the post of the COM panel in the closed Open Source Simulation Files Facebook groep was that 7 x 1.8 yellow LEDs could be used for more realism. Unfortunately the pins of these LEDs are perpendicular to the rectangular shape of the LED which means they don’t fit on the radio PCB. And because they’re soldered close to the PCB it’s not easy to bend the LED 90 degrees. In the end I’ve decided to design a new version of the radio panel with the LED pins 90 degrees rotated. This design has not been tested yet.
- Although it would have advantages to use sockets for the 7-segment displays this would make the distance between front panel and PCB too large for the LED micro switches soldered directly on the PCB. Unless you would create high buttons, but I’m planning to make these from 5 mm thick acrylic. For the initial MCP PCB test I’m going to use sockets for the displays though because of the complexity of that PCB: if there are errors found I can at least reuse the displays. If no serious errors are found I’ll solder the displays directly on the second of the five PCBs for the ‘production’ version.
- The size of the radio PCB is based on the original intention that the radio panels had to fit in one of my two ‘cockpit boxes’.
But if front panel and PCB are the same size it’s not easy to mount the stack of them between two pedestal rails.
So I’ve left this idea and have decided to build a real size pedestal and radio panels.
But using the original, smaller PCB.
- Breadboard cables can be used to test the panels, but they they don’t stick very well on the pin headers, especially the ones on the large
connector, so recommend to replace them with IDC connectors for use in the cockpit.
- In real size panels the radio PCBs will be further apart so they won’t fit on the original two radio panel size backplane anymore.
- as I liked the idea of a real backplane with short connections to the radio panels above it
- more muxes must be used to free Arduino pins for other cockpit systems
- more muxes means pins become available for an additional FO ADF panel
- connecting all the cables to the original backplane is difficult because they’re close together ….
… I’ve decided to keep the radio panels, but design a new, larger, three real radio panel size backplane. In this way all the three captain radio panels can be on top of the backplane, more room is available to place the muxes directly at the PCB and cabling to the other three radio panels is easier.
In parallel to the testing of the radio panels and backplane I’ve been designing the MCP PCB. As the MCP is located more in the center of the cockpit the Arduino will be moved to a separate PCB piggy-backed to the MCP PCB.
Initially I had placed the Arduino at the back of the MCP PCB itself, but as the MCP PCB is large and very complex this would mean that if changes in the Arduino connections to the other cockpit systems are needed a complete rebuild of the large MCP would be required.
The EFIS PCB design with switches soldered directly to the board don’t have any room left for integrating multiplexers, therefore for these still break-out multiplexer boards will be used.
And instead of the generic RJ45 system bus that is used to the other subsystems, for the EFIS a larger connector with system bus combined with multiplexed signals is used.
Through hole wide DIP 24 variants of the 74HC4067 multiplexers seem rare: I managed to find one supplier, but SMD variants are cheaper and easier to find, so I have also included an SMD footprint for the multiplexers in the PCB designs.
I have no experience with SMD soldering, but if supply of the DIP 24 variant of the multiplexers gets a problem there’s at least an alternative available.
All these iterations in the PCB designs unfortunately haven’t done good to the readability of the schematics, but I don’t want to change the schematics anymore of which the PCB has proven to function correctly, to avoid the introduction of bugs. KiCAD 5.0 has a great highlight function for checking connections.
The KiCAD 5.0 schematic, PCB layout, Gerber files, radio SimVim configuration files and matching front panel designs can be downloaded here.
The ZIP file with Gerber files at the download page can be directly uploaded to JLCPCB to have them manufactured.
Below are screenshots how to do this and screenshots how the Gerber files were exported from KiCAD in case you want to make changes to the PCB layout (e.g. to fit alternative components).
Example how the Gerber files were exported in case you want to upload a modified layout:
Next upload the new zip file as described in the previous gallery.