GPS printplaat ontwerp update

Het lijkt misschien alsof er de laatste tijd weinig voortgang is, maar ik ben gelijktijdig bezig geweest met het ontwerp van de GPS, EFIS, MCP en COM/NAV printplaten en ‘volume’ productie van de onderdelen voor de rotary encoders met dubbele as.

 

 

Tijdens het testen van de GPS PCB dacht ik een probleempje te hebben gevonden in de aansluitingen van de COM en VLOC volume rotary encoders wanneer de PCB via een 40-pins kabel rechtstreeks wordt aangesloten op een OpenCockpits Master Card. Rotary encoders moeten worden aangesloten op twee opeenvolgende inputs. Ik dacht dat ik hier rekening mee had gehouden bij het ontwerp van de GPS print, maar had over het hoofd gezien dat alleen voor de even pin nummers van de 40 pins connector twee naast elkaar gelegen pinnen opeenvolgende input nummers hebben. Dit is niet het geval voor de oneven pin nummers.
De aansluitingen voor de dubbele encoders zijn OK, maar die voor de enkelvoudige COM en VLOC volume functies kunnen worden gerepareerd door de encoder ‘up’ en transfer schakelaar aansluitingen om te wisselen. Met deze wijziging kon ik de enkelvoudige encoders testen.

In feite zijn de gevonden foutjes niet echt een probleem omdat X-Plane toch geen interface heeft voor de COM en VLOC volume functies, maar ik liep hier tegenaan toen ik deze encoders gebruikte om hiermee even de grof- en fijnafstelling van de COM frequentie te testen.

SOFTWARE INTERFACE

Ik ben nog op zoek naar een betrouwbare interface met de X-Plane GNS530 GPS via de OpenCockpits hardware: aanvankelijk heb ik daarvoor de toetsenbord mapping gebruikt, maar dit bleek niet erg betrouwbaar te werken.

 

 

Omdat er al een groot aantal toetsen gedefinieerd zijn voor andere functies van de simulator had ik mijn toevlucht genomen tot CTRL en ALT combinaties voor de GPS functies waarvoor standaard nog geen toets is gedefinieerd.
Deze definities gebeuren in het OpenCockpits sioc.ini bestand. Via een aantal OpenCockpits manuals (in eentje bleken in een voorbeeld de definities voor SHIFT en CTRL te zijn omgewisseld) en enkele voorbeelden kwam ik er achter dat SHIFT, CTRL en ALT toetsen worden gedefinieerd via \1 (SHIFT toets ingedrukt), \2 (SHIFT losgelaten), \3 (CTRL ingedrukt), \4 (CTRL losgelaten), \5 (ALT ingedrukt) en \6 (ALT losgelaten).
Zowel het indrukken als loslaten van deze toetsen moet worden gedefinieerd.
Normale toetsen geven hoofdletters, voor een kleine letter moet een < voorafgaan aan de letter.

Voorbeeld: in mijn SIOC script heb ik geprogrammeerd dat de GPS Menu knop een toets waarde van 106 moet sturen, in X-Plane heb ik een CTRL+SHIFT+m combinatie gedefinieerd voor de GPS Menu knop en in het sioc.ini bestand de volgende regel toegevoegd:
#106=\3\1<m\2\4
Dit betekent dat toets 106 vanuit het SIOC script een CTRL ingedrukt, SHIFT ingedrukt, kleine letter m, SHIFT losgelaten, CTRL losgelaten toetsencombinatie naar de simulator moet sturen.
Dit werkte wel, maar bleek om een of andere reden niet erg betrouwbaar in X-Plane: het leek alsof af en toe een van de SHIFT, CTRL en/of ALT acties werd gemist wat rare effecten gaf omdat het voor Windows of X-Plane dan lijkt alsof de SHIFT, CTRL of ALT toets nog steeds wordt ingedrukt.
Ik heb wel ontdekt dat dit kan worden ‘gereset’ door op zo’n moment de SHIFT, CTRL of ALT toets op het toetsenboard in te drukken, maar dit is niet wenselijk.

Ook kwam ik er achter dat de goedkope Chinese EC11 rotary encoders niet goed werkten met OpenCockpits: de COM encoder die ik had geprogrammeerd voor de grove frequentie instelling bleek de frequentie altijd te verlagen, of de encoder knop nu linksom of rechtsom werd gedraaid. Ook werden kliks gemist als er te snel werd gedraaid.
Bij de fijnafstelling via de VLOC encoder was het nog erger: de frequentie bleef op- en neer springen tussen slechts twee waarden bij linksom of rechtsom draaien.

 

 

