OBSOLETE! Please check the new development for the FPGA based decoder.
Currently there are just 3 full component kits available, so react quick if you want to get one of these last.![]() PICADSB
Version 8 (click on it to get a higher resolution top view)
|
Scope: ADS-B telegrams, as they are sent from aircrafts on 1090MHz, are widely used as source for a passive radar system. While in the past the few commercial units that were on the market appeared quite expensive, Andy presented here a receiver which has a quite reasonable price and also a very good performance. The receiver's output, which actually is a signal level indication of 10MHz bandwidth around 1090MHz, requires a decoder which transfers the telegrams into a format that can be understood by common MMI software, such as COAA PlanePlotter. There are mainly two decoders known, an ATMEL based decoder solution and the PIC 18F2550 solution by Bertrand Velle, which I choose as basis simply because I have a very handsome PICKit-2 programmer. I also added an RS232 to USB converter in order to interface easier to all PCs, to connect several units to one PC, to provide power and, as it developped over time, also to increase the data rate by a significant factor. |

Schematic: (click on the image to get PDF)
Here you can get the PICADSB8 schematic (PDF)Description:
Basically this is the decoder circuit as introduced by Bertrand Velle with some extensions.
Serial Interface:| Jumper JP9 | 1-2 | 2-3 |
| Serial Control | Standard RS232 (MAX232) | Serial over USB |
| Jumper JP22 | 1-2 | removed |
| Power from USB | powered from USB | external 5V supply (using connector X1) |
In the current design, and as the kits with pre-soldered FT232 are delivered, the power to the PIC is always on. In case that you do not like this but have the power applied just after enumeration, download the tool from FTDI's web page and reconfigure your FT232 to get permission for 250mA right and switch on power after getting permission from the PC.
Input connector JP1
To make clear how the input connector JP1 is wired.
| JP1 Pin | Function | miniADSB suggested color |
| 1 | +5V (use 47R as Rfuse) | red |
| 2 | GND | black |
| 3 | analog input | blue |
| 4 | GND | leave free |
| 5 | RSSI input | leave free |
PICADSB7/PICADSB8: The board also includes a
comparator circuit around IC30. The reference
is built through a low pass filter 470k/56pF. With this, the comparator
level is aligned upwards when strong signals are received.
The input signal must be shifted below the comparator level, which is
done using the poti R7 and resistor R6. Adjust this for highest
sensitivty, means a maximum telegram rate at all.
PICADSB9: With the
experience of the two versions we found that the comparator's reference
doesn't raise quickly enough at strong signals. The combination of
D31/R33 now does this much quicker, and so does R31 discharge with
around 10 times longer time constant. Additionally the biasing is done
in a different way now, removing the DC part from the input signal with
C12 and re-biasing below the comparator's reference level through an
adjustable DC voltage. This will keep the amplitude of weak signals
unchanged!
This is also close to the improvement suggestion for ADS-B reception
which is telling to set the comparator level to the top signal level
minus 6dB. More about this further down on this webpage.
I regularily see planes in a distance of 220nm with this decoder, and
do not have a doughnut effect for the planes passing by for the local
Munich airport (and if I say close, they are at around 2nm
distance).
| Solder bridge SJ1/SJ2 | SJ1 | SJ2 |
| Analog to digital conversion | analog
input local AD converter (as for miniADSB receiver) |
digital
input external AD converter |
Place plan and bill of materials: (click on the image to get PDF)
The new PICADSB8 board has some minor cosmetic changes:
PICADSB8 top components![]() |
PICADSB8 bottom components![]() |
PICADSB9 top components![]() |
PICADSB9 bottom components![]() |
| Basic
parts - always needed R1 R2 10k R3 R9 680R (2)(4) R4 FUSE or 33R C1 C2 22p C10 100n (4) C11 47µF (5) C7 47n (5) D1 1N4148 D2 LED 3mm blue D3 LED 3mm green IC1 PIC 18F2550 Q1 Crystal 16MHz JP1 5 or 3 pin header JP2 6 pin header (1) JP5 2 pin header (1) JP8 4 pin header (1) JP9 JP3 3 pin header S1A S1B S1C 2 pin header (1) may be ommited if not used (2) see extra note about resistors used at LEDs below (4) SMD 0805 for PICADSB8/9 (5) Some users reported problems if this capacitor is equipped Important Note: On PICADSB7, you have to solder two resistors 10kOhm to the bottom of the PCB! (see below) |
Parts that are needed if using
RxControl alarm function R5 560R (2)(4) C9 47n C8 2µ2 D3 LED 3mm red IC4 NE555 Parts that are needed for USB interface R20 R21 R25 680R (2)(4) R22 10k (3) R23 1k (3) C20 C22 100n (4) C21 10n D20 D21 LED 3mm yellow D22 LED 3mm green IC5 FT232RL T20 BC558 (3) J20 USB female Type B JP22 2 pin header or bridge (3) Parts that are needed for standard RS232 interface C3 C4 C5 C6 10µ IC2 MAX232 SV3 10pin 2row pin header (3) only used if power over USB is used |
Parts that are
needed if using the LM311/MAX942 analog to digital converter PICADSB7/8 components: R6 4k7 R31 470k R32 820R R7 4k7 spindle trimmer C31 100n (4) C32 56p IC30 LM311N IC3 MAX942 PICADSB9 components: R6 4k7 R7 4k7 spindle trimmer R31 47k R32 820R R33 4k7 R34 470k C12 100n (4) C31 100n (4) C32 82p D31 1N4148 IC30 LM311N Hint: From PICADSB8 on, I also provide a 3 pin cable free of extra charges. Swap the black and the brown cable before mounting! The spring in the connector can be released with a sharp knive easily. Then the colors are: Red = +5V Black = GND Brown = Signal |
![]() PICADSB7 PCB top |
![]() PICADSB7 PCB bottom with FT232 |
![]() FT232 soldered to bottom |
see at top, middle
(click on the picture for larger version)If you are using the standard serial interface with MAX232, setting up the connection to the PC is pretty common and shall not cause any problems.
In case that you decided to use the Serial over USB, the operating system will probably ask you to install an USB driver when connecting the unit for the first time. You will find the on FTDI's web page here. After you have installed the driver, open the device manager and check which COM port became assigned to the new unit. That is the number you have to use in your MMI application.
There are 6 LEDs on the board:| LED name | suggested color | meaning |
| D22 | green | USB is plugged |
| D21 | yellow | blinks when data are transmitted from PICADSB to PC via USB |
| D20 | yellow | blinks when PICADSB receives data from PC |
| D3 | green | ON when PC has enumerated (recognized) the USB port |
| D7 | red | alarm LED |
| D2 | blue | SYNC LED: flashes whenever a telegram start was received and is beeing processed |

In case that you connect the unit for the first time, for testing purposes, open a simple terminal application to the COM port that PICADSB uses. (Most users have Hyperterm (which cannot handle 1MBit) available, but there are also Teraterm or Putty).
Jumper S1C selects the serial interface parameters:
| Jumper S1C | removed | 1-2 |
| Serial Interface | 115kBit, 8Bits 1 Stopbit, no parity, no handshake | 1MBit, 8Bits 1 Stopbit, no parity, no handshake |
The RxControl software supports several data formats. The AVR raw format (Type
"3") is are just a hexdump
of the received frame. With this format the decimal conversion of the
received data is done in the MMI software, for example PlanePlotter. On the terminal, it looks like
*8D484395990052B2E80B027D687F;
*8D3C65039990FB9E286404A0043E;
*8D4BAA499945161668800268C26E;
*8D3C662B903D006914A84A707D6A;
*A028023C2010C231595820AA9001;
In case that you want to see the messages in the RxControl clear text decoded format (Type "1"), you have to enter your own coordinats in HEX format to the PIC. Here is how you convert your location into hex:
| Format | Longitude | Latitude |
| DD MM SS | 48° 21' 56" | 11° 28' 42" |
| divide seconds by 0.06 | 56 / 0.06 = 933 | 42 / 0.06 = 700 |
| DD MM.MMM | 48° 21.933' | E 011° 28.700' |
| remove comma | 004821933 | 001128700 |
| convert to hex | 0x004993AD | 0x001138FC |
Now, in the terminal application, press 'P' button (capital
letter!) and enter
the LON and LAT values from these hex values.
Then you will get an output like this:
+,0,17,3C1193,,,1,49.222290,11.221088,20700,,,,,,;
+,0,17,4BAA4B,,,1,47.995777,12.357646,34975,,,,,,;
+,0,17,40600E,,,,,,,,-64,333,-249,,;
+,0,17,3C4984,,,1,48.425453,11.477677,8850,,,,,,;
+,12,17,40600E,,,1,48.533550,11.472689,35025,,,,,,;
+,0,20,300096,,,,,,4525,,,,,,;
+,15,17,40600E,,,,,,,,-64,333,-249,,;
+,10,17,4BAA49,,,,,,,,0,-278,183,,;
What is so
special with your AD converter?
The AD converter is using a very short time constant in order to create
the comparator's reference and herewith somewhat aligns to the signal
strength, strong signals will be decoded as well as weak signals. I
live in the approach path to Munich airport's runway 28L and some
planes are even flying over my house. These are decoded as well as
planes up to a distance of 200nm. There is no doughnut effect.
How can I
distribute processing load in the best way?
The RxControl software does not receive and decode in parallel due to
processing power. Let Planeplotter do the decimal conversion, use the
AVR raw format (format '3').


Click on the pictures for higher resolution (drawing from orignal web
page, in order to copy before it disappears there)
A final note for manufacturing: Take a long wire and put markers for
the
sections on it: 136mm -> 65.5mm -> 205mm -> 65.5mm
-> 190mm.
Then first
roll the inductors (1.5 turns onto a 9.5mm drill) and second do the
90° bends in order to get it straight.
Note: Add a
10kOhm SMD across the input if you are using such an antenna which is
not
grounded in order to prevent ESD descruction of the SAW and the first
amplifier!
Another good antenna, which is easy to build (you may leave away the loop with acceptable degradation) can be found on Edward's page.
Which connectors and which cable shall I take for the antenna?![]() |
This shows how I modified the PICADSB9 PCB in a semi-perfect way: R31 is replaced by a standard 47k resistor, the 1N4148 diode is soldered just over it, between the cathode of the diode and R31 there is a small SMD 0805 4k7 recovered from miniADSB because I only install the one between Pin 7 and Pin 8 and ommit the pullup and protection resistor there. Besides the SMD resistors, you can also see the PCB trace cut off that leads from the poti's wiper to Pin3 of the comparator. |