תוכן עניינים:
וִידֵאוֹ: GPSDO YT, תדר התייחסות ממושמע 10Mhz. זול. מדויק: 3 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:12
*******************************************************************************
STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP
זהו פרויקט מיושן.
במקום זאת בדוק את גרסת התצוגה החדשה של 2x16 lcd הזמינה כאן:
www.instructables.com/id/GPSDO-YT-10-Mhz-L…
השארתי את הגרסה הישנה כאן לתיעוד.
*******************************************************************************
היי חבר 'ה, מהו GPSDO? GPSDO פירושו: מתנד ממושמע GPS. GPS למערכת מיקום גלובלית. כל לווייני ה- GPS מצוידים בשעון אטומי מסונכרן. מודול GPS מקבל אותות אלה מכמה לוויינים. ועל ידי משולש, הוא יודע את מיקומו. אבל כאן, מה שמעניין אותנו הוא הדופק לשנייה שנמצא במודול. בעזרת הדופק המדויק הזה (מהשעון האטומי) נוכל לבצע מתנד מדויק מאוד. בשביל מה ? לעיון, לכיול של מונה התדרים או סתם בשביל ליהנות במעבדה שלו.
הם סכמטיים רבים באינטרנט. ניסיתי כמה. חלקם טובים, אחד עם זעיר 2313 היה 5 הרץ איטי מדי. אבל שלי הוא הכי פשוט, שימושי ונוח. ואני נותן לך את קוד הקס. הם לא VCO ואין מפרידים. המעגל עם VCO מסתדר טוב. עם זאת, חייב להיות לזה אות דופק של 10 קילוהרץ או יותר ברציפות. אם האנטנה חלשה מדי, חסר דופק או לא דופק כלל, המתנד (אוקסו) פועל מעצמו וה- VFC (בקרת תדר מתח) אינו מדויק יותר. המשוב VCO צריך תדר התייחסות כדי להישאר על. אם לא, זה משתנה בין 1 עד 2 הרץ! כמו כן, מודול ה- GPS הזול יותר אינו פועל בתצורה זו. אנחנו חייבים לקבל לפחות 10 קילוהרץ כדי ליצור VCO. ניסיתי עם 1000 הרץ. הפער היה גדול מדי. התדירות משתנה. אז עם ublox neo-6m אתה לא יכול לעשות gpsdo vco נהדר כי תדר הפלט המרבי הוא 1000Hz. אתה חייב לקנות neo-7m או עליון.
כך פועל ה- GPSDO YT שלי. הבקר מצא את ההתאמה הטובה לכל OCXO עם vfc 0 עד 5v. אם אנו מאבדים אותות של רופאי משפחה, התדירות לא זזה כלל. כאשר האות מופיע מחדש, הבקר לוקח את הערך הטוב האחרון שלו הידוע וממשיך כבעבר. בהיקף, עם מתנד הפניה. איננו יכולים לדעת מתי האות אבד או מתי הוא חזר. האות זהה.
לאחר הכיול, תוכל להשתמש ב- gpsdo ללא אנטנה אם תרצה. כמה הרכבות מאוחר יותר תהיה לך סחיפה קטנה מאוד. אבל…. כמה גדול יותר הגיע הזמן לקצת הסברים.
הנה קצת מתמטיקה … מתמטיקה קלה, עקוב אחריי עם זה זה קל. עד כה האלגוריתם כולל 6 שלבים. כל שלב לוקח מדגם של 1 עד 1000 שניות, מצא את התאמת ה- pwm הטובה ועבור לרוב הדגימות הארוכות יותר ליתר דיוק.
דיוק = (((מספר שנייה x 10E6) + 1)/מספר שני) - 10E6
שלב 1, מדגם שני למשך 10, 000, 000 ספירות לדיוק של +- 1 הרץ
שלב 2, מדגם 10 שניות עבור 100, 000, 000 ספירות לדיוק +-0.1Hz
שלב 3, מדגם של 60 שניות עבור 600, 000, 000 ספירות לדיוק של +-0.01666 הרץ
שלב 4, 200 שניות מדגם עבור 2, 000, 000, 000 ספירות לדיוק +-0.005 הרץ
שלב 5, מדגם 900 שניות למשך 9, 000, 000, 000 ספירות לדיוק +-0.001111 הרץ
שלב 6, מדגם של 1000 שניות למשך 10 מיליארדי ספירות לדיוק של +-0.001 הרץ
במקרה הגרוע ביותר. כשנקבל את שלב 6. מספר זה יכול להשתנות מעט כל 1000 שניות או לא. מתישהו זה יהיה 10, 000, 000, 001 או 9, 999, 999, 999 אז, +או - 0, 000, 000.001 וריאציה עבור 1000s. כעת עלינו לדעת את הערך למשך שנייה אחת.
10Mhz = שנייה אחת
לשנייה אחת = 10, 000, 000, 001 ספירה/1000s = 10, 000, 000.001 הרץ (במקרה הגרוע ביותר לשנייה אחת)
10, 000, 000.001 - 10, 000, 000 = 0.001 הרץ/ש מהר או איטי יותר
0.001Hz X 60 X 60 X24 X365 = 31536 הרץ/שנים
אז זכור, 10Mhz הוא שניה אחת, 31536Hz X 1 / 10E6 = 0, 0031536 שנייה / שנה
עוד שיטת חישוב מהירה יותר. פספוס אחד ל- 10E9Mhz הוא 1/10E9 = 1E-10
1E-10 x 60x60x24x365 = 0, 0031536 שני/שנה.
האם זה מספיק מדויק עבורך?
עם זאת, עליך להיות בעל OXCO טוב. אני מעדיף פלט סינוס בתנור כפול 12V. יציב יותר, שקט ומדויק. אבל יש לי אותה תוצאה עם 5V פשוט. לדוגמא, לסטפ 2187 יש זמן יציבות קצר (סטיית כל) של 2x10-12 = 0.000, 000, 000, 002 הרץ של יציבות. במקביל, כאשר דופק gps זמין, Avr תמיד יתקן את pwm (תדר). UC תמיד סופר … תמיד. המשמעות היא שבתצוגה לא תראה תאריך ושעה. כאשר uC מדגם 900s, זה עסוק במשך 900 שניות. זה חייב לספור את כל השעון. הבעיה היא uC פועל במהירות 10Mhz. כל שעון חייב להיות ספירה. זה סופר את עצמו. אם חסר רק שעון אחד המדגם לא יהיה טוב והתאמת pwm לא תהיה נכונה. אני לא יכול לרענן את התצוגה בכל שנייה.
כאשר הדגימה מתחילה. Uc מתחילה לספור טיימר 0. כל שעון 256 יוצר הפרעה. רשום X מצטבר. כאשר הוא מלא Y מצטבר ו- X מתאפס ל 0 וכן הלאה. בסופו, בדופק ה- GPS האחרון שלו, הספירה נעצרת. ועכשיו ורק עכשיו אני יכול לעדכן את התצוגה ולעשות קצת חשבון לחישוב pwm.
בידיעה זאת, יש לי רק 25, 6 לנו (256 שעון לפני הפסקה) לקרוא ולהציג זמן או אחר. זה בלתי אפשרי. ניתן להדביק הפרעה אחת, לא 2. אני יכול לרענן את הזמן שאחרי 1000 … אבל זה לא יהיה מעשי לראות זמן עם מרווח של 15, 16 דקות. יש לי שעון, שעון, טלפון סלולרי כדי לדעת את הזמן:) אני עושה הפניה של 10 מגה -הרץ. לא שעון.
בעיה נוספת שהייתה לי, בחלק מהדרכות avr יש 2 מחזורים. כולל הוראת rjmp. המשמעות היא שאם דופק ה- GPS הראשון או האחרון יעלה במקביל להוראה של 2 מחזורים, ה- uC יחמיץ שעון. כי uC יסיים את ההוראה לפני תחילת ההפסקה. אז הדלפק יתחיל או יעצור מחזור אחד מאוחר יותר. אז אני לא יכול לעשות לולאת המתנה בזמן … אבל למעשה, אין לי ברירה אחרת. הייתי צריך לולאה איפשהו !! אני אז אני משתמש בהוראות rjmp ו- nop (זה לא עושה כלום). לא היא הוראה של מחזור אחד. שמתי 400 הוראות nop עבור rjmp אחד ב- atmega48. 2000 בגרסת atmega88 ו- atmega328p. אז הסיכויים שהם פחות לדופק הראשון או האחרון מגיעים בהוראת rjmp. אבל כן זה אפשרי ואם זה יקרה, השגיאה הזו תתוקן בדגימה הבאה.
התצוגה היא אופציונלית. אתה יכול לעשות מעגל עם, uC, OCXO ומסנן מעבר נמוך (קבל הנגד) בלבד, להדליק ולחכות. לאחר שעה אחת תהיה לך תדר מקובל. אבל כדי להגיע לשלב 6. זה לוקח כמה שעות.
Pwm הוא 16 סיביות. שלב 65535. 5v/65535 = 76, 295 uV
וריאציה OCXO היא 2Hz על 1V. 1v/76, 295uV = שלב 13107 למשך 2 הרץ. 2/13107 = 152.59uHz לפי שלב של pwm
שלב 5, משתנה pwm ב 3, שלב 6 הוא שלב 2 … למה 3? כי 3 משנה תדירות ב- 0.000, 000, 000, 4 בקנה מידה של 15 דקות. ו -4 הוא מספר הקסם שלי באלגוריתם שלי. לדוגמה, אם בשלב הראשון, התדר הראשון שנמצא הוא 10.000, 003Mhz. אני מוריד ב 0, 000, 000.4 צעד.
צעד גדול מדי יכול לעבור מ- 10.000003 ל- 10.000001 ואחרי 9, 999998Hz. אני מפספס את המטרה.
עם 0, 0000004. זה מהיר יותר מ 0, 1 ואני בטוח יותר שלא לעקוף מספר. וכן הלאה. אני עושה את אותו הדבר עם 10 שניות, 60 שניות ושלבי 200 ו -900. 1000s פועל במצב והשתמש בשלב pwm של 2
שימו לב כי שלב 5 ארוך יותר להשגה. הפער בין 4 ל -5 גדול יותר. אבל זה עוזר לעבור מ -5 ל 6 מהר יותר.
כאשר שלב 6 מונה בדיוק 10 מיליארדים, ערכי pwm נשמרים ב- eeprom. עכשיו, הגיע הזמן למצב הריצה. מדגם זה סופר 1000 שניות אך עם pwm דו -שלבי בלבד. במצב ריצה, התדירות האמיתית מוצגת ומתעדכנת במרווח של 1000 שניות. אם האבוד הולך לאיבוד במצב ריצה הוא עובר בריצה עצמית. אין שינוי ב- pwm במצב זה. כאשר האות חוזר, הוא חוזר לשלב 5 לסינכרון מחדש.
אם המנתק מתנתק לאחר שמירת eeprom. זה יתחיל בשלב 5 עם הפעלה עם ערך pwm eeprom.
למחיקת ערך eeprom, פשוט לחץ על הכפתור בעת ההפעלה. Pwm 50% יהיה עומס וכיול יתחיל משלב 1.
אני עובר שעות רבות כדי לנסות דבר אחר, תצורה של המעגל. עשיתי הרבה בדיקות, עם מגבר OP, חיץ ושבב אחר. ובסוף … התוצאה הטובה ביותר שקיבלתי אינה זקוקה לה. רק ספק כוח יציב וקצת סינון. אז אני שומר את זה פשוט.
שלב 1: קנה חלקים
הדבר הראשון שצריך לעשות הוא לקנות את החלקים. כי לעתים קרובות המשלוח מאוד מאוד ארוך.
מודול GPS: אני משתמש ב- ublox neo-6m. קניתי את זה באיביי. בצע חיפוש, זה עולה בערך 7 עד 10 דולר.
כברירת מחדל, מקלט זה מפעיל את הדופק 1 על השני. אנחנו לא צריכים לעשות כלום.
אתה יכול להשתמש בכל מודול GPS עם פלט דופק של 1 הרץ. יש לך אחד. תשתמש בזה!
OCXO: ניסיתי 2 מתנדים. פלט תנור כפול STP2187 12V גל סינוס. ופלט ISOTEMP 131-100 5V, גל מרובע. שניהם מגיעים מ- radioparts16 ב- ebay. קיבלתי שירות טוב מאוד מהן והמחיר היה זול יותר.
AVR: קוד התאמה על מעט atmega48. אבל אני מציע לקנות atmega88 או atmega328p. זה כמעט אותו מחיר. קנה את זה ב- digikey או באיביי. אני משתמש בגרסת הטבילה. אתה יכול לקנות גרסת הר על פני השטח, אך שים לב, סיכות אינן זהות לסכימה.
צג LCD: כל תצוגה תואמת 4x20 HD44780 תעבוד. נחשו היכן קניתי את שלי:) כן ב- eBay לפני מספר שנים. עכשיו זה יקר יותר מבעבר. אבל זמין תחת $ 20 ארה ב.
אולי בעתיד הקרוב אעשה קוד לתצוגה 2x16. תצוגות אלה עולות 4 $ בלבד. ובינך לביני, תצוגת 2 שורות תספיק.
עליך להיות בעל מתכנת AVR ISP. תכנות AVR אינו דומה לארדואינו. Arduino כבר תוכנת לתקשר ביציאה טורית. יש לתכנת AVR חדש לגמרי עם ספק שירותי אינטרנט או מתכנת מתח גבוה במקביל. אנו משתמשים כאן ב- ISP.
74hc04 או 74ac0, ווסת וולט 7812 ו -7805, נגדים, קבלים…. digikey, ebay
שלב 2: הנה סכמטי ו- Gpsdo_YT_v1_0.hex
אני חושב שהסכימה היא כל מה שאתה צריך כדי לממש את הפרויקט הזה. אתה יכול להשתמש בלוח מחופה נחושת בשיטת חריטה או פשוט בלוח מחורר אם תרצה.
אתה יכול להשתמש בכל קופסה שאתה רוצה, אבל אני מציע קופסת מתכת. או פשוט על קרש לחם בשביל הכיף כמו שלי:)
אני מחכה להארכת אנטנה ומחבר bnc כדי להכניס את הפרויקט שלי לקופסה.
עליך לבחור את ביט הנתיך הנכון. ודא שנבחר מתנד חיצוני. אם יש לך בעיות עם מתנד חיצוני, נסה External Crystal. והשעון low.ckdiv8 אינו מסומן. לראות תמונה. שימו לב, כאשר השעון החיצוני מתמזג מעט, עליכם לספק שעון חיצוני לתכנת או הפעלת הקוד. במילים אחרות, חבר את המתנד בסיכת xtal1.
אגב … אתה יכול להשתמש באותו קוד כדי לעשות מונה תדרים עם שער שניה אחת. פשוט הכנס את השעון למדוד בסיכת xtal1 ויהיה לך מונה תדרים +-1 הרץ.
אני אעדכן את הפרויקט ברגע שיהיו לי דברים חדשים.
בינתיים, אם הפרויקט מעניין אותך, יש לך מספיק חומר להתחיל ואפילו לסיים אותו לפני
העליתי 2 סרטונים, אתה יכול לראות את השלב הראשון ואת האחרון.
אני זמין לכל שאלה או הערה. תודה.
26 בפברואר 2017…. גרסה 1.1 זמינה.
-atmega48 אינו נתמך יותר. אין מספיק מקום.
-מספר הלוויין הוסיף נעול.
-תמיכה 2x16 lcd. אם יש לך 4x20, זה יעבוד גם. אבל 2 שורה אחרונה לא תציג כלום.
שלב 3: כניסה ל- Eeprom
להלן המזבלה של eeprom לאחר זמן ריצה של כמה שעות. אני אסביר איך לקרוא את זה. שוב, זה קל:)
בכתובת 00, 01 מאוחסן ערך pwm. ברגע שלב 5 סופר 9 מיליארד, ערך pwm מתעדכן בכל פעם שהמונה מגיע ל -10 מיליארד בדיוק.
ברגע שאנחנו נמצאים בשלב 5. כל הספירות מאוחסנות ב- eeprom לאחר ערך pwm. התחל בכתובת 02, אחרי 03 וכן הלאה.
דוגמה זו באה מ- 5 וולט שלי. אנו יכולים לקרוא ערך pwm של 0x9A73 = 39539 עשרוני ב- 65536. = 60, 33% או 3.0165 וולט.
אז כתובת 00:01 היא 0x9A73
לאחר מכן תוכל לקרוא 03. עבור 9, 000, 000, 003 Pwm יורד ב- 3 מכיוון שאנו עדיין בשלב 5
00 עבור 10, 000, 000.000 שהות pwm אינה נוגעת ואנו עוברים למצב ריצה (שלב 6)
02 עבור 10, 000, 000.002 במקרה זה, ערך pwm יורד מ -2
01 עבור 10, 000, 000.001 ערך pwm יורד מ -2
01 עבור 10, 000, 000.001 ערך pwm יורד מ -2 שוב
00 לשהות של 10, 000, 000.000 pwm אינו נוגע
00 לשהות של 10, 000, 000.000 pwm אינו נוגע
00 לשהות של 10, 000, 000.000 pwm אינו נוגע
עכשיו אתה יודע לקרוא את ה- eeprom. כל 1000 שניות ערך חדש כתוב ב- eeprom. כאשר eeprom מלא, הוא מופעל מחדש מכתובת 2.
ערך FF ממוצע 9, 999, 999.999
אתה יכול עם המזבלה הזו לעקוב אחר הדיוק, ללא כל תצוגת LCD.
אתה יכול לזרוק את קובץ ה- eeprom באמצעות מתכנת ISP.
אני מקווה שנתתי לך מספיק מידע. אם לא, עדכן אותי. עצות, טעויות, כל דבר.
יאניק
מוּמלָץ:
אופן השימוש מחולל אותות תדר Arduino DDS AD9850: 7 שלבים
אופן השימוש במחולל אותות תדר Arduino DDS AD9850: במדריך זה נלמד כיצד להכין מחולל אותות תדר באמצעות מודול AD9850 ו- Arduino. צפה בסרטון! הערה: הצלחתי להשיג תדר של עד 50MHz אך איכות האות מגיעה גרוע יותר עם התדרים הגבוהים יותר
מונה תדר ברזולוציה גבוהה: 5 שלבים (עם תמונות)
מונה תדרים ברזולוציה גבוהה: מדריך זה מציג מונה תדרים הדדי המסוגל למדוד תדרים במהירות ובדיוק סביר. הוא עשוי עם רכיבים סטנדרטיים וניתן להכין אותו בסוף שבוע (לקח לי קצת יותר :-)) עריכה: הקוד זמין כעת
חיישן לחות קרקע DIY זול עדיין מדויק!: 4 שלבים
חיישן לחות קרקע DIY עשה זאת במחיר זול עדיין: אני חובב צמחים וראש טכנולוגיה. לאחרונה החלטתי לגדל כמה צמחים במרפסת שלי. החלטתי להפוך את מערכת ההשקיה לאוטומטית כיוון שאולי אשכח להשקות אותם לא רציתי לקחת סיכון עם צמחי הפרחים היפים שלי. אז החלטתי להשיג אדמה
תדר מדויק של 1 הרץ מרשת החשמל: 9 שלבים
תדר מדויק של 1 הרץ מרשת החשמל: תדר הקו הוא, בהתאם למדינה 50 הרץ או 60 הרץ. לתדר זה יש תנודות קטנות בטווח הקצר, אך הוא מתוגמל מדי יום על ידי תחנת הכוח וכתוצאה מכך מקור תדר די מדויק ליישומי תזמון רבים
פנס חנות זול למראה, זול: 5 שלבים
פנס חנות LED זול למראה, ובכן, אם מישהו מכם הוא כמוני, רוב נורות הלד פשוט יקרות מדי. רציתי נורת LED זולה שנראתה נחמדה. אז, קניתי פנס RCA של $ 1 מ- Food City, והיה לי ראש של נורת LED שבורה. אז החלטתי לחבר את השניים. פלי