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

מנתח ספקטרום האודיו של הלוח MSP430: 6 שלבים
מנתח ספקטרום האודיו של הלוח MSP430: 6 שלבים

וִידֵאוֹ: מנתח ספקטרום האודיו של הלוח MSP430: 6 שלבים

וִידֵאוֹ: מנתח ספקטרום האודיו של הלוח MSP430: 6 שלבים
וִידֵאוֹ: מקור רעש עבור מעגל מחולל סאונד של תוף DR-110 2024, נוֹבֶמבֶּר
Anonim
Image
Image
מנתח ספקטרום אודיו של לוח הלוח MSP430
מנתח ספקטרום אודיו של לוח הלוח MSP430

פרויקט זה מבוסס מיקרופון ודורש רכיבים חיצוניים מינימליים. משמשים 2 תאי מטבע LR44 בכדי שאוכל שהמבנה כולו יעבוד בגבולות לוח קרש מיני עם 170 נקודות נקודה. ADC10, טיימר הפסקת התעוררות LPM, טיימר PWM כמו פלט, שימוש בלחצנים, חשבון שלם משמשים ומוכיחים.

מאפיינים

  • 8 דגימות FFT 16 שלמות בהפרדה של 500 הרץ
  • מציג 8 אמפליטודות של 1K, 1.5K, 2K, 3K, 4K, 5K, 6K, 7.5K לא ליניארי
  • מפת לוגריתם חלקית להצגת אמפליטודות, מוגבלת מכיוון שהרזולוציה הופחתה עבור 8 סיביות FFT
  • TLC272 שלב מיקרופון מוגבר במהירות פי 100 פי רווח (אפשר לחוות 2 שלבים)
  • ניתן לבחור בתפריט חלון Hamming אופציונלי
  • תפריט להתאים 4 רמות בהירות
  • תפריט להתאים 8 רמות קצב מדגם / זמן תגובה
  • 2 x תא מטבע LR44 מופעל "על הסיפון"

שלב 1: רכישת חלקים

להלן מה שצריך לפרויקט זה

  • MSP430G2452 (השבב הנוסף מ- TI Launchpad G2, או כל 4K 20 פינים מסדרת MSP430G מסדרת MSP430G)
  • לוח קרש מיני עם 170 נקודות נקודה או קרש פרפ לבנייה מראש מגבר
  • מגבר TLC272 כפול
  • מיקרופון מיני אלקטרט
  • 47k (משיכה), 100k, 2 x 10k, נגדים 1k
  • 1 x 0.1uF
  • חוטי מגשר
  • כותרת סיכה גברית בשורה כפולה לשמש למחזיק סוללות
  • 2 x סוללת מטבע LR44

שלב 2: פריסת רכיבי התכנון

הפרויקט אמור להיבנות על לוח קרש מיני עם 170 נקודות. פריסת הרכיבים היא כפי שמוצג להלן. ראוי לציין כי מטריצת ה- LED 8x8 אמורה להיות ממוקמת על גבי ה- MSP430 MCU. מלבד רכיבים, ישנם גם חוטי מגשר מתחברים המתוארים בתווים "+------+".

G V + Gnd (פריסת שלב אחת) אנו משתמשים במתווה זה + ===================================== ================== c0 ………… c7 | מיקרופון……. + -----++-+…. | r0 o o o o o o o o | o || o + ----- [100k] --------------- +….. | r1 X o o o o o o o o |. +--------------+-+. C7 C6 R1 C0 R3 C5 C3 R0 |. o o o o o o o o |…… |.. | b6 a7 | | c0 ו- r1 חולקים את אותו סיכה ולא יוצגו | +. +-+-+-+| +-+-+-+-+-+-+-+-+-+| *יישום אפשרי שיש לו c6 + c0 + r1 | | | V+ | | | G b6 b7 T R a7 a6 b5 b4 b3 | | זה ישחרר את b6 לשעון xtal 32khz | | | TLC272 | | | | | | | החוצה - + G | | |+ a0 a1 a2 a3 a4 a5 b0 b1 b2 | | | +. +-+-+-+| +-+-+-+-+-+-+-+-+-+| | o || o o o. +-+.. R4 R6 C1 C2 R7 C4 R5 R2 | |…. o- [10k]-o……… | |. o- [1k] o o o………._. | | o ---- [10k] ----------- o……. o o | +================================================== ====+.1uF 100k 10k לחצן ADC+ -----------------+

