mirror of
https://github.com/adafruit/RTClib.git
synced 2026-07-28 04:05:31 +00:00
Merge pull request #199 from Gambalunga/master
Added calibration method example PCF8523
This commit is contained in:
@@ -44,6 +44,29 @@ void setup () {
|
||||
// to be restarted by clearing the STOP bit. Let's do this to ensure
|
||||
// the RTC is running.
|
||||
rtc.start();
|
||||
|
||||
// The PCF8523 can be calibrated for:
|
||||
// - Aging adjustment
|
||||
// - Temperature compensation
|
||||
// - Accuracy tuning
|
||||
// The offset mode to use, once every two hours or once every minute.
|
||||
// The offset Offset value from -64 to +63. See the Application Note for calculation of offset values.
|
||||
// https://www.nxp.com/docs/en/application-note/AN11247.pdf
|
||||
// The deviation in parts per million can be calculated over a period of observation. Both the drift (which can be negative)
|
||||
// and the observation period must be in seconds. For accuracy the variation should be observed over about 1 week.
|
||||
// Note: any previous calibration should cancelled prior to any new observation period.
|
||||
// Example - RTC gaining 43 seconds in 1 week
|
||||
float drift = 43; // seconds plus or minus over oservation period - set to 0 to cancel previous calibration.
|
||||
float period_sec = (7 * 86400); // total obsevation period in seconds (86400 = seconds in 1 day: 7 days = (7 * 86400) seconds )
|
||||
float deviation_ppm = (drift / period_sec * 1000000); // deviation in parts per million (μs)
|
||||
float drift_unit = 4.34; // use with offset mode PCF8523_TwoHours
|
||||
// float drift_unit = 4.069; //For corrections every min the drift_unit is 4.069 ppm (use with offset mode PCF8523_OneMinute)
|
||||
int offset = round(deviation_ppm / drift_unit);
|
||||
// rtc.calibrate(PCF8523_TwoHours, offset); // Un-comment to perform calibration once drift (seconds) and observation period (seconds) are correct
|
||||
// rtc.calibrate(PCF8523_TwoHours, 0); // Un-comment to cancel previous calibration
|
||||
|
||||
Serial.print("Offset is "); Serial.println(offset); // Print to control offset
|
||||
|
||||
}
|
||||
|
||||
void loop () {
|
||||
|
||||
Reference in New Issue
Block a user