Aug 03

Build a 10MHz Rubidium Frequency Standard and Signal Distribution Amp for my Lab

Having gotten myself a Rubidium Frequency Standard I found that the unit on its own is not that useful, its really just a component and needs really a supporting PSU and a decent enclosure to make it useful. I was searching around for something suitable when I was directed to a robust quality unit being sold on e-bay for just £20 with an unbelievable level of re-usable content and turned out to be an almost perfect solution to making the Rubidium Standard a useful Lab item. Rarely does such a fine marriage of junk bits come together to make something really useful.

I had a lot to cover, the whole thing was built in an afternoon and as a result this is a long video at 1 hour 16 mins so be prepared…

The PIC Micro-controller – PIC12F675
The original plan was to use the PIC for three functions, the first was to make the power LED flash while the RFS was warming up and on solid when locked. The second was to generate a 1 PPS signal from the 10Mhz signal and the third was to generate a PWM signal to control the fan speed. As it turns out the RFS already has a 1 PPS output on Pin 6 of the DB9 connector so there was no need for this. It also transpired that the only fan I had to hand was a three wire fixed speed fan, so I also did not need the PWM signal, this left me with just the power LED to deal with which is what the PIC ended up controlling. Here is the schematic for the PIC and the source code.

#include <xc.h>

// Using MPLAB-X and the XC8 compiler, both are free from I am using this on OSX (Mac) and with an ICD3 for programming.

// PIC12F675 Configuration Bit Settings

#pragma config FOSC = INTRCIO   // Oscillator Selection bits (Internal oscillator: GPIO on GP4/GP5)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF      // Power-Up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF      // GP3/MCLR pin function select (GP3/MCLR pin function is digital I/O, MCLR internally tied to VDD)
#pragma config BOREN = OFF      // Brown-out Detect Enable bit (BOD disabled)
#pragma config CP = OFF         // Code Protection bit (Program Memory code protection is disabled)
#pragma config CPD = OFF        // Data Code Protection bit (Data memory code protection is disabled)

//   2 = RBS_RDY (GPIO5)

// We are running the chip at 4Mhz
#define XTAL_FREQ 4000000

#define RBS_RDY GPIObits.GPIO5
#define POWER_LED GPIObits.GPIO2

void main(void)
    ADCON0bits.ADON = 0;    // Turn off the ADC
    ANSELbits.ANS = 0;      // Make all inputs digital
    VRCON = 0;              // Turn off the internal voltage reference
    CMCON - 0x7;            // Turn off the comparator

    // Set up our I/O pins
    TRISIObits.TRISIO2 = 0; // Make GPIO2 an output
    TRISIObits.TRISIO5 = 1; // Make GPIO5 an input

        if(RBS_RDY == 0)
            POWER_LED = 1;
            if(POWER_LED == 0)
                POWER_LED = 1;
                POWER_LED = 0;

The Video Amp – Extron ADA 6 300MX HV
The video amp unit I used in this hack is made by Extron and the model number (on the front panel) is ADA 6 300MX HV. When I communicated with the seller, he said he had about 30 of them, so if this is useful to you and you want to make your own I would go grab yourself one before they are gone. The basic outline schematic for an input channel is here:

The video op amp chip used in this unit is a CLC409, the data sheet is here.

The heat sink I have ordered can be found on e-bay, search for “150x25x60mm Aluminum Heat Sink for LED”.

The switch mode PSU I used can also be found on e-bay, search for “Enclosed Power Supply SMPS,15V,2.4A,36W, it is made by TDK-Lambda and the part number is LS35-15”

See you next time.

If you found this post useful or interesting, please consider giving me a tib.
Tibs are pocket-change for the internet™.