אנו משתמשים בשלב אחד של TLC272 בלבד

שלב 3: הרכבה

הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה

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

יש להקפיד על מיקום שבבי ה- IC. בדרך כלל יש נקודה באחת הפינות לציון סיכה 1 של מכשיר.

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

שלב 4: הידור וטעינת קושחה

קוד המקור נמצא בדרך כלל במאגרי github שלי.

עבור פרויקט מסוים זה, קובץ המקור היחיד C nfft.c מצורף במאגר אוספי הלוחות שלי. אתה רק צריך nfft.c

אני משתמש ב- mps430-gcc כדי לאסוף את הקושחה אבל זה אמור להסתדר טוב עם TI CCS. אתה יכול להימנע מכל הצרות של התקנת IDE או מהדרים על ידי מעבר לענן TI CCS, שהוא IDE מבוסס אינטרנט. זה אפילו יוריד את הקושחה למכשיר היעד שלך.

זוהי דוגמה לפקודת הידור עם מתגים

msp430 -gcc -Os -Wall -function -section -fdata -section -fno -inline -small -functions -Wl, -Map = nfft.map, --cref -Wl, --relax -Wl, --gc- חלקים -I/energia -0101E0016/hardware/msp430/cores/msp430 -mmcu = msp430g2553 -o nfft.elf nfft.c

אני משתמש ב- TI Launchpad G2 כמתכנת לתכנת ה- MCU.

שלב 5: הבנת המעגל

להבין את המעגל
להבין את המעגל
להבין את המעגל
להבין את המעגל

סכמטי המעגל מוצגים להלן

MSP430G2452 או דומה, צריך 4K Flash TLC272 Op-Amp Dual, GBW @1.7Mhz, @x100 gain, רוחב פס עד 17Khz

* אנו משתמשים בשלב אחד של TLC272 בלבד

._.

| MSP430G2452 | Vcc | | | + ----------------------- 2 | ADC0 | 1-+ | | | |. | Vcc | | | | משיכה (47k) Vcc Vcc | --------------- | | | | _ | | | +-1 | ----. Vcc | 8-+ | | | |. |. |. | ^.--- | 7 | | 16-+ | | 10k | | 10k | | | / / ^ | | | | _ | | _ | 100k | _ | | / _+\ / / | | /| --- (ראה פריסת לוח לחם) |.1u | | | | | /_+\ | | / | ------_+-|| --- |-[1k]-+-2 | ---+| | | | | 15 GPIO | | | | +---------- 3 | ----- + +-|-| 6 | P1.1-P1.7 | | 8x8 | | | +-4 | Gnd +-| 5 | P2.0-P2.7 | | LED | |+ | | --------------- | | | מטריצה | ((O)) |. | | / | | _ | | מיקרופון | | 10k | +-20 | Gnd / | -------- | | _ | | | | _ | _ | _ _ | _ _ | _ _ | _ /// /// /// ///

נהיגה LED

מטריצת ה- LED כוללת 8 x 8 אלמנטים. הם מונעים על ידי 15 סיכות GPIO. הם מורבבים עם 8 שורות ו- 8 עמודות. מכיוון שיש רק 15 סיכות לאחר שנשתמש בסיכה אחת עבור קלט ADC, הריבוי מכיל שורה 1 ועמודה 0 המשתפות סיכה אחת. המשמעות היא שלא ניתן להדליק את הנורית המסוימת בשורה 1 ועמודה 0. זוהי פשרה מכיוון שאין מספיק סיכות GPIO להנעת כל רכיבי ה- LED.

לכידת סאונד

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

מגבר ה- op-amp מורכב משני שלבים, כל אחד עם רווח של פי 100. אימצתי את TLC272 מכיוון שהוא גם חלק נפוץ מאוד והוא עובד עם 3V. רוחב הפס של הרווח הוא בערך 1.7Mhz פירושו שלרווח שלנו 100x, אנחנו יכולים רק להבטיח שהוא יעבוד יפה (כלומר לשמור על הרווח שאנחנו רוצים) מתחת ל- 17Khz. (1.7Mhz / 100).

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

דגימה ו- FFT

הפונקציה FFT בשימוש היא קוד "fix_fft.c" שפרויקטים רבים אימצו, הוא מסתובב באינטרנט כבר כמה שנים. ניסיתי גרסה של 16 סיביות וגרסה של 8 ביט. בסופו של דבר הסתפקתי בגרסת 8 סיביות באשר למטרה שלי, לא ראיתי התקדמות משמעותית בגרסת 16 סיביות.

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

טיימר 0 CCR0 משמש לשמירה על זמן הדגימה. תחילה אנו קובעים את הספירות הדרושות לנו כדי להשיג את תדר הלהקה (תואם את קצב השעון של DCO של 16Mhz). כלומר TA0CCR0 מוגדר ל- (8000/(BAND_FREQ_KHZ*2))-1; איפה BAND_FREQ_KHZ הוא 8 בשבילי. ניתן לשנות אותו אם קיבלת מגבר אופטיבי טוב יותר ו / או שאתה רוצה שהוא יהיה שונה.

רצועות תדרים וקנה מידה של משרעת

הקושחה מעבדת 16 רצועות בנתיב אחד ותזמון הצילום מייצר הפרדה של 500 הרץ בין הבנקים הללו. מטריצת ה- LED כוללת 8 עמודים ותציג רק 8 להקות / אמפליטודות. במקום להציג אחת לשתי רצועות, רשימת פס תדרים לא לינארית משמשת להצגת רצועות התדרים הדינמיות יותר (מבחינת מוזיקה). הרשימה היא של פערים של 500Hz בקצה הנמוך, פערים של 1KHz ברצועות האמצעיות ורצועות של 1.5Khz בשיאים.

משרעתן של להקות בודדות יורדת ל -8 רמות, המיוצגות על ידי מספר 'נקודות' אופקיות בתצוגת מטריצת ה- LED. רמות המשרעת יורדות באמצעות מפה לא לינארית המתרגמת תוצאות FFT לאחת מ -8 נקודות. נעשה שימוש במעין קנה מידה לוגריתמי כפי שהוא מייצג בצורה הטובה ביותר את תפיסת רמות הצליל שלנו.

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

שלב 6: הפעלת המכשיר

  • לחיצה על מקש קצר במצב תצוגה עוברת ללא הצגת נקודה, נקודה אחת, 2 נקודות ו -3 נקודות.
  • לחיצה ארוכה נכנסת למצב ההתקנה, לחיצה ארוכה לאחר מכן מסתובבת דרך התפריט.
  • פריטי התפריט מחזורים דרך 'אופציית חלון חיתוך', 'דימר', 'קצב דגימה / רענון'.
  • במצב ההתקנה של 'חלון חבטה', לחיצות קצרות מחזרות ללא חבטה, חבטה 1, חבטה 2, דפיקה 3, לחיצה ארוכה מאשרת את ההגדרה.
  • במצב הגדרת 'דימר', לחיצות קצרות עוברות בין רמות הבהירות הזמינות מ 0 עד 3, לחיצה ארוכה מאשרת את ההגדרה.
  • במצב הגדרת 'קצב דגימה / רענון', לחיצות קצרות עוברות בין קצבי הרענון הזמינים מ -0 עד 7, 0 פירושו אין עיכוב, לחיצה ארוכה מאשרת את ההגדרה.
  • ריבוב קטע לד כולל עיכובים בזמן כדי לפצות על הפרשי בהירות עבור שורות בודדות.

מוּמלָץ: