שְׁאֵלָה:
קצב דגימה מקסימלי של Arduino Duemilanove?
Sketchy Fletchy
2009-11-30 09:03:54 UTC
view on stackexchange narkive permalink

שלום לכולם!

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

אני רוצה לדגום ב ~ 44.1 קילוהרץ אם אפשר.

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

אופס - זו גרסת ATMega168.
@Sketchy אתה יכול לערוך את השאלה שלך אם אתה צריך, במקום להוסיף פרטים בתגובה.
עבור מקלטות גיטרה, ישנן מספר שאלות בנושא stackoverflow בנוגע לאומדן תדרים. http://stackoverflow.com/questions/65268/music-how-do-you-analyse-the-fundamental-frequency-of-a-pcm-or-wac-sample/ עניתי לחבורה מהן ופרסמתי קוד לדוגמה לכמה שיטות כאן: http://gist.github.com/255291
שמונה תשובות:
#1
+15
Clint Lawrence
2009-11-30 09:48:32 UTC
view on stackexchange narkive permalink

אני לא חושב שתוכל לדגום כל כך מהר ברזולוציה מלאה. ה- ATMega168 יכול לדגום רק ב 15 ksps ברזולוציה המלאה.

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

מבריק - זה עונה לשאלתי בקלות. לא חשבתי ש- 168 תהיה מסוגלת לדגימת ספקטרום שמע אנושי מלאה, אך אם אוכל לקבל קצב דגימה של לפחות 660 הרץ אני אמור להיות מסוגל לזהות את מחרוזת ה- e הגבוהה ללא כינוי. אבל אני אקפיץ את זה קצת לבטיחות ורגישות. תודה!
מערכת הטלפונים דוגמאות ב 8000 הרץ.
#2
+8
robzy
2009-11-30 11:03:26 UTC
view on stackexchange narkive permalink

זה לוקח בערך 100 (קריאת קלט אנלוגי) (0.0001 שניות), כך שקצב הקריאה המרבי הוא בערך 10,000 פעמים בשנייה.

http: / /arduino.cc/en/Reference/AnalogRead

Rob.

#3
+4
davr
2009-12-01 08:41:23 UTC
view on stackexchange narkive permalink

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

#4
+3
todbot
2009-11-30 12:11:54 UTC
view on stackexchange narkive permalink

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

הדאגה שלי, אני חושב, היא שאתה באמת צריך להפעיל FFT כדי לבחור את היסוד. גיטרות מייצרות כל מיני תדרים כאשר מחרוזת נקטפת, וספירת מעברי האפס רק נותנת לך מספיק מידע לבניית גל מרובע, מה שהופך FFT ליותר ויותר חסר תועלת.
פלט גיטרה בעל תו יחיד (במיוחד חשמלי) הוא קירוב הדוק של גל סינוס, ברגע שעוברים את החולף הראשוני. אין הרמוניות מוזרות בשום מקום ליד המשרעת של היסוד. כל מקלטות הגיטרה הדיגיטליות של הזול פשוט עושות תזמון מעבר אפס ולא עושות דבר בתחום התדרים. הנה דוגמה אחת לטכניקה ב- AVR 2323 (קרוב משפחה לארדואינו) http://www.myplace.nu/avr/gtuner/index.htm והנה שימוש אחר בארדואינו עם MIDI מחוץ http://www.youtube. com / watch? v = oGKE1vmAWCA
אני לא חושב שמכווני גיטרה סופרים אפס מעברים, וזו בהחלט לא שיטה טובה. זה אפילו לא קרוב לגל סינוס, ויכולים להיות מעברי אפס רבים בכל מחזור: http://flic.kr/p/7ns9nu
למכוון שראיתי היה מסנן נמוך לעבור כדי להפוך את אות הקלט לגל סינוס ככל האפשר.
#5
+3
wackyvorlon
2009-11-30 21:40:27 UTC
view on stackexchange narkive permalink

ישנם מספר מכשירי ADC זמינים סדרתיים, I2S הוא הסטנדרט של NXP המבוסס על I2C. הם מאפשרים לך למשוך די בקלות אנלוגי אפילו במהירויות גבוהות בהרבה. קישור זה אמור להביא אותך לחלק NXP המיועד לאודיו: UDA1361TS

דוגמאות חינם הם החבר שלך :)

תודה רבה! זה יהיה קצת יותר ממה שאני צריך בכדי להתחיל טיונר פשוט, אבל השבב הזה נראה מושלם עבור חלק מהפרויקטים העתידיים שלי. בסופו של דבר הייתי רוצה לקבל חבילת DSP פשוטה המוטבעת להתנסות בעיבוד אפקטים. תודה!
#6
+1
endolith
2010-07-15 01:10:35 UTC
view on stackexchange narkive permalink

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

בכל מקרה, באשר לקצב הדגימה המרבי האפשרי, מדריך Arduino אומר:

לוקח כ- 100 מיקרו שניות (0.0001 שניות) לקרוא קלט אנלוגי, כך שקצב הקריאה המרבי הוא כ -10,000 פעמים בשנייה.

זה מרמז על תדר הדגימה של 10 קילוהרץ הוא המרבי. עם זאת. אתה יכול לקבל שיעורי דגימה גבוהים יותר על ידי גישה ישירות לרשומות ADC. בדף Arduino Realtime Audio Processing משתמשים בשני ערוצים ב 15 קילוהרץ, למשל. אז מקסימום 10 קילוהרץ הוא רק בשימוש בפונקציה AnalogRead () המובנית, מכיוון שיש לו הרבה תקורה.

ה- ADC מותאם להפעלה הטובה ביותר עם מהירות שעון של בין 50 קילוהרץ ל -200 kHz:

כברירת מחדל, מעגלי הקירוב הרציפים דורשים תדר שעון קלט [שעון ADC] בין 50 kHz ל- 200 kHz כדי לקבל רזולוציה מקסימאלית.

מכיוון שהמרת ADC אורכת 13 מחזורי שעון, זה יהיה קצב דגימה של 4 קילוהרץ עד 15 קילוהרץ. על פי AVR120: אפיון וכיול ה- ADC במכשיר AVR:

לקבלת ביצועים מיטביים, שעון ה- ADC לא יעלה על 200 קילוהרץ. עם זאת, תדרים עד 1 מגה הרץ אינם מפחיתים באופן משמעותי את רזולוציית ה- ADC.

הפעלת ה- ADC בתדרים הגדולים מ -1 מגה-הרץ אינה מאופיינת.

תדר שעון 1 מגה-הרץ = תדר דגימה 77 קילוהרץ, אז זה המקסימום הריאלי.

חוט הפורום מהיר יותר לקרוא אנלוגי? מכיל עוד מידע על כך.

#7
  0
Kevin Vermeer
2010-07-15 06:38:31 UTC
view on stackexchange narkive permalink

הממיר שבב יעבוד עבור יישום זה כפי שאחרים הצביעו עליו, אך עליך לבדוק באמצעות ADC חיצוני. זה יחסוך לך הרבה צרות, וישחרר את המיקרו שלך לדגימה על SPI או I2C בקצב נתונים גבוה יותר, עם פחות רעש מהשעון של המיקרו, ובדיוק גדול יותר משימוש ב- ADC הפנימי. אם אתה רוצה יותר רזולוציה ו / או קצב נתונים גבוה יותר, השתמש במשהו כמו LTC1867, שיאפשר לך לדגום במהירות של עד 175 קילוהרץ (אם כי אתה יכול לשעון אותו במהירות כזו שתרצה) ואז לקרוא את הנתונים של 24 סיביות. במהירות של עד 20 מגה הרץ מעל SPI. לראות מה ADC אמיתי יכול לעשות? :) עם כוח מסוג זה (ו- DSP של 24 או 32 סיביות), תוכלו לדחוס ולאחסן את האודיו שלכם, לסנן אותו, לווסת אותו, לנגן אותו ... האפשרויות הן אינסופיות.

#8
  0
user3057
2011-02-17 14:14:29 UTC
view on stackexchange narkive permalink

האם אתה מעוניין בקצב דגימה של 64K? הסתכל כאן

הועלה כעת ל -150 קילוהרץ, 10 ביט, ללא רכיבים נוספים!

תסתכל שם



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