בפרויקט זה המבוסס על ארדואינו אוטומטית על מפלס מים ובקר אנו הולכים למדוד את מפלס המים באמצעות חיישנים קולי. המנהל הבסיסי של מדידת מרחק קולי מבוסס על ECHO. כאשר גלי קול מועברים בסביבה אז הם חוזרים למקור כ- ECHO לאחר פגיעה בכל מכשול. אז עלינו לחשב רק את זמן הנסיעה שלו של שני הצלילים פירושו זמן יוצא והחזרת זמן למוצא לאחר פגיעה במכשול כלשהו. ואחרי כמה חישובים נוכל להשיג תוצאה שהיא המרחק. מושג זה משמש בפרויקט בקר המים שלנו שבו משאבת מנוע המים מופעלת אוטומטית כאשר מפלס המים במיכל הופך נמוך. אתה יכול גם לבדוק מעגל חיווי מפלס מים פשוט זה לקבלת גרסה פשוטה יותר של פרויקט זה.
רכיבים
- ארדואינו אונו
- מודול חיישן קולי
- LCD בגודל 16x2
- ממסר 6 וולט
- ULN2003
- 7806
- PVT
- חוט נחושת
- סוללה 9 וולט או 12 וולט-מתאם
- חוטי חיבור
מודול חיישן קולי
חיישן קולי HC-SR04 משמש למדידת מרחק בטווח של 2 ס"מ-400 ס"מ עם דיוק של 3 מ"מ. מודול החיישן מורכב ממשדר קולי, מקלט ומעגל הבקרה.
מודול החיישן הקולי עובד על התופעה הטבעית של ECHO של צליל. דופק נשלח למשך כ- 10 us להפעלת המודול. לאחר מכן המודול שולח אוטומטית 8 מחזורים של אות אולטרסאונד 40 קילוהרץ ובודק את הדו. האות לאחר מכה עם מכשול חוזר ונלכד על ידי המקלט. לכן מרחק המכשול מהחיישן פשוט מחושב על ידי הנוסחה שניתנה כ-
מרחק = (זמן x מהירות) / 2.
כאן חילקנו את תוצר המהירות והזמן ב- 2 מכיוון שהזמן הוא הזמן הכולל שלקח להגיע למכשול ולחזור חזרה. לפיכך הזמן להגיע למכשול הוא רק מחצית מהזמן שנדרש.
עבודה של בקר מפלס מים אוטומטי
עבודתו של פרויקט זה היא פשוטה מאוד והשתמשנו במודול חיישנים אולטרה סאונד השולח את גלי הקול במיכל המים ומזהה השתקפות של גלי קול שהם ECHO. קודם כל עלינו להפעיל את מודול החיישן הקולי להעברת אות באמצעות Arduino ואז לחכות לקבלת ECHO. ארדואינו קורא את הזמן בין הפעלת ECHO לקבלת. אנו יודעים שמהירות הצליל היא סביב 340 מ 'לשנייה. כדי שנוכל לחשב מרחק באמצעות הנוסחה הנתונה:
מרחק = (זמן נסיעה / 2) * מהירות הצליל
כאשר מהירות הצליל היא כ -340 מטר לשנייה.
באמצעות שיטות אלה אנו מקבלים מרחק מחיישן למשטח מים. אחריה עלינו לחשב את מפלס המים.
כעת עלינו לחשב את אורכו הכולל של מיכל המים. כידוע אורכו של מיכל המים, אנו יכולים לחשב את מפלס המים על ידי הפחתת המרחק המתקבל המגיע מאולטרסאונד מהאורך הכולל של המיכל. ונקבל את מרחק מפלס המים. כעת אנו יכולים להמיר את מפלס המים הזה לאחוזי המים, ויכולים להציג אותו על גבי LCD. העבודה בפרויקט מחוון מפלס המים השלם מוצגת בתרשים הבלוקים להלן.
תרשים מעגל והסבר
כפי שמוצג במעגל הבקר של מפלס המים המופיע להלן, סיכות "ההדק" ו"הד "של מודול החיישן הקולי מחוברים ישירות לסיכה 10 ו -11 של ארדואינו. LCD 16x2 מחובר לארדואינו במצב 4 סיביות. סיכת בקרה RS, RW ו- En מחוברות ישירות לסיכה ארדואינו 7, GND ו- 6. וסיכת נתונים D4-D7 מחוברת ל -5, 4, 3 ו -2 של ארדואינו, וזמזם מחובר בסיכה 12. ממסר 6 וולט הוא מחובר גם בסיכה 8 של ארדואינו דרך ULN2003 להפעלה או כיבוי משאבת מנוע המים. ויסות מתח 7805 משמש גם לספק 5 וולט לממסר ולמעגל שנותר.
במעגל זה מודול חיישן קולי ממוקם בחלק העליון של הדלי (מיכל מים) לצורך הדגמה. מודול חיישן זה יקרא את המרחק בין מודול החיישן למשטח המים, והוא יראה את המרחק על גבי מסך LCD עם ההודעה "שטח המים במיכל הוא:". המשמעות היא שאנחנו כאן מציגים מקום ריק של מרחק או נפח למים במקום למפלס מים. בגלל פונקציונליות זו אנו יכולים להשתמש במערכת זו בכל מיכל מים. כאשר מפלס המים הריקים מגיע למרחק של כ 30 ס"מ אז ארדואינו מפעיל את משאבת המים על ידי ממסר נהיגה. ועכשיו LCD יציג "מפלס מים נמוך" "מנוע מופעל", ונורית מצב ממסר תתחיל לזרוח
כעת אם החלל הריק מגיע למרחק של כ- 12 ס"מ ארדואינו מכבה את הממסר ו- LCD יראה "הטנק מלא" "המנוע כבוי". זמזם גם מצפצף זמן מה ונורית מצב ממסר תיכבה.
תִכנוּת
כדי לתכנת את Arduino לבקר מפלס מים, ראשית אנו מגדירים את כל הסיכה שאנו נשתמש בפרויקט לצורך ממשק התקנים חיצוניים כמו ממסר, LCD, זמזם וכו '.
# הגדר טריגר 10 # הגדר הד 11 # הגדר מנוע 8 # הגדר זמזם 12
לאחר מכן אנו מאותחלים את כל המכשירים המשמשים בפרויקט.
lcd.begin (16,2); pinMode (טריגר, OUTPUT); pinMode (הד, INPUT); pinMode (מנוע, OUTPUT); pinMode (זמזם, OUTPUT); lcd.print ("מפלס מים"); lcd.setCursor (0,1); lcd.print ("מחוון"); עיכוב (2000);
כעת אתחל את מודול החיישן הקולי וקרא את זמן שליחת וקבלת זמן של גלי קול או צליל באמצעות pulseIn (pin). לאחר מכן בצע חישובים והצג את התוצאה על גבי 16x2 LCD באמצעות פונקציות מתאימות.
digitalWrite (טריגר, HIGH); עיכוב מיקרו-שניות (10); digitalWrite (טריגר, LOW); עיכוב מיקרו-שניות (2); זמן = pulseIn (הד, HIGH); מרחק = זמן * 340/20000; lcd.clear (); lcd.print ("שטח מים בפנים"); lcd.setCursor (0,1); lcd.print ("טנק הוא:"); lcd.print (מרחק); lcd.print ("Cm");
אחריו אנו בודקים תנאים אם מיכל המים מלא או מפלס המים נמוך, וננקוט בפעולות בהתאם.
אם (מרחק <12 && temp == 0) {digitalWrite (מנוע, LOW); digitalWrite (זמזם, HIGH); lcd.clear (); lcd.print ("מיכל מים מלא"); lcd.setCursor (0,1); lcd.print ("מנוע כבוי"); עיכוב (2000); digitalWrite (זמזם, LOW); עיכוב (3000); temp = 1; } אחר אם (מרחק <12 && temp == 1) {digitalWrite (מנוע, LOW); lcd.clear (); lcd.print ("מיכל מים מלא"); lcd.setCursor (0,1); lcd.print ("מנוע כבוי"); עיכוב (5000); }