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.
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.
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.
It then decodes the manchested coded message that follows.
An extended Squitter looks like this.
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;