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

דגם מיזוג אוויר Arduino: 6 שלבים
דגם מיזוג אוויר Arduino: 6 שלבים

וִידֵאוֹ: דגם מיזוג אוויר Arduino: 6 שלבים

וִידֵאוֹ: דגם מיזוג אוויר Arduino: 6 שלבים
וִידֵאוֹ: CS50 2015 - Week 4 2024, יולי
Anonim
דגם מיזוג אוויר Arduino
דגם מיזוג אוויר Arduino

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

על ידי שימוש בערכת מיקרו -בקר Arduino ובגרסאות MATLAB 2016b ו- 2017b, הצלחנו להדגים תוצאות אלו בהצלחה יחסית.

שלב 1: ציוד

צִיוּד
צִיוּד

ערכת מיקרו -בקר עם הדברים הבאים:

-לוח אדום של Sparkfun

-לוח הלחם של Sparkfun

-לוח LCD

-פוטנציומטר

-חיישן טמפרטורה

-סרבו

-מתאם USB/ארדואינו

חוטי מגשר (25, מינימום)

מחשב נייד (Windows 10) עם כניסת USB

אובייקט מודפס בתלת מימד (אופציונלי)

שלב 2: הגדרת מיקרו -בקר

הגדרת מיקרו -בקר
הגדרת מיקרו -בקר
הגדרת מיקרו -בקר
הגדרת מיקרו -בקר
הגדרת מיקרו -בקר
הגדרת מיקרו -בקר
הגדרת מיקרו -בקר
הגדרת מיקרו -בקר

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

תמונות של כל דגם בנפרד ניתן למצוא במדריך של ערכת הכלים של מיקרו -בקר או באתר האינטרנט שלה בכתובת

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

להשוואה:

LCD: c1-16

סרוו: i1-3 (GND + -)

חיישן טמפ ': i13-15 (- GND +)

פוטנציומטר: g24-26 (- GND +)

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

חיבור פוטנציומטר ל- LCD: f25 - e3

חוט סרוו GND: j1 - קלט דיגיטלי 9

חיישן טמפ 'GND: j14 - קלט אנלוגי 0

כניסות LCD: e11-e15-קלט דיגיטלי 2-5

e4 - קלט דיגיטלי 7

e6 - קלט דיגיטלי 6

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

אופציונלי: אובייקט מודפס בתלת מימד שימש כחלק מדרישה. כדי למנוע נזק אפשרי לחלקים השברירים יותר, מארז מורחב הונח כשרוול סביב ה- LCD. המדידות של מסך ה- LCD התגלו כ -2-13/16 "x 1-1/16" x 1/4 ", וכך רק הגובה השתנה באופן משמעותי. אם מדפסת תלת מימד זמינה, שקול להוסיף אובייקט אישי. אם כי מיותר. שים לב שהמידות עשויות להיות שונות.

שלב 3: הגדרת MATLAB

הגדרת MATLAB
הגדרת MATLAB
הגדרת MATLAB
הגדרת MATLAB

התקן גרסה מעודכנת יותר של MATLAB (2016a ואילך), הזמינה באתר MathWorks https://www.mathworks.com/products/matlab.html?s_tid=srchtitle. לאחר הפתיחה, עבור אל הרחבות בכרטיסייה דף הבית והורד את "חבילת התמיכה של MATLAB לחומרה של Arduino" כדי שפקודות המיקרו-בקר יהיו נגישות.

לאחר השלמתה, ניתן לבצע בדיקה לאיתור הקישוריות של המיקרו -בקר למחשב/מחשב נייד. לאחר חיבורם עם מתאם ה- USB מחבילת הכלים, הכנס את הפקודה "fopen (סידורי ('נאדה'))."

תופיע הודעת שגיאה המציינת את המחבר כ- "COM#", אשר יהיה צורך ביצירת אובייקט ארדואינו כל עוד הוא אותו קלט בכל עת.

מכיוון של LCD אין חיבור ישיר לספריית Arduino, יש ליצור ספרייה חדשה על מנת להציג הודעות. המלצה היא ליצור קובץ LCDAddon.m מדוגמת ה- LCD המצויה בחלון העזרה של MATLAB לאחר חיפוש "Arduino LCD" והצבתו בתיקיית +arduinoioaddons, או שימוש בתיקייה הדחוסה המצורפת והעתקת כל תוכנו לאמור לעיל תיקייה.

אם הוא מצליח, הקוד ליצירת אובייקט Arduino ב- MATLAB הוא כפי שמוצג להלן.

