My ADSB Receiver Box – Temperature Sensors – Upgrade 2

The ADSB receiver OS image that I use provides several performance graphs including the CPU temperature. For receivers installed on a remote location that is maybe not enough to monitor what’s going on inside and outside the box. For that reason I decided to install additional temperature sensors in my ADSB receiver box. My choice was the the Dallas DS1820 1-wire temperature sensor. It’s easy to interface to an Raspberry Pi and the kernel comes already with drivers. Perfect for that purpose.

This upgrade is divided into two steps: 1. Connect the DS1820 to the Raspberry Pi and configure the kernel drivers – 2. Reconfiguring the collectd service and the shell script that is creating the performance graph so that the additional temperatures will be logged and plotted as well.

DS1820 sensors measuring inner and outer box temperature

Continue reading

My ADSB Receiver Box – GPS Precision Time – Upgrade 1

Here is a first upgrade for my ADSB receiver box – GPS precision time. The MLAT position calculation for aircrafts depends on a precise time. While there is already a time synchronization between MLAT receivers in a specific area it is also possible to add a precise time source to improve the calculation result. A GPS receiver is such source when equipped with a PPS (pulse per second) output. The PPS is a signal with a width of less than one second and a sharply rising or abruptly falling edge that accurately repeats once per second with low jitter. The GPS time and PPS signal  are then used to sync the internal ntp time service and keep a low offset and jitter.

Adafruit GPS Breakout v3 connected to Raspberry Pi

Continue reading

1.2GHz FPV Receiver customized control

In a previous post I described how to control the internal tuner module of a common 1.2GHz FPV receiver by a PC.

Since this setup was only for general tests I put some more efforts and put an AVR tiny44 in control.

On a 4 channel receiver I removed the original micro-controller and replace it by a AVR tiny44, running on internal 8MHz oscillator.
The tiny44 takes inputs from the 4 DIP switches and controls the tuner by I2C and the LED.

Attached to this post is the source code for the tiny44, written for WinAVR compiler.

With this code you have the following functionality:

DIP1 DIP2 DIP3 DIP4 Function
ON OFF OFF OFF Favorite frequency 1, default 1240MHz
OFF ON OFF OFF Favorite frequency 2, default 1280MHz
ON ON OFF OFF Favorite frequency 3, default 1276MHz
OFF OFF ON short OFF Manual tune, 1MHz up
OFF OFF OFF ON short Manual tune, 1MHz down
OFF OFF ON long OFF Auto tune, 1MHz up every 100ms
OFF OFF OFF ON long Auto tune, 1MHz down every 100ms

For DIP3 and DIP4 a long press will be >1 second.

The frequency set using DIP3 and DIP4 will be stored in EEPROM 5 seconds after last tuning action (DIP switch used).
After power cycle this frequency will be the start for new tuning.

Frequency range for manual/auto tuning is 850MHz to 2200MHz in 1MHz steps.

Wiring is given in the source code, header of main.c.

FPV Receiver Control
FPV Receiver Control
Version: 1.0
13.8 KB

Controlling a FPV receiver tuner module

Ok Dan, here you go. 😉

A short summary of my attempts to control the tuner modules of widely spread 1.3GHz FPV receivers.

The description covers the receivers coming with two sets shown below:

1.3 GHz Wireless AV Receiver

The first one is a 23 channel receiver, the second a 4 channel only.

Both receivers are equipped with the same tuner module which uses a TA1322FN down converter. The tuner module is driven by a micro-controller via I2C bus. Details about the internal I2C bus protocol can be found in the TA1322FN datasheet.

The tuner module is set by a single 4 byte data frame in both receivers.
The following is an example from the 4 channel receiver setting the receiving frequency to 1080Mhz:

Data frame send to tuner: 0xC2 0x30 0xBC 0x8E

Split up in accordance with the datasheet:

ADDR   1   1   0   0   0   0   1   0   = 0xC2
                          MA1 MA0 R/W
DIV1   0   0   1   1   0   0   0   0   = 0x30
          N14 N13 N12 N11 N10 N09 N08
DIV2   1   0   1   1   1   1   0   0   = 0xBC
      N07 N06 N05 N04 N03 N02 N01 N00
CTRL   1   0   0   0   1   1   1   0   = 0x8E
           CP  T1  T0 TS2 TS1 TS0  OS

ADDR = tuner module I2C address
DIV1 & DIV2 = PLL divider
CTRL = PLL control byte

Band switch byte is not send and therefore not used.
From the control byte the PLL is set to:
– 50uA charge pump current
– normal operation mode & charge pump on
– reference divider 1/64 resulting in 62.5 KHz reference frequency

The divider is set to 12476. With the following math it’s possible to calculate the reception frequency:
fosc = 2 x fr x divider = 2 x 62.5 KHz x 12476 = 1559.5 MHz

To high? No, you must subtract the 1. IF with 480 MHz, so 1559.5 MHz – 480 MHz = 1079.5 MHz

The 23channel receiver uses a slightly different data frame 0xC2 0x30 0xC8 0x8E which results in a reception frequency of 1081 MHz.

For my tests I used a USB-I2C interface. The USB-ISS from is very handy for this purpose and supports not only I2C but also other bus types.

VS2010 Source code for PC based MFC program is attached to this post. The program will just let you set the reception frequency in a range from 850 MHz to 2200 MHz.

FPV Receiver tuner control
FPV Receiver tuner control
Version: 1.0
207.6 KB