GPSDO YT 10 Mhz Lcd 2x16 With LED, UTC Time and GPS Localisation.




Introduction: GPSDO YT 10 Mhz Lcd 2x16 With LED, UTC Time and GPS Localisation.

About: Hi, i'm electronic technician but it's my hobby too. I like to do and try many projects just for fun :)

October 13 2020 , Last version is 1.56 Available at step 11

Hi guys,

What is a GPSDO ? GPSDO means: GPS disciplined oscillator. GPS for global positioning system. All GPS satellites are equipped with synchronized atomic clock. GPS module receives these signals from several satellites. And by triangulation, it knows his location. But here, what interests us is the pulse per second that is found on the module. With this precise pulse (from atomic clock), we can do a very very accurate oscillator. What for ? For reference, for calibration of frequency counter or just for fun to have one in his lab.

For more explanation on how calibration is working. Go to my first instructable just here:

So i did a frequency generator of 10.000000000 Mhz +- 0.000000001 Mhz or 1ppb on 10Mhz

PS: I had some questions about how i know that the speed is accurate. The answer is quite simple. If you read 10,000,000.000 it's because you have 10,000,000.000 Mhz It's 10 billion count on 1000 seconds. It's a frequency counter AND a gpsdo at same time. If you have different result, probably your reference (pps) isn't accurate. Not enough satellite, weak signal. Can be power supply problem too. OCXO itself take 600ma.

That's said, the accuracy of this device is 10mhz + or - 0.001hz OR +-1x10e-10

Let's begin

Step 1: Here Is the Schematic

I improved schematic. I added a pot for the 12v version. Like that almost any 7404 or 7414 are working.

And i added LED support. Optional as well.

Basic projet could be only the uC atmega without LCD and LED. Or only LED without LCD. Output will be the same. But add some monitoring device is more fun :)

Also, like you will see on step 23. I have now added a serial output for monitoring if you do not have a display.

You can download original schematic by clicking on it. And clicking on the arrow at bottom left (download original).

Step 2: Some Parts You Will Need: GPS Module

GPS module. You can buy a cheap one.... any will do. It was i thinking at first. But now by experience, you can have better result with a m8n for this reason:

Attention: Ublox neo 6m can receive US satellite only. Neo m8n can receive US and Russia, and have more satellite.

You see an exemple here at 3:22

More you have satellite, more accurate is the pulse. At the beginning i thought that just with 3 or 4 was ok. Yes it's working and we have a pulse. But this one is not as precise.

I have 2 gpsdo. One with simple ocxo on neo 6m and another with a double on neo m8n.

My simple ocxo was a bit less accurate of my double. Worst result i saw was 9.985 And I did a test.

I used the m8n pulse for my simple ocxo gpsdo. Problem disappeared.

If we read on wikipedia here, Error sources and analysis, we can see, gps can have error.

If you have some difficulties with the result, gps module and antenna is probably the problem.

You will need to find where is the pulse is. When a led is on the device. Best thing to do is to put a wire from the led to the 7404 input. Or now on eBay i saw some available with on board GPS pulse output.

You need to configure the module to have to have 1 pps (pulse per second) when gps is locked (3-4 sat or more) and 0 pps when antenna or signal is missing.

If you buy a ublox neo 6m. It's by default.

Interesting information:

On a ublox m8n, you can choose an output of 10mhz. So why doing a gpsdo when i could have 10mhz directly of a gps module ? It's because ublox module is using speed of 48 Mhz and this is creating jitter at the output. 48Mhz isn't dividable by 10. This is an exemple at 1 Mhz. At 10 Mhz it's worst and very ugly.

Yellow is a 10mhz reference gpsdo divided by 10. Trigger is channal 1 (yellow).
Blue is the timepulse output 1mhz 50% duty of a ublox m8n.

As you can read in Timing Consideration book page 10-11, it's because Ublox is using a speed of 48 mhz. And this one isn't dividing by 10. So, at the end the software is doing a correction.

In addition, after some test and experience with pll gpsdo, the pll was sticking on a moving waveform. Resulting by a moving instant frequency. It wasn't too bad when the reference frequency was at 10 Khz but it was easy visible.
In other word, waveform was moving back and forth a bit. And this wasn't just the ublox jitter problem. It's the pll itself doing his correction to keep the right frequency. But it was always following the reference. So in average, on long term, pll gpsdo is very accurate. But if we measure the instant frequency, this one can be higher or lower a bit.

It was also slower to have a sticky waveform. I have finally choose to do an over time uC pwm gpsdo instead.

Another way would have been to make a pll gpsdo and add a uC but only as a frequency counter.

Step 3: OCXO

Oscillator OCXO. Simple or double, 5v or 12, sine or square will do.

On my side i tried the Isotemp square 5v et the C-Mac sinewave 12v and both are working fine.

OCXO take around 600ma alone. So be sure to have a good power supply (transformer).

Step 4: LCD 2x16

LCD is optional. If you install one. Only pin 1 to 14 is needed. For pin 15 and 16 (backlight),I installed a diode and wire exactly like picture. This one dim the backlight a bit. You can also connect pin 15 directly on Vcc without any problem but double check on back near pin 15 if a resistor is already installed on your lcd.

Step 5: Those for Gps Module

This cable is:

High Frequency Coaxial Connective Cable Cord RP-SMA Female Connector IPX

and antenna:

28dB LNA Gain 1575.42MHz RP-SMA Male GPS Active Antenna Stronger Signal

Exemple here on and here

I do not recommend to use the antenna receive with the gps module.

Step 6: PCB

For PCB i used the toner transfer method. Not perfect but ok for this project. I'll give you PCB to print at next step.

Step 7:

Here is the file you will need to do the PCB. Top one is mirror for toner transfer method. I also added the gerber files if you want to use a professional way.


Step 8: Check Voltage

Before to add atmega and 7404, voltage must be checked.

I know my heat-sink is HUGE but i'm using what i have :) An old pc heatsink

You don't need to install both connectors to program the atmega. Choose 6 or 10 pins. It depend of your programmer.

Step 9: LED Board

I did a board for the LED. At the end i glued the transistors on the metal box.

I'll give you pcb file on next step.

I suggest these flat cable. If by mistake you plug the cable upside down, no worry. everything will be fine. Just no LED will turn on. That's all.

Step 10: LED Board Files

The files for the little board

Step 11: Program Your ATMEGA and Below Here Is the .HEX File and Now, Source Code.

This is an easy part but a lot of poeple fear or hate to program a uC. I'll try to do it simple.

You need an Atmega328p and the .hex file below. You must also choose the right fuses bits.(E0 D9 FF)

Those fuse bits are programmed automatically on USBasp and tiny. no worry.

They are many way to do that:


-USBasp (see next step)

-USBtiny (see next step)

-Arduino to program another atmega328p (search on internet, many how to availble)

Myself, i'm using a stk500 with ISP directly in Atmel studio. You can use any other method. A lot of cheap programmer are available on ebay. Next step show an ease alternative.

You must choose the right fuse bit. Here is Picture of stk500 fuses bits. (E0 D9 FF)

-Be sure that external oscillator is selected and the low.ckdiv8 clock is unchecked. See picture. Pay attention, when the external clock fuses bit, you must provide an external clock to program or run the code. In other words, connect the Oscillator in xtal1 pin.

So for short, send the gpsdo.hex file to the Atmega328p and program the fuses bits. (E0 D9 FF)

If you have a stk500, there are many chance that you already know how to program a .hex directly.

Version change:

-Version 1.5 i added some code to always start counting at same time after the pulse. Like that, i dont have any pulse arriving in timer overflow sub routine.
This correct an intermittent problem where between 10,000,000.006 or so were displayed. The count was wrong.

Now the device is much more stable. In fact, it never go higher or lower than .001

In fact, if this happen, suspect your gps time pulse or temperature change too fast.

-I also change. When you turn off and on the device, if a config is found, it will at phase 4. Some time the drift is to far to go in running mode directly.

-Version 1.51 i added some routine to track when the pwm overflow. In other word, when pwm arrive to 0v or 5v. Unreachable Frequency message will be display if your OCXO isn't compatible. Some OCXO have input 0-8v instead 0-5v. In this case you will need to add an op-amp to match the OCXO. See here you will find a schematic. If your ocxo have less than 0-5v, you can try tension divider to match your OCXO.

-Add pwm value and 16 last know frequency when pus button is pressed. Value are from newer to older. Exemple: 00FF0000010000001. Last frequency was .000 before that was .999 and so on.

-Also enhanced the frequency finding algorithm. Arrive to run mode faster than before. Now if for exemple at phase 4 you find 2000000006. Instead to drop of 0.4 hertz at each of 200s until reach 0, i multiply the difference (here 6) by the know step of 200s. ie 1/(200x152,59uv) = 32.77 So i remove 32x6 directly from pwm to target 2000000000 directly. Doing this for phase 3,4,5 (no phase 6 anymore). But if the difference is only 1. I kept the 0.4 change.

-Also remove phase 6, yes a 15 minutes less. In fact phase 6 is now phase 5. With the new finding algorithm no need to do a step of 900s anymore. We pass directly to 1000s. Now often in run mode < 1 hour.

-Version 1.52 Some users had no good results with the new algorithm. This one was suppose to be more quicker and it is. But if your ocxo isn't moving 2hz/Volt this can be a problem. So i did 2 algorithms in one. To have the classic version and quick.

For Classic, adding a jumper to have pb5 to gnd. I programmed pb4 to 0 so just add jumper between pb4 and pb5 see picture (blue jumper)

Also, one user is using an old gps module running at 4800 baud. For him just add the red jumper will change the Baud rate to 4800 instead 9600.

Remove the averaging algorithm. After 20 good know values, an average was made and the pwm was programmed with this new number.. The goal was to have better accuracy in a long run. But after many reading of results, this was more a problem than a good thing. Often after this pwm change, the frequency was plus or minus 2 instead of 0. I have better result without this.

-Version 1.53

-Enhanced anti bouncing on push button. Fix when lost and signal reapers display problem. Add led display on startup

-Version 1.54

-Counting LED is now blinking when counting. Led toggle at each 1024 tcnt0 overflow. Led frequency is 19,07 hz. If you see the counting led steady on or off. You will know that the gpsdo is halted.

-Version 1.55

-remove phase1,2,3,4,5 and replace it by the pwm value.

-Version 1.56

Add serial data output (pin 3) 9600 8 1 to display same information of lcd 2 lines.

Source code (assembly):

Step 12: Program Your ATMEGA With Avrdude and a USBasp or USBtiny

This method is very simple and cheap. search on ebay or amazon for USBasp or USBTiny. It's between 2 and 5$.

Plug in your USBasp or USBtiny device in your computer and let Windows detect the device (it will report driver not found). If a window pops up asking to search for driver, just close it or click on Cancel.

At this point, download and run Zadig, it should detect the USBasp or USBtiny, or any libusb device that you have. Then in the selection box (see picture), choose libusb-win32 (v1.2.6.0), click on Install Driver, and wait for the installation to complete.

Check in device manager for atmel usb device = ok. No excalmation mark anymore

Download avrdude 6_3 with HEX.rar here below on this page and unzip files in a folder. You will have 5 files, see pictures.

I create a batch file to program the chip with .hex and fuses bits in same time.

Connect USBasp or USBtiny cable in gpsdo board, see picture and turn on the project.

Double click on program usbxxx.bat

At the end, code and fuse bit are programmed, again see picture (black one)

Pay attention, with new fuses bits setting, clock must be now, external.

If programmation is ok and you see happen on lcd, check for oscillation. If you use 12v option, turn the pot

until something is lit on display. Use oscilloscope to adjust duty to 50% if you have one.

Step 13: Try Your Project

Before to put all the thing in a box. Try it. Be sure that all is working fine.

Here i fixed GPS module on heat-sink. I used an old transformer 16v AC. Too large for the project but again, I'm using what i already have.

Step 14: OCXO Insulation

If you want, you can insulate the OCXO with foam. Here i used depron foam. This is optional only.

Step 15: Holes in Your Box

Prepair your box. Do hole, put some paint! For square i'm using this tool, see picture.

Here is an alternative 3d printed box. External 5v power supply.

Step 16: Time to Put All in a Box

Here i used a metal box.

Step 17: On Scope Results

Like you can see, sine wave is nice. 3,44V peak to peak. (1 volt/div)

Square wave is 2v/div

Here i'm using a 74LS04.

Step 18: Accuracy From User Experience

These images come from Dino (MAC1). I had never measured accuracy by myself with frequency counter. I was very happy to see these results.

10,000,000,000.0 Mhz +.0003 Hz and -.0006 Hz It is even more precise than I thought. My specification was + or - .001 Hz. Super happy :)

Thanks to him for these photos.

Step 19: Instruction Manual

At turn on GPSDO wait 15 minutes. It do nothing. This is for warming the OCXO and satellites reception.