a = arduino ('com#', 'uno', 'Libraries', 'ExampleLCD/LCDAddon');

שלב 4: פונקציות

פונקציות
פונקציות
פונקציות
פונקציות

צור פונקציית MATLAB. עבור התשומות, אנו משתמשים במשתנים "eff" ו- "T_min"; עבור תפוקות, אם כי מיותר בעיצוב הכולל, השתמשנו במשתנה "B" כדרך להכיל נתונים מהתוצאות. קלט ה" eff "מאפשר לנהל את המהירות המרבית של הסרוו, וכניסת" T_min "שולטת בטמפרטורה המינימלית הרצויה. הערך "B" אמור אפוא לייצר מטריצה המכילה שלוש עמודות לזמן, הטמפרטורה והיעילות של המאוורר. כמו כן, כבונוס לפרטי פרטים, לקוד המפורט להלן יש גם הצהרת אם כך שמהירות המאוורר תפחת בחמישים אחוזים כשהיא מתקרבת לטמפרטורה המינימלית הרצויה.

אם כל הכניסות וחוטי המגשר ממוקמים בדיוק ובהנחה שהיציאה של חיבור הארדואינו היא COM4 ושם הפונקציה הוא "fanread", הקוד הבא אמור להספיק:

פונקציה [B] = fanread (Tmin, eff)

ברור א; lcd ברור; a = arduino ('com4', 'uno', 'Libraries', 'ExampleLCD/LCDAddon');

t = 0; t_max = 15; % זמן בשניות

lcd = addon (a, 'ExampleLCD/LCDAddon', {'D7', 'D6', 'D5', 'D4', 'D3', 'D2'});

לאתחל LCD (lcd, 'שורות', 2, 'עמודות', 2);

אם eff> = 1 || e <0

שגיאה ('המאוורר לא יופעל אלא אם האפקט יוגדר בין 0 ל -1')

סוֹף

עבור t = 1: 10 % מספר לולאות/מרווחים

ברור c; % מונעים חזרה על השגיאה

v = readVoltage (a, 'A0');

TempC = (v-0.5)*100; אומדן % לטווחי מתח 2.7-5.5 וולט

אם TempC> Tmin אם TempC

c = ['Temp', num2str (TempC, 3), 'C On'];

writePWMDutyCycle (a, 'D9', eff/2); % מפעילים סרוו בחצי מהירות

spd = 50;

אַחֵר

c = ['Temp', num2str (TempC, 3), 'C On'];

writePWMDutyCycle (a, 'D9', eff); % מפעילים סרוו במהירות הנתונה

spd = 100;

סוֹף

אַחֵר

c = ['Temp', num2str (TempC, 3), 'C Off'];

writePWMDutyCycle (a, 'D9', 0); כיבוי % אם כבר מופעל

spd = 0;

סוֹף

printLCD (lcd, c);

הפסקה (3); % שלוש שניות עוברות לכל לולאה

זמן (t) = t.*3;

tempplot (t) = TempC;

act (t) = spd;

עלילת משנה (2, 1, 1)

עלילת שורת העלילה (זמן, טמפלוט, 'b-o')

ציר ([0 33 0 40])

xlabel ('זמן (שניות)')

ylabel ('טמפרטורה (C)')

תחזיק מעמד

עלילה ([0 33], [Tmin Tmin], 'r-')

תחזיק מעמד

עלילה ([0 33], [Tmin+2 Tmin+2], 'g-')

עלילת משנה (2, 1, 2)

עמודת בר (זמן, מעשה) % עמודות

xlabel ('זמן (שניות)')

ylabel ('יעילות (%)')

סוֹף

B = transpose ([time; tempplot; act]);

סוֹף

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

שלב 5: בדיקה

בדיקה
בדיקה
בדיקה
בדיקה

כעת בדוק את הפונקציה בחלון הפקודה על ידי הכנסת "function_name (input_value_1, input_value_2)" וצפה. ודא שכבר אין אובייקט ארדואינו; אם כן, השתמש בפקודה "נקה א" כדי להסיר אותו. אם מתרחשות שגיאות, בדוק אם מחברים נמצאים במקום הלא נכון או אם נעשה שימוש בכניסות הדיגיטליות או האנלוגיות הלא נכונות. התוצאות צפויות להשתנות, למרות שזה עשוי להיגרם על ידי מיקום של חוטי מגשר מסוימים וחיישן הטמפרטורה.

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

שלב 6: מסקנה

סיכום
סיכום

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

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

מוּמלָץ: