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

מד קבלים ATTiny85: 4 שלבים
מד קבלים ATTiny85: 4 שלבים

וִידֵאוֹ: מד קבלים ATTiny85: 4 שלבים

וִידֵאוֹ: מד קבלים ATTiny85: 4 שלבים
וִידֵאוֹ: Как сделать ультразвуковой увлажнитель воздуха на Arduino 2024, יולי
Anonim
מד קבלים ATTiny85
מד קבלים ATTiny85
מד קבלים ATTiny85
מד קבלים ATTiny85

מדריך זה מיועד למדידת קבלים המבוססת על ATTiny85 עם התכונות הבאות.

  • מבוסס על ATTiny85 (DigiStamp)
  • תצוגת OLED מסוג SSD1306 בגודל 0.96 אינץ '
  • מדידת תדרים לקבלים בעלי ערך נמוך 1pF - 1uF באמצעות מתנד 555
  • מדידת זמן טעינה עבור קבלים בעלי ערך גבוה 1uF - 50000uF
  • 2 יציאות נפרדות המשמשות את השיטות למזעור קיבול סטרי
  • שני ערכי זרם המשמשים לזמן טעינה כדי למזער את הזמן של קבלים גדולים
  • 555 שיטות אפס עצמי בעת ההפעלה, ניתן לאפס מחדש עם כפתור לחיצה
  • בדיקה מהירה המשמשת לבחירת איזו שיטה יש להשתמש בכל מחזור מדידה.
  • ניתן לשפר את דיוק שיטת זמן הטעינה על ידי תמיכה בהתאמת תדר השעון של OSCVAL

שלב 1: סכמטי ותיאוריה

סכמטי ותיאוריה
סכמטי ותיאוריה

סכמטי מציג את ATTiny המניע את תצוגת OLED SSD1306 באמצעות ממשק I2C. הוא מופעל ישירות מסוללת LiOn 300mAh וכוללת נקודת טעינה שניתן להשתמש בה עם מטען חיצוני תואם LiOn.

שיטת המדידה הראשונה מבוססת על מדידת התדירות של מתנד הפועל 555 חופשי. יש לזה תדר בסיס הנקבע על ידי הנגדים והקבל שצריך להיות דיוק גבוה מכיוון שזה קובע את דיוק המדידות. השתמשתי בקבל פוליסטירן 1% 820pF שהיה לי אך ניתן להשתמש בערכים אחרים סביב 1nF. יש להזין את הערך בתוכנה יחד עם הערכה של כל קיבול תועה (~ 20pF). זה נתן תדר בסיס של סביב 16KHz. הפלט של ה- 555 מוזן אל PB2 של ה- ATTiny המתוכנת כמונה חומרה. על ידי מדידת הספירה על פני תקופה של כשנייה אחת ניתן לקבוע את התדירות. זה נעשה בעת ההפעלה כדי לקבוע את תדירות הבסיס. כאשר קבל הנבדק מתווסף במקביל לקבל הבסיס אז התדר יורד וכאשר זה נמדד ובהשוואה לתדר הבסיס אז ניתן לחשב את הערך של הקיבול המוסף.

המאפיין היפה של שיטה זו הוא שהערך המחושב תלוי רק בדיוק של קבל הבסיס. תקופת המדידה לא משנה. הרזולוציה תלויה ברזולוציה של מדידות התדרים שהיא גבוהה למדי כך שאפשר למדוד אפילו קיבול נוסף קטן מאוד. נראה כי הגורם המגביל הוא 'רעש התדרים' של המתנד 555 אשר מבחינתי שווה ערך לכ- 0.3pF.

ניתן להשתמש בשיטה בטווח הגון. כדי לשפר את הטווח אני מסנכרן את תקופת המדידה לגילוי קצוות הפולסים הנכנסים. המשמעות היא שאפילו תנודה בתדר נמוך כמו 12 הרץ (עם קבל 1uF) נמדדת במדויק.

עבור קבלים גדולים יותר המעגל מסודר לשימוש בשיטת תזמון טעינה. בכך הקבל הנבדק הוא פריקה כדי להבטיח שהוא מתחיל ב -0, ואז נטען באמצעות התנגדות ידועה ממתח האספקה. ADC ב- ATTiny85 משמש לניטור מתח הקבלים ונמדד זמן המעבר בין 0% ל -50% טעינה. זה יכול לשמש לחישוב הקיבול. מכיוון שההתייחסות ל- ADC היא גם מתח האספקה אז זה לא משפיע על המדידה. עם זאת, המדד המוחלט של הזמן הנדרש תלוי בתדר השעון ATTiny85 והשינויים בו משפיעים על התוצאה. ניתן להשתמש בהליך לשיפור הדיוק של שעון זה באמצעות רשום כוונון ב- ATTiny85 וזה יתואר בהמשך.

כדי לפרוק את הקבל ל- 0V נעשה שימוש ב- MOSFET בערוץ n יחד עם נגד בעל ערך נמוך כדי להגביל את זרם הפריקה. המשמעות היא שאפשר לפרוק קבלים בעלי ערך גדול במהירות.

לטעינת הקבל משתמשים בשני ערכים של נגד הטעינה. ערך בסיס נותן זמני טעינה סבירים עבור קבלים מ 1uF עד כ 50uF. MOSFET ערוץ p משמש במקביל בנגד נמוך יותר כדי לאפשר למדוד קבלים בעלי ערך גבוה יותר במרווח סביר. הערכים שנבחרו נותנים זמן מדידה של כשנייה אחת לקבלים עד 2200uF וארוך יותר לערכים גדולים יותר. בקצה התחתון של הערך יש לשמור על תקופת המדידה ארוכה למדי כדי לאפשר לקבוע את המעבר דרך רף 50% בדיוק מספיק. קצב הדגימה של ה- ADC הוא בערך 25uSec ולכן פרק זמן מינימלי של 22mSec נותן דיוק סביר.

מכיוון של- ATTiny יש IO מוגבל (6 סיכות), אז ההקצאה של משאב זה צריכה להיעשות בזהירות. דרושים 2 סיכות לתצוגה, 1 עבור קלט הטיימר, 1 עבור ה- ADC, 1 לבקרת פריקה ו -1 לבקרת קצב הטעינה. רציתי שליטה בכפתור לחיצה כדי לאפשר אפס מחדש בכל שלב. זה נעשה על ידי חיבור גבוה לקו I2C SCL. מכיוון שאותות I2C פתוחים לניקוז אז אין התנגשות חשמלית בכך שהוא מאפשר לכפתור למשוך את הקו הזה נמוך. התצוגה תפסיק לפעול כשהכפתור נלחץ, אך אין לכך שום השפעה מכיוון שהוא מתחדש כאשר הכפתור משתחרר.

שלב 2: בנייה

בְּנִיָה
בְּנִיָה
בְּנִיָה
בְּנִיָה
בְּנִיָה
בְּנִיָה

המצאתי את זה לקופסה קטנה מודפסת תלת -ממדית בגודל 55 מ"מ על 55 מ"מ. שנועדה להכיל את 4 הרכיבים העיקריים; לוח ATTiny85 DigiStamp, תצוגת SSD1306, סוללת LiOn וקצת לוח אב טיפוס המחזיק את טיימר האלקטרוניקה של טיימר 55 וטעינה.

המארז בכתובת

דרושים חלקים

  • לוח ATTiny85 DigiStamp. השתמשתי בגרסה עם מחבר microUSB המשמש להעלאת קושחה.
  • תצוגת OLED SSD1306 I2C
  • סוללת LiOn 300mAH
  • רצועה קטנה של לוח אב טיפוס
  • שבב טיימר CMOS 555 (TLC555)
  • n-Channel MOSFET AO3400
  • p-Channel MOSFET AO3401
  • נגדים 4R7, 470R, 22K, 2x33K
  • קבלים 4u7, 220u
  • קבל דיוק 820pF 1%
  • מתג הזזה מיניאטורי
  • כותרות 2 x 3 פינים ליציאת טעינה ויציאות מדידה
  • לחץ על הכפתור
  • קַרפִּיף
  • תחבר חוט

יש צורך בכלים

  • ברזל הלחמה נקודתי
  • מַלְקֶטֶת

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

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

www.instructables.com/Reducing-Sleep-Curre…

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

שלב 3: תוכנה

תוכנות למד קבלים זה ניתן למצוא בכתובת

github.com/roberttidey/CapacitorMeter

זהו מערכון מבוסס ארדואינו. הוא צריך ספריות לתצוגה ו- I2C שאפשר למצוא ב

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

אלה מותאמות כך ש- ATTiny יתפוס זיכרון מינימלי. ספריית I2C היא שיטת באנג ביט מהירה במהירות המאפשרת שימוש בכל 2 סיכות. זה חשוב מכיוון ששיטות I2C המשתמשות ביציאה הטורית משתמשות ב- PB2 אשר מנוגדת לשימוש בקלט הטיימר/מונה הדרוש למדידת תדר 555.

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

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

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

כאשר התוכנה מתחילה 7 המדידות הראשונות הן 'מחזורי כיול' המשמשים לקביעת תדר הבסיס של 555 ללא תוספת קבלים. ממוצע של 4 המחזורים האחרונים.

קיימת תמיכה בהתאמת רשם OSCAL לכוונון השעון. אני מציע להגדיר את OSCCAL_VAL ל- 0 בתחילה בראש הסקיצה. המשמעות היא כיול המפעל ישמש עד לביצוע הכוונון.

יש להתאים את הערך של קבל הבסיס 555. אני גם מוסיף סכום משוער לקיבול תועה.

אם משתמשים בנגדים שונים לשיטות הטעינה, יהיה צורך לשנות גם את ערכי CHARGE_RCLOW ו- CHARGE_RCHIGH בתוכנה.

כדי להתקין את התוכנה השתמש בשיטת digistamp הרגילה של העלאת התוכנה וחיבור יציאת ה- USB כאשר תתבקש. השאר את מתג ההפעלה במצב כבוי מכיוון שהספק יסופק על ידי ה- USB לפעולה זו.

שלב 4: הפעלה וכיול מתקדם

ההפעלה פשוטה מאוד.

לאחר הפעלת היחידה והמתנה לסיום אפס הכיול, חבר את הקבל הנבדק לאחת משתי יציאות המדידה. השתמש ב -555 יציאות לקבלים בעלי ערך נמוך <1uF וביציאת הטעינה לקבלים בעלי ערך גבוה יותר. עבור קבלים אלקטרוליטיים חבר את הטרמינל השלילי לנקודת האדמה המשותפת. במהלך הבדיקה הקבל יטען עד כ 2V.

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

כיול מתקדם

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

עדיין לא הצלחתי להשתלב בשיטה אוטומטית יותר בקושחה ולכן אני משתמש בהליך הידני הבא. שתי וריאציות אפשריות בהתאם למידות החיצוניות הזמינות; או מד תדרים המסוגל למדוד את התדירות של צורת הגל המשולשת ביציאה 555, או מקור גל מרובע בתדר ידוע למשל 10KHz עם רמות 0V/3.3V שניתן לחבר אותן ליציאת 555 ולדרוס את צורת הגל בכדי להכריח את התדר הזה לתוך המונה. השתמשתי בשיטה השנייה.

  1. הפעל את המונה בהספק הרגיל שלו ללא מחברים קבלים.
  2. חבר את מד התדר או מחולל הגלים המרובעים ליציאת 555.
  3. הפעל מחדש את מחזור הכיול על ידי לחיצה על הכפתור.
  4. בסוף מחזור הכיול התצוגה תציג את התדירות כפי שנקבע על ידי המונה והערך OSCCAL הנוכחי. שים לב כי שימוש חוזר במחזור הכיול יחליף בין הצגת התדירות הנמדדת לבין תצוגה רגילה.
  5. אם התדר המוצג פחות ממה שידוע אז זה אומר שתדירות השעון גבוהה מדי ולהיפך. אני מוצא שתוספת OSCCAL מתאימה את השעון בכ- 0.05%
  6. חישוב ערך OSCCAL חדש לשיפור השעון.
  7. הזן ערך OSCCAL חדש לתוך OSCCAL_VAL בראש הקושחה.
  8. בנה מחדש והעלה קושחה חדשה. חזור על שלבים 1-5 שאמורים להציג את הערך החדש של OSCCAL ואת מדידת התדרים החדשה.
  9. במידת הצורך חזור על השלבים שוב עד להשגת התוצאה הטובה ביותר.

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

מוּמלָץ: