שְׁאֵלָה:
דיוק שעון זמן של ארדואינו
KK6FSL
2014-02-16 05:54:06 UTC
view on stackexchange narkive permalink

כרגע אני מנסה ליצור שעון זמן של Arduino באמצעות ספריית הזמן PJRC ( http://www.pjrc.com/teensy/td_libs_Time.html). אני יודע שמכיוון שרוב לוחות ה- Arduino פועלים עם שעון 16 מגה-הרץ ומהוד יחיד, הזמן יכול להיות "מחוץ לסינכרון" לאחר פרק זמן מסוים.

עם זאת, תהיתי אם למישהו יש מושג לגבי הדיוק של ספריית ה- Time בשימוש ב- Arduino DUE עם שעון 84 מגה-הרץ. בדקתי את זה ועד כה, השעון נשמר מסונכרן במשך כמה שעות. תודה!

מגבלות הדיוק של הספרייה תלויות בדיוק הקריסטל. נניח שיש לך גביש שנכבה ב- 0.5 שניות בכל שעה, נהדר לטווח הקצר, אבל אם אתה מרחיב את זה במשך שנה זה מעל שעה אחת בחופש באותו זמן. אם אתה רוצה שמשהו ישמור על זמן מדויק לאורך תקופה ארוכה, אני מציע שעון זמן אמיתי (עדיין יש להם אי דיוקים), מודול GPS או חיבור לאינטרנט כדי לסנכרן איתו.
@jamolnng תודה על תשובתך. האם אתה יודע את הדיוק של הקריסטל ב- Arduino DUE או לאן יכולתי למצוא אותו?
הדיוק הטוב ביותר שתקבל הוא 84 מגה-הרץ, כאשר הם מייצרים, או מבשלים, את הקריסטל הם יכולים לעשות את זה רק במידה מסוימת מדויקים, גם הסביבה של הקריסטל (טמפרטורה, לחות וכו ') ממלאת תפקיד ב הדיוק של זה.
@jamolnng אז האם אני יכול לצפות לדיוק גבוה יותר עם גביש 84MHz ולא קריסטל 16MHz ברוב הארדואינו האחרים?
לא בהכרח מכיוון שאם בשני 84 מגה הרץ וה 16 מגה הרץ יש את אותה מידת חוסר דיוק במחזור שעון אז לשעון 16 מגה הרץ יהיה דיוק קטן יותר בסופו מכיוון שהוא עשה פחות מחזורים. תדירות הגביש היא יותר כמה מהיר המעבד
"הדיוק הטוב ביותר שתקבל הוא 84MHz" - זה לא הגיוני בעיניי!
הוא חיפש את התדירות המדויקת של גביש השעון כולל פגמיו. נראה שזה מאוחר לערוך ...
ל- Due יש [RTC] (http://forum.arduino.cc/index.php?topic=141233.msg1061157#msg1061157 "RTC") אך אין סיכות להוסיף סוללה חיצונית כדי לשמור על פעולתה.
ארבע תשובות:
#1
+10
Jesse Laning
2014-02-16 06:30:47 UTC
view on stackexchange narkive permalink

מגבלות הדיוק של הספרייה תלויות בדיוק הקריסטל. כאשר הם מייצרים, או מבשלים, את הקריסטל הם יכולים רק להפוך אותו במידה מסוימת למדוייקת, גם הסביבה של הקריסטל (טמפרטורה, לחות וכו ') ממלאת תפקיד בדיוקו. נניח שיש לך גביש שנכבה ב -5 שניות בכל שעה, נהדר לטווח הקצר, אבל אם אתה מרחיב את זה במשך שנה זה יותר משעה חופש באותו זמן. אם אתה רוצה שמשהו ישמור על זמן מדויק לאורך תקופה ארוכה אני מציע שעון זמן אמיתי (עדיין יש להם אי דיוקים), מודול GPS או חיבור לאינטרנט כדי לסנכרן איתו.

למידע נוסף עיין ב המאמר בוויקיפדיה בנושא גבישי קוורץ

השימוש בקריסטל 84 מגה הרץ מול גביש 16 מגה הרץ לא בהכרח ישפר את הדיוק של שעון הארדואינו מכיוון שתדירות הקריסטל היא אינדיקטור יותר של מהירות המעבד מאשר הדיוק. הדיוק של שעון הארדואינו תלוי בעיקר בדיוק של מתנד הקריסטל.

עריכה: אני לא מומחה למתנדים קריסטלים, אז אם אתה רואה משהו לא בסדר כאן אנא יידע אותי

#2
+5
Edgar Bonet
2016-09-02 21:08:13 UTC
view on stackexchange narkive permalink

ביקור חוזר בשאלה ישנה ... מכיוון שמצאתי פוסט בבלוג אינפורמטיבי מאוד ששופך בו אור חדש. אבל תן לי קודם לספק קצת הקשר לפני מתן הקישור.

כאשר אנו מעריכים את איכות בסיס הזמן, בין אם זה גביש, מהדהד קרמי או תקן תדר בדרגה מעבדה, יש להבחין בשתי תפיסות:

  • דיוק : כמה קרוב תדירות בסיס הזמן לערך ה נומינלי
  • : כמה תדר זה נסחף לאורך זמן

דיוק חשוב אם אתה רוצה שהשעון שלך ייתן זמן נכון "מחוץ לקופסה". עם זאת, אם אתה מוכן להשקיע זמן בכיול השעון שלך, אז לא באמת אכפת לך כי אתה הולך לכייל את כל הדיוקים שאתה מודד. התשובה של jfpoilpret מספקת דוגמה לפרוטוקול כיול "ידני", אשר בהכרח ארוך מאוד. אם אתה יכול לשאול מודול GPS עם פלט של 1PPS, ניתן לבצע את הכיול תוך כמה שניות.

יציבות היא נושא רציני יותר. אם תדירות הזמן מבוססת באופן אקראי, זה יביס את מאמצי הכיול שלך. בעיקרו של דבר, הכיול יגיד לך כמה מהר או לאט השעון שלך פועל עכשיו , אך הוא לא יאפשר לך לחזות כמה מהר או איטי הוא יפעל בעתיד .

הנה הקישור המובטח: דיוק תדר שעון ארדואינו, מאת ג'וריס ואן רנטוויק.

מה שג'וריס עשה זה למדוד את הדיוק והיציבות של ארדואינו ProMini ( השמיע תהודה קרמית) ודואמיליאנובה ישנה (קוורץ קריסטל). מנקודת המבט שלי, ההסעות העיקריות הן:

  • שני השעונים אינם בוטים לחלוטין ולכן שניהם יצטרכו כיול משתמשים על מנת שישמשו כשעונים
  • לקריסטל הקוורץ של ה- Duemilianove יש יציבות ראויה, יותר מ- 1.5e-8 בשעה 6 שעות בממוצע
  • היציבות של המהוד הקרמי של ה- Pro Mini היא פתטית, יותר מ שני סדרי גודל גרועים יותר מהקריסטל, מה שהופך אותו חסר תועלת מבחינה כלכלית כחתיכת זמן

הנה העלילה שלו סטיית אלן, המודד חוסר יציבות שעון כפונקציה של זמן תצפית:

Allan deviation of Arduino Clock Frequency
(מקור: jorisvr.nl) sub >

למרות שלמחקר זה יש מגבלות כלשהן (רק שני לוחות נבדקו וזמן התצפית קצר מדי), הוא נחשב היטב ואינפורמטיבי מאוד. אני ממליץ לך לקרוא אותו בשלמות.

התדירות של גבישי קוורץ משתנה מעט עם הטמפרטורה. אם אתה יכול לשלוט על הטמפרטורה זה עוזר לשמור על התדירות יציבה.
#3
+3
jfpoilpret
2014-02-16 14:20:36 UTC
view on stackexchange narkive permalink

הדרך הטובה ביותר לדעת את הדיוק של המהוד של הלוח שלך היא למדוד אותו בעצמך.

לשם כך, אתה יכול להשתמש בפונקציה מיליס () של Arduino של את הלוח שלך וכתוב סקיצה קטנה שתאפשר:

  1. תאפשר לך לקבוע את זמן ההתחלה למדידת סחף הזמן (למשל בלחיצת כפתור פשוטה); תפעיל את הכפתור בהתבסס על זמן זמן מדויק.
  2. ואז התקשר שוב ושוב למילי () עד לפחות 120 שעות ("שעות ארדואינו", שיהיו בסביבות 5 ימים) חלף
  3. הראה אות לאחר שחלפו 120 השעות האלה (הסקיצה שלך כנראה צריכה "להזהיר" אותך לפני שהגיע הזמן המדויק כדי שתתכונן למדידה)
  4. כאשר 120h עברו חלף, בדוק את זמן ההתייחסות שלך מבוסס (נעשה שימוש בשלב 1.) ובדוק כמה זמן עבר (צריך להיות 120 שעות +/- epsilon)
  5. ברגע שאתה יודע את סחיפת השעון שלך, וסיפק את הלוח שלך יפעל באותם תנאים סביבתיים (הטמפרטורה בעיקר) של המדד שלך, אתה יכול להשתמש בו בשרטוטים שלך כדי להתאים את הערך millis () כל שעה בערך.

כמובן, גישה זו היא רחוקה מלהיות מושלמת מכיוון שהיא דורשת התערבות אנושית ובכך תיצור סחיפות זמן נוספות במהלך המדידות, לכן עליך למדוד את סחיפות השעון שלךלאורך תקופה ארוכה.

גישה משופרת תהיה לחבר שעון RTC ברמת דיוק גבוהה (יש לבחור את הדיוק על בסיס הדיוק הדרוש ליישום שלך) ללוח שלך ולהתאים את השרטוט כך שהוא מחשבת אוטומטית את הסחף. ברגע שקיבלת את זמן ההסחף אתה יכול לעשות את אותו הדבר כמו שלב 5 לעיל בשרטוטים שלך, ולנתק את שעון ה- RTC מהלוח שלך.

נקודות חשובות :

  • למדוד את סחיפת הזמן על הלוח שתזדקק להתאמת השעון בהמשך (אם יש לך כמה לוחות, עליך למדוד סחיפה אחת לכל לוח)
  • להבטיח את יציבות הסביבה בה שלך ישמש לוח

לבסוף, אם אתה באמת זקוק לדיוק גבוה, אז חבר בהחלט מקור שעון חיצוני (למשל שעון RTC, GPS, NTP) ללוח שלך והשתמש בו כ SyncProvider לספריית PJRC.

#4
+2
jippie
2014-02-16 13:50:26 UTC
view on stackexchange narkive permalink

גביש השעון הממוצע של המערכת שלך יושבת בכמה עשרות עמודים לדקה (חלקים למיליון. הם נהדרים לתזמון יציב ומדויק של אותות, אך דרמטיים לשמירה על זמן מדויק. ללא הוראות מיוחדות גביש המערכת עשוי להיות כבוי בכמה שניות ליום.

הפיתרון הוא להשתמש בשעון אמת בזמן אמת, המונע על ידי מה שמכונה בדרך כלל גביש שעון של 32768 הרץ. גבישים אלה הם דיוק יחסית לגורם 10. אתה יכול להגדיר את מתנד משלו שמפריע למעבד הראשי ושומר על הספירה בשרטוט הארדואינו שלך או שאתה מוצא לוח פריצת RTC.

שתי דוגמאות אקראיות שצצות בגוגל עם מונחי החיפוש "RTC breakout":



שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 3.0 עליו הוא מופץ.
Loading...