- IC PT2258
- כיצד פועל PT2258 IC
- סכמטי
- רכיבים נדרשים
- קוד ארדואינו
- בדיקת מעגל בקרת עוצמת השמע הדיגיטלית
- שיפור נוסף
פוטנציומטר הוא מכשיר מכני באמצעותו ניתן לכוון את ההתנגדות לפי הערך הרצוי, ובכך לשנות את הזרם העובר דרכו. קיימים יישומים רבים לפוטנציומטר, אך בעיקר פוטנציומטר משמש כבקר עוצמת קול עבור מגברי שמע.
פוטנציומטר אינו שולט על רווח האות, אך הוא יוצר מחלק מתח ולכן אות הקלט מוחלש. אז בפרויקט זה, אני אראה לך כיצד לבנות את בקר עוצמת הקול הדיגיטלי שלך עם ה- IC PT2258 ולממשק אותו עם ארדואינו כדי לשלוט על עוצמת הקול של מעגל מגבר. אתה יכול גם לבדוק כאן מעגלים שונים הקשורים לאודיו, כולל מד VU, מעגל בקרת טונים וכו '.
IC PT2258
כפי שציינתי קודם, ה- PT2258 הוא IC המיועד לשימוש כבקר נפח אלקטרוני בעל 6 ערוצים, IC זה משתמש בטכנולוגיית CMOS שתוכננה במיוחד עבור יישומי אודיו ווידאו רב-ערוציים.
IC זה מספק ממשק בקרה I2C עם טווח הנחתה של 0 עד -79 dB ב -1 dB / צעד ומגיע בחבילה DIP או SOP עם 20 פינים.
חלק מתכונות היסוד כוללות,
- 6 ערוצי כניסה ופלט (עבור 5.1 מערכות שמע ביתיות)
- כתובת I2C הניתנת לבחירה (ליישום שרשרת דייזי)
- הפרדת ערוצים גבוהה (ליישום רעש נמוך)
- יחס S / N של> 100dB
- מתח ההפעלה הוא 5 עד 9 וולט
כיצד פועל PT2258 IC
IC זה משדר ומקבל נתונים מהמיקרו-בקר באמצעות קווי SCL ו- SDA. ה- SDA וה- SCL מרכיבים את ממשק האוטובוסים. קווים אלה חייבים להימשך גבוה על ידי שני נגדים 4.7K על מנת להבטיח פעולה יציבה.
לפני שנלך לפעולת החומרה בפועל, הנה התיאור הפונקציונלי המפורט של ה- IC. אם אתה לא רוצה לדעת את כל זה, אתה יכול לדלג על החלק הזה כי כל החלק הפונקציונלי מנוהל על ידי ספריית Arduino.
אימות מידע
- הנתונים על קו SDA נחשבים יציבים כאשר האות SCL הוא HIGH.
- מצבי HIGH ו- LOW של קו SDA משתנים רק כאשר SCL הוא LOW.
התחל והפסק מצב
תנאי התחלה מופעל כאשר
- ה- SCL מוגדר ל- HIGH ו-
- SDA עובר ממצב HIGH ל- LOW.
תנאי העצירה מופעל כאשר
- SCL מוגדר ל- HIGH ו-
- SDA עובר ממצב LOW ל- HIGH
הערה! מידע זה שימושי מאוד לניפוי באגים באותות.
פורמט נתונים
כל בתים המועברים לקו SDA מורכבים מ -8 ביטים, המהווים בתים. כל בייט חייב להיות אחריו ביט אישור.
הכרה
הכרה מבטיחה פעולה יציבה ותקינה. במהלך דופק השעון לאשר, המיקרו-בקר מושך את סיכת ה- SDA HIGH ברגע זה בדיוק ההתקן ההיקפי (מעבד השמע) מושך כלפי מטה (LOW) את קו ה- SDA.
התקן ההיקפי (PT2258) מטופל כעת ועליו ליצור אישור לאחר קבלת בתים, אחרת קו ה- SDA יישאר ברמה גבוהה במהלך דופק השעון התשיעי (9). אם זה קורה, משדר הראשי ייצור מידע STOP על מנת לבטל את ההעברה.
זה מבהיר את הצורך להיות במקום להעברת נתונים תקפה.
בחירת כתובת
כתובת I2C של IC זה תלויה במצב CODE1 (סיכה מס '17) ו- CODE2 (סיכה מס' 4).
קוד 1 (PIN מספר 17) |
CODE2 (PIN מספר 4) |
כתובת HEX |
0 |
0 |
0X80 |
0 |
1 |
0X84 |
1 |
0 |
0X88 |
1 |
1 |
0X8C |
היגיון גבוה = 1
לוגיקה נמוכה = 0
פרוטוקול ממשק
פרוטוקול הממשק כולל את הדברים הבאים:
- קצת התחל
- בית כתובת צ'יפ
- ACK = הכרה ביט
- בת נתונים
- טיפ סטופ
קצת משק בית
לאחר הפעלת ה- IC, עליו להמתין 200 ms לפחות לפני העברת סיבית הנתונים הראשונה, אחרת העברת הנתונים עלולה להיכשל.
לאחר העיכוב, הדבר הראשון לעשות הוא לנקות את הרישום על ידי שליחת "0XC0" vi קו I2C, זה מבטיח פעולה תקינה.
השלב שלעיל מנקה את כל הרישום, כעת עלינו להגדיר ערך לרישום, אחרת, הרישום מאחסן ערך זבל ואנחנו מקבלים פלט נמש.
כדי להבטיח כיוונונים נכונים של עוצמת הקול, יש צורך לשלוח מכפיל של 10dB ואחריו קוד 1dB למנחת ברצף, אחרת, ה- IC יכול להתנהג בצורה חריגה. התרשים שלהלן מבהיר זאת יותר.
שתי השיטות לעיל יעבדו כראוי.
כדי להבטיח פעולה תקינה, וודא שמהירות העברת הנתונים I2C לעולם אינה עולה על 100KHz.
כך תוכלו להעביר בתים לממשק ולהקטין את אות הקלט. החלק לעיל הוא ללמוד כיצד ה- IC מתפקד, אך כפי שאמרתי קודם, אנו נשתמש בספריית Arduino כדי לתקשר עם ה- IC שמנהל את כל הקוד הקשיח, ואנחנו רק צריכים לבצע כמה שיחות פונקציה.
כל המידע לעיל נלקח מגליון הנתונים, אנא עיין בו למידע נוסף.
סכמטי
התמונה לעיל מציגה את סכמת הבדיקה של מעגל בקרת עוצמת הקול המבוסס על PT2258. זה נלקח מגליון הנתונים ומשונה בהתאם לצורך.
לצורך ההפגנה, המעגל בנוי על קרש לחם ללא הלחמה בעזרת הסכמה המוצגת לעיל.
הערה! כל הרכיבים ממוקמים קרוב ככל האפשר על מנת להפחית את השראות ההתנגדות וההתנגדות הטפילית.
רכיבים נדרשים
- PT2258 IC - 1
- בקר ננו של ארדואינו - 1
- לוח לחם גנרי - 1
- מסוף בורג 5 מ"מ x 3 - 1
- לחצן כפתור - 1
- 4.7K נגד, 5% - 2
- נגד 150K, 5% - 4
- נגד 10k, 5% - 2
- קבל 10uF - 6
- קבלים 0.1uF - 1
- חוטי מגשר - 10
קוד ארדואינו
לשם פשטות, אני הולך להשתמש בספריית PT2258 מבית GitHub, שמיוצרת על ידי sunrutcon.
זוהי ספרייה כתובה מאוד ולכן החלטתי להשתמש בה, אך מכיוון שהיא עתיקה מאוד, היא מעט עגלה ואנחנו צריכים לתקן אותה לפני שנוכל להשתמש בה.
ראשית, הורד וחילץ את הספרייה ממאגר GitHub.
לאחר החילוץ תקבל את שני הקבצים הנ"ל.
# כלול # כלול
לאחר מכן, פתח את הקובץ PT2258.cpp עם עורך הטקסט המועדף עליך, אני משתמש ב- Notepad ++.
אתה יכול לראות ש- "w" של ספריית החוטים באותיות קטנות, שאינו תואם לגרסאות הארדואינו האחרונות, ואתה צריך להחליף אותה באותיות "W", זהו.
קוד שלם לבקר עוצמת הקול PT2258 נמצא בסוף סעיף זה. כאן מוסברים חלקים חשובים בתכנית.
אנו מתחילים את הקוד על ידי הכללת כל קבצי הספריות הנדרשים. ספריית החוט משמשת לתקשורת בין הארדואינו ל- PT2258. ספריית PT2258 מכילה את כל המידע והתזכורות הקריטיות של I2C. EzButton הספרייה משמשת כדי להתממשק עם-לחצנים.
במקום להשתמש בתמונות קוד למטה, העתק את כל מופעי הקוד מקובץ הקוד והפוך אותם לעיצוב כמו שנהגנו לעשות בפרויקטים אחרים
#לִכלוֹל
לאחר מכן, הכינו את האובייקטים עבור שני הכפתורים ואת ספריית PT2258 עצמה.
PT2258 pt2258; כפתור ezButton_1 (2); כפתור ezButton_2 (4);
לאחר מכן, הגדר את עוצמת הקול. זוהי רמת עוצמת הקול המוגדרת כברירת מחדל איתה ה- IC יתחיל.
נפח Int = 40;
לאחר מכן, יזום את ה- UART והגדר את תדר השעון עבור אוטובוס ה- I2C.
Serial.begin (9600); Wire.setClock (100000);
חשוב מאוד להגדיר את שעון I2C, אחרת ה- IC לא יעבוד מכיוון שתדר השעון המרבי הנתמך על ידי IC זה הוא 100KHz.
לאחר מכן, אנו עורכים מעט משק בית עם הצהרה אם אחרת על מנת להבטיח שה- IC מתקשר כראוי עם אוטובוס ה- I2C.
אם (! Pt2258.init ()) Serial.printIn ("PT2258 יוזם בהצלחה"); Else Serial.printIn ("נכשל התנעת PT2258");
לאחר מכן, קבענו את עיכוב ההפצה עבור לחצני הלחיצה.
Button_1.setDebounceTime (50); Button_2.setDebounceTime (50);
לבסוף, יזם את PT2258 IC על ידי הגדרת אותו עם נפח הערוץ המוגדר כברירת מחדל ומספר הפין.
/ * שיוך PT עם נפח ברירת מחדל וסיכה * / Pt2258.setChannelVolume (נפח, 4); Pt2258.setChannelVolume (נפח, 5);
זה מסיים את סוף החלק Void Setup () .
בקטע לולאה , עלינו לקרוא לפונקציית הלולאה ממעמד הכפתור; זו נורמה של הספרייה.
Button_1.loop (); // נורמות הספרייה Button_2.loop (); // נורמות ספריה
להלן אם הקטע הוא להפחית את עוצמת הקול.
/ * אם לחצן 1 נלחץ אם התנאי נכון * / If (button_1.ispressed ()) {Volume ++; // הגדלת מונה הווליום. // הצהרת אם זו מבטיחה שהנפח אינו עולה על 79 אם (נפח> = 79) {נפח = 79; } Serial.print ("volume:"); // הדפסת עוצמת הקול Serial.printIn (נפח); / * הגדר את עוצמת הקול עבור ערוץ 4 שנמצא בקוד 9 של PT2558 IC * / Pt2558.setChannelVolume (נפח, 4); / * הגדר את עוצמת הקול עבור ערוץ 5 שהוא ה- PIN 10 של ה- PT2558 IC * / Pt2558.setChannelVolume (נפח, 5); }
להלן הסעיף אם להגדיל את עוצמת הקול.
// אותו דבר קורה עם כפתור 2 If (button_2.isPressed ()) {Volume--; // זה אם הצהרה מבטיחה שרמת עוצמת הקול אינה יורדת מתחת לאפס. אם (נפח <= 0) נפח = 0; Serial.print ("נפח:"); Serial.printIn (נפח); Pt2258.setChannelVolume (נפח, 4); Pt2558.setChannelVolume (נפח, 5); }
בדיקת מעגל בקרת עוצמת השמע הדיגיטלית
לבדיקת המעגל נעשה שימוש במנגנון הבא
- שנאי בעל ברז 13-0-13
- 2 רמקול 20W 20W כעומס.
- מקור שמע (טלפון)
במאמר הקודם, הראיתי לך כיצד להכין מגבר שמע פשוט 2x32 וואט עם TDA2050 IC, אני הולך להשתמש בזה גם להפגנה זו.
הפרעתי את הפוטנציומטר המכני וקצרתי שני מובילים עם שני כבלים מגשרים קטנים.
כעת, בעזרת שני לחצני כפתור, ניתן לשלוט על עוצמת הקול של המגבר.
שיפור נוסף
ניתן לשנות את המעגל נוסף על מנת לשפר את ביצועיו. ניתן לבצע שיפורים כמו מעגל ב- PCB כדי לחסל עוד יותר את הרעש שנוצר מהקטע הדיגיטלי של ה- IC. אנו יכולים גם להוסיף פילטר נוסף על מנת לדחות רעשים בתדירות גבוהה. כמו כן, בדקו מעגלי מגבר שמע אחרים ופרויקטים אחרים הקשורים לאודיו.
אני מקווה שאהבת את המאמר הזה ולמדת ממנו משהו חדש. אם יש לך ספק, אתה יכול לשאול בתגובות למטה או להשתמש בפורומים שלנו לדיון מפורט.