Show by Label

Monday, May 22, 2023

New and improved GPSDO design V3

Based on my work with a very high precision and resolution reciprocal counter measuring my current GPSDO, it became apparent that I needed a much better GPSDO design to be used as the external reference clock for the counter. 

I already had ideas to upgrade my current GPSDO (Version 1, described here) a long time ago, just never got around to it.

With the required precision and accuracy for the reciprocal counter, I bit the bullet and designed a new GPSDO version 3 (I never completed V2) that should accommodate both instruments.

Several of the baby-steps I took are described in the Reciprocal Counter Blog post here, so please have a look there for more information.

GPSDO Version 3

Following are the schematics I have put together based on the work, tests and experiences so far for the Reciprocal Counter project, and my more than 2 year experience of using my current GPSDO, V1.

This is actually another prototype to put all the circuits together, but is not the final board I will use. I'll explain the next steps I want to take below. They are depending on the successful operation of this board.

Dual DAC and OCXO Circuit

[updated schematic - June-3]  After building up the PCB, I found that I needed to make some changes to some resistor values and change the Opamp U8. R17 and R18 have new values because for some reason, the sweetspot for the CTI changed from 2.4V to 2.6V with this circuit. The TL071 Opamp could not provide the full 4V output with a VCC of 4.096V, so I first changed it to another type, and to be safe, also modified the PCB to give it a VCC of 5V by connecting it to the decoupled supply available at U7 pin 2.

I'll start with the most important circuit that has the best improvements based on the earlier version of the GPSDO.

This new design uses a special dual 8-bit PWM design that I found a some time ago. I already tested it during my reciprocal counter project, and I was impressed.

Details about this circuit can be found here:

After building and testing it, I found that I needed to add a buffer at the output because the output signal strength is too weak for the following Gain setting circuit, or even just driving an OCXO adjustment input.

The other improvement is with the reference voltage circuit, powering the 74HC14's used in the dual DAC circuit. I spend quite a bit of time taming this circuit and it is a lot better than the circuit I used in the previous GPSDO version.

The output of the buffered dual DAC circuit normally ranges from 0-4.096V, with the DAC steps going from 0-65535. This results in voltage steps of 62.5 microVolt. This resolution is still too course and I use a set of resistors to reduce that further. I use a series resistor (R22) and a voltage divider created by R23 and R24. R23 and R24 are selected such that they will set the adjustment pin of the OCXO at the sweet-spot level. The series resistor R22 will reduce the effect of the DAC voltage swing from 0-4.096V to a few 100mV, in effect lowering the Volt/Step to much lower values.

In my case, using the CTI OCXO, setting the DAC to minimum results in a voltage at the adjustment pin of 2.26V, and at the maximum will result in 2.534V. So we go from a span of 0..4.096V to a span of 2.26..2.534V, or a mere 275mV. This is about a reduction of 14.5 times. This should result in about 420 picoVolt per DAC step and a Gain of 380 for the loop calculation.

Right now, by using my 6.5 digit DMM with a display of 10microVolt resolution, I can just about see these individual DAC steps.

What you see here are the individual steps and the longer term tuning of the OCXO frequency based on the GPS constellation.

I added a sweet-spot detection and burn-in feature around the RV1 trimmer. The assumption is that you set the J8 jumper on pos 1-2 so you can adjust the frequency of the OCXO to 10MHz, and then burn-in the OCXO for a while. This may need from days to weeks depending on the (mis)handling of the used OCXO's. They first need to settle in their new environment before you can really start to use them in the GPSDO setting.

The procedure should be to set RV1 at mid-point and select the R20 and R21 values such that the OCXO is close to 10MHz. The values I show here are for the CTI.

After you found a stable OCXO, you can work out the values for R18 and R19 by the setting of the trimmer in addition to R20 and R21. R17 can be selected during the tuning of the firmware with the OCXO in a working GPSDO setting, and that will determine the Gain for the main loop.

My assumption is that you don't keep the trimmer section in circuit (use J8) once you have determined the sweet sport for the value calculation of R17, R18 and R19. I found that the (cheap Chinese) trimmer have a very large temperature dependency and also can produce a jitter effect.

On this design, I really created the space for the Oscilloquartz OCXO, which is the one I'm planning to use for the main GPSDO. I also created placements for two other kinds of OCXO's like the Bliey and the CIT and IsoTemp kind of OCXO's. The latter have the same pinouts.

The sinewave output versions need a "squarer" circuit to improve the edge recognition for the follow-up circuits. I'm using the "tank" circuit that fellow EEVBLOG contributor "miti" proposed and I already used that in the previous version. It seems to work OK. If it produces output exceeding 5V, you need to use a clamping diode to a rail to protect U2F.

Power Section Circuit

Above is the power section for the various circuits. The idea is to separate the rails for the various noisy circuits as the Arduino Nano, the NEO and the OCXO's from the more sensitive parts.

I'm using LM317 regulators because they are an improvement over the typical LM7805 and LM7808 fixed voltage regulators. The 8Volt section for the Arduino Nano also powers the two 5V rails. One dedicated to the NEO and one for the logic circuits and the voltage reference.

The LM317 for the 5V OCXO needs to be mounted -insulated-! on the side of the enclosure for extra cooling. Especially during the warm-up period of the OCXO's it get too hot otherwise.
The LM317 for the 8V supply does not need any cooling, but it also can be mounted on the side of the enclosure.

Controller Section Circuit

Above is the controller section, following the Lars Walenius design with a few of my additions. 

The two open squares in the diagram are KiCad's way of producing placeholders for hierarchical sheets. They lead to the two sheets shown above.

In this prototype, I still use the dual 74HC74 FF to replace the 74HC4046, that seemed to work well earlier. However, on the "real" GPSDO, I'm going to switch back to the 74HC4046. My assumption is that the 4046 has special analog input circuitry (that is called the input conditioning circuit)  that you don't see on the data sheet, but I know and suspect is there. I don't want to miss out on that for the phase detection measurement. Also, the 74HC7046 that I ordered a very long time ago finally arrived. They are an improvement on the original by now very old design of the 4046 and I'm going to try them.

I'm only using one temperature sensor at the moment, because I found that using an additional one for the OCXO "oven" temperature has little added value. The ambient temperature is much more important because that has a rather large influence on some of the temperature critical components like the D2A circuit for the phase detector (D1, R24 and C15), and the dual DAC circuit components, in addition to the Gain setting resistors R17, R18 and R19. Much more about this issue will be in the next section.

The other addition is the isolated outputs for the 1PPS and 10MHz signals. I already added them to my earlier version, but it was time to add it to the same PCB. The electrical isolation is important because I found to my dismay that connecting BNC cables to other instruments kicked the GPSDO out of lock. This is due to the ground potential differences that you can have between floating or earth grounded instruments and the floating GPSDO. Be aware that the 1PPS output cannot use the transformer. I added it to have the possibility to add a second 10MHz output. For the 1PPS signal, you need to bridge the transformer with 1uF THT capacitors to get the required isolation. The input to the two 74HC14's need to be cut and connected to the 10MHz signal.
The 1M/100nF combination that ties the two grounds of the transformer together are optional.

Further to the isolation issue, you also need to be aware of the potentials for the RS232 connections. I now use an isolated serial to USB adapter when I connect my GPSDO to my laptop. 

Both the NEO and the Nano have provisions for connecting a Raspberry Pi to these serial ports to monitor the logging, as I normally do. If the Raspi is connected to this circuit, there is no need for special isolation of the serial channels, which is why I didn't add them on this board.

I also added a connector for a fan, just in case I'm going to use that again. The actual driver circuit will have to be on another PCB, like before. There was no place on the board, and I also didn't want this noisy circuit close by.

And here is a 3D rendering of the top side of the PCB:

The PCB dimensions for this board are such that it will slide in the slot of my enclosure, the same one as I used before. It will not fill the whole enclosure because I want to use the same board for the GPSDO and the reciprocal counter. I kept the board at a length of 130mm so I have 20mm space to move it back and forth inside the enclosure. The width is 100mm.

For the GPSDO version, I want the two SMA adapters and the Lock indicator LED to stick through the front panel and I want front-panel access to the USB adapter of the Nano. 

For the counter version, the board will slide all the way to the back because the counter and display itself will be mounted on the front panel, and there is no need for front panel access of the 10MHz and the 1PPS. The Lock LED can be mounted on the front panel and connect with short leads to the board. 

The board will be fixed in either position through a post and screw in the mounting hole that will also connect the enclosure to the main GND of the board. Besides that, the two LM317 also need to be mounted on the side of the enclosure.

I'm going to use the Bliley from my current GPSDO for the new GPSDO and for the counter I can choose between the IsoTemp or CTI OCXO's that I also have tried with the counter tests.

Update June 3:

The sponsored PCB's from PCBWAY arrived and I build one up. After turning it on, I ran into a weird issue, and it turned out that was caused by an insufficient supply for the Opamp buffer for the dual DAC circuit. I also had to make two values changes for the ref-voltage setting of the CTI OCXO (described above where the Dual DAC & OCXO schematic is)

After obtaining the new parameters for the sketch, it is now running and "burning in", while still lying on my desk. 

Update June 4:

After using my FLIR camera to look for hot spots, I was a little concerned that the inductor that I'm using to filter the input to the 5V OCXO supply was going to get too hot. I already ordered 6A ferrites so I mounted one instead of the THT 100uH inductor.

While testing some more things, I also noticed that the LM45 temperature sensor was reporting wrong values. I ordered 6 a while ago, and when I tested them, they all turned out to be fake. My little device tester reports it as an NPN transistor with a Uf voltage of 666mV and a beta of 379. That's probably what it is, with a new and fake nomenclature on the package. Bummer. I have been mostly lucky and only seldom got fakes. I ordered some more from a more reputable source. They are still the TO-92 version. Eventually, I will use the SMD version for the "heater" project, see below.

I made a judgement error with the supply voltage for the buffer Opamp by feeding it with the reference voltage of 4.096V. It turns out that most Opamps will only work above 4.5V, so I modified the PCB to connect the Opamp directly to the input voltage for the reference. It is already filtered a bit from the 5V rail, so that will help. I also noticed another omission. I forgot a decoupling capacitor for the Opamp, so I added one Manhattan style.

I also experimented with a replacement for the 1N5711 diode that is used in the phase-shift conversion. This is a THT part and not so easy to get. Besides that, it is fairly temperature sensitive, especially when you mount it up-right as I do. Just touching the Cathode with a finger will already disrupt the locking. I have found two alternative diodes in the SOT-23 package that I have in stock. They are the BAV99 and the BAV199. I decided to use the BAV99. It's a dual diode package, but it was easy to lift pin 2 and solder pin 1 and 3 to the holes for the 1N5711. The capacitance at 25C is a mere 1.2pF and it is more stable with temperature. This package will also help with the "heater" project below.

Testing it out produced fine results with this diode so that's a keeper.

I also replaced the COG capacitor that I used for the phase conversion to a mica version. This 1nF capacitance should be much more temperature stable.

I'm monitoring the f-adjustment pin for noise and jitter and it is behaving very well. At this moment I'm only checking it against my main GPSDO by comparing the 10MHz outputs from both on the DSO.

While mounting the parts, I also noticed a few package issues (as an example, 1206 instead of 0805) that I need to fix. There are now enough changes to warrant a V3.1 layout and schematic, provided this version for the reciprocal counter is a keeper.

Update June 9:

The GPSDO board has been mounted inside the enclosure, but with a mock-up for the front panel. I designed one for the counter and LCD, but did not send it off to production yet. After the "real" LM45 temperature sensor arrived, I started to do some more longer term measurements.

Here is a show of what I'm trying to address with the "heater" version, described in GPSDO version 4:

You can clearly see that the DAC output is related to the ambient temperature inside the enclosure, which in turn is effected by the room temperature during the night and rises when the sun shines through the window of my office.

The temperature sensor is very close to the parts that turn the phase difference into a voltage. Even though I'm now using the BAV99 and a Mica 1nF capacitor, my guess is that the influence is also resulting from the double PWM circuit. As long is there is a temperature effect on the DAC output, it is not a true representation of the output frequency, and hence ADEV charts are not a good representation of the frequency and it's stability as I already described in my earlier GPSDO post.

While letting the system run it's course while in the enclosure, I'm testing a higher Time Constand as well. I'm currently running with a TC of 500, while up until now I used 250. This is the same TC my main GPSDO is running with. I still need to redo all the calculations for the sketch settings for this environment, and I think I can increase the Gain again. I also need to re-run the method to find the optimum TC for this OCXO now that it's in a more stable environment.

In the meantime, I'm working on the layout for GPSDO Version 4. That development will be described in the GPSDO Version 4 posting here that I just created to cut down on the length of this one.

For completeness, I monitor the Lars sketch output that is produced every second by a Raspberry Pi. I'm actually using the original Classic version B for that. There are a few scripts that run on the RPi to collect the data over a serial pin, log it in a file, and at the end of the day, another script compresses the log file and sends it to me by e-mail. That allows me to analyze the results in Excel and create the graphs that I show in this Blog.
The scripts can be found on my GitHub here.


If you like what you see, please support me by buying me a coffee:

No comments: