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

Arduino ו- TI ADS1110 ADC 16 סיביות: 6 שלבים
Arduino ו- TI ADS1110 ADC 16 סיביות: 6 שלבים

וִידֵאוֹ: Arduino ו- TI ADS1110 ADC 16 סיביות: 6 שלבים

וִידֵאוֹ: Arduino ו- TI ADS1110 ADC 16 סיביות: 6 שלבים
וִידֵאוֹ: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, יולי
Anonim
Arduino ו- TI ADS1110 16 סיביות ADC
Arduino ו- TI ADS1110 16 סיביות ADC

במדריך זה אנו בוחנים את השימוש ב- Arduino לעבודה עם ה- Texas Instruments ADS1110-IC ממיר אנלוגי לדיגיטלי של 16 סיביות להפליא אך שימושי.

הוא יכול לפעול בין 2.7 ל -5.5 וולט ולכן הוא בסדר גם עבור Arduino Due ולוחות פיתוח במתח נמוך יותר. לפני שתמשיך הלאה, אנא הורד את גליון הנתונים (pdf) מכיוון שהוא יהיה שימושי והתייחס אליו במהלך הדרכה זו. ה- ADS1110 נותן לך את האפשרות של ADC מדויק יותר ממה שמוצע על ידי ה- ADC של 10 סיביות של Arduino-וזה קל יחסית לשימוש. עם זאת הוא זמין רק כחלק חשוף ב- SOT23-6.

שלב 1:

תמונה
תמונה

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

כפי שאתה יכול לראות בתמונה למעלה, שלנו מסומן "EDO" התואם את כתובת האוטובוס 1001000 או 0x48h. ועם המעגלים לדוגמה השתמשנו בנגדי משיכה של 10kΩ באוטובוס I2C.

אתה יכול להשתמש ב- ADS1110 כ- ADC חד-צדדי או דיפרנציאלי-אך ראשית עלינו לבחון את רשימת התצורות המשמשת לשליטה במאפיינים שונים, וברשם הנתונים.

שלב 2: רישום תצורה

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

אם אתה רק מודד מתח או מתנסה, השאר את האפס כאפס לרווח של 1V/V. לאחר מכן, קצב הנתונים של ה- ADS1110 נשלט עם סיביות 2 ו -3. אם הדלקה רציפה מופעלת, הדבר קובע את מספר הדגימות בשנייה שצולמו על ידי ה- ADC.

לאחר ניסויים מסוימים ב- Arduino Uno גילינו שהערכים המוחזרים מה- ADC היו מעט כבויים בשימוש בקצב המהיר ביותר, אז השאר את זה כ- 15 SPS אלא אם נדרש אחרת. ביט 4 מגדיר דגימה רציפה (0) או דגימה חד פעמית (1). התעלם מביטים 5 ו -6, אולם הם תמיד מוגדרים כ -0.

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

שלב 3: רישום נתונים

מכיוון ש- ADS1110 הוא ADC של 16 סיביות, הוא מחזיר את הנתונים על פני שני בתים-ולאחר מכן עוקב אחר הערך של רשם התצורה. אז אם אתה מבקש שלושה בתים כל המגרש חוזר. הנתונים נמצאים בצורה "השלמה של שניים", שהיא שיטה לשימוש במספרים חתומים עם בינארי.

המרת שני הבייטים מתבצעת על ידי כמה מתמטיקה פשוטה. כאשר הדגימה ב- 15 SPS, הערך המוחזר על ידי ה- ADS1110 (לא המתח) נופל בין -32768 ל- 32767. הבייט הגבוה יותר של הערך מוכפל ב- 256, ואז מתווסף לבייט התחתון -שמוכפל אז ב -2.048 ולבסוף מחולק ל 32768. אל תיבהל, כפי שאנו עושים זאת במערכון הדוגמאות הקרוב.

שלב 4: מצב ADC חד-צדדי

מצב ADC חד-צדדי
מצב ADC חד-צדדי

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

אל תשכח את נגדי המשיכה של 10kΩ באוטובוס I2C. הסקיצה הבאה משתמשת ב- ADS1110 במצב ברירת המחדל ופשוט מחזירה את המתח הנמדד:

// דוגמה 53.1 - ADS1110 וולטמטר חד צדדי (0 ~ 2.048VDC) #כלול "Wire.h" #הגדר מודעות 1110 0x48 מתח צף, נתונים; בת Highbyte, Lowbyte, configRegister; הגדרת void () {Serial.begin (9600); Wire.begin (); } לולאת חלל () {Wire.requestFrom (ads1110, 3); בעוד (Wire.available ()) // ודא שכל הנתונים מגיעים ב- {highbyte = Wire.read (); // בייט גבוה * B11111111 lowbyte = Wire.read (); // בתים נמוכים configRegister = Wire.read (); }

data = highbyte * 256;

data = data + lowbyte; Serial.print ("נתונים >>"); Serial.println (נתונים, DEC); Serial.print ("מתח >>"); מתח = נתונים * 2.048; מתח = מתח / 32768.0; Serial.print (מתח, DEC); Serial.println ("V"); עיכוב (1000); }

שלב 5:

תמונה
תמונה

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

אם עליך לשנות את הרווח של מגבר הרווח הניתן לתכנות של ה- ADC - יהיה עליך לכתוב בית חדש לרשם התצורה באמצעות:

Wire.beginTransmission (ads1110); Wire.write (בייט תצורה); Wire.endTransmission ();

לפני בקשת נתוני ה- ADC. זה יהיה 0x8D, 0x8E או 0x8F לערכי רווח של 2, 4 ו -8 בהתאמה - והשתמש ב- 0x8C כדי לאפס את ADS1110 בחזרה לברירת המחדל.

שלב 6: מצב ADC דיפרנציאלי

מצב ADC דיפרנציאלי
מצב ADC דיפרנציאלי

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

עלינו לציין כאן (ובגיליון הנתונים) כי ה- ADS1110 אינו יכול לקבל מתח שלילי על כל אחת מהקלטות. אתה יכול להשתמש בסקיצה הקודמת לאותן התוצאות- והמתח המתקבל יהיה הערך של וין מחסר מווין+. לדוגמה, אם היה לך 2 V ב- Vin+ ו- 1 V ב- Vin- המתח המתקבל יהיה 1 V (כאשר הרווח מוגדר ל- 1).

שוב אנו מקווים שמצאת את זה מעניין ואולי שימושי. את הפוסט הזה הביאה לכם pmdway.com - הכל ליצרנים ולחובבי האלקטרוניקה, עם משלוח חינם לכל רחבי העולם.

מוּמלָץ: