תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-23 14:46
בחברה המודרנית, עלייה במספר נוסעי הרכבות פירושה שחברות הרכבת חייבות לעשות יותר כדי לייעל את הרשתות כדי לעמוד בביקוש. בפרויקט זה נראה בקנה מידה קטן כיצד חיישני טמפרטורה, מי גשמים ורטט על לוח ארדואינו יכולים לסייע להגביר את בטיחות הנוסעים.
מדריך זה יראה שלב אחר שלב את החיווט עבור חיישני הטמפרטורה, מי הגשם והרטט בארדואינו וכן יציג את קוד MATLAB הנדרש להפעלת חיישנים אלה.
שלב 1: חלקים וחומרים
1. מחשב עם הגירסה העדכנית ביותר של MATLAB מותקן
2. לוח ארדואינו
3. חיישן טמפרטורה
4. חיישן מי גשמים
5. חיישן רטט
6. אור LED אדום
7. אור LED כחול
8. אור LED ירוק
9. אור LED RBG
10. זמזם
11. 18 חוטי זכר-זכר
12. 3 חוטי נקבה-זכר
13. 2 חוטים נקבה-נקבה
14. 6 נגדים של 330 אוהם
15. נגד של 100 אוהם
שלב 2: חיווט חיישן טמפרטורה
למעלה מופיע גם החיווט וקוד MATLAB עבור קלט חיישן הטמפרטורה.
החוטים מהקרקע ומה- 5V צריכים לרוץ רק לשלילי ולחיובי בהתאמה פעם אחת לכל הלוח. מכאן והלאה, כל חיבורי הקרקע יגיעו מהעמודה השלילית וכל חיבורי 5V יבואו מהעמודה החיובית.
ניתן להעתיק ולהדביק את הקוד להלן עבור חיישן הטמפרטורה.
%% TEMPERATURE SENSOR % עבור חיישן הטמפרטורה השתמשנו במקור הבא יחד עם
% אתר חומר EF230 לשינוי חיישן הטמפרטורה שלנו כדי לאפשר למשתמש
% קלט ו -3 יציאות אור LED עם גרף.
%מערכון זה נכתב על ידי SparkFun Electronics, %עם הרבה עזרה מקהילת הארדואינו.
%מותאם ל- MATLAB על ידי אריק דייבישאל.
%בקר ב https://learn.sparkfun.com/products/2 למידע על SIK.
ברור הכל, clc
tempPin = 'A0'; % הצהרת הסיכה האנלוגית המחוברת לחיישן הטמפ '
a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno');
% הגדר פונקציה אנונימית הממירה את המתח לטמפרטורה
tempCfromVolts = @(וולט) (וולט -0.5)*100;
samplingDuration = 30;
samplingInterval = 2; % שניות בין קריאות הטמפרטורה
%הגדרת וקטור של זמני הדגימה
samplingTimes = 0: samplingInterval: samplingDuration;
%לחשב את מספר הדגימות על סמך משך הזמן והמרווח
numSamples = אורך (samplingTimes);
%הקצה מראש משתני טמפ 'ומשתנה למספר הקריאות שהוא יאחסן
tempC = אפסים (numSamples, 1);
tempF = tempC;
% באמצעות תיבת דו -שיח קלט לאחסון טמפרטורות רכבת מקסימלית ודקה
dlg_prompts = {'הזן מקסימום טמפ', 'הזן מינימום טמפ'};
dlg_title = 'מרווחי טמפרטורות רכבת';
N = 22;
dlg_ans = inputdlg (dlg_prompts, dlg_title, [1, length (dlg_title)+N]);
% אחסון הקלטים מהמשתמש והצגת הקלט שהוקלט
max_temp = str2double (dlg_ans {1})
min_temp = str2double (dlg_ans {2})
txt = sprintf ('הקלט שלך נרשם');
h = msgbox (txt);
ממתין (ח);
% ללולאה לקריאת הטמפרטורות מספר פעמים ספציפי.
עבור אינדקס = 1: numSamples
% קרא את המתח ב- tempPin ושמור כוולט משתנה
וולט = readVoltage (a, tempPin);
tempC (אינדקס) = tempCfromVolts (וולט);
tempF (אינדקס) = tempC (אינדקס)*9/5+32; % המרת צלזיוס לפרנהייט
% אם הצהרות לגרום לנורות LED ספציפיות להבהב בהתאם לאיזה תנאי מתקיים
אם tempF (אינדקס)> = max_temp % נורית אדומה
writeDigitalPin (a, 'D13', 0);
הפסקה (0.5);
writeDigitalPin (a, 'D13', 1);
הפסקה (0.5);
writeDigitalPin (a, 'D13', 0);
elseif tempF (אינדקס)> = min_temp && tempF (index) <max_temp % LED ירוק
writeDigitalPin (a, 'D11', 0);
הפסקה (0.5);
writeDigitalPin (a, 'D11', 1);
הפסקה (0.5);
writeDigitalPin (a, 'D11', 0);
elseif tempF (אינדקס) <= min_temp % LED כחול
writeDigitalPin (a, 'D12', 0);
הפסקה (0.5);
writeDigitalPin (a, 'D12', 1);
הפסקה (0.5);
writeDigitalPin (a, 'D12', 0);
סוֹף
% הצג את הטמפרטורות כפי שהן נמדדות
fprintf ('הטמפרטורה ב- %d שניות היא %5.2f C או %5.2f F. / n', …
samplingTimes (index), tempC (index), tempF (index));
השהה (samplingInterval) עיכוב של %עד המדגם הבא
סוֹף
% מתווה קריאות הטמפרטורה
איור 1)
עלילה (samplingTimes, tempF, 'r-*')
xlabel ('זמן (שניות)')
ylabel ('טמפרטורה (F)')
title ('קריאות טמפרטורה מהקרש האדום')
שלב 3: פלט חיישן טמפרטורה
למעלה נמצא החיווט וקוד MATLAB עבור פלט חיישן הטמפרטורה.
עבור פרויקט זה השתמשנו בשלוש נורות LED לתפוקת חיישן הטמפרטורה שלנו. השתמשנו באדום אם המסלולים היו חמים מדי, כחול אם היה קר מדי וירוק אם היו בין לבין.
שלב 4: קלט חיישן מי גשמים
מעל החיווט לחיישן מי הגשם וקוד MATLAB מפורסם למטה.
חיישן מים %%
ברור הכל, clc
a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno');
waterPin = 'A1';
vDry = 4.80; % מתח כאשר אין מים
samplingDuration = 60;
samplingInterval = 2;
samplingTimes = 0: samplingInterval: samplingDuration;
numSamples = אורך (samplingTimes);
% ללולאה לקרוא את המתח למשך פרק זמן מסוים (60 שניות)
עבור אינדקס = 1: numSamples
volt2 = readVoltage (a, waterPin); % קריאת מתח מפין מים אנלוגי
% אם אמירה להשמיע זמזם אם מזוהים מים. ירידת מתח = מים
אם volt2 <vDry
playTone (a, 'D09', 2400) % playTone פונקציה מ- MathWorks
% הצג אזהרה לנוסעים אם מזוהים מים
waitfor (warndlg ('הרכבת שלך עשויה להתעכב בגלל מפגעי מים'));
סוֹף
% הצג את המתח כפי שהוא נמדד על ידי חיישן המים
fprintf ('מתח ב- %d שניות הוא %5.4f V. / n', …
זמני דגימה (אינדקס), וולט 2);
השהה (דגימה אינטרוול)
סוֹף
שלב 5: פלט חיישן מי גשמים
מעל החיווט לזמזם שמצפצף בכל פעם שנופלים יותר מדי מים על המסלול. הקוד עבור הזמזם מוטבע בתוך הקוד עבור כניסת מי הגשם.
שלב 6: קלט חיישן רטט
למעלה נמצא החיווט לחיישן הרטט. חיישני רטט יכולים להיות חשובים למערכות רכבת במקרה של נפילת סלעים על מסילה. קוד MATLAB מפורסם למטה.
%% חיישן רטט נקה הכל, clc
PIEZO_PIN = 'A3'; % הצהרת הסיכה האנלוגית המחוברת לחיישן הרטט a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno'); % אתחול הזמן והמרווח למדידת דגימת רטט Duration = 30; % שניות samplingInterval = 1;
samplingTimes = 0: samplingInterval: samplingDuration;
numSamples = אורך (samplingTimes);
% בעזרת הקוד מהמקור הבא שינינו אותו כדי להפעיל a
% LED סגול אם מתגלה רטט.
ערכת טינקר SparkFun %, RGB LED, שנכתבה על ידי SparkFun Electronics, % עם הרבה עזרה מקהילת הארדואינו
% מותאם ל- MATLAB על ידי אריק דייבישאל
% אתחול סיכת RGB
RED_PIN = 'D5';
GREEN_PIN = 'D6';
BLUE_PIN = 'D7';
% ללולאה להקלטת שינויי מתח מחיישן הרטט מעל א
מרווח זמן ספציפי % (30 שניות)
עבור אינדקס = 1: numSamples
volt3 = readVoltage (a, PIEZO_PIN);
% אם הצהרת הפעלת נורית סגולה אם מתגלה רטט
אם וולט 3> 0.025
writeDigitalPin (a, RED_PIN, 1);
יצירת אור סגול
writeDigitalPin (a, GREEN_PIN, 0);
writeDigitalPin (a, BLUE_PIN, 1);
אחרת % כבה את הנורית אם לא מזוהה רעידות.
writeDigitalPin (a, RED_PIN, 0);
writeDigitalPin (a, GREEN_PIN, 0);
writeDigitalPin (a, BLUE_PIN, 0);
סוֹף
% הצג את המתח כפי שהוא נמדד.
fprintf ('מתח ב- %d שניות הוא %5.4f V. / n', …
זמני דגימה (אינדקס), וולט 3);
השהה (דגימה אינטרוול)
סוֹף
כבה את האור כאשר מדידת הרטט מתבצעת
writeDigitalPin (a, RED_PIN, 0);
writeDigitalPin (a, GREEN_PIN, 0);
writeDigitalPin (a, BLUE_PIN, 0);
שלב 7: פלט חיישן רטט
למעלה נמצא החיווט לאור הנורית RBG בשימוש. האור יזהר סגול כאשר מתגלים רטט. קוד MATLAB עבור הפלט מוטמע בתוך הקוד עבור הקלט.
שלב 8: סיכום
לאחר ביצוע כל השלבים הללו כעת אמור להיות לך ארדואינו בעל יכולת לזהות טמפרטורה, מי גשמים ורטט. כשאתם רואים כיצד חיישנים אלה עובדים בקנה מידה קטן, קל לדמיין עד כמה הם יכולים להיות חיוניים למערכות הרכבת בחיים המודרניים!
מוּמלָץ:
תחילת העבודה עם חיישני טמפרטורה ורטט אלחוטיים לטווח ארוך: 7 שלבים
תחילת העבודה עם חיישני טמפרטורה ורטט אלחוטיים לטווח ארוך: לפעמים רעידות הן הגורם לבעיות חמורות ביישומים רבים. החל מפירים וממסבים ועד לביצועי הדיסק הקשיח, רעידות גורמות לנזק למכונה, החלפה מוקדמת, ביצועים נמוכים וגורמת לפגיעה משמעותית בדיוק. מעקב
אופן השימוש בחיישני לחות בקרקע באמצעות ארדואינו: 4 שלבים
אופן השימוש בחיישני לחות הקרקע באמצעות ארדואינו: חיישן לחות הקרקע הוא חיישן שניתן למדוד באמצעותו לחות בקרקע. מתאים לייצור אב טיפוס של פרויקטים חקלאיים חכמים, פרויקטים של בקרי השקיה או פרויקטים של IoT חקלאות. לחיישן זה יש 2 בדיקות. מה שמשמש למדי
פריסת דגם עם מסילות מעבר אוטומטיות (V2.0): 13 שלבים (עם תמונות)
פריסת רכבות דגמים עם ציפוי מעבר אוטומטי (V2.0): פרויקט זה הוא עדכון של אחד הפרויקטים הקודמים של אוטומציה של רכבות, מסלול הרכבת עם דפנות אוטומטיות. גרסה זו מוסיפה את תכונת החיבור והניתוק של הקטר עם המלאי המתגלגל. הפעולה של
כיצד להגדיר רכב רכבת רכבת במסלול: 10 שלבים (עם תמונות)
כיצד להציב רכב רכבת דו-מסילה על המסלול: אמצעי בטיחות: האדם שמציב את משאית הרכבת על המסילה והאדם שעוזר צריך ללבוש בגדי ראות גבוהה (למשל אפוד, סווטשירט, מעיל) כדי להיראות על ידי תנועה אפשרית מתקרבת. יש לחבוש כובע וכפפות גם כדי
שליטת מי גשמים: 11 שלבים (עם תמונות)
מגימת מי גשמים: סופת גשם כבדה עלולה לגרום להתרחשות הצפה מעל שלנו: מדרכות, בארות מי גשמים, סלעים והסירות שלנו. כדי למנוע את זה קורה, המצאנו שקע מי גשמים! מנעול מי הגשם מחשב באופן דיגיטלי את המרחק בין מי הגשם