If the OCXO is already hot, just push button to pass this wait time.

Now begin calibration phases. 5 phases total. 1 second, 10, 60, 200, 1000 seconds. At 1000, uC is counting 1 billions of cycles (ticks) for exactly 10,000,000.000 Mhz

As soon this 1000 seconds achieved, uC keeps the pwm value in eeprom and continu at run mode.

Run mode is the same, 1000 seconds counted. If counter reach 10,000,000.001 or 9,999,999.999 the pwm value (16 bits) is adjusted plus or minus 1 and so on.

Important, keep in mind, in all calibration phase and run mode, the display is showing the actual count or frequency. If the value isn't normal, bizarre or understandable, suspect a gps pulse problem or a low antenna signal. Problem is coming from the pulse. This one isn't arriving at the right time.

When GPSDO is in run mode, config is saved in eeprom. So if this one is turned off and on, GPSDO go directly in phase 4. But be aware. If power if off for a while. You will probably need to do a whole re-config process. Sometime even with pwm in eeprom, frequency have drifted to much. And, in run mode, the pwm is moving to slow (1/65535v) to correct the drift. In that case. Push button at power on to set to default.

If for any reason, satellites are lost or weak (below than 3), gps pulse will be lost too. So pwm value will be not changed anymore until pulse come back. OCXO will run by itself at last good eeprom value. On scope you wont see difference when pulse is there or not.

If you press button, uC will stop counting and you will see UTC time and localisation for 10 seconds.

Localisation is in Degrees and decimal minutes (DMM). This is how to enter this on google map:

46 19.81750 N 072 35.33259 W

If you want to erase the eeprom value and restart calibration, just push button and hold at startup.

Step 20: Conclusion

I hope you will enjoy this project. Questions, commentary are welcome English or French.

Step 21: More Information in Eeprom

In run mode, uC store the frequency in eeprom. You can see here about 50 hours of count. The 2 first byte is the pwm config. Here we have 864A. All byte after is all frequency counted. Each 1000s a bytes is stored.

00 is for 10,000,000.000

FF is for 9,999,999.999 or eeprom empty (at the epprom end)

01 is for 10,000,000.001

Before v1.5 i had some 02,03,04,05,06. Very intermittent. I tough it was a large drift in the frequency but in fact it was a bug in software. As you can see now, the eeprom is full of FF,00 and 01 like it should do. Very accurate.

You can see v1.4 eeprom, you can compare.

Step 22: OCXO Vfc Range.

I did a test code to know the OCXO frequency range. uC send pwm 0 and ffff and display the frequency result and restart. I know that base code can tell us unreachable frequency but you can't know exactly the range. This can help in trouble shooting.

If you try this code, it's the same fuse bit.!AnKLPDy3pII_v2E4Gr37X3LmmYp9?e...

Step 23: Since Version 1.56 TX Pin Can Now Be Connected to a Serial Port

Since version 1.56 TX pin can now be connected to a serial port. With this feature, you can see the same information on a computer. No need to install a display if you want to. But both is supported as well.

The TX is on pin 3 of atmega328. Connect this pin to the RX of your com port.

You can download putty and open a standard com port, 9600 8 1.

You can also enable the session log in putty to save the communication and see or monitor all your frequencies.

On the picture you can see the beginning of my double ocxo config. Pwm Value, gate time, number of satellite and frequencies.

Step 24: Blog From Other User

Here is some Blog link from other makers:

From Pierre (In french):

From astromeier:

Feel free to give me your link if you have did this project. I'll post this here.

Step 25: Cleaning the Harmonics

User Neunziger added a filter to clean the remining harmonics. The result is looking very good.

You can see his tip on the comment section below or here

12 People Made This Project!


  • Microcontroller Contest

    Microcontroller Contest
  • Automation Contest

    Automation Contest
  • Make it Glow Contest

    Make it Glow Contest



20 days ago


There is quite a large amount of ham radio operators using a satellite called Es'Hailsat-2, i.e., QO-100 that require a LNB to receive signals from 10GHz down to 739MHz. Although it has been done with a TCXO, instead of the regular crystal, a 25MHz GPSDO would be amazing. I shall add that 10GHZ EME (moon bouce) is another method of ham radio communication that will also benefit from a 25MHz GPSDO.

Having said that, would you consider developing a dedicated 25MHz GPSDO for those who are eagering to feed a stable 25MHz reference signal to their LNBFs?

Myself and so many others around the globe thank you in adavance for your reply, efforts, time and patience.

Kindest regards,



Reply 18 days ago

Hi, maybe it should be possible for you to use a Si5351C
This device accept 10mhz to 100mhz frequency reference and by pll can output your 25mhz (or whatever you need it's programmable).
So you could use a 10mhz reference gpsdo to this chip and you will have a precise 25 mhz.
You need to send i2c config to the chip to program the 2.5x multiplier.
A little addon box: coax in,10mhz,attiny uC, Si5351C, coax out, 25 mhz


Reply 17 days ago

What Yannick offers is very good, I have even realized it in the attached publication. As for configuring I2C I use Arduino NANO, as all three outputs of si5351 are configured for 25mhz. One for Up converter 432 > 2400, the second for Dw converter 739 > 144 and the third for LNB.
73 Rumen LZ1JH


Reply 17 days ago

Dont understand German but looks like exactly what i'm talking about.


Question 23 days ago

Hi, Yannick!
I've built the device. And, while testing, found some problems. I watch the signal of 129th harmonic on 1289.999 MHz with my Kenwood TS-2000X and Spectran. I see interference from the 1PPS with the main signal. And another one, is the birdies near the main signal from bliking "Count" led. They disappears, when it stops blinking. I suggest you to remove blinking, as it was before v.1.54.
And about 1PPS, I'll try to make some isolation. Maybe use another 74AC04 for 1PPS in order to avoid influence.
P.S. Burned Atmega with v.1.53. Only 1PPS interference remains


Answer 23 days ago

Hi Andy, thanks for your input. The 129th harmonic... is it very important ? I like the blinking effect :) Is it realy bad for the accuracy ?


Reply 22 days ago

Hi Yannick!
It is not important, which harmonic. The same picture is on the other harmonics too. But I think, that if I see some interference on harmonics, it indirectly means that something is wrong with the main signal too. I have no spectum analyser. And I think that this method may help to estimate signal quality.
Finaly, I connected 1PPS from GPS module directly to atmega pin 4. And made some changes in your v1.56 source code, to disable Count LED flashing. Sorry! I hope that I did it correctly. :)
The results are on the screenshots.
Thank You very much for your fantastic project!


Reply 21 days ago

Hi, Yannick!
Today I desided to return the device to initial state and passed 1pps thru ic1a, ic1b again.
Then I changed 1pps pulse length from default value 100mS to 10mS and interference disappeared. Now I am quite satisfied! :)


Question 7 weeks ago

Bonjour Yannick,

Une "idée" sur la raison du choix d'une consigne divergente par le logiciel. Ci-joint le log serie que je constate

Satellites = 05
Satellites = 05
Satellites = 05
Satellites = 04
Satellites = 04

0x7FFF, 1s,S=04,0010000002
0x7DDD, 1s,S=04,0010000002
0x7BBB, 1s,S=05,0010000002
0x7999, 1s,S=05,0010000002
0x7777, 1s,S=05,0010000001
0x7555, 1s,S=05,0010000001
0x7333, 1s,S=05,0010000000
0x7333, 10s,S=05,0100000004
0x7233, 10s,S=06,0100000002
0x7133, 10s,S=06,0100000001
0x7033, 10s,S=06,0100000000
0x7033, 60s,S=06,0599999998
0x710D, 60s,S=06,0600000006
0x6E7F, 60s,S=07,0599999979
0x7770, 60s,S=06,0600000073
0x585B, 60s,S=07,0599999746
0x5781, 60s,S=07,0599999736
0x5AE9, 60s,S=06,0599999790
0x4753, 60s,S=06,0599999578
0x2101, 60s,S=07,0599999278
0x0D6B, 60s,S=07,0599999092Frequence

Les fréquence correspondantes à PWM 0x710D et 0x6E7F encadre la valeur cible pourtant le logiciel choisit une valeur différente en dehors de cette plage ?

Merci d'avance.




Answer 7 weeks ago

Hi, this is where it goes bad
0x710D, 60s,S=06,0600000006
0x6E7F, 60s,S=07,0599999979

You are in quick mode probably. Have you tried in classic mode with the jumper on. check picture on step 11. Yannick

Je viens de voir que je t'ai répondu en anglais... désolé. Dépendamment de ton ocxo, des fois c'est mieux le classique que le quick. En quick, ca fait des jump de beaucoup a la fois. Pour que ca fonctionne tu dois avoir un ocxo compatible ou similaire au mien. Sinon reste en classique les sauts sont plus petits.
Exemple ici tu as 06 de plus. Pour 60 secondes les bonds sont de 109 x par le nombre de hz manquant. Donc le bond est de 06 x 109 = 654 = 0x28E
0x710D - 0x28E = 6E7F

En classique le bond pour 60 secondes est de 0x2B seulement. C'est plus long a calibrer mais, tu est sur de tombé dessus et a la fin la config est sauvé dans le eeprom de toute façon et tu ne repart pas de 0.


Reply 7 weeks ago

Thanks Yannick, this was it ! now...

Thanks for this minimalistic but great gpsdo design.
Just a question. What the use of the 0.1uF caps next to the 100uF on the VCO control voltage filtering ?

Satellites = 06
Satellites = 06
Satellites = 05
Satellites = 05

0x7FFF, 1s,S=05,0010000003
0x7DDD, 1s,S=07,0010000002
0x7BBB, 1s,S=07,0010000003
0x7999, 1s,S=07,0010000002
0x7777, 1s,S=07,0010000001
0x7555, 1s,S=07,0010000001
0x7333, 1s,S=07,0010000001
0x7111, 1s,S=07,0010000000
0x7111, 10s,S=07,0100000004
0x7011, 10s,S=07,0100000002
0x6F11, 10s,S=07,0100000000
0x6F11, 60s,S=07,0599999998
0x6F3C, 60s,S=07,0600000000
0x6F3C,1000,S=07, 9,999,999.998 Hz
0x6F3F,1000,S=06,10,000,000.007 Hz
0x6F3C,1000,S=07,10,000,000.013 Hz
0x6F39,1000,S=08,10,000,000.013 Hz



Reply 4 weeks ago

Avec un autre OCXO..; tout va bien. (Trimble 34310 12 Sine)

18:38:44.022 -> 0x9062,1000,S=09, 9,999,999.999 Hz
18:55:28.147 -> 0x9063,1000,S=09, 9,999,999.999 Hz
19:12:12.144 -> 0x9064,1000,S=09, 9,999,999.998 Hz
19:28:56.205 -> 0x906C,1000,S=09,10,000,000.000 Hz
19:45:40.145 -> 0x906C,1000,S=08,10,000,000.000 Hz
20:02:24.148 -> 0x906C,1000,S=08,10,000,000.000 Hz
20:19:08.159 -> 0x906C,1000,S=10,10,000,000.000 Hz
20:35:52.160 -> 0x906C,1000,S=09, 9,999,999.999 Hz
20:52:36.156 -> 0x906D,1000,S=09, 9,999,999.999 Hz
21:09:20.160 -> 0x906E,1000,S=07, 9,999,999.999 Hz
21:26:04.165 -> 0x906F,1000,S=09,10,000,000.000 Hz
21:42:48.164 -> 0x906F,1000,S=10, 9,999,999.999 Hz
21:59:32.166 -> 0x9070,1000,S=10,10,000,000.000 Hz

Bon mon montage est un peu olle olle... tentative de montage "manhattan". je me lance dans un pcb maison pour apprendre Kicad...



Reply 27 days ago

Bravo, oui le .1uf c'est pour du filtrage. Ca fait une petite différence que je peux déceler à l'oscilloscope. Mais si il n'est pas la ca va fonctionner quand même. Bye


4 weeks ago

I'm getting "Frequency unreachable" message . I am using a cheap oscillator CTS OSC5A1B02 with voltage control range -2...+2 V, aprox, 4V (specs attached). Is this ok , or it need to be adjusted ?


4 weeks ago

Hi Yannick ,
What should be the pwm frequency ? I measure 10 MHz in the PWM pin...
Thank you !


Reply 4 weeks ago

You can't. The output pwm pin can be measure in DC volts. A bypass capacitor is on the pin. It means there are DC level and some uV 10mhz noise from the OCXO. If you want to know the pwm frequency you must remove the capacitors and unplug the ocxo vfc pin.


Question 4 weeks ago

Hi Yannick,
I build one GPSDO using your excellent project.
But the frequency did not converge.
Can you help me with some hints?
Please see the serial capture below:

1000s gate 1.56q
No config found
Set PWM to 50%
Warming & Sat
wait 15 min
Push button
to pass
Sat locked = 11
0x7FFF, 1s,S=10,0010000002
0x7DDD, 1s,S=11,0010000002
0x7BBB, 1s,S=11,0010000002
0x7999, 1s,S=09,0010000002
0x7777, 1s,S=10,0010000002
0x7555, 1s,S=10,0010000001
0x7333, 1s,S=10,0010000001
0x7111, 1s,S=09,0010000001
0x6EEF, 1s,S=08,0010000001
0x6CCD, 1s,S=08,0010000001
0x6AAB, 1s,S=09,0010000001
0x6889, 1s,S=09,0010000001
0x6667, 1s,S=08,0010000000:)
0x6667, 10s,S=09,0100000001
0x6567, 10s,S=09,0100000002
0x6467, 10s,S=09,0100000001
0x6367, 10s,S=08,0100000000:)
0x6367, 60s,S=08,0599999999
0x639B, 60s,S=09,0600000000:)
0x6272,1000,S=10,9,999,999.994 Hz
0x62A2,1000,S=12,10,000,000.007 Hz
0x626A,1000,S=12,9,999,999.988 Hz
0x62CA,1000,S=10,10,000,000.015 Hz
0x6252,1000,S=08,9,999,999.980 Hz
0x62F2,1000,S=10,10,000,000.046 Hz
0x6182,1000,S=08,9,999,999.921 Hz
0x63FA,1000,S=10,10,000,000.094 Hz
0x610A,1000,S=09,9,999,999.889 Hz
0x6482,1000,S=09,10,000,000.129 Hz
0x687A,1000,S=08,10,000,000.404 Hz
0x6BDA,1000,S=11,10,000,000.638 Hz
0x67EA,1000,S=12,10,000,000.364 Hz
0x648A,1000,S=09,10,000,000.128 Hz
0x688A,1000,S=10,10,000,000.408 Hz
0x6BCA,1000,S=10,10,000,000.634 Hz
0x67FA,1000,S=10,10,000,000.368 Hz
0x647A,1000,S=10,10,000,000.123 Hz
0x60A2,1000,S=08,9,999,999.856 Hz
0x5D22,1000,S=10,9,999,999.612 Hz
0x5942,1000,S=12,9,999,999.339 Hz
0x55EA,1000,S=11,9,999,999.105 Hz
0x59E2,1000,S=11,9,999,999.381 Hz
0x5D3A,1000,S=10,9,999,999.614 Hz
0x594A,1000,S=11,9,999,999.338 Hz
0x55FA,1000,S=09,9,999,999.105 Hz
0x59F2,1000,S=09,9,999,999.382 Hz
0x5D42,1000,S=08,9,999,999.616 Hz
0x6142,1000,S=10,9,999,999.893 Hz
0x649A,1000,S=11,10,000,000.124 Hz
0x60BA,1000,S=12,9,999,999.852 Hz
0x5D5A,1000,S=10,9,999,999.616 Hz
0x615A,1000,S=08,9,999,999.894 Hz
0x64AA,1000,S=11,10,000,000.127 Hz
0x68B2,1000,S=09,10,000,000.403 Hz
0x6C1A,1000,S=12,10,000,000.642 Hz
0x700A,1000,S=10,10,000,000.915 Hz
0x7372,1000,S=06,10,000,001.151 Hz
0x777A,1000,S=08,10,000,001.432 Hz
0x7ABA,1000,S=07,10,000,001.659 Hz
0x76E2,1000,S=07,10,000,001.390 Hz
0x7372,1000,S=07,10,000,001.151 Hz
0x777A,1000,S=07,10,000,001.430 Hz
0x7ACA,1000,S=09,10,000,001.660 Hz
0x76EA,1000,S=08,10,000,001.392 Hz
0x736A,1000,S=08,10,000,001.148 Hz
0x6F8A,1000,S=07,10,000,000.877 Hz
0x6C22,1000,S=09,10,000,000.639 Hz


Answer 4 weeks ago

You are in quick mode. The jumps are too large for your ocxo. Try in classic mode.


Question 5 weeks ago

Hi, Yannick!
I have programmed the device with OCXO Vfc Range test code. But the message "No pulse. Self running..." appairs. What does it mean?



Answer 5 weeks ago

Hy Andy, It means the uC doesn't receive 1 pulse by second. Be sure to enter 1 pps.