I got my hands on a broken Satel OY multicode transmitter. It is an transmitter used to get information from remote sites - alarm codes, telemetry or sensor values. You can attache it to your pump or ground station and it sends a message up to 30 km if something is wrong. It puts up to 4 W of output power to VHF band 152 MHz in FSK modulation. As alarm systems go - it also had a place for backup battery.

This device is designed and produced in the end of nineties and it can be seen from the build. Old chips and packages.

The device itself is screwed in a thick aluminium box for weatherproofing, RF shielding and mechanical rigidity. Input power and signals come from DB15 connector and all go through low pass filters for protection. It has to survive the scariest test ever - the user! The brain of the thing is socketed Atmel TS87C51RB2 in a PLCC44 package. It is a device before flash memory - only single programmable!

Overview of transmitter

From RF section we don't find fancy transceiver chips. Frequency synthesise is done by temperature controller temperature oscillator in a separate metal can. Modulating multicode is generated by Motorola MC14515 PLL frequency synthesizer. Bunch of analog RF circuitry filled by RF inductors does the modulation and matching. The output is amplified by BLT50 Power amplifier that is used out datasheet frequencies. Do your own datasheet - typical for RF power stuff. They don't use air core inductors, so they lose a bit of efficiency, but since it is externally powered they don't care. Also TLC542 ADC is used to get some feedback from RF front end.

I have to match 7.799 Ω+1.3158j to 50 Ω load with PI filter at 430 MHz. My advisor's advice - use pen and paper and Smith chart. But since I'm determined not to do maths on paper ever again (we have computing machines available now) then I started to search other ways out. So I read a tutorial on Impedance Matching and The Yin-Yang of Matching, really great stuff.

Then I found program called linSmith. Runs natively on linux, but requires compiling. User interface is quite good and no user manual is needed. I just typed in working frequency and starting complex impedance. Next I put in PI filter components with approximate values. It started showing all values on Smith chart. Little bit of playing around with sliders to adjust values. After couple of minutes I had values for my filter that matched impedance well and was made out of readily available components.

Next step is testing the calculated values on real circuit board. Real board and components have parasitic elements. The final values will be determined by trial and error, but the calculators give very good starting point.

I'm building a small 430 MHz 1 W RF amplifier to get some practical knowledge about RF design. Choosing components and making the PCBs was walk in the park. But suddenly my instructor said that I have to match my amplifier with next stage. It is weird, because I thought that RF amplifier meant that output would be 50 Ω, but no, it is something totally random.

So, my amplifier TQP7M9105 has page with S parameters. S parameters are parameters that describe RF components working in a 50 Ω environment. In our case S22 is what we want. 22 mean that it is second port reflections to second port aka output information. S22 at 400 MHz is -2.73 dB 176.91 degrees. This is - connecting output directly to 50 Ω output you get attenuation of 2.73 dB and phase shift of 176.91.

To calculate complex output impedance I used scikit-rf python library, because I couldn't find any online calculators doing the same job. Input was fed from Touchstone SnP Format file type, because this was the only way I could think of to convert dB form to rectangular form:

# MHz S DB R50
400 -2.73 176.91

And code itself was:

import skrf as rf
amp = rf.Network('amp.s1p')
print amp.z

So, my amplifier output impedance @400 MHz should be 7.799Ω+1.3158j. Quick check from mismatch calculator confirmed my results. Next I used PI-match impedance matching calculator to calculate necessary values. Got some answers, probably will use other methods to check if they are correct.

So I wanted to study RF. To start with the most basic I wanted to build an oscillator. All the places were full of fancy and hard schematics. But to understand the need for good we must try the worst. The simplest and worst oscillator seems to be Schmitt trigger one. Information on in is scarce, but there is some information about it in AN-118.

The idea of circuit is that inverter with schmitt trigger input feeds into its own input through RC circuit. Frequency is dependant on selected R and C values.

I used 74HCT1G14 inverter 1 nF capacitor and 100k 25 turn trimmer. All the signals looked fine on the oscilloscope, so I started to increase the frequency to see how far can it go. Datasheet says that rise time is about 5 ns. That should get up to 100 MHz output. However I'm only able to get about 75 MHz out. The more frequency goes over 10 MHz the more the output looks like sine wave and the less like square.

But we still don't have answer why is it so bad. Signal looks okay on the oscilloscope. Time to get out "spectrum analyser". It is a DVB-T dongle with GNU radio software from computer side. Quick look on the waterfall display shows how awful the signal is. To give perspective - the whole frequency band I was targeting is 50 - 52 MHz.

Spectral response of Schmitt trigger oscillator

The part on the top where the signal is weird is part where I switched off the power.