תוכן עניינים:
- שלב 1: המעגל
- שלב 2: הוכחה - אקסל
- שלב 3: תכנות ארדואינו
- שלב 4: מעגלי TinkerCAD
- שלב 5: "כל כך הרבה זמן, ותודה על כל הדגים." (ref. 1)
- שלב 6: הפניות
וִידֵאוֹ: השתמש בקלט אנלוגי אחד עבור 6 לחצנים עבור Arduino: 6 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:16
לעתים קרובות תהיתי כיצד אוכל להשיג יותר כניסות דיגיטליות עבור ה- Arduino שלי. לאחרונה עלה בדעתי שאני אמור להיות מסוגל להשתמש באחת הכניסות האנלוגיות להבאת מספר כניסות דיגיטליות. עשיתי חיפוש מהיר ומצאתי היכן אנשים מסוגלים לעשות זאת, אך אלה מאפשרים ללחוץ על כפתור אחד בכל פעם. אני רוצה שיהיה אפשר ללחוץ על כל שילוב של לחצנים במקביל. אז, בעזרת TINKERCAD CIRCUITS, יצאתי לגרום לזה לקרות.
למה שארצה ללחוץ על לחצנים בו זמנית? כפי שמוצג בעיצוב מעגלי TinkerCad, ניתן להשתמש בו לכניסות מתג DIP לבחירת מצבים שונים בתוך התוכנית.
המעגל שיצא לי משתמש במקור 5V הזמין מהארדואינו ומשתמש ב -7 נגדים ו -6 לחצנים או מתגים.
שלב 1: המעגל
ל- Arduino יש כניסות אנלוגיות המקבלות כניסת 0V עד 5V. לקלט זה יש רזולוציה של 10 סיביות, כלומר האות מחולק ל -2^10 מקטעים, או 1024 ספירות. בהתבסס על זה, הכי הרבה שיכולנו להיכנס לקלט אנלוגי תוך מתן לחיצות בו זמנית יהיה 10 כפתורים עד כניסת אנלוגית אחת. אבל, זה לא עולם מושלם. יש התנגדות במוליכים, רעש ממקורות חיצוניים ועוצמה לא מושלמת. אז, כדי לתת לעצמי הרבה גמישות, תכננתי לעצב את זה עבור 6 כפתורים. זה הושפע בין השאר מהעובדה שלמעגלי TinkerCAD היה אובייקט מתג DIP של 6 מתגים, מה שיקל על הבדיקה.
השלב הראשון בעיצוב שלי היה לוודא שכל כפתור, בלחיצה בנפרד, יספק מתח ייחודי. זה פסל שכל הנגדים הם באותו ערך. השלב הבא היה שערכי ההתנגדות, כאשר הם מתווספים במקביל, לא יכולים להיות בעלי אותה התנגדות כמו כל ערך נגד אחד. כאשר נגדים מחוברים במקביל, ניתן לחשב את ההתנגדות המתקבלת על ידי Rx = 1/[(1/R1)+(1/R2)]. לכן, אם R1 = 2000 ו- R2 = 1000, Rx = 667. שיערתי שעל ידי הכפלת גודל כל הנגד, לא אראה את אותה התנגדות לאף אחד מהצירופים.
אז, המעגל שלי עד לנקודה זו היה שיהיו לנו 6 מתגים, לכל אחד הנגד שלו. עם זאת, יש צורך בנגד אחד נוסף להשלמת מעגל זה.
לנגד האחרון יש 3 מטרות. ראשית, הוא פועל כנגד משיכה. ללא הנגד, כאשר לא לוחצים על כפתורים המעגל אינו שלם. זה יאפשר למתח בכניסה האנלוגית של Arduino לצוף לכל פוטנציאל מתח. נגד משיכה למטה בעצם מוריד את המתח ל 0 V. המטרה השנייה היא להגביל את הזרם של מעגל זה. חוק אוהם קובע כי V = IR, או מתח = זרם מוכפל בהתנגדות. עם מקור מתח נתון, ככל שהנגד גדול יותר אומר שהזרם יהיה קטן יותר. לכן, אם אות 5V יופעל על נגד 500ohm, הזרם הגדול ביותר שיכולנו לראות יהיה 0.01A או 10mA. המטרה השלישית היא לספק את מתח האות. הזרם הכולל הזורם דרך הנגד האחרון יהיה: i = 5V/Rtotal, כאשר Rtotal = Rlast+{1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R5)+(1/R6)]}. עם זאת, כלול רק 1/Rx עבור כל הנגד שהלחצן המקביל שלו נלחץ. מהזרם הכולל, המתח המסופק לקלט האנלוגי יהיה i*Rlast או i*500.
שלב 2: הוכחה - אקסל
הדרך המהירה והקלה ביותר להוכיח שאקבל התנגדויות ייחודיות ובכך מתח ייחודי עם מעגל זה הייתה להשתמש ביכולות של Excel.
הקמתי את כל השילובים האפשריים של כניסות מתג וארגנתי את התבניות הבינאריות ברצף. ערך "1" מציין שהמתג מופעל, ריק מציין שהוא כבוי. בחלק העליון של הגיליון האלקטרוני, הכנסתי את ערכי ההתנגדות עבור כל מתג ועבור הנגד הנפתח. לאחר מכן חישבתי את ההתנגדות המקבילה עבור כל אחד מהצירופים, למעט כאשר כל הנגדים כבויים מכיוון שלנגדים אלה לא תהיה השפעה מבלי שמקור כוח יספק אותה. כדי להקל על החישובים שלי כדי שאוכל להעתיק ולהדביק לכל שילוב, כללתי את כל הצירופים בחישוב על ידי הכפלת כל ערך מתג (0 או 1) בערך ההתנגדות ההפוך שלו. פעולה זו ביטלה את התנגדותה מהחישוב אם המתג כבוי. ניתן לראות את המשוואה המתקבלת בתמונת הגיליון האלקטרוני, אך Req = Rx + 1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6). באמצעות Itotal = 5V / Req, אנו קובעים את הזרם הכולל דרך המעגל. זהו אותו זרם שעובר בנגד הנפתח, ומספק לנו את המתח לקלט האנלוגי שלנו. זה מחושב כ- Vin = Itotal x Rx. אם נבחן הן את נתוני Req והן את נתוני Vin, אנו יכולים לראות שאכן יש לנו ערכים ייחודיים.
בשלב זה נראה כי המעגל שלנו יפעל. עכשיו כדי להבין כיצד לתכנת את הארדואינו.
שלב 3: תכנות ארדואינו
כשהתחלתי לחשוב כיצד לתכנת את הארדואינו, תכננתי בתחילה להגדיר טווחי מתח בודדים לקביעה אם מתג מופעל או כבוי. אבל, כששכבתי במיטה לילה אחד, עלה בדעתי שאני אמור למצוא משוואה שתעשה זאת. אֵיך? לְהִצטַיֵן. ל- Excel יש את היכולת לחשב משוואות לנתונים המתאימים ביותר בתרשים. לשם כך, ארצה משוואה של ערך מספר שלם של המתגים (בינארי) מול כניסת המתח המתאימה לערך זה. בחוברת העבודה שלי ב- Excel, הנחתי את הערך שלם בצד השמאלי של הגיליון האלקטרוני. עכשיו כדי לקבוע את המשוואה שלי.
להלן הדרכה מהירה כיצד לקבוע את משוואת השורה בתוך Excel.
1) בחר תא שאינו מכיל נתונים. אם בחרת תא שיש בו נתונים, אקסל תנסה לנחש מה אתה רוצה להתגבר. זה מקשה הרבה יותר על הגדרת מגמה, כי רק לעתים רחוקות Excel מנבא נכון.
2) בחר בכרטיסייה "הכנס" ובחר תרשים "פיזור".
3) לחץ לחיצה ימנית בתיבת התרשים ולחץ על "בחר נתונים …". פעולה זו תפתח את החלון "בחר מקור נתונים". בחר בלחצן הוסף כדי להמשיך ולבחור את הנתונים.
4) תן לזה שם סדרה (אופציונלי). בחר את הטווח עבור ציר ה- X על ידי לחיצה על החץ למעלה ואז בחירת נתוני המתח. בחר את הטווח עבור ציר ה- Y על ידי לחיצה על החץ למעלה ואז בחירת הנתונים שלם (0-63).
5) לחץ לחיצה ימנית על נקודות הנתונים ובחר "הוסף קו מגמה …" בחלון "עיצוב קו מגמה", בחר בלחצן פולינומי. במבט על המגמה, אנו רואים שסדר 2 לא ממש תואם. בחרתי סדר 3 והרגשתי שזה הרבה יותר מדויק. סמן את תיבת הסימון עבור "משוואת תצוגה בתרשים". המשוואה הסופית כעת מוצגת בתרשים.
6) בוצע.
בסדר. בחזרה לתוכנית Arduino. עכשיו כשיש לנו את המשוואה, קל לתכנת את הארדואינו. המספר השלם שמייצג את מיקומי המתג מחושב בשורת קוד אחת. באמצעות הפונקציה "bitread", אנו יכולים לתפוס את הערך של כל ביט בודד וכך לדעת את מצבו של כל כפתור. (ראה תמונות)
שלב 4: מעגלי TinkerCAD
אם לא בדקת את מעגלי TinkerCAD, עשה זאת כעת. לַחֲכוֹת!!!! סיים לקרוא את המדריך שלי ולאחר מכן בדוק אותו. מעגלי TinkerCAD הופכים את בדיקת מעגלי הארדואינו לקלה מאוד. הוא כולל כמה אובייקטים חשמליים וארדואינים, ואפילו מאפשר לך לתכנת את הארדואינו לבדיקה.
כדי לבדוק את המעגל שלי, הקמתי 6 מתגים באמצעות חבילת מתגי DIP וקשרתי אותם לנגדים. כדי להוכיח שערך המתח בגיליון האלקטרוני שלי ב- Excel נכון, הצגתי מד מתח בכניסה לארדואינו. כל זה עבד כצפוי.
כדי להוכיח שתכנות Arduino עבד, אני פולט את מצבי המתגים ללדים באמצעות הפלט הדיגיטלי של Arduino.
לאחר מכן החלפתי כל מתג לכל שילוב אפשרי וגאה לומר "זה עובד" !!!
שלב 5: "כל כך הרבה זמן, ותודה על כל הדגים." (ref. 1)
עדיין לא ניסיתי לעשות זאת באמצעות ציוד אמיתי, מכיוון שאני כרגע נוסע לעבודה. אבל, לאחר שהוכחתי את זה עם מעגלי TinkerCAD, אני מאמין שזה יעבוד. האתגר הוא שערכי הנגדים שציינתי אינם כולם ערכים סטנדרטיים לנגדים. כדי לעקוף את זה, אני מתכוון להשתמש בפוטנציומטרים ובשילובים של נגדים כדי לקבל את הערכים שאני צריך.
תודה שקראת את ההנחיה שלי. אני מקווה שזה יעזור לך בפרויקטים שלך.
אנא השאר הערות אם ניסית להתמודד עם אותו מכשול וכיצד פתרת אותו. אשמח ללמוד עוד דרכים לעשות זאת.
שלב 6: הפניות
לא חשבת שאמסור הצעת מחיר מבלי לספק הפניה למקור שלה, נכון?
ref. 1: אדמס, דאגלס. כל כך הרבה, ותודה על כל הדגים. (הספר הרביעי של "הטרילוגיה" של הטרמפיסט לגלקסיה)
מוּמלָץ:
משחקי 4 כפתורים באמצעות קלט אנלוגי אחד: 6 שלבים (עם תמונות)
4 משחקי כפתורים באמצעות קלט אנלוגי אחד: מדריך זה מתמקד בשימוש בקו קלט אנלוגי אחד לכפתורים מרובים הניתנים לזיהוי ללא קשר אחד לשני. וכדי להדגיש את השימוש בלחצנים אלה כלולה תוכנה למשחק ארבעה משחקי 4 כפתורים שונים. כל המשחקים (8 ב
השתמש במנוע כונן DC הליכון ובקר מהירות PWM עבור הפעלת כלים: 13 שלבים (עם תמונות)
השתמש במנוע כונן DC הליכון ובקר מהירות PWM לכלי הפעלה: כלים חשמליים כמו טחנות ומחרטות חיתוך מתכות, מכונות מקדחה, מסורי חבטות, מלטשות ועוד עשויות לדרוש מנועים של 5 עד 2 כ"ס עם יכולת כוונון מהירות תוך שמירה על מומנט. .במקרה, רוב ההליכונים משתמשים במנוע 80-260 VDC עם
שעון POV Led אנלוגי בסגנון אנלוגי עם Arduino Nano: 4 שלבים
שעון POV LED בסגנון אנלוגי עם Arduino Nano: זה נראה נחמד בעיצוב אנלוגי בסגנון שעון POV
Raspberry Pi GPIO מעגלים: שימוש בחיישן אנלוגי LDR ללא ADC (ממיר אנלוגי לדיגיטלי): 4 שלבים
Raspberry Pi GPIO מעגלים: שימוש בחיישן אנלוגי LDR ללא ADC (ממיר אנלוגי לדיגיטלי): במדריך הקודם שלנו, הראנו לך כיצד תוכל לקשר את סיכות ה- GPIO של ה- Raspberry Pi שלך ללדים ולמתגים וכיצד סיכות GPIO יכולות להיות גבוהות או נמוך. אבל מה אם אתה רוצה להשתמש ב- Raspberry Pi שלך עם חיישן אנלוגי? אם נרצה להשתמש ב
שימוש אחד עבור מצביע לייזר 1mW: 6 שלבים
שימוש אחד עבור מצביע לייזר של 1mW: השתמש כמדד היארעות בלייזר, למדידת זווית ההתקפה של רצועת אוויר במעלות. בעיקר במטוסי דגם בעת הגדרת הכנף. היחידה המסחרית כאן Accupoint