שְׁאֵלָה:
אתחול בהספק נמוך יותר אינו פועל
Adam Haile
2014-03-13 07:17:12 UTC
view on stackexchange narkive permalink

יש לי לוח ATMega328 מותאם אישית של Arduino, שבדרך כלל פועל במהירות 5V @ 8MHz (באמצעות פרופיל Arduino Pro 3.3V 8MHz ו- Bootloader). הסיבה העיקרית לכך שאני משתמש בהתקנה זו היא כדי שאוכל להרדים את הלוח כאשר הניתוק העיקרי מנותק והוא מתחיל להיפסק מכוח הסוללה (3 וולט מתא מטבע). מקורות 5V ו- 3V מקבלים דיודה OR'ed יחד והקלט 5V קשור ל- INT0. בקוד, כאשר הוא מזהה ש- INT0 ירד נמוך, הוא מאתחל את מצב השינה והכל נכבה, למעט טיימר כלב השמירה השומר על מחזור של 1 הרץ כדי לשמור על ספירה פנימית ולבדוק אם יש להעיר את השבב מחדש. זה עובד יפה כאשר מתחיל להפעיל מתח 5 וולט ואז הסוללה מוכנסת, אז 5 וולט מנותק. זה הולך לישון וכאשר 5V מוחזר בחזרה הוא מתעורר ואני יכול לראות שהוא לא איבד ספירה.

עם זאת, הבעיה מגיעה כאשר 3V מוחל ראשון . אני באמת לא בטוח אם זה בכלל אתחול. אבל מה שהיא אמורה לעשות זה לאתחל, לבדוק אם INT0 (Digital 2) נמוך ואם כן, ללכת ישר לישון. בצפייה בציור הנוכחי אני רואה שהוא מתחזק לכמה מילי-אמפר למשך כמה שניות ואז יורד לכ- 0.3mA (עדיין גבוה מכפי שהוא אמור להיות במצב שינה). אבל כשאני מחיל מחדש 5V, שום דבר . משיכת החשמל חוזרת ועולה אך היא אינה מגיבה (מעל סדרת FTDI).

האם יש אולי משהו שחסר לי שאי אפשר לאתחל אותו על 3V ... בתיאוריה הוא אמור לרוץ בסדר גמור .

עדכון: הנפתי נורית לד D13 וניסיתי את סקיצה המצמוץ. עובד מצוין כאשר מתחילים מ -3 וולט או 5 וולט. עם זאת, כשאני מריץ את הקושחה ומתחיל אותה מ -3 וולט, ה- LED פשוט מתחיל להבהב בפראות. אין לי מושג מה גורם לזה מכיוון שאף פעם לא הגדרתי את D13 כמשהו בקוד שלי. אבל זה גורם לי לחשוב שזה קשור למאתחל ...

למה מוגדר ה- BOD, ומהי הציור הנוכחי בהפעלה?
זה מוגדר ל -2.7 וולט. הציור הנוכחי בזמן שהוא 3V הוא בערך 4mA בשניות הראשונות, ואז יורד ונורית ה- LED משתגעת.
האם ניסית בלי אתחול האתחול, כלומר דרך ספק שירותי האינטרנט?
לא, עדיין לא ניסיתי את זה. מה שמוזר הוא שזה בסדר כשאתה פשוט מריץ את סקיצה המצמצמת
ISTR שמטען האתחול גורם ל- D13 לדפוס דופק מוזר שמבהב את ה- LED שבדרך כלל שם, אבל מכיוון שאין לי ממש ארדואינו (** כן אמרתי את זה **), אני לא בטוח בעיתוי / תבנית.
אני רגיל ש- D13 מהבהב, אבל רק בעת העלאת הקושחה.
האם אתה יכול להוסיף תרשים כדי להראות "בדיוק" כיצד חיווט החיווט שלך כולל כל חיישן או עומס על הסוללה. באיזה סוג תא מטבע אתה משתמש, האם הוא יון ליתיום (נטען) או אלקליין?
אם Blink פועל, סביר להניח שהקוד שלך ולא ה- bootloader. סביר להניח שתצטרך לפרסם את הקוד שלך וסכמה כדי לקבל תשובה. כמו כן, האם ניסית להשבית את ה- BOD?
איך מודדים זרם? האם יתכן ש'מתח העומס 'של המונה שלך יכול להוריד את ההיצע נמוך מדי להפעלה אמינה?
ארבע תשובות:
#1
+6
Adam Haile
2014-03-20 23:57:59 UTC
view on stackexchange narkive permalink

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

#2
+4
imjosh
2014-03-20 23:03:24 UTC
view on stackexchange narkive permalink

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

אמרת שאתה משתמש בדיודות כדי לבחור את אספקת המתח, ואספקה ​​אחת היא סוללה 3V. אם אתה משתמש בדיודות סטנדרטיות שיורדות ~ 0.6 וולט אז מתח האספקה ​​ל- MCU הוא רק ~ 2.4 וולט. אם אתה משתמש בדיודות שוטקי עם ירידת מתח בין 0.15-0.45, מתח האספקה ​​עשוי להיות נמוך כמו 2.5V. מתח BOD מוגדר ל -2.7 וולט, כך שבאופן תיאורטי ה- MCU לעולם לא יאתחל עם הסוללה.

באשר למה אתה יכול להתחיל את זה ב -5 וולט, לרדת ל -3 וולט ולהעלות אותו שוב - אני לא בטוח. יכול להיות שאתה משבית את ה- BOD בקוד ... אולי ... לא בטוח למה זה עובד, אבל סביר להניח שלא מובטח שהוא יעבוד.

אני מגדיר מעגל מתג דיודות עם 5V ו- 3.3V כדי לראות איך זה נראה כמו באוסילוסקופ שלי כשהמתחים עוברים. כאשר במתח 3.3V עובר עד 5V, המתח מתנודד לא מעט בתחילה. זה עלול לגרום לבעיות מסוימות כאשר ה- MCU מנסה לצאת משינה. הצבת מכסה בין VCC ו- GND החליקה את האות יפה מאוד. כשעוברים מ -5 וולט ל -3.3 וולט, באמת לא הייתה שום נדנוד, רק ירידה נקייה.

ממידע זה נראה שעליך להוריד את סף ה- BOD או לכבות את ה- BOD, ולשים כובע ניתוק בין VCC ו- GND. אתה כנראה צריך גם לוודא שיש לך נגד נפתח ב- INT0, ולקרוא את סעיפי גליון הנתונים של MCU המסבירים את מצבי השינה השונים את כל השיקולים לישון ולהעיר - זה די מעורב. לחיים

#3
+2
TheDoctor
2014-03-16 20:18:54 UTC
view on stackexchange narkive permalink

אני חושב שהבעיה היא במאתחל שלך, אך לא באופן שאתה חושב.

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

אני חושב שהסיבה שבגללה הארדואינו שלך לא יתחיל היא בגלל שמטען האתחול דורש מקור שעון מדויק, אבל החלת 3v עליו תבלגן שעון זה והוא אולי יקרוס או ימתין להחלת 3.3v למקור יציב.

מבט בגיליון הנתונים:

copyright ATMEL

אנחנו ראו שהציור הנוכחי בזמן ההשכמה (הפעלת מטען האתחול) צפוי להיות בסביבות 2mA, ואילו זרם השינה הוא כ 0.8 מיקרומפר . זה בהחלט יכול להוביל לאפלה בהפעלה ללא הזרם הראוי.

אולי עליך להפעיל אותו רק עם הספק של 5 וולט, או אולי אתה זקוק לסוללה עם זרם מתח גבוה יותר.

האם זה לא אומר שגם בלינק לא יעבוד? כמו כן, אני מריץ יותר מכמה ארדואינו מתאי מטבע ללא בעיות. הם יכולים לספק זרם רב לזמן קצר.
#4
-5
DeveloperACE
2014-03-21 21:33:38 UTC
view on stackexchange narkive permalink

נסה לטעון מחדש את ה- arduino שלך על ידי מעבר אל כלים> צריבת אתחול

האם אתה יכול להוסיף פרטים נוספים כיצד להמשיך לעשות זאת? זה לא מאוד ספציפי: מה יכול להיות לך מחובר לארדואינו? האם ישנם סיכונים? תודה!
הייתי מנתק את הכל כדי להיות בטוח, אבל לא אמור להיות שום סיכון
כך שורפים את מטען האתחול: http://arduino.stackexchange.com/a/474/37. התשובה שלך לא מסבירה את כל הדרך לעשות זאת.


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