Laatst bijgewerkt op : 17-Apr-2017
ADSB Project
Dit project ben ik gestart om eens iets leukts te tonen tijdens de open dagen van onze hackersspace.
Het idee was om real time ADSB signalen van vliegentuigen in de omgeving te ontvangen,
en daarvan vervolgens de relatieve positie te tonen op een oude osciloscoop.
Op die manier zou een authenthiek radar beeld mogelijk moeten zijn.

Het project is nog steeds in ontwikkeling.
Dat houdt me van de straat

Stations opbouw
Het idee was om eerst de signalen te ontvangen, hiervoor gebruik ik een rechtuit ontvangertje dat in een blikken doosje is ingebouwd.
Vervolgens gebruik ik een Arduino bordje met een 80MHz PIC32MX processor om de datastream te decoderen.
Tenslote volgt een gelijksoortig Arduino bordje met een DAC die voor de aansturing van de osciloscoop moet zorgen.




De genoemde onderdelen worden hier onder appart beschreven.

De ontvanger
De ADSB signalen worden uitgezonden op een frequentie van 1090MHz
De ontvanger die ik hiervoor gebruik is van het rechtuit type en bestaat uit een tweetal SAWTooth filters Waar tussen een lownoise amplifiers is gezet.
Tenslote volgt een AD8313 logaritmische detector waardoor aan de output direct de signalen beschikbaar zijn. Het netto resultaat is een breedbandige AM ontvanger voor de genoemde frequentie.

De schakeling was als een kit verkrijgbaar bij jetvision.de
Decoder
Voor het decoderen van de binnenkomende signalen wilde ik in eerste instantie een FPGA gebruiken.
Echter eenvoud in hardware en het idee dat het toch eigenlijk ook anders zou moeten kunnen deed mij besluiten om het toch maar eersts eens met een microcontroller te proberen. In theorie zou dat mogelijk moeten zijn.
Het voordeel is hier n.l. dat er in de uC al een analoge comperator zit evenals een instelbare referentie.
Dit ondanks dat ik zelf ook al middels een RC integrator en wat software een voltage ref had gemaakt.

Dan komt het decoderen zelf..
Eens even rekenen, de datastream van de ADSB signalen bestaan uit bitjes welke met een effectieve datarate van 1Mbit/sec worden verstuurd.
Echter, elk databit bestaat zelf weer uit twee bits waarvan de volgorde 10 dan wel 01 bepaald of het om een logisch 1 dan wel logisch 0 bitje gaat.
Hiermede is de werkelijke bitrate dus 2Mbit/sec geworden. Welnu de gebruikte processor is een MIPS processor welke op 80MHz draait en voor elke instructie 5 kloktikken nodig heeft.
Ook dit is niet helemaal waar, want en MIPS processor heeft een 5 stage pipeline en kan daardoor 5 instructies tegelijk afhandelen. Met een klokfrequentie van 80MHz en een bitstroom van 2Mbit/sec heb ik dus effectief 40 instructies de tijd om de data te decoderen.
Dat is bepaald niet veel en houdt iig in dat het gebruik van de taal C, evenals een interrupt gestuurde aanpak afvallen. Er zal dus iets van een software matige timing nodig zijn.
Al met al heeft het me een behoorlijk lange tijd gekost om e.e.a. werkend te krijgen (maar het is me wel gelukt, dat dan weer wel).
Voor allerlij controlles zoals error correctie en signaal niveau is beslist niet voldoende cpu tijd beschikbaar. Ik heb nog geprobeerd om de CPU over te clocken op 160MHz maar daar is het ding echt niet voor gemaakt, en hij werd dan ook snel warm.
Waneer het signaal ontvangen is, gebruik ik hardware seriele link om de data naar de tweede CPU te sturen.
De betrouwbaarheid van de opzet is niet erg hoog te noemen, minder dan de helft van de ontvangen signalen komt werkelijk aan.
Op zich is dat niet erg, want ze worden voortdurend herhaald, en er zowiezo regelmatig sprake van collisions (inherent aan het protocol).
Echter toen ik het decoderen alsnog met een FPGA probeerde had ik de zaak in een paar uur voor elkaar met nagenoeg 100% betrouwbaarheid.
Dat ga ik dus alsnog in de opstelling toepassen.

Hier een stukje van de MIPS assembler code voor het binnen hengelen van de data

Display processor
Een tweede Arduino met een MIPS processor krijgt via een seriele link de data binnen
en kan deze vervolgens met behulp van een door mij ontwikkeld DAC schakelingetje op een osciloscoop toveren.
Hiervoor word de scoop in X,Y,Z modus gebruikt.
Voor de DAC schakeling heb ik de hulp ingeroepen van een ervaren print ontwerper, die voor mij een printje heeft ontwikkeld.
De software werkt in demo en test modus maar er is nog veel werk om alles geregeld te krijgen.