PCB design of the radio panels

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).

NAV panel with Test switch

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.

    At the right the two external multiplexer boards, outputs connected via flatcables
  • 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.

But

  • 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.

KiCAD 5.0 net highlight function

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.

 


5 thoughts on “PCB design of the radio panels

  1. Hi, You have attached an arduino Mega to your radio backplane, Since simvim can only use 1 Mega how are you interfacing the rest of your simulator inputs and outputs?
    Or have you changed you plans as your System Layout pdf appears to show a different backplane board and no Mega on the Radio backplane board.
    I’m currently in the planning stages for my simulator which I plan to use SimVim, but every time I get serious I find they have changed the architecture again.

    Like

    1. Hi Sean, yes correct: I’m working on a new Master board that holds the Arduino Mega and is placed behind the MCP PCB because that’s at a more central location.
      The MCP, EFIS, MIP and new radio backplane that connect to the new Master board have embedded multiplexers for the required number of inputs and outputs.
      The two FMC PCBs connect via a small slave Arduino Nano PCB to the Mega with serial wires.
      There are some inputs and outputs left at the Mega for future Overhead and remaining pedestal functions, especially now that SimVim can drive 64 LEDs on 1 Mega output, but that’s indeed one of the changes over time after I already had some PCBs finished.
      Unfortunately I’ve been away from home a large part of the summer, but finally have started working on the whole system again since last week. Still a lot of testing and tweaking going on with a.o. a completely changed second version of the MCP design still to be done.

      Like

  2. Dear Theo,

    I just feel the need to give you a virtual hug and say “Thank you”. Your blog and videos are such an inspiration for wannabe-cockpit-builders like me.

    Currently I’m planning some 737NG panels and controls myself and I have to admit that most of my ideas coincidence remarkably with plans you’ve published here already… even tough I miss my MCP410XX digital potentiometer on the Rset pin of the MAX7219 *sic* (-;

    I admire you for your creativeness, your multi-tasking-ability (I didn’t bother to count the different cockpit elements you’re working on simultanously) and your will to share all your designs, inventions and experiences with people like me.

    Thank you, Theo!

    Kind regards,
    Steffen

    Like

  3. Thanks Steffen.
    Interesting idea, the MCP410XX digital potentiometer on the Rset (I’m using the same one in my throttle PCB design), but I’ve understood that SimVim is going to support dimming of the MAX7219 displays programmatically in the future. In the SimVim community pages there are already some hints in that direction but the instruction how to set it up is not available yet.
    And yes, I agree I’m working on (too) many parts of the cockpit in parallel. Sometimes because I need to wait for some new parts to arrive, sometimes because I’m tempted by a new interesting new puzzle to solve, overall implementation is a bit lagging behind design, but in the end I hope to finish all of them 🙂
    Usually I’m too optimistic with my estimation how much time things will take.

    Like

    1. Well, the digital pot idea is most probably an unneccessary gadget. While I was playing around with KiCad I thought of some simple 50k pots which will panel-wide control the brightness of the segment displays and the backlighting via MCP410XXs .
      Honestly, I’m not sure if/how the 737s segment displays intensities are being adjusted. I only remember the “BRT” knob upon the IRS Display Select switch, but a “fixed” brightness of all the other segment display seems odd to me.

      I wasn’t aware of SimVim going to support MAX7219 dimming, but I’m not convinced this would be my favourite way. Such a programmatically approach will have to make use of the MAXs intensity registers and thereby will limit the brightness adjustment to 16 steps (MAXs intensity registers use just 4 bits) while the MCP410XX offers 256 steps.
      I’ve postponed any decision if I will use SimVim or Mobiflight (or propably anything else) as I see limitations on both systems: SimVim is just capable of using one Arduino Mega and Mobiflight won’t support shift registers.
      Seriously, I have to pay attention to that matter, soon!

      I appreciate and admire your attitude to tinker around while waiting for the Chinese postal services. At least you’ve got something to wait for, me is just reorganizing the Aliexpress Shopping Cart because I still haven’t got a clue where to go first. Knowing me, to order everything possible useful will just end up in an empty wallet, a lot of electronic garbage and a very bad-tempered wife… bad idea, very… bad… idea! 😉
      I’m torn between the MCP and one of the COM/NAV/ADF panels for start. An operating MCP panel would be the most useful addition to my flight controls and is of course the bigger challenge, but as I haven’t been into electronics for about 28 years a “simple” NAV panel means a far better chance of successful completion and as you mentioned in one of your posts: these panels seem to be a good training.

      Like

Leave a comment