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

שימוש בחיישני טמפרטורה, מי גשמים ורטט על ארדואינו להגנה על מסילות רכבת: 8 שלבים (עם תמונות)
שימוש בחיישני טמפרטורה, מי גשמים ורטט על ארדואינו להגנה על מסילות רכבת: 8 שלבים (עם תמונות)

וִידֵאוֹ: שימוש בחיישני טמפרטורה, מי גשמים ורטט על ארדואינו להגנה על מסילות רכבת: 8 שלבים (עם תמונות)

וִידֵאוֹ: שימוש בחיישני טמפרטורה, מי גשמים ורטט על ארדואינו להגנה על מסילות רכבת: 8 שלבים (עם תמונות)
וִידֵאוֹ: 40 полезных автотоваров с алиэкспресс, которые упростят жизнь любому автовладельцу #8 2024, יוני
Anonim
שימוש בחיישני טמפרטורה, מי גשמים ורטט על ארדואינו להגנה על מסילות ברזל
שימוש בחיישני טמפרטורה, מי גשמים ורטט על ארדואינו להגנה על מסילות ברזל

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

מדריך זה יראה שלב אחר שלב את החיווט עבור חיישני הטמפרטורה, מי הגשם והרטט בארדואינו וכן יציג את קוד 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: סיכום

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

מוּמלָץ: