Author Topic: Si Time SiT5721 calibration  (Read 1472 times)

0 Members and 1 Guest are viewing this topic.

Offline ve2mrxTopic starter

  • Regular Contributor
  • *
  • Posts: 50
  • Country: ca
Si Time SiT5721 calibration
« on: February 21, 2024, 02:40:41 am »
Hi fellow geeks,

Would any of you know how to calibrate an Si Time SiT5721 frequency source?
I have one, I can read/write to it but I'm not too sure how to calculate the Pull Value and Aging compensation.

Any pointers?

EDIT: It is connected to a uBlox LEA-M8F and I look at UBX-TIM-SMEAS messages. It is configured as an external frequency source in the GNSS, itself configured as a PPS source.

Thanks,
Martin
« Last Edit: February 21, 2024, 02:44:49 am by ve2mrx »
 

Offline dizcza

  • Newbie
  • Posts: 6
  • Country: ua
Re: Si Time SiT5721 calibration
« Reply #1 on: March 06, 2024, 06:55:00 am »
Regarding aging compensation, I took the PID implementation from https://github.com/liebman/esp32-gps-ntp. I haven't changed the constants and it works fine for both DS3231 and RV3032.

I'd like to ask you how you managed to receive UBX-TIM-SMEAS messages in LEA-M8? Are they sent automatically after a fix or you send a configuration command (UBX-CFG-SMGR)?
 

Offline ve2mrxTopic starter

  • Regular Contributor
  • *
  • Posts: 50
  • Country: ca
Re: Si Time SiT5721 calibration
« Reply #2 on: April 13, 2024, 04:27:01 pm »
Hi dizcza,

I'd like to ask you how you managed to receive UBX-TIM-SMEAS messages in LEA-M8? Are they sent automatically after a fix or you send a configuration command (UBX-CFG-SMGR)?

I enabled the UBX-TIM-SMEAS message in uBlox u-Center after configuring UBX-CFG-ESRC and UBX-CFG-SMGR. The UBX-CFG-MSG command can be used to enable UBX-TIM-SMEAS every second, and this is what I did.

To calibrate the SiT5721, I mostly figured out the math using 2-point linear algebra in a spreadsheet. My SiT5721 is operating in the linear aging region now, so it works well enough so far. I can get 0.8 ppb precision easily. It is all manual so far, but I will likely try to automate it using Python at some point. I'm in no rush, so I'll check out the PID implementation you mentioned! It would be nice to have the pull value and aging compensation to auto-set!

I learned that to use GPS as a frequency standard transfer mechanism, you need to use one exact day (86400 seconds) for measurements, meaning one adjustment per day with accuracy. I found that I could use a 1h measurement to set a coarse pull value, and then wait 86400 seconds to get the accurate pull value. This sets the frequency offset to zero at the time I set the accurate pull value, so I need another 86400 seconds to measure crystal aging compensation. I believe it is the 24h drift/86400s, this is where I am now!

If I was a math genius, I'd use something more advanced than 2-point linear equations, but the simplicity helps grasp the principles at play. Maybe this will be easier to do once I start using Python to pull uBlox messages and set the SiTime device!

Martin
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf