Loved this video. Firstly, I used to work in the Racal-Dana design department in Maidenhead in the 1980's and worked briefly on the 1990 series of frequency counters, so it was great to see one in action, still. The top models had pretty awesome 10MHz OCXO's in them.
Awesome content. Thank you. I am subscribing right away! . A word of caution for bread-boarders, avoid taking the timing pulse from the GPS module without proper shielding as it can cause some severe RFI ( Radio Frequency Interference) limiting the ability of GPS receiver to lock on the signal. Remember GPS signal is the weakest signal among all wireless technologies.
A few corrections and comments if you don't mind. First, the EEPROM is an Electrically Erasable Programmable Read Only Memory meaning that it is nonvolatile and won't loose its contents when power is removed. The only reasons you could be loosing your settings is either it is damaged (too many writes for example but that requires more than 1,000,000 writes), not being written to correctly (not likely as that routine is in the firmware by the manufacture), or you are not correctly telling it to save the settings. If you take a look in the Configuration View window and then the CFG settings, on the right side under Devices you likely only had "0 - BBR" selected. That only saves the settings to the Battery Backed RAM. You can select more than one "device" by holding down the button. Send (execute) that and you should be fine. Now to save the hassle of having to connect to the computer and using the U Center program every time you get a new GPS unit or to save the end user the trouble you can actually program your Arduino to set the configuration you want every power up. As long as you don't save the settings you can still easily use that same GPS with other projects without having to go back into U Center to change them. Using either the Arduino or the correct "device" when saving settings also saves not having to connect up a battery to your circuit of course. You get jitter like that when you are trying to produce a signal that doesn't divide the source frequency evenly. An example that you can draw on a piece of paper would be if you wanted to generate a 3 Hz signal from a 10 Hz source you can see that while you could get 3 complete cycles per second each cycle isn't going to be the same shape or length. Now say you have a 2 kHz source and want 1 kHz out. That works perfectly of course. But what if you want 990 Hz? You can get 990 cycles out per second but there will be some longer cycles to make up the difference. Using a phase locked loop can correct that but it still has its own problems and limitations. I was getting about a 21ns jitter on a NEO-6 and both the NEO-6 and NEO-8 data sheets claim an accuracy of the time pulse of 30ns RMS. Hit the run/stop button on your scope and you will see the jitter easily when you zoom in. Dividing the signal down of course will make the 21ns jitter a much smaller percentage. Side note... are you sure you want that capacitor between the GPS and 74AC14? The Schmitt trigger is expecting an input between 0 volts and Vcc. That's likely why you are not getting a nicer square wave at 10 MHz. My NEO-6 has a rise and fall time of less than 12ns. I would try it without the cap. Enjoyed the video though.
+ElmerFuddGun Thanks for your detailed comments. I previously mentioned to an earlier comment that the external EEPROM was an error on my part and the more I think about the EEPROM it is probably used for saving GPS data possible for logging. The changes to the configuration settings are used by some internal Back-up RAM in the Neo-7M module in the centre of the board. Therefore, the battery back-up is needed for that RAM memory inside the ublox module. I am sure there is a way of using the Arduino in stead of the u-centre software to programme the configuration settings. Is this something you have done? If so it may be useful to share the details of the Arduino code which would then give others a choice. Yes the jitter is caused by quantization error due to the fact that the main oscillator is running at 48HMz and is not easily divided down to 10MHz. A PLL would solve the issues with both jitter and shape. The capacitor feeding the 74AC14 was fitted since I found it improved the amount of jitter.
+ElmerFuddGun The data sheet for the NEO 7 modules 8www.u-blox.com/sites/default/files/products/documents/NEO-7_DataSheet_%28UBX-13003830%29.pdf) states that the configuration is saved to battery backed sRAM only (with the exception of the 7-N module).
As has been your usual, another well thought-out, well designed and engineered project. I certainly hope you gain more viewers and quickly. You have the ability to explain things very clearly and enjoyably. No BS, no click-bate only hardcore projects. I cannot thank you enough for your work and the contributions you make to (not only) my continuous learning.
I have one of these modules, they're great but at 10MHz output you get a large amount of jitter, the on board reference crystal is 48MHz so it's not an integer divide to get 10MHz. Selecting 24, 12, 8, 6, 4, 2 ,1 MHz gives a vastly improved signal. I believe it's also possible to add a DAC to one of these units and have it steer an external OCXO which will yield even better results. Setting the unit going with a clear sky view and asking it to run a 'survey' will improve results as well but the supplied patch antenna may not be good enough. As far as I can see it's very accurate, I've compared mine to two Rb standards and it's within millihertz of 10MHz. It might be a good idea to provide the receiver with some thermal insulation so it's less prone to drift as room temperature changes
Exactly. To synthesise 10MHz from 48MHz it probably uses fractional-N division, whereby it switches the dividing circuit between 4 and 5 to (i.e. divide by 5 four times then divide by 4 once) to create a divide by 4.8. Gives you 10MHz plus inter-harmonics at 12MHz and 9.6MHz.
For the CR2032 I would use Schottky diode, one with the smallest possible forward voltage. That way the battery can be used for a longer period of time.
30:00 For Simplicity I would use a red-green LED to indicate if it's locked or unlocked. Green is locked and red is unlocked. And the Arduino should have no problem power that led. Or you can even just have a green LED when it's green it's locked when it's off it's unlocked. For simplicity's sake.
The projects you come up with are great. You explain what you are doing really clearly and the outcome is a properly useful device. Thanks for doing these, I am learning a lot.
This was excellent! I actually have a GPSDO which I have been struggling to get a usable signal from and this has not only given me some ideas for that, but also a fallback if I can't get them to work.
At 29:00 into the video where you are talking to the GPS, mine wasn't working at first and apparently had some bad setting stored in it so I had to click "Revert To Default Receiver Configuration" which is the icon along the top at the far right, to get it working.
I've been experimenting with a 6M module that I had on hand from trying to build a drone a few years ago but the 10Mhz output is distorted and has a lot of variation in the pulse width causing it to constantly change from wider to narrower then go wider again like you show on the scope at 30:00 into the video. I wonder if it would be better to use an LEA-6T module that is optimized for timing use instead?
31:00 "A bit of jitter"... That jitter is 25% of the period! 🙈 However, thanks, the rest of the tutorial is very useful. I plan to take a cleaner 10 kHz signal from the GPS and use a PLL with a tight loop bandwidth to lock a 10 MHz OCXO to that.
Also, I've seen people combine multiple of the schmidt triggers together (through the appropriate resistor) so that they have enough current to truly drive a 50 ohm output into a 50 ohm load.I suspect you already checked the output capacity of the single gate, but if it's not high enough, this might be an option for you. Thanks much for the great video.
+Matthew Humphrey Thanks for your comment. Yes I have combined schmitt triggers in parallel in the past and that works well. It could be something we could do with this project but for the moment I have not done it. Could be a future option if we find there are any issues.
Nice. I'm currently building my own GPS disciplined 10MHz reference based on an old OCXO from ebay. Also controlled by an arduino nano. So I find this a very interesting project. I also did not know there were GPS receivers with 10MHz output. I'm using another approach, counting the 10MHz signal edges between a 200s timespan of the 1pps pulses from my uBlox GPS which have a 10ns accuracy.
+Scullcom Hobby Electronics Would there be a benefit of doing that? The OCXO would follow the GPS because it is the PLL reference. It will not be more accurate than the GPS without the OCXO. Correct me if I'm wrong. Its all new to me. The Neo-7 actually has a 30ns-60ns accuracy. The GlobalTop PA6H I'm using (not uBlox as I write above) has a 10ns accuracy. It does not have a 10MHz output unfortunately. But I'm aiming for a 0.1Hz to 0.05Hz accuracy with my approach. In the past they used the pll approach with a Jupiter GPS which had a 10kHz output. But these are not made anymore. Joost.
+Joost B Sorry may be I misunderstood. My understanding is that you are simply using the GPS signal to lock your OCXO therefore you are already using a PLL which is fine. Also the output from the OCXO will be very stable and provide a clean sine wave out which will be better that using a GPS module to provide the output.
+Scullcom Hobby Electronics If the GPS signal is drifting (60ns), wouldn't that also cause the OCXO to drift because the OCXO is locked to the GPS via the PLL? The GPS signal is the reference signal for the PLL. Or do I misunderstand. I might have to review how a PLL actually works. (I'm actually not using a PLL in my project, I use a counter instead. But I find the PLL approach quite interesting.)
+Joost B Yes correct the GPS signal is used as the reference so if that drifts slightly then the OCXO will also be effected. One good solution is to get hold of a Rubidium Frequency Standard. You can find secondhand ones of these on eBay but they are still expensive. I have a 10MHz Rubidium Frequency Standard in my workshop and use it as my prime reference. A Cesium Frequency Standard is even better but very expensive. Both Cesium and Rubidium are atomic standards and exhibit extremely high accuracy.
Fantsatic project and one ive been wanting to try for a while and yours is way more eligant than what i was thinking. Will be giving this a try. Thanks Brian G0WZB
If the 10MHz output is jittery because it is derived from a 48MHz clock (30:57) what would happen if you set the clock out put to a multiple of the master clock? For example if you set the output frequency to 9.6MHz (48 * 2 * 100,000). Would the source of jitter due to different multiples be eliminated?
+Rk Str Yes if you set it to an exact multiple of the fundamental frequency you should get a fairly clean square wave and so remove the jitter. I will test it out and try and show it on a future video.
+Scullcom Hobby Electronics I think it would be interesting to compare the two frequencies on a spectrum analyzer if the equipment is available. The side bands should be easier to quantify than the amount of jitter observed on an o-scope. Over all this is an informative video. Thanks
Great project, great video i have been trying to make something like this for quite some time, buying a number of timing GPS units and creating CLPD board to set a OCXO, all have failed and it's good to see a proper project i can do to finally get this done i have already purchased the module and can't wait to build something like this up
Another great video from Scullcom. Many thanks! Now, a dumb question...how far from the GPS Module can the antenna be located??? Maybe an outside antenna with a long lead-in...obviously I know nothing about GPS modules.
+Ray Reese Thanks for your comments. I am looking at adding an external socket for the antenna, when the unit is boxed, and will discuss this in part 2 of this project.
amazing video, but the question is when module is unlocked 10mhz comes from local oscillator, but when the module is locked the 10mhz comes from satellite?! or some calculation will depend to gps module and finally it come to local oscillator, or local oscillator will take some thing from gps module! in fact what is difference for local process when it is locked and unlocked? Thanks for your Fast Answer.
The NEO-7 modules are 3.3V devices, and they don't have 5V-capable inputs. But the Arduino Nano is a 5V board, so you might destroy your GPS module. (With the USB-to-UART converter it depends - my CP2102 module is a 3.3V device so its safe to use)
+Hendrik Lipka Thanks Hendrik for the comment. The CP2102 I used on this project was 3.3V so it was OK. But it is worth mentioning this for others to be made aware. Thanks.
just curious why run the signal through a Schmitt trigger (btw I would use this approach as well), rather than a opamp with a large hysteresis? would that not do a better job to rid the noise?
Thank you for this great video. You explained this very clearly and it was pleasant to listen to you. I have a question. I would like to know if I made several of these, would all square waves be in-phase among all of them? I am interested to achieve phase synchronization among these units.
@18m00s: "..add some extra Schmitt triggers..." Or just move U2A pin 4 to the output U1B pin 4. Shouldn't need endless Schmitt triggers; just one at the start should feed the rest of the dividers.
+jordanch68 Yes Chris there is and that is some thing I am considering for this project. You can convert a square wave to a sine wave by removing all the harmonics from the fundamental frequency using a Bandpass Filter. Even a simple Low Pass Filter may do a good job. I will try and include that the next part to this project.
Great video and project! As a follow-up project, have you considered using the GPS 1 Hz signal, a microprocessor, and a D/A to discipline an OCXO? I know many others have done this project, but it seems like it would be a great video.
+Matthew Humphrey Thanks again. I purchased a few Russian Double Oven Ultra Precision MV85A 10MHZ units and they work very well. Something for a future project.
+Scullcom Hobby Electronics I also wanted to let you know that I found an eBay seller who is selling the NEO-8N modules on a little breakout board along with an external antenna. The board has an SMA connector to which the antenna attaches, so you can put another antenna on if this one doesn't meet your requirements. The boards were about $39 (USD). Not sure if he also sells on eBay UK, but I suspect so. The seller name is thanksbuyer-hobby
+Matthew Humphrey Thanks for the info. I ordered a Neo-8N from China about 3 weeks ago and it just arrived today so I can check it out. The version I purchased cost around £14 (US$20). It uses the same board as I have shown on my video.
+Scullcom Hobby Electronics I read on the UBlox forums that there are a lot of counterfeits out there. However, the counterfeits still use the core UBlox chip; it's just the surrounding circuitry (like the Flash RAM) that may be a bit dodgy. This board here, which btw came with an external antenna identical to the ones you show in your latest video, seems to be working fine. It's even receiving the Russian satellites.
Good evening I come back again after I changed everything that we said, and I just put the material on you, but unfortunately it does not catch with any satellites, so I do not have a frequency lock. The screen light normally says it is Ver. 6 the frequencies change it, with C, I see the voltage with D, I see the frequency I put, with # I see satellites 0 and hangs there and does not go back and again I turn the trend and put it again to work. The only difference we have is that to pass the program, I have to convert it to .hex from Arduino and I go through the XLoader because my Arduino does not pass the program directly and I think something is wrong with the conversion! Do you have any idea for top what's going on ??? Yours sincerely Vangelis
Scullcom Hobby Electronics thanks for your quick reply Louis ! I actually ordered this one because it has a dedicated PPS output (so no hacking required) and is reportedly compatible with the Ucenter software. s.aliexpress.com/ruIbiiqi Pretty sure it might be old or even fake Neo but....I only need the PPS signal ;);) Oh and.....subscribed :)
hi I've been playing around with one of these ublox modules having seen your video, I found like you that when set to 10 MHZ the signal is fairly poor, luckily my racal counter (same as yours) has options 10 installed so works fine with 1 MHz. The other thing I've tried which you may be interested in is putting the signal through a 74hc4046 phase locked loop chip this cleans up the 10 MHz considerably. another way of doing it is to set the module to 1 MHz and then multiplying it by 10 using the 74hc4046 and a hc390 divide by 10 in the feedback loop, this seems to work well also, I will probably use this in my completed project and have both 1 & 10 MHz outputs, hope this is of some interest
Looking at the output LED at 30:00 it does seem to run at 10Hz as it should BUT when the system is locked at 35:00 the LED then seems to be flashing at 1Hz, why is this as you did set the output frequency in locked and unlocked mode to 10MHz ?, I did wonder if for a cheaper version without the Arduino and LED display you could set the unlocked output frequency to 1Mhz so you would get a slow flashing LED while the unit was unlocked and set the locked frequency to 10MHz so when you get the fast flashing LED you know the unit is GPS locked, I think a good idea would be to have a buffered 10MHz output on one BNC and then a selector switch to enable the 1MHz to 100Hz output to be fed into a second output socket via another buffer/50 Ohm output BNC, that would allow the you to do lower frequency tests and keep the 10MHz feeding other equipment as a workshop master reference, great project, look forward to the next update, Thanks, Dave
+david ellis Dave. When you saw the LED flashing at 1Hz that was as a result of me temporary setting the frequency configuration to 1MHz. The reason I did that was to simply show the change in LCD display when locked on to a satellite. During the filming I had the unit on my work bench some distance from the window and was experiencing some difficulty in getting a GPS signal. When I moved the unit either to the window or outside it would lock when the configuration was set to 10MHz. I do mention in the video at 35:19. With regards your other point - Yes you could leave out the Arduino and the LCD display and change the unlocked frequency to say 1MHz - then the LED would flash at 10Hz when locked on to GPS at 10MHz and when unlocked and no GPS signal it would flash at 1Hz. With regards the outputs - I was planning to use one BNC for the buffered 10MHz and then try some switching for the other frequencies. I am working on that at the moment and will cover that in Part 2 of this project.
Hi Louis, let me tell, that i'm a big, big fan of your videos, from them i learn a lot. Also i'm a fan from Daves EEVBlog, etc., but yours are at least so constructive of your own positive interesting way, that i don't wont to miss yours. ;) Thank you for all your work. I'm looking every day, to gather all your stuff and benefit from your experiences. Greetings from germany, and a big thumbsup.
+Weistek Engineering video blog Yes a RC Low Pass Filter would work but maybe a 10MHz Bandpass filter would be better. Maybe worth trying both options. The value of the capacitor will also be influenced by the resistor value in the RC Filter. I would imaging the value would be in the pF range (may be round 100pF to 200pF) with a resistor of about 1Kohm. But should really do the maths.
Hi Loren, Sorry only just seen your comment. Not sure what you mean since the programming of the GPS module is already done from the computer keyboard. Regards, Louis
I allready have a homebrew gps locked standard that uses the ublox, I have issues with the ublox forgetting the setup, I assumed the supercap was a battery!, I'll do the mod you did. My system uses a pll and a 10mc voltage controlled xtal oven, the ublox o/p's 10kc not 10mc, the pll removes the phase noise from the ublox, I'm thinking of phase synchronizing the 1hz o/p to the 10mc xtal oven as I use it for a real time clock, though thats a little overkill. One thing I like and I'm going to make use of is the gps lib, I'd like to be able to use mine standalone with an lcd and know the ublox is locked and I have satellites.
+sean doofer Thanks for you comments. I have also tried using the GPS signal in a PLL to trim a 10MHz OCXO which works well. As you say it then gives a nice clean 10MHz sine wave. Check out Part 3 of this project as I have upgraded the unit to use a keypad entry for frequency.
+Scullcom Hobby Electronics Yes of course programmable frequency is handy, however decades is fine for me, in fact 1hz is the main reason for building the unit. The battery mod and your reference to the library is what I found usefull.
+Joe Loucka Sorry I do not make PCB's to buy. But I do make available the artwork here which you can use for free. I am not really doing this to make any money.
Just watched this video and thought the same. Probably don't need an OCXO as the GPS gives you the long term frequency stability. A 10MHz voltage-controlled xtal oscillator should then give you the low phase noise to get rid of the jitter via the PLL.
+Darian Cabot Thanks Darain. I always seem to get the odd thumbs down which I think most You Tubers do. I understand that my videos may not appeal to everyone.
Can you give me a reliable address where I can order the neo7m?.... I buy one at ebay, but that's a fake. I can not change the configuration. Cheers, Hans
Hi Hans, I purchased mine on eBay. You could try: www.ebay.co.uk/itm/NEO-7M-GPS-Module-Built-in-Data-Memory-with-Antenna-and-USB2TTL-Replace-NEO-6M/152606352091?hash=item23880c22db:g:6coAAOSwceNZVmnT This looks like to one I purchased. There are many sellers on eBay. Some sellers are still selling the older Neo-6 which is no good for this project. Regards, Louis
Since you are pushing the GPS module a little too hard at 10MHz and since you are trying to design an accurate freq standard, why not set the GPS to output 1MHz instead and use a PLL to gen the 10MHz? This would then give you more stability in the output noise and jitter of and would also lock to a satellite quicker.
+Kevy Thanks for your comments. Yes I agree about using a PLL. This is something I have used myself in the past but I wanted to keep this project easy to build. As you say the 1MHz output from the GPS is a much cleaner square wave. I am looking at some future projects using PLL's. As a future upgrade we could add a PLL to the project.
Why does the EEPROM not remember the contents with the power off ?, I thought the idea was they held the memory until they are electrically erased !, nice project, parts on order already, keep up the good work, I love these projects and I buy in most of the major parts to supply via our www.basicmicro.co.uk web site, thanks, Dave
+david ellis Thanks David for your comments and pointing out the EEPROM error. I have had a further look at the datasheet for the ublox Neo-7. After further reading, there is some internal RAM in the Neo-7M module in the centre of the board and it is this that uses the configuration settings. Therefore, the battery back-up is needed for that RAM memory inside the ublox module. My mention of the external EEPROM was an error and the more I think about the EEPROM it is probably used for saving GPS data possible for logging. I need to check that further. Thanks again for bring it to my attention. By the way my name is Louis (I think you most have got Dave from my Scullcom website on which David my youngest son has some of the comics he has written and drawn).
+Scullcom Hobby Electronics Louis, I wanted so much to believe you were drawing the comics! But alas, you're like the rest of us. Congrats to David, though, on some good talent. Seriously, I like your videos (not another Arduino with a light bulb!) and appreciate the time and effort you put into choosing the projects and their production.
Hi Louis; You said that the board uses a 80mF capacitor, but more later in the video, it looks like to me that the board uses a MS621 type battery, can you check that? Also, from the datasheet; " 1.12.2 Real-Time Clock (RTC) The RTC is driven by a 32kHz oscillator, which makes use of an RTC crystal. If the main supply voltage fails, and a battery is connected to V_BCKP, parts of the receiver switchoff, but the RTC still runs providing a timing reference for the receiver. This operating mode is called Hardware Backup Mode, which enables all relevant data to be saved in the backup RAM to later allow a hot or warm start." www.u-blox.com/sites/default/files/products/documents/NEO-7_DataSheet_%28UBX-13003830%29.pdf Love your work and your excellent artwork with the schematics!
+GADELHAS82 Thanks for your comments. I checked the board and it uses a Seiko XH414HG which is a 0.8 farad capacitor. I have two of these Neo-7M modules and they both use this super capacitor. The MS621 you mentioned was used in the earlier Neo-6M module. Thanks for the info for the RTC. It seems that the RAM also holds the configuration settings.
Loved this video. Firstly, I used to work in the Racal-Dana design department in Maidenhead in the 1980's and worked briefly on the 1990 series of frequency counters, so it was great to see one in action, still. The top models had pretty awesome 10MHz OCXO's in them.
Awesome content. Thank you. I am subscribing right away! . A word of caution for bread-boarders, avoid taking the timing pulse from the GPS module without proper shielding as it can cause some severe RFI ( Radio Frequency Interference) limiting the ability of GPS receiver to lock on the signal. Remember GPS signal is the weakest signal among all wireless technologies.
A few corrections and comments if you don't mind. First, the EEPROM is an Electrically Erasable Programmable Read Only Memory meaning that it is nonvolatile and won't loose its contents when power is removed. The only reasons you could be loosing your settings is either it is damaged (too many writes for example but that requires more than 1,000,000 writes), not being written to correctly (not likely as that routine is in the firmware by the manufacture), or you are not correctly telling it to save the settings. If you take a look in the Configuration View window and then the CFG settings, on the right side under Devices you likely only had "0 - BBR" selected. That only saves the settings to the Battery Backed RAM. You can select more than one "device" by holding down the button. Send (execute) that and you should be fine.
Now to save the hassle of having to connect to the computer and using the U Center program every time you get a new GPS unit or to save the end user the trouble you can actually program your Arduino to set the configuration you want every power up. As long as you don't save the settings you can still easily use that same GPS with other projects without having to go back into U Center to change them.
Using either the Arduino or the correct "device" when saving settings also saves not having to connect up a battery to your circuit of course.
You get jitter like that when you are trying to produce a signal that doesn't divide the source frequency evenly. An example that you can draw on a piece of paper would be if you wanted to generate a 3 Hz signal from a 10 Hz source you can see that while you could get 3 complete cycles per second each cycle isn't going to be the same shape or length. Now say you have a 2 kHz source and want 1 kHz out. That works perfectly of course. But what if you want 990 Hz? You can get 990 cycles out per second but there will be some longer cycles to make up the difference. Using a phase locked loop can correct that but it still has its own problems and limitations.
I was getting about a 21ns jitter on a NEO-6 and both the NEO-6 and NEO-8 data sheets claim an accuracy of the time pulse of 30ns RMS. Hit the run/stop button on your scope and you will see the jitter easily when you zoom in. Dividing the signal down of course will make the 21ns jitter a much smaller percentage.
Side note... are you sure you want that capacitor between the GPS and 74AC14? The Schmitt trigger is expecting an input between 0 volts and Vcc. That's likely why you are not getting a nicer square wave at 10 MHz. My NEO-6 has a rise and fall time of less than 12ns. I would try it without the cap.
Enjoyed the video though.
+ElmerFuddGun Thanks for your detailed comments.
I previously mentioned to an earlier comment that the external EEPROM was an error on my part and the more I think about the EEPROM it is probably used for saving GPS data possible for logging.
The changes to the configuration settings are used by some internal Back-up RAM in the Neo-7M module in the centre of the board. Therefore, the battery back-up is needed for that RAM memory inside the ublox module.
I am sure there is a way of using the Arduino in stead of the u-centre software to programme the configuration settings. Is this something you have done? If so it may be useful to share the details of the Arduino code which would then give others a choice.
Yes the jitter is caused by quantization error due to the fact that the main oscillator is running at 48HMz and is not easily divided down to 10MHz. A PLL would solve the issues with both jitter and shape.
The capacitor feeding the 74AC14 was fitted since I found it improved the amount of jitter.
+ElmerFuddGun The data sheet for the NEO 7 modules 8www.u-blox.com/sites/default/files/products/documents/NEO-7_DataSheet_%28UBX-13003830%29.pdf) states that the configuration is saved to battery backed sRAM only (with the exception of the 7-N module).
As has been your usual, another well thought-out, well designed and engineered project. I certainly hope you gain more viewers and quickly. You have the ability to explain things very clearly and enjoyably. No BS, no click-bate only hardcore projects. I cannot thank you enough for your work and the contributions you make to (not only) my continuous learning.
+Darren Taylor Thanks for your kind comments. I am currently working on some new projects.
I have one of these modules, they're great but at 10MHz output you get a large amount of jitter, the on board reference crystal is 48MHz so it's not an integer divide to get 10MHz.
Selecting 24, 12, 8, 6, 4, 2 ,1 MHz gives a vastly improved signal.
I believe it's also possible to add a DAC to one of these units and have it steer an external OCXO which will yield even better results.
Setting the unit going with a clear sky view and asking it to run a 'survey' will improve results as well but the supplied patch antenna may not be good enough.
As far as I can see it's very accurate, I've compared mine to two Rb standards and it's within millihertz of 10MHz.
It might be a good idea to provide the receiver with some thermal insulation so it's less prone to drift as room temperature changes
Exactly. To synthesise 10MHz from 48MHz it probably uses fractional-N division, whereby it switches the dividing circuit between 4 and 5 to (i.e. divide by 5 four times then divide by 4 once) to create a divide by 4.8. Gives you 10MHz plus inter-harmonics at 12MHz and 9.6MHz.
Plenty of test equipment requires a 10MH external reference, so finding a clean solution for 10MHz is still a worthy goal.
For the CR2032 I would use Schottky diode, one with the smallest possible forward voltage. That way the battery can be used for a longer period of time.
30:00 For Simplicity I would use a red-green LED to indicate if it's locked or unlocked. Green is locked and red is unlocked. And the Arduino should have no problem power that led. Or you can even just have a green LED when it's green it's locked when it's off it's unlocked. For simplicity's sake.
Very cool. There's really not enough information out there that helps to compare the GPS modules out there and what one should pick, this video helps.
The projects you come up with are great. You explain what you are doing really clearly and the outcome is a properly useful device. Thanks for doing these, I am learning a lot.
+TheSuninkid Thanks for your kind comments.
This was excellent! I actually have a GPSDO which I have been struggling to get a usable signal from and this has not only given me some ideas for that, but also a fallback if I can't get them to work.
+Anthony Roby Thanks for your comments. I will be showing you how to improve signal strength of the GPS module in the next part of this project.
May you live long and healthy. Thanks for your videos.
I have become your subscriber... I must admit most of your project are almost complete... and you can also learn from them. Kudos!
At 29:00 into the video where you are talking to the GPS, mine wasn't working at first and apparently had some bad setting stored in it so I had to click "Revert To Default Receiver Configuration" which is the icon along the top at the far right, to get it working.
Thanks Steve for the info. Regards, Louis
I've been experimenting with a 6M module that I had on hand from trying to build a drone a few years ago but the 10Mhz output is distorted and has a lot of variation in the pulse width causing it to constantly change from wider to narrower then go wider again like you show on the scope at 30:00 into the video. I wonder if it would be better to use an LEA-6T module that is optimized for timing use instead?
Do you think U-Blox is still in business? I emailed them to ask about a firmware update but all their email bounces and that's not a good sign!
Yes they are still in business. Check out their website:
www.u-blox.com/en/product/neo-7-series
There doesn't seem to be anyone there so the website is just running along on auto pilot.
31:00 "A bit of jitter"... That jitter is 25% of the period! 🙈
However, thanks, the rest of the tutorial is very useful. I plan to take a cleaner 10 kHz signal from the GPS and use a PLL with a tight loop bandwidth to lock a 10 MHz OCXO to that.
Also, I've seen people combine multiple of the schmidt triggers together (through the appropriate resistor) so that they have enough current to truly drive a 50 ohm output into a 50 ohm load.I suspect you already checked the output capacity of the single gate, but if it's not high enough, this might be an option for you. Thanks much for the great video.
+Matthew Humphrey Thanks for your comment. Yes I have combined schmitt triggers in parallel in the past and that works well. It could be something we could do with this project but for the moment I have not done it. Could be a future option if we find there are any issues.
Love the video. If you don’t mind me asking, why not use a simple ATMEGA328P instead of the Arduino Nano?
Nice. I'm currently building my own GPS disciplined 10MHz reference based on an old OCXO from ebay. Also controlled by an arduino nano. So I find this a very interesting project. I also did not know there were GPS receivers with 10MHz output. I'm using another approach, counting the 10MHz signal edges between a 200s timespan of the 1pps pulses from my uBlox GPS which have a 10ns accuracy.
+Joost B Thanks for your comments. If you used the Neo-7 with a PLL to control the adjustment of the OCXO that would work very well.
+Scullcom Hobby Electronics Would there be a benefit of doing that? The OCXO would follow the GPS because it is the PLL reference. It will not be more accurate than the GPS without the OCXO. Correct me if I'm wrong. Its all new to me.
The Neo-7 actually has a 30ns-60ns accuracy. The GlobalTop PA6H I'm using (not uBlox as I write above) has a 10ns accuracy. It does not have a 10MHz output unfortunately. But I'm aiming for a 0.1Hz to 0.05Hz accuracy with my approach.
In the past they used the pll approach with a Jupiter GPS which had a 10kHz output. But these are not made anymore.
Joost.
+Joost B Sorry may be I misunderstood. My understanding is that you are simply using the GPS signal to lock your OCXO therefore you are already using a PLL which is fine. Also the output from the OCXO will be very stable and provide a clean sine wave out which will be better that using a GPS module to provide the output.
+Scullcom Hobby Electronics If the GPS signal is drifting (60ns), wouldn't that also cause the OCXO to drift because the OCXO is locked to the GPS via the PLL? The GPS signal is the reference signal for the PLL. Or do I misunderstand. I might have to review how a PLL actually works.
(I'm actually not using a PLL in my project, I use a counter instead. But I find the PLL approach quite interesting.)
+Joost B Yes correct the GPS signal is used as the reference so if that drifts slightly then the OCXO will also be effected. One good solution is to get hold of a Rubidium Frequency Standard. You can find secondhand ones of these on eBay but they are still expensive. I have a 10MHz Rubidium Frequency Standard in my workshop and use it as my prime reference. A Cesium Frequency Standard is even better but very expensive. Both Cesium and Rubidium are atomic standards and exhibit extremely high accuracy.
Fantsatic project and one ive been wanting to try for a while and yours is way more eligant than what i was thinking. Will be giving this a try.
Thanks
Brian
G0WZB
+Brian Burdis Thanks Brian.
If the 10MHz output is jittery because it is derived from a 48MHz clock (30:57) what would happen if you set the clock out put to a multiple of the master clock? For example if you set the output frequency to 9.6MHz (48 * 2 * 100,000). Would the source of jitter due to different multiples be eliminated?
+Rk Str Yes if you set it to an exact multiple of the fundamental frequency you should get a fairly clean square wave and so remove the jitter. I will test it out and try and show it on a future video.
+Scullcom Hobby Electronics
I think it would be interesting to compare the two frequencies on a spectrum analyzer if the equipment is available. The side bands should be easier to quantify than the amount of jitter observed on an o-scope. Over all this is an informative video. Thanks
It must be integer devider of internal GPS module 48MHz clock. And you will not have any jitter.
Why is the smith trigger not doing its job? Its supposed to clean the waveform and provide us a good squarewave right?
Great project, great video
i have been trying to make something like this for quite some time, buying a number of timing GPS units and creating CLPD board to set a OCXO, all have failed and it's good to see a proper project i can do to finally get this done
i have already purchased the module and can't wait to build something like this up
Thanks for your comments. Glad to hear you found it helpful.
What a great video this is. Thank you for all of your hard work !
Your welcome.
Very interesting, and so nicely explained even I can follow it!
Many thanks.
+Simon French Thanks.
Wow it's working on my U-blox NE0-7N you saved me hours and hours of work ! and alot of money Thanks for sharing this info with us. :-)
Thanks Cosmo for your comment. Glad to hear it was of help.
Regards,
Louis
I've got a couple of these modules so will definitely be making one of these. Thanks for making the video
Cheers
John
+orbiter8 (John) Good luck with building it.
Another great video from Scullcom. Many thanks! Now, a dumb question...how far from the GPS Module can the antenna be located??? Maybe an outside antenna with a long lead-in...obviously I know nothing about GPS modules.
+Ray Reese Thanks for your comments. I am looking at adding an external socket for the antenna, when the unit is boxed, and will discuss this in part 2 of this project.
amazing video, but the question is when module is unlocked 10mhz comes from local oscillator, but when the module is locked the 10mhz comes from satellite?! or some calculation will depend to gps module and finally it come to local oscillator, or local oscillator will take some thing from gps module! in fact what is difference for local process when it is locked and unlocked?
Thanks for your Fast Answer.
The NEO-7 modules are 3.3V devices, and they don't have 5V-capable inputs. But the Arduino Nano is a 5V board, so you might destroy your GPS module. (With the USB-to-UART converter it depends - my CP2102 module is a 3.3V device so its safe to use)
+Hendrik Lipka Thanks Hendrik for the comment. The CP2102 I used on this project was 3.3V so it was OK. But it is worth mentioning this for others to be made aware. Thanks.
just curious why run the signal through a Schmitt trigger (btw I would use this approach as well), rather than a opamp with a large hysteresis? would that not do a better job to rid the noise?
nvm I just answered my own question.
+Weistek Engineering video blog No problem.
Thank you for this great video. You explained this very clearly and it was pleasant to listen to you. I have a question. I would like to know if I made several of these, would all square waves be in-phase among all of them? I am interested to achieve phase synchronization among these units.
Can you recommend a replacement for the ublox Neo-7M GPS module. I cannot find one anywhere
Awesome series of projects, I need to build one myself.
+VoltLog Thanks.
@18m00s: "..add some extra Schmitt triggers..." Or just move U2A pin 4 to the output U1B pin 4. Shouldn't need endless Schmitt triggers; just one at the start should feed the rest of the dividers.
Thank you for sharing Louis, nice implimentation of these devices, 73
+saturn5tony Thanks.
Hello! This is a great project. Is there a way to get a sine wave output rather than a square wave?
Thanks,
Chris
+jordanch68 Yes Chris there is and that is some thing I am considering for this project. You can convert a square wave to a sine wave by removing all the harmonics from the fundamental frequency using a Bandpass Filter. Even a simple Low Pass Filter may do a good job. I will try and include that the next part to this project.
That would be great! I can see a couple uses for both waveforms.
Thank you for another great video. I am looking forward to the build and video No.2. Great job....................Berni
+berni ken Thanks Berni. I have just finished designing the printed circuit board for this project hope to get part 2 filmed in the next few days.
Good morning...another great super project...loving it.
Thanks again. Looks like you have been busy watching my videos ;-)
regards,
Louis
Eehehhehehe....watching every single second...
TCXO = "Temperature COMPENSATED crystal oscillator" not controlled.
wow right man in right place:) good job mate
Nice project, thanks. I think I'll build that one myself.
+Robert Calk Jr. Thanks Robert.
Great video and project! As a follow-up project, have you considered using the GPS 1 Hz signal, a microprocessor, and a D/A to discipline an OCXO? I know many others have done this project, but it seems like it would be a great video.
+Matthew Humphrey Thanks again. I purchased a few Russian Double Oven Ultra Precision MV85A 10MHZ units and they work very well. Something for a future project.
+Scullcom Hobby Electronics I also wanted to let you know that I found an eBay seller who is selling the NEO-8N modules on a little breakout board along with an external antenna. The board has an SMA connector to which the antenna attaches, so you can put another antenna on if this one doesn't meet your requirements. The boards were about $39 (USD). Not sure if he also sells on eBay UK, but I suspect so. The seller name is thanksbuyer-hobby
+Matthew Humphrey Thanks for the info. I ordered a Neo-8N from China about 3 weeks ago and it just arrived today so I can check it out. The version I purchased cost around £14 (US$20). It uses the same board as I have shown on my video.
+Scullcom Hobby Electronics I read on the UBlox forums that there are a lot of counterfeits out there. However, the counterfeits still use the core UBlox chip; it's just the surrounding circuitry (like the Flash RAM) that may be a bit dodgy. This board here, which btw came with an external antenna identical to the ones you show in your latest video, seems to be working fine. It's even receiving the Russian satellites.
you didnt tell the arduino nano code
Good evening
I come back again after I changed everything that we said, and I just put the material on you, but unfortunately it does not catch with any satellites, so I do not have a frequency lock.
The screen light normally says it is Ver. 6 the frequencies change it, with C, I see the voltage with D, I see the frequency I put, with # I see satellites 0 and hangs there and does not go back and again I turn the trend and put it again to work.
The only difference we have is that to pass the program, I have to convert it to .hex from Arduino and I go through the XLoader because my Arduino does not pass the program directly and I think something is wrong with the conversion!
Do you have any idea for top what's going on ???
Yours sincerely
Vangelis
Great project Louis...
Looks like Neo 7 modules are unavailable today....will this also work with a Neo 8 , I mean has anyone actually built it with a Neo-8 ?
Hi Andre,
Yes the Neo-8 should work OK.
Regards,
Louis
Scullcom Hobby Electronics thanks for your quick reply Louis ! I actually ordered this one because it has a dedicated PPS output (so no hacking required) and is reportedly compatible with the Ucenter software.
s.aliexpress.com/ruIbiiqi
Pretty sure it might be old or even fake Neo but....I only need the PPS signal ;);)
Oh and.....subscribed :)
hi I've been playing around with one of these ublox modules having seen your video, I found like you that when set to 10 MHZ the signal is fairly poor, luckily my racal counter (same as yours) has options 10 installed so works fine with 1 MHz. The other thing I've tried which you may be interested in is putting the signal through a 74hc4046 phase locked loop chip this cleans up the 10 MHz considerably. another way of doing it is to set the module to 1 MHz and then multiplying it by 10 using the 74hc4046 and a hc390 divide by 10 in the feedback loop, this seems to work well also, I will probably use this in my completed project and have both 1 & 10 MHz outputs, hope this is of some interest
Thanks for the comments. I have also used the PLL 4046 IC and as you say it does clean up the waveform.
Great project. One to build for certain. Thanks.
+Eric Gee Thanks.
building one! love the detail in your videos.
+Weistek Engineering video blog Thanks.
Looking at the output LED at 30:00 it does seem to run at 10Hz as it should BUT when the system is locked at 35:00 the LED then seems to be flashing at 1Hz, why is this as you did set the output frequency in locked and unlocked mode to 10MHz ?, I did wonder if for a cheaper version without the Arduino and LED display you could set the unlocked output frequency to 1Mhz so you would get a slow flashing LED while the unit was unlocked and set the locked frequency to 10MHz so when you get the fast flashing LED you know the unit is GPS locked, I think a good idea would be to have a buffered 10MHz output on one BNC and then a selector switch to enable the 1MHz to 100Hz output to be fed into a second output socket via another buffer/50 Ohm output BNC, that would allow the you to do lower frequency tests and keep the 10MHz feeding other equipment as a workshop master reference, great project, look forward to the next update, Thanks, Dave
+david ellis Dave. When you saw the LED flashing at 1Hz that was as a result of me temporary setting the frequency configuration to 1MHz. The reason I did that was to simply show the change in LCD display when locked on to a satellite. During the filming I had the unit on my work bench some distance from the window and was experiencing some difficulty in getting a GPS signal. When I moved the unit either to the window or outside it would lock when the configuration was set to 10MHz. I do mention in the video at 35:19. With regards your other point - Yes you could leave out the Arduino and the LCD display and change the unlocked frequency to say 1MHz - then the LED would flash at 10Hz when locked on to GPS at 10MHz and when unlocked and no GPS signal it would flash at 1Hz. With regards the outputs - I was planning to use one BNC for the buffered 10MHz and then try some switching for the other frequencies. I am working on that at the moment and will cover that in Part 2 of this project.
Anyone know where the tp5 option is in ucenter v18.08
hi Louis! I have a question: what is the expected life of the back-up battery?
btw...Happy New Year!
i2NDT Claudio
Hi Louis,
let me tell, that i'm a big, big fan of your videos, from them i learn a lot. Also i'm a fan from Daves EEVBlog, etc., but yours are at least so constructive of your own positive interesting way, that i don't wont to miss yours. ;) Thank you for all your work. I'm looking every day, to gather all your stuff and benefit from your experiences. Greetings from germany, and a big thumbsup.
+HW J Thank you for your kind comments which are much appreciated. Vielen Dank
so, a low pass filter set at around 20Mhz should work to rid the harmonics right? roughly 1.4uF (if my math isn't lying to me again).
+Weistek Engineering video blog Yes a RC Low Pass Filter would work but maybe a 10MHz Bandpass filter would be better. Maybe worth trying both options. The value of the capacitor will also be influenced by the resistor value in the RC Filter. I would imaging the value would be in the pF range (may be round 100pF to 200pF) with a resistor of about 1Kohm. But should really do the maths.
+Scullcom Hobby Electronics ya.. I forgot the resistor in the eqn. that's embarrassing. I'll have to try that. thanks for the replys.
+Weistek Engineering video blog I will illustrate converting the square wave to sine wave in part 2 of this project.
Where can I get the code for programming the board with keyboard?
Hi Loren, Sorry only just seen your comment. Not sure what you mean since the programming of the GPS module is already done from the computer keyboard.
Regards, Louis
If you meant the windows software. Ublox software can be downloaded from the link below:
www.u-blox.com/en/product/u-center-windows
Regards, Louis
Louis..I mean the Arduino code for the keyboard to put in the frequencies on the board you built
Excellent as usual. Thank you.
I allready have a homebrew gps locked standard that uses the ublox, I have issues with the ublox forgetting the setup, I assumed the supercap was a battery!, I'll do the mod you did.
My system uses a pll and a 10mc voltage controlled xtal oven, the ublox o/p's 10kc not 10mc, the pll removes the phase noise from the ublox, I'm thinking of phase synchronizing the 1hz o/p to the 10mc xtal oven as I use it for a real time clock, though thats a little overkill.
One thing I like and I'm going to make use of is the gps lib, I'd like to be able to use mine standalone with an lcd and know the ublox is locked and I have satellites.
+sean doofer Thanks for you comments. I have also tried using the GPS signal in a PLL to trim a 10MHz OCXO which works well. As you say it then gives a nice clean 10MHz sine wave.
Check out Part 3 of this project as I have upgraded the unit to use a keypad entry for frequency.
+Scullcom Hobby Electronics
Yes of course programmable frequency is handy, however decades is fine for me, in fact 1hz is the main reason for building the unit.
The battery mod and your reference to the library is what I found usefull.
Do you make your PCB's available for us to buy? It might make it easer on everyone and also make you a few bucks.
+Joe Loucka Sorry I do not make PCB's to buy. But I do make available the artwork here which you can use for free. I am not really doing this to make any money.
Excellent video and project.
+Graham Wilson Thanks.
Great video, very informative.
I kinda hopes you'd do external OCXO and then dicipline that to the GPS with PLL... maybe the next project? :D
Just watched this video and thought the same. Probably don't need an OCXO as the GPS gives you the long term frequency stability. A 10MHz voltage-controlled xtal oscillator should then give you the low phase noise to get rid of the jitter via the PLL.
why not use a RTC?! i mean... i GET IT.. but man...
GREAT VIDEO! not trying to discourage you at all!!! keep em coming LOVE YOUR WORK!!
73
+su pyrow I want to take that back... You have convinced me. gps is the way to go.
begging your forgiveness
73!!
+su pyrow No problem. Thanks.
Great video as always, I really want to build one of these.... and by the way, what nimrod would give this video a thumbs down???
+Darian Cabot Thanks Darain. I always seem to get the odd thumbs down which I think most You Tubers do. I understand that my videos may not appeal to everyone.
I suspect this will be very jittery at 10MHz
Can you give me a reliable address where I can order the neo7m?.... I buy one at ebay, but that's a fake. I can not change the configuration.
Cheers, Hans
Hi Hans,
I purchased mine on eBay. You could try:
www.ebay.co.uk/itm/NEO-7M-GPS-Module-Built-in-Data-Memory-with-Antenna-and-USB2TTL-Replace-NEO-6M/152606352091?hash=item23880c22db:g:6coAAOSwceNZVmnT
This looks like to one I purchased.
There are many sellers on eBay.
Some sellers are still selling the older Neo-6 which is no good for this project.
Regards,
Louis
Thanks Louis.
Regards, Hans
33:00 scope needs a calibration.
Nice project!
+Ståle Sætervik Thanks.
Since you are pushing the GPS module a little too hard at 10MHz and since you are trying to design an accurate freq standard, why not set the GPS to output 1MHz instead and use a PLL to gen the 10MHz? This would then give you more stability in the output noise and jitter of and would also lock to a satellite quicker.
+Kevy Thanks for your comments. Yes I agree about using a PLL. This is something I have used myself in the past but I wanted to keep this project easy to build. As you say the 1MHz output from the GPS is a much cleaner square wave. I am looking at some future projects using PLL's. As a future upgrade we could add a PLL to the project.
+Scullcom Hobby Electronics Yeah a PLL might be a good idea to reduce the phase noise if you are designing a high quality frequency standard.
So well done
EEPROM don't need battery backup
Why does the EEPROM not remember the contents with the power off ?, I thought the idea was they held the memory until they are electrically erased !, nice project, parts on order already, keep up the good work, I love these projects and I buy in most of the major parts to supply via our www.basicmicro.co.uk web site, thanks, Dave
+david ellis Thanks David for your comments and pointing out the EEPROM error. I have had a further look at the datasheet for the ublox Neo-7. After further reading, there is some internal RAM in the Neo-7M module in the centre of the board and it is this that uses the configuration settings. Therefore, the battery back-up is needed for that RAM memory inside the ublox module. My mention of the external EEPROM was an error and the more I think about the EEPROM it is probably used for saving GPS data possible for logging. I need to check that further. Thanks again for bring it to my attention. By the way my name is Louis (I think you most have got Dave from my Scullcom website on which David my youngest son has some of the comics he has written and drawn).
+Scullcom Hobby Electronics Louis, I wanted so much to believe you were drawing the comics! But alas, you're like the rest of us. Congrats to David, though, on some good talent.
Seriously, I like your videos (not another Arduino with a light bulb!) and appreciate the time and effort you put into choosing the projects and their production.
+Alan Uomoto Thanks I will pass on your congrats to my son David re the comics.
very interesting
good work! vy 73 de DL1LEP
Hi Louis;
You said that the board uses a 80mF capacitor, but more later in the video, it looks like to me that the board uses a MS621 type battery, can you check that?
Also, from the datasheet;
" 1.12.2
Real-Time Clock (RTC)
The RTC is driven by a 32kHz oscillator, which makes use of an RTC crystal. If the main supply voltage fails, and a battery is connected to V_BCKP, parts of the receiver switchoff, but the RTC still runs providing a timing reference for the receiver. This operating mode is called Hardware Backup Mode, which enables all relevant data to be saved in the backup RAM to later allow a hot or warm start."
www.u-blox.com/sites/default/files/products/documents/NEO-7_DataSheet_%28UBX-13003830%29.pdf
Love your work and your excellent artwork with the schematics!
+GADELHAS82 Yea! his artwork is superb! how long did that take? MAN!! ...wow
+GADELHAS82 Thanks for your comments. I checked the board and it uses a Seiko XH414HG which is a 0.8 farad capacitor. I have two of these Neo-7M modules and they both use this super capacitor. The MS621 you mentioned was used in the earlier Neo-6M module.
Thanks for the info for the RTC. It seems that the RAM also holds the configuration settings.
Это любой сможет, настроить NEO на10 МГц. Я думал у вас будет алгоритм синхронизации по сигналу 1PPS
sir please make projects on woman safety
and arduino security devices
awesome hack, thanks
+Ronen Shemesh Thanks. Your welcome.
You lost me at "for windows...", since I don't run that here.