Ik ben er nog niet achter waar het probleem precies zit, maar heb maar eens een poging gewaagd om de GPS PCB via een Arduino Mega 2560 en de ArdSimX software op X-Plane aan te sluiten. Met die combinatie blijken de encoders prima te werken.
Aanvankelijk zag ik ook af en toe sprongen als er snel aan de encoders werd gedraaid, maar dit bleek zo te horen: ArdSimX heeft een ‘acceleration’ instelling voor encoders om sneller op of af te tellen als er sneller aan de encoders wordt gedraaid.

Dit kan ook uitgeschakeld worden met een instelling in het setup.cfg bestand van ArdSimX en als hierin handmatig de acceleration waarde op 1 gezet wordt werken de encoders betrouwbaar.

data_cfg
Dubbele as encoders on pin 46, 48 en 50,52, gedefinieerd als type 1, acceleratie waarde 1

De gebruikte Arduino is een goedkope Chinese kloon; de benodigde USB driver wordt niet automatisch gevonden door Windows 7, maar na het downloaden van een driver werkt hij prima. Deze driver kan gevonden worden op internet door te zoeken naar ‘Arduino CH341SER.EXE’, maar kan ook hier worden gedownload.

NIEUW GPS PRINTPLAAT ONTWERP

Hoewel er maar een paar wijzigingen aan de GPS printplaat nodig zijn (en eigenlijk zijn die niet eens echt nodig omdat er toch geen interface is voor de GPS volume functies in X-Plane), heeft een nieuw ontwerp een paar voordelen.
In het originele ontwerp bleek de standaard footprint die ik had gekozen voor de schakelaars gaatjes te hebben met een erg kleine diameter voor de pinnen van de gebruikte schakelaars.
Bovendien heb ik intussen een ander type schakelaar gevonden met dezelfde afmetingen, maar met een geintegreerde LED, waarmee de teksten op de knoppen beter van achter verlicht kunnen worden.
En door een jumper blok toe te voegen waarmee de aardaansluitingen van alle ingangen en uitgangen met elkaar verbonden kunnen worden kan de GPS PCB via slechts een enkele aarddraad met de Arduino worden verbonden.

Omdat ik er inmiddels achter ben dat zelf ontworpen printplaten erg professioneel worden geproduceerd via easyEDA en goedkoper zijn dan los dubbelzijdig printmateriaal heb ik het idee opgegeven om zelf PCBs te maken met de CNC frees.
Dit maakt het ook gemakkelijker om dubbelzijdige printen te ontwerpen, wat nodig wordt door alle extra verbindingen voor de schakelaars met LED.

De bedrading van het eerste GPS PCB ontwerp is met de hand gedaan, maar tijdens het ontwerp van de EFIS en MCP printplaten heb ik ervaring opgedaan met de FreeRoute automatische router die met KiCAD kan worden gebruikt.

freeroute_unrouted
MCP printplaat ontwerp in FreeRoute, nog geen bedrading, alleen flightlines

Op basis van al deze ervaringen is een nieuwe v1.1 GPS PCB ontworpen met verbeterde aansluitingen van de COM en VLOC encoders, grotere gaatjes voor de schakelaars die nu ook LED verlichting hebben, een aantal extra LEDs voor verlichting van het GPS paneel, een extra connector om de ongebruikte
aansluitingen van de 40-pins connector eventueel door te lussen naar andere cockpit printplaten, een soortgelijke connector om de voeding en aarde van de paneelverlichting door te lussen en een jumper blok om alle gescheiden OpenCockpits aardpinnen van de 40-pin connector met elkaar te verbinden voor aansluiting op een Arduino.

Ik heb ook de mogelijkheid overwogen om de GPS PCB als een Arduino shield te ontwerpen voor het gemakkelijk aansluiten op een Arduino, maar daarvoor zit de printplaat van de aansturing van het schermpje, die achter de GPS PCB wordt gemonteerd, in de weg.

Zodra de nieuwe printplaat is getest zullen de ontwerpbestanden in deze blog te downloaden zijn.

Intussen is ook een eerste versie van het 5mm 80% transparant opaal plexiglas paneel gefreesd en ben ik aan het oefenen om daar een zo egaal mogelijke verflaag op te krijgen met verf uit een spuitbus en moeten daarna de paneel teksten nog gegraveerd worden. Er zal nog wel een tweede versie volgen want dit prototype is wat bekrast na het afschuren van de eerste verflaag die niet naar m’n zin was.

Advertisements

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 )

w

Connecting to %s