Maker Pro
Maker Pro

AOCJY2 10 MHz OCXO time source

I just found out the voltage reference pin on the OCXO is for the trimpot supply so it has a stable voltage reference for the control voltage, now its so stable I can adjust it to within 1mV, much more stable than the 3.3V LM1084 which is already pretty good!
1mV on the control pin is about 0.42 PPB, now if only the internet were that stable so I could get a precise time reference.
 
Last edited:
Work has started on time machine v2, I just cut, stripped, bent and inserted 32 custom length jumper wires for the register buses from the counters to the shift registers
Time v2.jpg
 
I had a sudden realization as I woke up today, the shift registers wont load the second byte of each 16bit counter because the load pin doesn't get cycled, luckily I always get a spare of each component and all it takes is an AND gate on each flip-flop to fix it which means 1 more IC which I barely have room for!

Revised circuit: https://tinyurl.com/y4cdoxhx
 
Unfortunately it couldn't stay so neat and tidy, it pretty much works but the counter outputs need some pull-down resistors because they're 3-state and the CMOS inputs of the shift registers don't like the gradual discharge on the inputs.
Time v2 2.jpg
 
Couldn't you just enable the outputs permanently?
Actually you just got me thinking, I could replace the register selection inverters with a flip-flop which would keep at least one active at all times and switch between them but I think it's one of the shift register inputs remaining high that causes its output to end up in the high state for a short period till the input discharges which depends on the state of the bit of course and its this which blocks the succeeding shift register outputs. The counter outputs would have to be low to stop this happening which I can't do.
I don't know why the shift register ends up outputting the state of an input when it should end up on the state of the SER input, maybe it's a timing issue? The more I think about it I'd rather just use the humble pull-down resistor approach.
 
So I decided to dump the 10:1 decade counter frequency divider for the serial clock and try it at 10MHz at which I thought it would be a jumbled mess but actually it works just fine at 10MHz according to my scope but as my serial adapter is 12Mbps its clock doesn't divide well into 10 so... I happen to have a 16MHz oscillator and a spare flip-flop so I used that to halve it to 8MHz and while I haven't got the resistors yet I can get an accurate reading of the data it does spit out over the serial interface...yay! I just had to reverse the bit order using a lookup table in C# which is no big deal.
The only minor niggle at this frequency that bugs me even though it seems to be reading fine is the start bit seems to be varying in length slightly, probably because the serial input doesn't quite align with the clock but I'm not sure so I'll just try putting the serial input through a flip-flop so its in sync with the clock. I got some single flip-flops in SOT-23 packages which I can solder to 6 pin DIP adapters which I have room for on the left as seen in the last picture. I also got a 12MHz oscillator to see if it works at the full speed of my serial interface... speeed!
 
It's working perfectly with the pull-down resistors, it responds with all 64 bits of data in just 10μs at 8MHz! The only thing holding it back is the latency of the USB serial interface, most of the time it responds with the data in about 1.1ms but it often returns in 0.12-0.15 ms, low response time is half the reason why I built it using pure logic.
It just barely fits in with this collection time.
Time data.png
The sharp downward spikes in green is the delay between the end of the byte transmission and the stop bit rising, it doesn't seem to be a problem.
 
I'm trying to measure with my scope exactly how much adjustment the 10MHz VCOCXO has using a 100ms trigger delay and a 200ns collection time...
The adjustment range is about 860ns/s in the range of 1-2 volts on the control voltage pin.
The datasheet states the frequency pull range is +-0.7ppm (1400ppb total?) but assuming 1ppb is 1ns/s I have a total range (0-3.3v) of about 2838ns/s which is double the stated range?
So going with my measurement, If I want to compensate for a drift of about +1ms per day I need to decrease the control voltage by 1 / (0.00000086 * 86400) = 13.45mv.
 
In my quest to find a more precise control voltage source than a trimpot I found the TI DAC8830 16bit single ended DAC which has a reference input so I can use the 2.8V reference from the VCOCXO as full scale which makes it super stable.
It has a high output impedance so I'm still using the OPA197 as a buffer and I'm using a Picaxe 08M2 as an interface so I can set the control voltage level over serial from my PC and save it to the Picaxes EEPROM so it gets restored if it looses power.
The 16bit resolution gives me a control voltage granularity of about 2.8 / 65536 = 42.7μV which is way beyond what I can measure with my scope, its only 8 bit but with averaging and a touch of background noise it can measure DC with a 1mV resolution.
 
I designed a PCB for the oscillator, PICAXE, DAC, op-amp and regulators, for this I used an OPA388 "zero-drift" op-amp which has extremely low offset and drift, perfect for this application. I also added a few SMA connectors so I can get a secure connection to my oscilloscope to verify the oscillator output, reference voltage and control voltage.
There's a REG101 5v linear regulator in an SOT-23 package on the bottom side for the PICAXE, DAC8830 and OPA388 as they only draw a few milliamps. For the 3.3v supply to the oscillator I'm using a TPSM84203 DC-DC converter which has a greater than 90% efficiency in a package the size and shape of a TO-220, a linear regulator here would likely need a heatsink whereas the DC-DC converter operates cool even right next to the OCXO.
Its a 4 layer PCB and I'm using both inner layers as ground planes, I found a German PCB manufacturer called Aisler who made 3 of my PCB (minimum order) for €11.17 and the boards are excellent quality!
One minor mistake I made was the order of the pins on the TRS jack for the PICAXE serial connection, you would think the pins are in the same order as the connector that goes into it but the tip and ring pins are not in the same order physically which connected the PICAXE serial in from the cable to ground on the board and vice versa, luckily nothing was harmed and I managed to put together some audio connectors to reverse the connections.
The precision and stability of the control voltage is beyond what I can measure with my scope.
IMG_20220216_082247.jpg IMG_20220216_082519.jpg

Oh and it has 3 pins for power in and 10MHz out so I can stick it into the breadboard.
 
Last edited:
Top