logo elektroda
logo elektroda
X
logo elektroda

Frequency synchronisation from NTP servers on the ESP8266 and automatic setting of the Si5351 chip

Aimeiz 903 7
ADVERTISEMENT
Treść została przetłumaczona polish » english Zobacz oryginalną wersję tematu
  • #1 19134427
    Aimeiz
    Level 16  
    Good day.
    I need to make myself an accurate frequency standard with an accuracy of at least 0.1 PPM. So I am looking for preferably an online source of a time or frequency pattern.
    Such a source can be obtained from a GPS receiver. Once the "fix" is obtained, we have a precise second hand on the PPS output.
    Unfortunately, in my location, I have trouble getting a fix on common GPS modules and am looking for another source, such as from the internet.
    There are libraries available for synchronising the watch on ESP8266 modules from NTP servers, They give accurate time, but is it possible to get pulses every second with 0.1 PPM accuracy using this method?

    With such an accurate second hand you can automatically synchronise the Si5551 chip and from it get the precise frequencies you already want.

    Alternatively, you could do this with some sort of precision frequency source.
    The Si5351 runs from 8KHz to 160MHz, so perhaps there is an internet precision frequency standard in this range from which you could get such a precise frequency and process this in the ESP8266???
  • ADVERTISEMENT
  • #2 19134450
    lesławek
    Level 32  
    Why not use the rubidium pattern?
  • ADVERTISEMENT
  • #3 19134590
    khoam
    Level 42  
    Aimeiz wrote:
    There are libraries available for synchronising the watch on ESP8266 modules from NTP servers, They give accurate time, but is it possible to get pulses every second with 0.1 PPM accuracy using this method?
    .
    It depends not so much on the library used (although also important) as on the NTP servers chosen (access to them) and an accuracy of 0.1 PPM is achievable. As the ESP8266 will have to do this every second, you have to consider that there is little else it will be able to do besides NTP pooling itself.
  • #4 19153373
    Aimeiz
    Level 16  
    lesławek wrote:
    Why not use the rubidium pattern?
    .
    Of course you can use an expensive and sizeable custom pattern, but I am looking for a simpler solution. Basically for my application a good TCXDO or OCXDO works, but I was inspired by the automatic calibration methods using the GPS module - it gives an accurate second hand when it sees satellites, but the idea of using NTP came to me, which with good internet is always available.
    The solution should be small in size, as it is placed suspended under the arm of the satellite dish along with the rest of the receiving and transmitting circuitry. Losses on longer fidgets are gigantic and ideally cables transmitting gigahertz or even hundreds of MHz should be as short as possible.

    I am just writing a piece of software on the ESP8266 using the NTP library.
    I'm going to try using the microsecond timer function - it's in the avr Arduino, it's probably in the ESP8266 too. In the AVR it overflows every few tens of hours.
    I intend to read the exact time from NTP and reset the timer.
    Then in some longer time in an hour or so, read how many microseconds were counted and compare that with the next NTP reading.
    I will divide the difference by the number of seconds allocated to the test and calculate how many microseconds is a real second. This is the amount I will set to clock the GPIO in the ESP-8266 and I will have what I got from the GPS - an accurate and automatically calibrated second hand.
    This I will use instead of GPS for the already tried GPSDO (GPS Disciplined Oscillator) circuit on Arduino and Si5351.
    I will be able to compare the quality of the solution functionally with the GPSDO by comparing if and how the converter controlled by this for radio communication via the QO-100 satellite breaks down, in the short and long term, and also functionally by communication tests with stable digital emissions.
    You need a super stable source of two signals - 40MHz and 25MHz and this is taken care of by a GPS disciplined module with an Si5351 chip. CLK0 is set at 2.5MHz and this signal is used for measurement and calibration, and we have the other two outputs for 50MHz and 25MHz. Simple, cheap and effective.

    I thought you could eliminate the Arduino and also do the Si5351 control and calibration on the same ESP8266, but the ESP8266 is poorer in timers and the better one is occupied by WiFi functionality.

    By the way. Maybe someone knows where to find the documentation of the processor used in the ESP8266, where the timers would be described, the use of them for interrupts or counting fast pulses. AVRs can count up to 5MHz I think. Not to be outdone is the PIC - it will count over 50MHz. I wonder what speed the counter in the ESP can handle? Maybe someone knows.
    The examples I've found are rather slow solutions for measuring the speed of mechanical or audio circuits. And I need to count at least 2.5MHz for it to make sense.
  • #5 19154049
    khoam
    Level 42  
    Aimeiz wrote:
    I thought you could eliminate the Arduino and also do the Si5351 control and calibration on the same ESP8266, but the ESP8266 is poorer in timers and the better one is occupied by WiFi functionality.
    .
    So it is better to use the ESP32 instead of the ESP8266. The ESP32 has four 64-bit timers.
    Link to documentation Chapter 19.
  • ADVERTISEMENT
  • #6 19189341
    Aimeiz
    Level 16  
    Thanks.
    I just missed such documentation.
    Maybe there is somewhere a reference to assembler for this processor.
    In Arduino you can write directly in C++ and also insert assembler inserts, at least for AVR, but I don't know mnemonics for this processor.
    Programming timers is not a very complicated matter and it is better to do it directly from assembler than to use libraries that often don't know what they do and how.

    Where can I find such documentation for the ESP-01 or;i ESP8266?
  • ADVERTISEMENT
  • #7 19189630
    khoam
    Level 42  
    Aimeiz wrote:
    Maybe there is a reference to the assembler for this processor somewhere.

    Link - Documentation for xtensa

    Aimeiz wrote:
    Where can I find such documentation for the ESP-01 or;and ESP8266?
    .
    Link .
  • #8 19220048
    Ondo
    Level 11  
    And what is to be clocked with this generator, is the 0.1ppm accuracy to be short term or long term?

    "Ordinary" OCXOs mounted in telecommunications equipment (such as GSM radios) have a precision of the order of ppb. Look for it on the grey market.

Topic summary

The discussion revolves around achieving accurate frequency synchronization using NTP servers on the ESP8266 and the Si5351 chip. The user seeks a reliable time source with at least 0.1 PPM accuracy, considering challenges with GPS modules in their location. Responses suggest that while NTP can provide accurate time, the choice of NTP servers and the library used are crucial for achieving the desired precision. Alternatives like rubidium standards and OCXOs are mentioned, but the user prefers a compact solution. The ESP32 is recommended over the ESP8266 for its superior timer capabilities. The user is also looking for assembler documentation for programming the ESP8266 timers directly.
Summary generated by the language model.
ADVERTISEMENT