Home
OUTDATED, Please check this link.

A Simple home made ADS-B reciever

Or How to make your own ADS-B receiver

The new project uses old analog satellite receiver tuners that have to be modified so that the AFC is disabled and the AGC usually set to maximum gain. The output is the 480MHz IF signal.
A guide on how to do this can be found here.
More info to follow ...

The code for the ATmega48 running at 20 MHz can be found here.


My first project:

Quick Overview:

This simple article describes how to demodulate an ADS-B IF signal in the 30 to 70 MHz range to a hexadecimal serial output.
The IF converter can be for example a Satellite receiver with 70 MHz IF output or a TV receiver / converter tweaked to 1090 MHz input and the IF taken after the SAW. The TV converter solution gives excellent results and the satellite receiver at 70 MHz works just as well but need a handmade filter to filter the IF down to about 5 or 6 MHz bandwidth.

Setup:

A simple "Spider" antenna for 1090 MHz with a good Satellite line amplifier like the xxx is housed in a watertight container. About 30 meters of cable link this antenna to the reciever.
The receiver is a FUBA xxx modified to run with an Lo of 1126 MHz and the PLL disabled as it does not work at this frequency. The input signal is again amplified by a xxx amplifier.
The IF is fed to the following circuit which is depicted in the two pictures below.

Circuit 1

The first BF494 amplifies the IF and the second BF494 buffers the signal which is then am demodulated. The quality of the demodulated signal can be adjusted by offsetting the bias of the BAT43 diode.
The demodulated signal passes two BC547 buffer stages to reach 50 Ohm impedance.

Circuit 2

A low pass filter removes signals above 2 MHz. The the uA733 amplifies the signal x 100.
The 74HC04 converts the signal to logic level and removes some spikes with an RC lowpass.

The magic is done in the ATmega48 running at 20 MHz. It detects the ADS-B SYNC pattern depicted below.

ADS-B Sync

It then decodes the manchested coded message that follows.

ADS-B Manchester Coding

An extended Squitter looks like this.

ADS-B Extended Squitter

Switches allow different setting to be changed on the fly:

SW1: Show errors and how many bytes decoded before error
SW2: Show only Extended Squitters of 112uSec
SW3: Show only DF17
SW4: Not used yet

Test points provide the following:

TP1: ADS-B Sync detected
TP2: Error detected
TP3: Manchester clock
TP4: Not used yet

The output at 115200 baud looks like this:

*8D393EE1905BE7D9C9601A6CCDE0;
*8D393EE120046DF6C512A0EAAECC;
*8D4B178799044328C0078D0DB45C;
*8D3C66662010C238D9482049427A;
*8D3C666658AB005AC118EF6EC4FA;
*8D393EE1905BD7D99D6037A3A865;
*8D400E5C9945289EE80CACA39F71;
*8D4B178799044328C0068EFC51CE;
*8D4B17875841843D6960934923DD;
*8D4B1787204D74B7D708209B850D;
*8D3C666658AB005AA1191A5525F6;
*8D393EE199013D9CE884002CF51D;
*8D4B17875841843D8B6093770B89;
*8D4B178799044328C0058EEE474E;
*8D4B1787584180C98D69D344DC3F;
*8D3C666658AB005A81194A133A67;
*8D4B178799044328C0068D03B9DC;
*8D393EE199013C9CC87C0041EBC5;
*8D4B178799044328C0058D11AF5C;
*8D3C666658AB005A5919753EA1A0;
*8D4B178799044328C0078D0DB45C;
*8D393EE1905B90634169DD3EE3AF;
*8D393EE199013C9CC8780079DDC5;
*8D4B1787584180CA0769C658F90A;
*8D4B178799044328E8078D266A7D;
*8D3C666658AB005A4119A476D6C9;
*8D393EE1905B87D8DD60B7F7B4C4;
*8D4B1787584180CA4569C6C9A9DA;
*8D4B178799044428E80B8D670417;
*8D3C666658AB07D01712956E69D6;
*8D393EE1905B77D8B160D675A0C3;
*8D400E5C99452D9E0808ACB10851;
*8D4B1787584180CA8D69B8C50164;
*8D3C666658AB07CFF712C47B5BB2;
*8D4B1787204D74B7D708209B850D;
*8D393EE1905B67D88560F5144CBC;
*8D393EE19901399C886400548661;
*8D4B17875841843EE5606C7CD709;
*8D3C666658AB07CFD112F013C743;
*8D4B178799044428C0078D048036;
*8D393EE1905B57D8576111E8D857;
*8D393EE19901399C6860004930B7;
*8D4B178799044428C0078D048036;
*8D4B1787584180CB1B69AB0A4DC6;


Home