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

השתמש בארדואינו להצגת סל"ד של מנוע: 10 שלבים (עם תמונות)
השתמש בארדואינו להצגת סל"ד של מנוע: 10 שלבים (עם תמונות)

וִידֵאוֹ: השתמש בארדואינו להצגת סל"ד של מנוע: 10 שלבים (עם תמונות)

וִידֵאוֹ: השתמש בארדואינו להצגת סל
וִידֵאוֹ: כיצד להשתמש ב- MAX6675 סוג תרמי k עם Arduino 2024, יולי
Anonim
השתמש בארדואינו להצגת סל
השתמש בארדואינו להצגת סל
השתמש בארדואינו להצגת סל
השתמש בארדואינו להצגת סל
השתמש בארדואינו להצגת סל
השתמש בארדואינו להצגת סל

מדריך זה יפרט כיצד השתמשתי ב- Arduino UNO R3, תצוגת LCD בגודל 16x2 עם I2C, ורצועת LED לשמש כמד מהירות מנוע והזזה אור במכונית מסילת אקורה אינטגרה שלי. הוא כתוב במונחים של מישהו בעל ניסיון או חשיפה לתוכנת Arduino או קידוד באופן כללי, התוכנה המתמטית MATLAB, ויצירה או שינוי של מעגלים חשמליים. בעתיד זה עשוי להיות מתוקן יותר להבנה עבור מישהו עם מעט מאוד ניסיון בנושאים אלה.

שלב 1: בחר חוט סיגל

בחר חוט סיגל
בחר חוט סיגל

יהיה עליך לקבל אות המתאם למהירות המנוע. אפשר להוסיף מערכת המודדת את מהירות המנוע אך הרבה יותר מעשי להתחבר לחוט קיים שנושא מידע על מהירות המנוע. לרכב בודד יש מספר מקורות לכך, והוא עשוי להשתנות באופן עצום אפילו משנה לשנה בדגם רכב יחיד. למען הדרכה זו אשתמש בדוגמה של המכונית שלי, מסלול שונה 2000 Acura Integra LS. גיליתי שבמנוע שלי (B18B1 עם OBD2) יש מתח החוצה שאינו בשימוש שגובהו 12V ויורד ל 0V עם השלמת מהפכה מלאה.

דברים שיעזרו לזהות אות מהירות מנוע פוטנציאלית:

  • תרשים חיווט לרכב שלך
  • מחפש פורומים לרכב שלך הכולל אותות מנוע/ECU
  • מכונאי או חובב מכוניות ידידותי

שלב 2: הארך את החוט ללוח Arduino

הארך את החוט ללוח Arduino
הארך את החוט ללוח Arduino
הארך את החוט ללוח Arduino
הארך את החוט ללוח Arduino

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

שלב 3: ניתוח אותות

ניתוח אותות
ניתוח אותות

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

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

האות שלי בדרך כלל הוא 12V ויורד ל 0V בסיום סיבוב מלא אחד. אם אתה יודע את הזמן להשלים סיבוב אחד מלא, או מחזור אחד מלא, ניתן לתרגם זאת בקלות לסיבובים/דקה באמצעות כמה מושגים בסיסיים.

1 / (שניות למחזור) = מחזורים לשנייה, או הרץ

סיבובים לדקה = Hz * 60

שלב 4: קוד את ניתוח האותות שלך

קוד את ניתוח האותות שלך
קוד את ניתוח האותות שלך

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

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

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

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

שלב 5: זהה מסנן

זהה מסנן
זהה מסנן

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

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

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

שלב 6: סינון: חלק 1

סינון: חלק 1
סינון: חלק 1
סינון: חלק 1
סינון: חלק 1
סינון: חלק 1
סינון: חלק 1

ניתן לעצב את המסנן ביד, אולם השימוש ב- MATLAB יאיץ זאת באופן משמעותי אם תהיה לך גישה לתוכנה.

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

המשתנה היחיד בפונקציה הוא tau. טאו שווה ל- 1 / אומגה, כאשר אומגה היא תדר החיתוך שאתה רוצה (חייב להיות ברדיאנים לשנייה). תדירות הניתוק היא הגבול שבו תדרים גבוהים ממנו יוסרו ותדרים נמוכים ממנו יישמרו.

הגדרתי את תדירות הניתוק שווה לסל"ד שהמנוע שלי לעולם לא יגיע (990 סל"ד או 165 הרץ). גרפי ה- FFT מראים בערך אילו תדרים האות הגולמי שלי נשאו והתדרים שיצאו מהמסנן.

שלב 7: סינון: חלק 2

סינון: חלק 2
סינון: חלק 2
סינון: חלק 2
סינון: חלק 2

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

שלב 8: סינון: חלק 3

סינון: חלק 3
סינון: חלק 3
סינון: חלק 3
סינון: חלק 3

ל- MATLAB יש פקודה שתמיר פונקציה רציפה (תחום תדר) לפונקציה נפרדת (תחום זמן). הפלט של פקודה זו יספק משוואה הניתנת לשילוב בקלות בקוד IDE של Arduino.

שלב 9: סינון: חלק 4

סינון: חלק 4
סינון: חלק 4
סינון: חלק 4
סינון: חלק 4

בשרטוט Arduino, כלול את המשתנים u ו- y לפני ההתקנה. הפקודה float פשוט מגדירה כיצד המשתנה יאחסן נתונים (דברים כמו ערך מקסימלי, עשרוני וכו '…) וקישור למידע נוסף בנושא זה יינתן כאן: https://www.arduino.cc/reference/en/language /varia…

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

מוּמלָץ: