תוכן עניינים:

כיצד למדוד מחזור תדירות והפעלה גבוה, במקביל, באמצעות מיקרו -בקר: 4 שלבים
כיצד למדוד מחזור תדירות והפעלה גבוה, במקביל, באמצעות מיקרו -בקר: 4 שלבים

וִידֵאוֹ: כיצד למדוד מחזור תדירות והפעלה גבוה, במקביל, באמצעות מיקרו -בקר: 4 שלבים

וִידֵאוֹ: כיצד למדוד מחזור תדירות והפעלה גבוה, במקביל, באמצעות מיקרו -בקר: 4 שלבים
וִידֵאוֹ: Non-Pharmacological Treatment of POTS 2024, יולי
Anonim
כיצד למדוד מחזור תדרים גבוהים, במקביל, באמצעות מיקרו -בקר
כיצד למדוד מחזור תדרים גבוהים, במקביל, באמצעות מיקרו -בקר
כיצד למדוד מחזור תדרים גבוהים, במקביל, באמצעות מיקרו -בקר
כיצד למדוד מחזור תדרים גבוהים, במקביל, באמצעות מיקרו -בקר
כיצד למדוד מחזור תדירות והפעלה גבוה, במקביל, באמצעות מיקרו -בקר
כיצד למדוד מחזור תדירות והפעלה גבוה, במקביל, באמצעות מיקרו -בקר

אני יודע מה אתה חושב: "הא? יש המון הוראות כיצד להשתמש במיקרו -בקרי למדידת תדר האות. פיהוק." אבל רגע, יש בזה חידוש: אני מתאר שיטה למדידת תדרים גבוהה בהרבה ממה שמקרו -מיקרו (MCU) יכול לשאת ומחזור הפעולה של האות - והכל במקביל!

טווח התדרים של המכשיר משתרע על ~ 43 הרץ עד ~ 450 קילוהרץ, ואילו מחזור ההפעלה נע בין 1% עד 99%.

תן לי להסביר את החלק "יכול לשאת": MCU מודד תקופה של אות גל מרובע, T, על ידי מעקב אחר זמן בין שני אירועי מעבר עוקבים. לדוגמה, מתח נמוך עד גבוה קופץ על אחד מפיני ה- I/O שלו. הוא עושה זאת על ידי ספירת מספר הפולסים של השעון הפנימי שלו. בתמימות, הגבול העליון לתדרים הנמדדים צריך לציית למשפט הדגימה Nyqvist-Shannon; כלומר, הוא היה שווה בערך למחצית מתדר השעון של ה- MCU. במציאות הגבול הוא הרבה הרבה יותר נמוך, מכיוון שה- MCU חייב לבצע קוד כדי להתמודד עם הפרעות, לשמור משתנים, לבצע פעולות אריתמטיות, להציג תוצאות וכו '. בניסויים שלי עם 48 MHz MCU המספר המינימלי של מחזורי השעון בין המעברים הניתנים למדידה היה בערך 106. מכאן שהגבול העליון של טווח התדרים הניתן למדידה במקרה זה יהיה 48, 000 /212 /2 = 226.4 קילוהרץ.

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

חובה = 100% * P / T

בדיוק כמו במקרה של תדר, יש גבול מעשי לרוחב הדופק. באמצעות הדוגמה שלמעלה, 106 מחזורי שעון יגבילו את רוחב הדופק ללא פחות מ -2.21 מיקרו שניות. או, לא פחות מ -50% ב -226.4 קילוהרץ.

אחת הדרכים להגביר את מגבלת התדרים העליונה של אותות גל מרובע היא יישום מחלקים דיגיטליים שמשתמשים בכפכפים. חלוקת תדר הקלט ב- n תרחיב את הטווח העליון הניתן למדידה n פעמים. אלה חדשות מצוינות, למחיצות דיגיטליות יש פגם בסיסי אחד: אות מחולק מאבד את מידע רוחב הדופק (ומחזור העבודה)! בגלל אופן העבודה של המחלקים, לתפוקתם יש תמיד מחזור עבודה של 50%. באסה…

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

שלב 1: חטיבת התדרים הדיגיטליים

חטיבת התדרים הדיגיטליים
חטיבת התדרים הדיגיטליים
חטיבת התדרים הדיגיטליים
חטיבת התדרים הדיגיטליים
חטיבת התדרים הדיגיטליים
חטיבת התדרים הדיגיטליים

מחיצות תדרים דיגיטליות מסורתיות משתמשות בכפכפים; הדרכה זו מסבירה יפה עקרונות כיצד לבנות מחיצות באמצעות כפכפי JK סטנדרטיים. זה פותר את בעיית תדרי הכניסה גבוהים מדי עבור ה- MCU, אך יש לו חסרון אחד גדול: לאות המחולק יש 50% מחזור עבודה ללא קשר לחובת אות הקלט! כדי להבין מדוע זה המקרה, הסתכלו על שתי הדמויות הראשונות. האות המקורי עם התקופה T ורוחב הדופק P מוזר לתוך סיכת השעון של כפכף JK בעוד סיכות J ו- K שלו נשמרות גבוהות בכל עת (איור ראשון). היגיון 3.3V מניח לאורך כל הדרך. נניח שהכפכף מופעל על ידי הקצה החיובי (כלומר עולה) של השעון. בתנאים אלה, שינויים במצב סיכת הפלט ("התהפכות" ו"פלופים ") בודדים מתרחשים בכל פעם שסיכת השעון עוברת מנמוך לגבוה. המעבר הגבוה עד הנמוך של השעון (כלומר הקצה השלילי) מתעלם לחלוטין. עיין באיור השני. סיכת הפלט, Q, פולטת אות שתקופה ארוך פי שניים מהתקופה המקורית, כלומר התדירות שלה חצויה. רוחב הדופק של הפלט תמיד שווה ל- T. כתוצאה מכך רוחב הדופק המקורי, P, הולך לאיבוד.

הוספת כפכף JK נוסף בתצורה המוצגת באיור השלישי מחלקת את התדר המקורי ב- 4. הוספת כפכפים באותו אופן רציף מחלקת את התדר בכוחות הבאים של 2: 8, 16, 32 וכו '.

בעיה: כיצד לחלק תדר של גל מרובע תוך שמירה על רוחב הדופק שלו?

הרעיון הוא להוסיף כראוי כפכף JK מופעל קצה שלילי לתערובת. נקרא לזה "נג FF"; ראה דמות רביעית. כאן, "כראוי" פירושו שסיכות J ו- K של הכפכף החדש קשורות לסיכות הפלט Q ו- Qbar, בהתאמה, של ה- divider-by-4 ("Pos FF") המוצגות באיור הקודם. (כאן, "סרגל" הוא הסרגל האופקי מעל סמל Q המציין שלילה לוגית.) כדי לראות מה זה משיג תסתכל בטבלת הפונקציות של "נג FF" באיור החמישי: סיכות הפלט של נג, Q ו- Qbar, שיקפו את מצב סיכות הכניסה שלו, J ו- K, בהתאמה. מה שאומר שהם משקפים את מצב ה- Q ו- Qbar של ה- Pos. אבל, פעולת הכפכפים של הנג חייבת לחכות לקצה השלילי של האות המקורי, שמגיע בזמן P לאחר הקצה החיובי. אההה!

צורות הגל המתקבלות מתוארות באיור השישי. יציאות אותות "Pos Q" בתדר 1/4, "Pos Qbar" האם הוא הפוך, "Neg Q" עוקב אחר "Pos Q" המועבר ברוחב הדופק P ו- "Neg Qbar" הוא ההפוך שלו. אתה יכול לוודא שה- AND הלוגי של "Pos Qbar" ו- "Neg Q" מייצר רכבת דופק המאופיינת ברוחב הדופק המקורי P ו- 1/4 בתדירות. בינגו!

בהתחלה השתמשתי בדיוק באות הפלט הזה כדי להאכיל את ה- MCU. עם זאת, התברר שהוא בעייתי לרוחבי דופק קצרים מאוד בגלל מגבלת 106 המחזורים של ה- MCU המוזכרת במבוא. פתרתי את הבעיה הקטנה הזו על ידי בחירה בפלט אחר: "Pos Qbar" ו- "Neg Qbar" במקום זאת. מבט אחד על צורות הגל אמור לשכנע אותך שרוחב הדופק של צורת הגל המסוימת הזו, P ', משתנה בין T ל- 2T במקום טווח (0, T) עבור P. ניתן לשחזר את P בקלות מ- P' על ידי:

P = 2T - P '

שלב 2: חומרה מומלצת

חומרה מומלצת
חומרה מומלצת
חומרה מומלצת
חומרה מומלצת
חומרה מומלצת
חומרה מומלצת

אני באמת אוהב את החדש יחסית לחובבים אלקטרוניים: Atmel SAM D21 MCU מבוסס על מעבד 32 סיביות ARM Cortex M0+ הפועל בקצב שעון של 48 מגהרץ, גבוה בהרבה מהאטמלים הישנים. לפרויקט זה קניתי:

  • לוח MCU של ItsyBitsy M0 Express מבית Adafruit
  • במקרה היה לי סוללת LiPo נטענת מבית Adafruit
  • צג מונוכרום 128x32 SPI OLED (ניחשתם נכון: Adafruit)
  • כפכף JK כפולה JK כפולה SN74HC109 מטקסס אינסטרומנטס
  • כפכף JK כפולה JK כפולה SN74HC112 מטקסס אינסטרומנטס
  • CD74AC08E מרובע ושער מ- Texas Instruments
  • קוואדרופל או שער CD74AC32E מטקסס אינסטרומנטס

שלב 3: המעגל

המעגל
המעגל
המעגל
המעגל

האיור הראשון מראה סכמה פשוטה של מד התדרים/החובה. ההיגיון של 3.3 V CMOS מניח לאורך כל הדרך. כתוצאה מכך, משרעת הגל המרובע של הקלט חייבת להיות בין ה V המקבילIH רמה (כלומר, 2 וולט) ו -3.3 V. אם לא, עליך להגדיל או להוריד אותו בהתאם. ברוב המקרים מחלק מתח פשוט יספיק. אם אתה רוצה לעצב את גרסת המונה שלך ברמת לוגיקה אחרת, עליך להשתמש בבקר מיקרו אחר (MCU), סוללה ותצוגה שעובדים ברמה הרצויה. שערי ההיגיון והכפכפים המשמשים בפרויקט זה עובדים עם רמות לוגיות בין 2 V ל- 6 V וצריכים להיות תקינים ברוב המקרים.

כפי שמוצג, ה- MCU ItsyBitsy משתמש בסיכות 9-13 כדי לתקשר עם הצג באמצעות פרוטוקול SPI של התוכנה. הפין 3V מספק כוח למעגל כולו. סיכת קלט דיגיטלית 3 מקבלת את האות המנותח, בעוד סיכות 2 ו -4 שולטות במקור האות: או אות ישיר שמגיע דרך השער AND3 (תדרי קלט נמוכים), או אות מחולק ב -4 דרך שער AND4 (תדרי קלט גבוהים) כמתואר בשלב 2 הקוד, שנדון בשלב הבא, מזהה באופן אוטומטי את טווח התדרים הנכנס ומתחל כראוי את מקור האות.

סכמטי אינו מראה את המורכבות האמיתית של חיבורי שבבים דיגיטליים. התמונה השנייה מראה כיצד הפרויקט ייראה על קרש לחם. אות הכניסה מגיע דרך חוט אדום לסיכה 2CLK של כפכף הקצה החיובי הכפול. זהירות: בדרך כלל, כל סיכות J ו- K של הכפכף הזה צריכות להיות גבוהות, אך במיוחד SN74HC109 כולל את סיכת ה- Kbar - סיכת K הפוכה - במקום זאת. מכאן שסיכה זו חייבת להיות מקורקעת! לכפכף הקצה השלילי הראשון ב- SN74HC112 סיכה 1K ו- 1J מחוברת לסיכות 1Q ו- 1Qbar של SN74HC109. הכפכף השני ב- SN74HC112 אינו בשימוש וסיכות הקלט שלו (2K, 2J, 2CLRbar) מקורקעות. כל שאר הפינים הנוספים PREbar (מוגדרים מראש) ו- CLRbar (ברור) בכל הכפכפים חייבים להיות מחוברים לגובה לוגי. שעון וסיכות פלט שאינם בשימוש נותרים ללא חיבור. באופן דומה, סיכות קלט שאינן בשימוש בכל השערים מקורקעות, בעוד שסיכות פלט שאינן בשימוש נותרו ללא חיבור. כפי שדיברתי ב"רוצח הבלתי נראה של הטלפון "הנחיה, הארקה של סיכות קלט שאינן בשימוש של שבבים לוגיים מבטלות תנודות אקראיות וחוסכות בחשמל.

שלב 4: הקוד ומדידת תדרים נמוכים

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

המעבד מציין מעברים אלה באמצעות הפרעות חומרה. ל- SAMD21 מספר שעונים; הקוד שלי משתמש ב- TC3 one. בתחילה התחלתי לקרוא את גיליון הנתונים של ה- M0 להרבה מאמצים בקידוד מטפל הפרעות, אך עד מהרה גיליתי קוד קשור מאוד בפוסטים של פורום Arduino על ידי משתמשים electro_95, MartinL ו- Rucus שתרומתם היא הודה כראוי. שילבתי ושיניתי את הקוד המשולב שלי לשלי; חוסך לי הרבה זמן!

כפי שציינתי קודם, רזולוציית האות מוגבלת על ידי ~ 106 מחזורי מעבד לביצוע קוד בין הפרעות. חלוקה דיגיטלית עם שימור רוחב הדופק דואגת לתדרים גבוהים. תדרים נמוכים, לעומת זאת, מהווים אתגר נוסף: מאחר שמונה השעון TC3 הוא באורך 16 ביט, הוא עולה על גדותיו לאחר שחצה את גבול 65, 536 ספירות. אפשר להתמודד עם המצב הזה על ידי הוספת מפסק הצפה, אך בחר בפתרון אחר: TC3 יכול להשתמש בשעון מעבד מעוצב (כלומר, מחולק תוכנה) במקום שעון חומרה של 48 מגה-הרץ. לפיכך, אם תקופת האות מתקרבת לגבול הצפה, הקוד יכול להורות ל- TC3 להשתמש בספירות 24 מגה -הרץ לתקופה הבאה, וואלה, המונה יורד מתחת ל -32, 768 ספירות. עבור תדרים נמוכים עוד יותר ניתן להנחות את TC3 לספור פולסים של 12 מגה -הרץ וכו '. המסנן המתאים נקבע אוטומטית על פי תדר האות, עם היסטריה, על מנת לשמור על מונה TC3 בתוך גבול הצפה. כתוצאה מכך, הקצה התחתון של טווח המכשיר הוא כ -43 הרץ.

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

קישור לקוד.

מוּמלָץ: