Printplaat ontwerp van de radio panelen

Als voorbereiding op het grote en complexe MCP printplaat ontwerp ben ik begonnen met de radio panelen om o.a. te testen hoe de 7-segment displays worden aangestuurd vanuit X-Plane met ArdSimX of SimVim en MAX7219 chips.
Kijkend naar de COM, NAV en ADF panelen zie je dat deze behoorlijk op elkaar lijken, dus vroeg ik me af of het mogelijk zou zijn om een universele printplaat te ontwerpen die voor alle drie de varianten gebruikt kan worden.
Belangrijkste overweging hierbij zijn de kosten: PCB ontwerpen moeten bij JLCPCB altijd in vijftallen worden besteld met een minimum aantal van vijf. Met een universeel ontwerp zou een enkele order voldoende zijn voor vijf radio panelen.
En met directe Arduino verbindingen bleek dat ook zo’n beetje het aantal panelen dat met een enkele Arduino Mega kan worden aangestuurd.
Tijdens mijn eerste experimenten met een experimenteerbord met custom Arduino code heb ik gewerkt met MAX7219 in daisy-chain mode, wat goed werkt, maar in SimVim wordt dit niet ondersteund.
Voor maximale flexibiliteit heb ik besloten om voor het printplaat ontwerp zowel daisy-chain als multiplex mode te ondersteunen, waarbij met een aantal jumpers de mode gekozen kan worden. Let wel dat op dit moment nog alleen SimVim multiplex mode is getest.
Naast de radio print heb ik ook een Arduino shield print ontworpen die precies twee radio panels hoog is en die direct achter het COM en NAV panel voor de captain komt voor korte directe verbindingen, terwijl de verbindingen met de overige radio panels met flatcable worden gemaakt.
Op de achterkant van deze grote print wordt de Arduino geprikt.

Hoewel het oorspronkelijke plan was om de radio panelen in een van mijn twee ‘cockpit kasten’ te monteren, werd een print ontwerp kleiner dan in werkelijkheid een uitdaging, vooral omdat ik alle zes de frequentie band schakelaars, LEDS en de ‘panel’ en ‘test’ knoppen er op wilde hebben en deze direct op de printplaat worden gesoldeerd.
Dit is de reden dat de bussen die de radio panelen met de achterliggende printplaat verbinden in drieën zijn gesplitst: een drie- en vier pins bus voor de MAX7219s en een grote bus voor de in- en uitgangen.
Helaas ben ik daarbij vergeten om de signalen die alle radio panelen gemeenschappelijk hebben aan een kant van die grote bus te groeperen zodat kleinere stekkers met minder draden gebruikt kunnen worden voor de NAV en ADF panelen, maar het is wel mogelijk om een aantal pinnen weg te laten en twee kleinere stekkers te gebruiken.

Naast directe Arduino verbindingen maakt de Arduino shield ook gebruik van twee 74HC4067 multiplexers: een als decoder (uitgangen) mux voor de MAX7219 klok signalen en een als encoder mux met een aantal ingangen voor de schakelaars.
De rotary encoders in dit ontwerp zijn allemaal rechtstreeks aangesloten op Arduino pinnen.

Omdat multiplexers erg goedkoop te koop zijn op break-out printjes heb ik in het ontwerp connectors gebruikt waarmee deze multiplexer bordjes haaks op de backplane PCB kunnen worden gemonteerd.
Op de backplane print is ook plaats voor een optionele powerFET met eventueel een koelblok om de achtergrond verlichting van de panelen te dimmen via PWM modulatie met de Arduino.

Nadat ik alle 7-segment displays op de eerste radio print had gesoldeerd bleek er een probleem te zijn: het bovenste segment van alle cijfers bleef uit. Door de MAX7219 te wisselen met een ander exemplaar (gelukkig zaten ze in voetjes) bleek dit probleem opgelost.
Naar aanleiding van deze ervaring heb ik de rest van de bordjes wel op een andere manier gesoldeerd (zie ook de volgende video):
ik begin met alleen de MAX7219 voetjes te solderen en sluit daarna voedingsdraden aan vanaf serieweerstanden op een experimenteerbord naar de uitgangspinnen van alle LED segmenten in het MAX7219 voetje en aarddraden naar de common cathode pinnen in het voetje voor ieder 7-segment display.
Dan zet ik de voeding aan en plaats ik het eerste, meest linkse 7-segment display los op de PCB en beweeg het wat op en neer om te verifieren dat alle segmenten aan gaan, waarna ik twee pinnen die het verst uit elkaar liggen vastsoldeer. Pas zodra het display recht en vlak op de PCB zit worden de overige pinnen vastgesoldeerd.
Vervolgens gebruik ik dezelfde methode voor het meest rechtse display en check ik met een front paneel of de displays in de opening passen voordat ik het vastsoldeer.
Daarna gebruik ik dezelfde methode voor de overige displays, waarbij de laatste twee eerst allebei tegelijk getest worden voor ze vast te solderen omdat er anders geen ruimte meer is om ze een beetje op en neer te bewegen om alle verbindingen te testen.
Met deze methode weet ik zeker dat alle cijfers werken en dat als er later toch nog een probleem mocht zijn de oorzaak daarvoor elders gezocht moet worden.

Met het eerste COM radio printje gedeeltelijk gesoldeerd heb eerst ik de backplane verbindingen voor alle vijf de radios getest en daarna de NAV en ADF varianten gesoldeerd.
Het NAV paneel gebruikt dezelfde LED micro schakelaar als ‘test’ schakelaar als de zes schakelaars die op het COM paneel zitten (deze is alleen nog niet functioneel in ZIBO).

NAV print met ‘Test’ schakelaar

Het ADF paneel heeft twee gaten voor tuimelschakelaars op de plek van de AM en HF2 schakelaars van het COM paneel en worden met draadjes aan de achterkant van de print verbonden met de ingangen die voor de VHF1 en VHF2 schakelaars worden gebruikt bij de COM variant:

Met alle drie de radio panelen aangesloten zijn daarna nog wat verdere tests uitgevoerd met de volgende conclusies:

  • dit backplane en de radio panelen werken, maar gebruiken wel veel directe Arduino verbindingen en omdat SimVim niet meerdere Arduinos ondersteunt zoals ArdSimX wel deed vroeg ik me af hoe ik de overige cockpit systemen aan moet sluiten. Dit kan opgelost worden door meer multiplexers te gebruiken, maar daarvoor is een nieuw ontwerp voor de Arduino printplaat nodig.
  • losse multiplexer bordjes zijn kwetsbaar. Vooral omdat de posities en orientatie van de multiplexer connectors op de backplane print niet ideaal zijn.
Rechts de twee externe multiplexer bordjes via flatcables verbonden met het Arduino backplane
  • een van de adviezen in de besloten Open Source Simulation Files Facebook groep was om 7.05 x 1.8 gele LEDs te gebruiken op het COM paneel die meer lijken op het origineel. Helaas blijken de pinnen van deze LEDs haaks te staan op de rechthoekige bovenkant van de LEDs waardoor ze niet goed in de radio print passen. Omdat ze kort op de print worden gesoldeerd is het niet mogelijk om de LED 90 graden te buigen. Daarom heb ik uiteindelijk maar besloten om een nieuwe versie van de radio print te ontwerpen waarbij de LED pinnen 90 graden gedraaid zijn. Dit ontwerp is echter (nog) niet getest.
  • Hoewel het voordelen zou hebben om voetjes te gebruiken voor de 7-segment displays zou hierdoor de afstand tussen front paneel en print te groot worden voor de LED micro schakelaars die direct op de print worden gesoldeerd. Tenzij je hoge knoppen zou maken, maar die wil ik uit 5 mm dik acryl frezen.
    Voor de eerste test versie van de MCP print ga ik de displays wel in sockets plaatsen vanwege de complexiteit van deze print: als er fouten gevonden worden kan ik tenminste de displays opnieuw gebruiken. Als er geen serieuze fouten blijken te zijn ga ik de displays voor de ‘productie’ versie wel rechtstreeks op een van de resterende vier MCP printplaten solderen, omdat anders de elektromagnetische AT schakelaar niet past.
  • De afmetingen van de radio print zijn gebaseerd op het oorspronkelijke idee dat de radio panelen in een van mijn twee cockpit lades moesten passen. Maar als het front paneel en de print dezelfde afmetingen hebben is het lastig om de combinatie daarvan tussen de bevestigingsrails te monteren.
    Omdat ik inmiddels meer plaats heb voor de cockpit ben ik van dit idee afgestapt en ga ik het pedestal en de radio panelen op ware grootte bouwen. Maar wel met het oorspronkelijke, kleinere radio printplaat ontwerp.
  • Bij radio panelen op ware grootte zitten de printplaten verder uit elkaar, dus passen ze niet meer exact op het backplane met de afmetingen van 2 radio prints.

Maar

  • omdat ik het idee van een backplane met korte verbindingen naar de radio printplaten er boven aantrekkelijk vind
  • er meer multiplexers nodig zijn om Arduino pinnen vrij te maken voor de overige cockpit systemen
  • meer multiplexers betekent dat er pinnen beschikbaar komen voor een co-piloot ADF paneel
  • alle kabels aansluiten op het originele backplane lastig is omdat ze dicht bij elkaar zitten …

… heb ik besloten om de radio printplaten te behouden, maar een nieuw, groter backplane te ontwerpen met de afmetingen van drie radio panelen op ware grootte. Op deze manier kunnen alle drie de captain radios op het backplane worden gemonteerd, is er meer plaats beschikbaar om multiplexer chips direct op de print te plaatsen en kan de bekabeling naar de andere drie radio panelen eenvoudiger worden.

Parallel aan het testen van de radio panelen en backplane ben ik bezig geweest met het ontwerp van een MCP printplaat. Omdat de MCP centraler in de cockpit zit heb ik de Arduino verplaatst naar een aparte printplaat die achter de MCP printplaat wordt gemonteerd.
Aanvankelijk had ik de Arduino achter op de MCP printplaat zelf geplaatst, maar omdat de MCP printplaat erg groot en complex is zou dat betekenen dat als er toekomstige wijzigingen in de Arduino aansluitingen naar de andere cockpit systemen nodig zijn, de complete MCP opnieuw gebouwd zou moeten worden.

In het EFIS printplaat ontwerp, met micro switches rechtstreeks op de print gesoldeerd, is niet voldoende ruimte om multiplexers op de print zelf te plaatsen. Daarom wordt voor dit ontwerp nog wel gebruik gemaakt van losse multiplexer bordjes.
En in plaats van de universele UTP systeembus die voor de andere deelsystemen is gepland, wordt voor de EFIS een enkele, grotere connector gebruikt waarin de systeembus met de gemultiplexte signalen is gecombineerd.

De brede DIP-24 variant van de multiplexers, met pinnen die door de print heen gaan, lijkt niet zo veel verkocht te worden. Ik heb wel een leverancier gevonden, maar de SMD variant is goedkoper en gemakkelijker te vinden. Daarom heb ik ook een SMD footprint voor de multiplexers op de prints geplaatst.
Ik heb geen ervaring met SMD solderen, maar mocht beschikbaarheid van de DIP-24 variant toch een probleem worden dan is er tenminste een alternatief.

De vele wijzigingen in de ontwerpen van de printplaten is de leesbaarheid van de bijbehorende schema’s helaas niet ten goede gekomen, maar de schema’s waarvan de print inmiddels succesvol is getest wil ik niet meer wijzigen om te voorkomen dat er fouten in sluipen. KiCad 5.0 heeft een erg handige highlight functie om de netten te kunnen volgen in de schema’s.

KiCAD 5.0 net highlight functie

De schema’s, printplaat layouts in KiCAD 5.0 en Gerber formaat en bijbehorende SimVim configuratie bestanden en frontplaat ontwerpen kunnen hier worden gedownload.

Het ZIP bestand met Gerber bestanden op de download pagina kan rechtstreeks worden opgestuurd naar bijvoorbeeld JLCPCB om ze daar te laten maken.
Onderstaande schermafbeeldingen laten zien hoe dit werkt en hoe de Gerber bestanden vanuit KiCAD kunnen worden geexporteerd als er wijzigingen in het printplaat ontwerp zijn gemaakt, bijvoorbeeld om ze geschikt te maken voor onderdelen met andere afmetingen.

Voorbeeld hoe de Gerber bestanden worden geexporteerd na het aanpassen van het print layout ontwerp:

Upload het nieuwe ZIP bestand vervolgens zoals beschreven in de vorige foto collectie boven.

 


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s