תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
זהו פרויקט פשוט העוקב אחר או הימנע מאור.
עשיתי סימולציה זו ב- Proteus 8.6 pro. רכיבים נדרשים: -1) Arduino uno.
2) 3 LDR.
3) מנועי הילוך Dc.4) סרוו אחד.5) שלושה נגדים 1k.6) אחד H-Bridge l290D7) מתג הפעלה וכיבוי אחד [לשינוי מצב התוכנית]
8) 9v ו- 5v Battry
שלב 1: קוד ארדוניו
קוד ארדואינו שונה בתאריך מעט -ביט 23 פברואר 2016]
קוד זה זוכה להערות רבות, אינני רוצה להסביר אך אם אתה זקוק לעזרה, פנה אליי בכתובת ([email protected])
הערה: -אני משתמש בשני תנאים בתוכנית זו ראשון עבור אור לאחר.2 אחרון למניעת אור.
ככל שהתנאים האלה מתקיימים הרובוט יעקוב אחר או יימנע מאור. [זהו ערך מינימלי של LDR שאני בוחר. באור רגיל הטווח הוא 80 עד 95 אך ככל שעוצמתו גדלה יותר ויותר מתח המושרה כתוצאה מכך הוא פועל על פי עקרון מחלק המתח int a = 400; // ערך טולרנס]
שלב 2: קבצי פרוטאוס
עבור ספריית Arduino הורד מהקישור הזה
שלב 3: כיצד פועל ה- H-bridge שלך
ה- L293NE/SN754410 הוא גשר H בסיסי מאוד. יש לו שני גשרים, אחד בצד שמאל של השבב ואחד מימין, והוא יכול לשלוט על 2 מנועים. הוא יכול להניע עד 1 אמפר של זרם, ולפעול בין 4.5V ל 36V. מנוע ה- DC הקטן שבו אתה משתמש במעבדה זו יכול לפעול בבטחה ממתח נמוך כך שגשר ה- H הזה יעבוד מצוין. לגשר H יש את הסיכות והתכונות הבאות: סיכה 1 (1, 2EN) מאפשרת ומשביתת את המנוע שלנו בין אם הוא נותן HIGH או LOW Pin 2 (1A) הוא סיכה לוגית עבור המנוע שלנו (הקלט הוא HIGH או LOW) Pin 3 (1Y) מיועד לאחד ממסופי המנוע פין 4-5 מיועדים לקרקע פין 6 (2Y) מיועד למסוף המנוע השני פין 7 (2A) הוא סיכת היגיון עבור המנוע שלנו (הקלט הוא גבוה או נמוך) פין 8 (VCC2) הוא ספק הכוח עבור המנוע שלנו, יש לתת לכך את המתח המדורג של המנוע שלך סיכה 9-11 אינם מחוברים מכיוון שאתה משתמש רק במנוע אחד במעבדה זו פין 12-13 מיועדים לקרקע פין 14-15 אינם מחוברים פין 16 (VCC1) הוא מחובר ל- 5V. למעלה תרשים של גשר H ואילו סיכות עושות מה בדוגמה שלנו. בתרשים כלולה טבלת אמת המציינת כיצד המנוע יפעל בהתאם למצב סיכות ההיגיון (שנקבעות על ידי הארדואינו שלנו).
בפרויקט זה, סיכת ההפעלה מתחברת לסיכה דיגיטלית ב- Arduino שלך כך שתוכל לשלוח אותה HIGH או LOW ולהדליק או להפעיל את המנוע. סיכות ההיגיון המוטורי מחוברות גם לסיכות דיגיטליות ייעודיות בארדואינו שלך, כך שתוכל לשלוח אותו HIGH ו- LOW כדי שהמנוע יסתובב בכיוון אחד, או LOW ו- HIGH שיפנה לכיוון השני. מתח אספקת המנוע מתחבר למקור המתח של המנוע, שהוא בדרך כלל ספק כוח חיצוני. אם המנוע שלך יכול לפעול על 5V ופחות מ -500mA, אתה יכול להשתמש בפלט 5V של Arduino. רוב המנועים דורשים מתח גבוה יותר וציור זרם גבוה מזה, כך שתצטרך ספק כוח חיצוני.
חבר את המנוע לגשר H חבר את המנוע לגשר H כפי שמוצג בתמונה השנייה.
לחלופין, אם אתה משתמש באספקת כוח חיצונית עבור Arduino, אתה יכול להשתמש בסיכת Vin.
שלב 4: כיצד פועל LDR
כעת הדבר הראשון שעשוי להזדקק להסבר נוסף הוא השימוש במנגדים התלויים באור. נגדים תלויי אור (או LDR's) הם נגדים שערכם משתנה בהתאם לכמות האור הסביבתי, אך כיצד נוכל לזהות התנגדות באמצעות Arduino? ובכן אינך יכול באמת, אולם תוכל לזהות רמות מתח באמצעות הפינים האנלוגיים, היכולים למדוד (בשימוש בסיסי) בין 0-5V. כעת אתה עשוי לשאול "ובכן כיצד ניתן להמיר את ערכי ההתנגדות לשינויי מתח?", זה פשוט, אנו יוצרים מחלק מתח. מחלק מתח מקבל מתח ולאחר מכן פולט חלק מהמתח הפרופורציוני למתח הכניסה והיחס בין שני ערכי הנגדים המשמשים. המשוואה שלשמה היא:
מתח יציאה = מתח כניסה * (R2 / (R1 + R2)) כאשר R1 הוא הערך של הנגד הראשון ו- R2 הוא הערך של השני.
עכשיו זה עדיין מעלה את השאלה "אבל אילו ערכי התנגדות יש ל- LDR?", שאלה טובה. ככל שכמות האור הסביבה פחותה כך ההתנגדות גבוהה יותר, כך אור הסביבה יותר פירושו התנגדות נמוכה יותר. עכשיו עבור ה- LDR המסוים השתמשתי בטווח ההתנגדות שלהם היה בין 200 - 10 קילו אוהם, אבל זה משתנה עבור אלה, לכן הקפד לחפש מאיפה קנית אותם ונסה למצוא גליון נתונים או משהו מהסוג הזה. מקרה R1 הוא למעשה ה- LDR שלנו, אז בואו נחזיר את המשוואה הזו ונעשה קצת קסם מתמטי (קסם חשמלי מתמטי). עכשיו ראשית עלינו להמיר את ערכי הקילו אוהם לאוהם: 200 קילו אוהם = 200, 000 אוהם 10 קילו-אוהם = 10, 000 אוהם כדי למצוא מהו מתח היציאה כשאנחנו בשחור כהה אנו מחברים את המספרים הבאים: 5 * (10000 / (200000 + 10000)) הכניסה היא 5V מכיוון שזה מה שאנחנו מקבלים מהארדואינו. האמור לעיל נותן 0.24V (מעוגל). כעת אנו מוצאים מהו מתח המוצא בהירות השיא באמצעות המספרים הבאים: 5 * (10000 / (10000 + 10000)) וזה נותן לנו 2.5V בדיוק. אז אלה ערכי המתח שאנחנו הולכים להכניס לסיכות האנלוגיות של הארדואינו, אבל אלה לא הערכים שייראו בתוכנית, "אבל למה?" אתה יכול לשאול. הארדואינו משתמש בשבב אנלוגי לדיגיטלי הממיר את המתח האנלוגי לנתונים דיגיטליים שמישים. שלא כמו הפינים הדיגיטליים על Arduino שיכולים לקרוא רק מצב HIGH או LOW להיות 0 ו- 5V הפינים האנלוגיים יכולים לקרוא מ 0-5V ולהמיר את זה לטווח מספרים של 0-1023. עכשיו עם עוד קצת מתמטיקה-קסם. אנו יכולים למעשה לחשב אילו ערכים ארדואינו יקרא בפועל.
מכיוון שזו תהיה פונקציה לינארית אנו יכולים להשתמש בנוסחה הבאה: Y = mX + C איפה; Y = Digital ValueWhere; m = שיפוע, (עלייה / ריצה), (ערך דיגיטלי / ערך אנלוגי) היכן; C = יירט Y בהירות השיא היא תהיה: 204.6 * 2.5 מה שנותן בערך 511. עכשיו כששניים מאלה מוגדרים על שני סיכות אנלוגיות אנו יכולים ליצור שני משתנים שלמים לאחסון הערכים שלהם שניים ולבצע אופרטורי השוואה כדי לראות למי מהם יש את הערך הנמוך ביותר, סובב את הרובוט בכיוון זה.