מדידת מהירות / סל"ד של רכב או מנוע תמיד הייתה פרויקט מרתק לנסות. בפרויקט זה אנו הולכים לבנות מד מהירות אנלוגי באמצעות ה- Arduino. נשתמש במודול חיישן IR למדידת המהירות. ישנן דרכים / חיישנים אחרים לכך, כמו חיישן אולם למדידת מהירות, אך השימוש בחיישן IR הוא קל מכיוון שמודול חיישני IR הוא מכשיר נפוץ מאוד ואנחנו יכולים להשיג אותו בקלות מהשוק וגם ניתן להשתמש בו בכל סוג של רכב ממונע.
בפרויקט זה אנו הולכים להראות מהירות בצורה אנלוגית ודיגיטלית כאחד. על ידי ביצוע פרויקט זה, אנו נשפר את כישורינו בלמידת ארדואינו ומנוע צעד מכיוון שפרויקט זה כולל שימוש בפסיקות ושעונים. בסוף פרויקט זה תוכלו לחשב את המהירות והמרחקים המכוסים על ידי כל אובייקט מסתובב ולהציג אותם על גבי מסך LCD בגודל 16x2 בפורמט דיגיטלי וגם על מד אנלוגי. אז בואו נתחיל במד המהירות ובמעגל מד המרחק הזה עם ארדואינו
חומרים נדרשים
- ארדואינו
- מנוע צעד דו קוטבי (4 חוטים)
- נהג מנוע צעד (מודול L298n)
- מודול חיישן IR
- 16 * 2 תצוגת LCD
- נגד 2.2k
- חוטי חיבור
- קרש לחם.
- ספק כוח
- תדפיס תמונה מד מהירות
חישוב מהירות והצגתו על מד מהירות אנלוגי
חיישן IR הוא מכשיר שיכול לזהות נוכחות של אובייקט לפניו. השתמשנו בשני רוטור להבים (מאוורר) והצבנו את חיישן ה- IR לידו באופן שבכל פעם שהלהבים מסתובבים חיישן ה- IR מזהה אותו. לאחר מכן אנו משתמשים בעזרת טיימרים והפרעות בארדואינו כדי לחשב את הזמן שנדרש לסיבוב שלם של המנוע.
כאן בפרויקט זה, השתמשנו בהפרעה בעדיפות הגבוהה ביותר כדי לזהות סל"ד והגדרנו אותו במצב עולה. כך שבכל פעם שפלט החיישן יעבור LOW ל- High, RPMCount () יופעל. וכפי שהשתמשנו בשני רוטור להבים, פירוש הדבר שהפונקציה תיקרא 4 פעמים במהפכה אחת.
ברגע שידוע הזמן שנלקח נוכל לחשב את הסל"ד על ידי שימוש בנוסחאות להלן, כאשר 1000 / זמן שנלקח ייתן לנו את ה- RPS (מהפכה לשנייה) והכפלתו נוספת עם 60 תתן לך את הסל"ד (מהפכה לדקה)
סל"ד = (60/2) * (1000 / (מילי () - זמן)) * REV / bladesInFan;
לאחר קבלת סל"ד, ניתן לחשב את המהירות על ידי הנוסחה הנתונה:
מהירות = סל"ד * (רדיוס 2 * Pi *) / 1000
אנו יודעים כי Pi = 3.14 ורדיוס הוא 4.7 אינץ '
אבל ראשית עלינו להמיר את הרדיוס למונים מאינץ ':
רדיוס = ((רדיוס * 2.54) / 100.0) מטרים מהירות = סל"ד * 60.0 * (2.0 * 3.14 * רדיוס) / 1000.0) בקילומטרים לשעה
כאן הכפלנו סל"ד ב 60 כדי להמיר סל"ד לסל"ד (מהפכה לשעה) וחילקנו 1000 להמיר מטר / שעה לקילומטר / שעה.
לאחר מהירות בקמ"ש אנו יכולים להציג ערכים אלה ישירות על גבי ה- LCD בצורה דיגיטלית, אך כדי להראות מהירות בצורה אנלוגית עלינו לבצע חישוב נוסף כדי לגלות שלא. שלבים, מנוע צעד צריך לנוע כדי להראות מהירות על מד אנלוגי.
כאן השתמשנו במנוע צעד דו קוטבי בעל 4 חוטים למונה אנלוגי, שהוא בעל 1.8 מעלות פירושו 200 צעדים לכל מהפכה.
עכשיו אנחנו צריכים להראות 280 קמ"ש על מד המהירות. אז כדי להראות מנוע צעד 280 קמ"ש צריך לנוע 280 מעלות
אז יש לנו maxSpeed = 280
ו maxSteps יהיה
maxSteps = 280 / 1.8 = 155 צעדים
כעת יש לנו פונקציה בקוד הארדואינו שלנו, כלומר פונקציית מפה המשמשת כאן למיפוי מהירות לשלבים.
צעדים = מפה (מהירות, 0, maxSpeed , 0, maxSteps);
אז עכשיו יש לנו
צעדים = מפה (מהירות, 0,280,0,155);
לאחר חישוב הצעדים נוכל ליישם ישירות את השלבים הללו בתפקוד המנוע הצעד כדי להזיז את המנוע הצעד. עלינו לדאוג לצעדים הנוכחיים או לזווית הנוכחית של מנוע הצעד באמצעות חישובים נתונים
currSteps = שלבים שלבים = currSteps-preSteps preSteps = currSteps
כאן currSteps הוא הצעדים הנוכחיים שמגיעים מהחישוב האחרון ו- PreSteps הוא הצעדים האחרונים שבוצעו.
תרשים מעגלים וחיבורים
דיאגרמת מעגלים עבור מד מהירות אנלוגי זה פשוטה, כאן השתמשנו ב- 16x2 LCD כדי להראות מהירות בצורה דיגיטלית ומנוע צעד לסיבוב מחט המהירות האנלוגית.
LCD 16x2 מחובר בסיכות אנלוגיות הבאות של Arduino.
RS - A5
RW - GND
EN - A4
D4 - A3
D5 - A2
D6 - A1
D7 - A0
נגד 2.2k משמש להגדרת בהירות ה- LCD. מודול חיישן IR המשמש לזיהוי להב המאוורר לחישוב הסל"ד, מחובר להפסקת 0 פירושו סיכה D2 של ארדואינו.
כאן השתמשנו במנהל צעד מנועי, כלומר מודול L293N. פין IN1, IN2, IN3 ו- IN4 של נהג מנוע צעד מחובר ישירות ל- D8, D9, D10 ו- D11 של Arduino. שאר החיבורים ניתנים בתרשים המעגלים.
הסבר על תכנות
הקוד השלם ל- Arduino Speedomete r ניתן בסוף, כאן אנו מסבירים חלק חשוב ממנו.
בחלק התכנותי כללנו את כל הספריות הנדרשות כמו ספריית מנוע צעד, ספריית LCD של LiquidCrystal והצהרנו על סיכות.
#לִכלוֹל
לאחר מכן, לקחנו כמה משתנים ומקרו לביצוע החישובים. החישובים הוסברו כבר בסעיף הקודם.
בתים נדיפים REV; סל"ד ארוך לא חתום, סל"ד; רחוב לא חתום ארוך = 0; זמן לא חתום; int ledPin = 13; int led = 0, RPMlen, prevRPM; דגל int = 0; דגל int1 = 1; # הגדר להביםInFan 2 רדיוס צף = 4.7; // inch int preSteps = 0; step floatngle = 360.0 / (float) צעדים PerRevolution; צף minSpeed = 0; צף maxSpeed = 280.0; צף minSteps = 0; צף maxSteps = maxSpeed / stepAngle;
לאחר מכן אנו מאתחלים את מנוע ה- LCD, הסידורי, ההפרעה והמדרגות בפונקציית ההתקנה
הגדרת חלל () { myStepper.setSpeed (60); Serial.begin (9600); pinMode (ledPin, OUTPUT); lcd.begin (16,2); lcd.print ("מד מהירות"); עיכוב (2000); attachInterrupt (0, RPMCount, RISING); }
לאחר מכן, אנו קוראים סל"ד בפונקציית לולאה ומבצעים חישוב כדי לקבל מהירות ולהמיר זאת לשלבים להפעלת מנוע צעד כדי להראות מהירות בצורה אנלוגית.
לולאה בטלה () { readRPM (); רדיוס = ((רדיוס * 2.54) / 100.0); // המרה במטר אינט מהירות = ((צף) סל"ד * 60.0 * (2.0 * 3.14 * רדיוס) / 1000.0); // סל"ד ב 60 דקות, קוטר הצמיג (2pi r) r הוא רדיוס, 1000 להמרה בק"מ int שלבים = מפה (Speed, minSpeed, maxSpeed, minSteps, maxSteps); if (flag1) { Serial.print (Speed); Serial.println ("Kmh"); lcd.setCursor (0,0); lcd.print ("סל"ד:"); lcd.print (RPM); lcd.print (""); lcd.setCursor (0,1); lcd.print ("מהירות:"); lcd.print (מהירות); lcd.print ("Km / h"); דגל 1 = 0; } int currSteps = צעדים;int צעדים = currSteps-preSteps; preSteps = currSteps; myStepper.step (צעדים); }
הנה לנו פונקציית reapRPM () לחישוב RPM.
int readRPM () { if (REV> = 10 or millis ()> = st + 1000) // זה יתעדכן בכל 10 קריאות או שנייה אחת במצב סרק { if (flag == 0) flag = 1; סל"ד = (60/2) * (1000 / (מילי () - זמן)) * REV / bladesInFan; זמן = מילי (); REV = 0; int x = סל"ד; ואילו (x! = 0) { x = x / 10; RPMlen ++; } Serial.println (סל"ד, DEC); סל"ד = סל"ד; עיכוב (500); st = מיליס (); דגל 1 = 1; } }
לבסוף, יש לנו שגרת הפסקות האחראית למדוד מהפכה של אובייקט
ריק RPMCount () { REV ++; אם (led == LOW) { led = HIGH; } אחר { led = LOW; } digitalWrite (ledPin, led); }
כך תוכלו פשוט לבנות מד מהירות אנלוגי באמצעות ארדואינו. זה יכול להיות בנוי גם באמצעות חיישן הול ומהירות יכולה להיות מוצגת בטלפון חכם, בצע את זה מדריך מד מהירות Arduino עבור אותו.