שְׁאֵלָה:
באילו נגדים להשתמש כדי לקרוא כמה כפתורים עם סיכה אנלוגית אחת
shoham
2014-02-11 21:38:25 UTC
view on stackexchange narkive permalink

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

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

הנה תמונה של המעגל שיש לי בראש:

Circuit

כיצד אוכל לחבר מעגל כזה כדי שהארדואינו שלי לא יטגן?

אם זה כל המעגל, אז הארדואינו תמיד יקרא 5V על סיכת ה- ADC. בצד החיובי, זה בטוח עם כל ערכי הנגד שם.
הו אז מה עלי לעשות כדי שהוא יקבל את הערכים שיקבל אם היה משתמש בזרם?
ללוח הארדואינו יש רזולוציה של 10 ביט, האם זה מספיק ל- 15 כפתורים? ואיך אוכל לחשב את הדברים שאמרת?
http://en.wikipedia.org/wiki/Voltage_divider
שְׁלוֹשָׁה תשובות:
Ricardo
2014-02-11 21:53:05 UTC
view on stackexchange narkive permalink

מה שאתה מחפש נקרא סולם מתח.

להלן כמה שרטוטים המציגים דוגמה לסולם מתח.

Voltage ladder schematics

התרשימות מקושרות מ מגן מקשים LCD מ- DFRobot.com.

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

LCD Keypad Shield

הנה קישור למידע נוסף על עיצוב זה כולל סקיצה של ארדואינו הקוראת ומפענחת את הערכים מסולם המתח וקובעת איזה כפתור נלחץ.

הנה דוגמה נוספת, עכשיו מ- Freetronics.com, עם מידע נוסף על אופן הפעולה של הסולם.

בחזרה לשאלתך, ערכי הנגד נבחרים כך שכל אחד מהם גורם לירידת מתח על הפין האנלוגי שניתן להבחין בין האחר. לחיצות כפתורים. בדרך כלל אני רואה מקרים בהם ערכי הנגד עולים באופן אקספוננציאלי (330R, 620R, 1K ו- 3K3 במקרה זה), אך אני חושב שתוכל להשתמש בערכים דומים (כולם כ 330R). כמו כן, R2 נמצא שם כדי להימנע מקצר בין 5 וולט ל- GND כאשר לוחצים על הכפתור הראשון.

אם היית, נניח, 15 כפתורים להתפרש, היית צריך שיהיה לך 15 נגדים, ו יהיה עליכם לוודא כי ירידת המתח בין הנגדים הסמוכים גבוהה מספיק בכדי שתוכלו להבחין בקריאות על הסיכה האנלוגית. עליכם לקחת בחשבון של- ATmega328P יש ADC של 10 סיביות (כלומר ייתן לכם ערכים בין 0 ל -1023) אך הוא מראה רק דיוק של 4 סיביות (כלומר יראה שגיאה של כ -10 בכל קריאה). אז אתה צריך לחפש ערכי נגדים שגורמים לירידת מתח שנותנת לך יותר מ -10 בכל קריאה אנלוגית (). זה יגביל את מספר הלחצנים המרבי שתוכל לקרוא בדרך זו.

ישנן בעיקר 3 דרכים להשיג את ערכי הנגד:

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

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

  3. בנייתו. הצב את המעגל בלוח לחם ואז נסה ערכי נגדים שונים ומדוד את ירידת המתח עם Arduino ו- Serial.println (). ניתן גם להשתמש במד מד דיגיטלי (DMM) לשם כך.

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

מדוע בחרת בערכי הנגד הספציפיים האלה? ומה אם היו לי 15 כפתורים?
ערכי הנגד נבחרים כך שכל אחד מהם מקבל ירידה במתח שניתן להבחין בו כאשר לוחצים על כפתורים אחרים. בדרך כלל אני רואה מקרים בהם ערכי הנגד עולים באופן אקספוננציאלי (330R, 620R, 1K ו- 3K3 במקרה זה), אך אני חושב שתוכלו להשתמש בערכים דומים (כולם כ 330R).
אם היו לך 15 כאלה, עליך לוודא כי ירידת המתח בין הנגדים הסמוכים היא גבוהה מספיק כדי להבחין בין הקריאות על הסיכה האנלוגית. עליכם לקחת בחשבון של- ATmega328P יש ADC של 10 סיביות (כלומר ייתן לכם ערכים בין 0 ל -1023) אך הוא מראה רק דיוק של 4 סיביות (כלומר יציג שגיאה של כ -10 בכל קריאה). אז אתה צריך לחפש ערכי נגדים שיורדים במתח שמעניקים לך יותר מ -10 בכל קריאה אנלוגית () קריאה.
האם יש דרך טובה לבדוק זאת? זאת אומרת מלבד לקנות 100 נגדים בערכים שונים ולנסות אותם?
אתה יכול לחשב את קריאת המתח עבור כל לחיצה על לחצן על ידי הסרת החלקים במעגל המתח האחרון שפתוחים והחלת חוק אוהם. לכן, בחר כפתור אחד, החלף אותו בחוט והסר את כל שאר הכפתורים. ואז תמצא את המתח של הכפתור הזה. שימו לב כי סולם המתח רושם רק לחיצה אחת על כפתור בכל פעם.
ניתן גם לדמות את המעגל. שמת לב שאתה יכול לדמות את המעגל שפרסם קימליב? בלחיצה על התרשימות שלו תועבר ל- CircuitLabs, שהוא אתר המאפשר לך לדמות מעגלים. שם תוכלו לשנות את ערכי הנגד ולראות את התוצאות. אלה שלוש החלופות שיש לך: חישוב, הדמיה ובנייה.
pjc50
2014-02-11 22:58:01 UTC
view on stackexchange narkive permalink

אני רק אזכיר דברים שהתשובות האחרות לא התייחסו אליהם:

  1. שים לב שקצה אחד חייב לעבור ל- VCC והשני לקרקע, ונקודת המדידה שלך חייבת להיות איפשהו באמצע.

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

  2. ערכים הגיוניים מינימליים עבור נגדים.

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

    בהינתן אספקת 5V והנגד 2k של קימליב, יהיה לזה (על ידי חוק אוהם) 2.5ma זורם בו, מתפזר (לפי P = VI) 12.5mW כוח. אפילו נגדים זעירים להרכבה על פני השטח מדורגים ב 63mW, כך שזה יהיה בסדר. חם.

  3. ערכים הגיוניים מרביים עבור נגדים.

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

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

kimliv
2014-02-11 21:55:12 UTC
view on stackexchange narkive permalink

נסה את המעגל הזה:

schematic

לדמות את המעגל הזה - סכמטי שנוצר באמצעות CircuitLab

עכשיו אתה מקבל ערכים שונים עבור שילוב כפתורים שונה. אני חושב שאתה מחפש את זה.

בסדר, אבל מדוע בחרת בערכים אלה עבור הנגדים? ומה אם היו לי 15 כפתורים במערך דומה?
חשוב הוא שאם אתה מוסיף ערך כלשהו יחד אתה לא מקבל אחר כתוצאה מכך
אתה צריך את 2k למעלה בין 5V ו- GND כדי למנוע קצר. השאר צריך לעקוב אחר ההצהרה העליונה שלי
האם ה- 2k בטוח? איך החלטת על 2k?
אם אתה לוקח את חוק אוהם יש לך: I = U / R במקרה זה הגרוע ביותר הוא אם תלחץ על כפתור SW1 תקבל I = 5/2000 => I = 0.0025A (2.5mA) זה בסדר עבור Arduino
אם אתה רוצה לזהות כניסות כפתור מרובות בו זמנית השתמש במעגל זה: http://i2.wp.com/tronixstuff.com/wp-content/uploads/2012/02/circuit11.jpg
אילו ערכים הם בסדר עבור הארדואינו?
הערכים בציור שלי טובים
@kimliv מצטער אני מתחיל מאוד .. מגיע מתחום התוכנה והתחלתי רק עם אלקטרוניקה.אז אם יש לי 10 כפתורים, מה ההצעות שלך לבחור בערכי הנגד?כל 10 ערכים (עם הפרש כמעט שווה) בין 330 ל -4k ???


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