Πίνακας περιεχομένων:

Χρήση αισθητήρων θερμοκρασίας, νερού βροχής και δόνησης σε ένα Arduino για την προστασία των σιδηροδρόμων: 8 βήματα (με εικόνες)
Χρήση αισθητήρων θερμοκρασίας, νερού βροχής και δόνησης σε ένα Arduino για την προστασία των σιδηροδρόμων: 8 βήματα (με εικόνες)

Βίντεο: Χρήση αισθητήρων θερμοκρασίας, νερού βροχής και δόνησης σε ένα Arduino για την προστασία των σιδηροδρόμων: 8 βήματα (με εικόνες)

Βίντεο: Χρήση αισθητήρων θερμοκρασίας, νερού βροχής και δόνησης σε ένα Arduino για την προστασία των σιδηροδρόμων: 8 βήματα (με εικόνες)
Βίντεο: Proyecto de heliostato Templastat / Templastat Heliostat Project: improvements, updates and test 2024, Νοέμβριος
Anonim
Χρήση αισθητήρων θερμοκρασίας, νερού βροχής και δόνησης σε ένα Arduino για την προστασία των σιδηροδρόμων
Χρήση αισθητήρων θερμοκρασίας, νερού βροχής και δόνησης σε ένα Arduino για την προστασία των σιδηροδρόμων

Στη σύγχρονη κοινωνία, η αύξηση των επιβατών σιδηροδρόμων σημαίνει ότι οι σιδηροδρομικές εταιρείες πρέπει να κάνουν περισσότερα για να βελτιστοποιήσουν τα δίκτυα για να συμβαδίσουν με τη ζήτηση. Σε αυτό το έργο θα δείξουμε σε μικρή κλίμακα πώς οι αισθητήρες θερμοκρασίας, νερού της βροχής και κραδασμών σε έναν πίνακα arduino μπορούν να βοηθήσουν στην αύξηση της ασφάλειας των επιβατών.

Αυτό το Instructable θα δείξει βήμα προς βήμα την καλωδίωση για τους αισθητήρες θερμοκρασίας, νερού της βροχής και δόνησης στο arduino καθώς και τον κωδικό MATLAB που απαιτείται για την εκτέλεση αυτών των αισθητήρων.

Βήμα 1: Μέρη και υλικά

1. Υπολογιστής με εγκατεστημένη την τελευταία έκδοση του MATLAB

2. Πίνακας Arduino

3. Αισθητήρας θερμοκρασίας

4. Αισθητήρας βρόχινου νερού

5. Αισθητήρας δόνησης

6. Κόκκινο φως LED

7. Μπλε φως LED

8. Πράσινο φως LED

9. RBG LED Light

10. Buzzer

11. 18 αρσενικά-αρσενικά σύρματα

12. 3 Γυναικεία-αρσενικά σύρματα

13. 2 θηλυκά-θηλυκά σύρματα

14. 6 αντιστάσεις 330 ohm

15. 1 αντίσταση 100 ohm

Βήμα 2: Καλωδίωση αισθητήρα θερμοκρασίας

Καλωδίωση αισθητήρα θερμοκρασίας
Καλωδίωση αισθητήρα θερμοκρασίας
Καλωδίωση αισθητήρα θερμοκρασίας
Καλωδίωση αισθητήρα θερμοκρασίας

Πάνω είναι η καλωδίωση και ο κωδικός MATLAB για την είσοδο του αισθητήρα θερμοκρασίας επίσης.

Τα καλώδια από τη γείωση και τα 5V χρειάζεται μόνο να περάσουν στα αρνητικά και θετικά αντίστοιχα μία φορά για ολόκληρο τον πίνακα. Από εδώ και πέρα, τυχόν συνδέσεις γείωσης θα προέρχονται από την αρνητική στήλη και τυχόν συνδέσεις 5V θα προέρχονται από τη θετική στήλη.

Ο παρακάτω κωδικός μπορεί να αντιγραφεί και να επικολληθεί για τον αισθητήρα θερμοκρασίας.

%% ΑΙΣΘΗΤΗΡΑΣ ΘΕΡΜΟΚΡΑΣΙΑΣ % Για τον αισθητήρα θερμοκρασίας χρησιμοποιήσαμε την ακόλουθη πηγή μαζί με

% EF230 υλικό ιστότοπου για να τροποποιήσουμε τον αισθητήρα θερμοκρασίας για να επιτρέψουμε στον χρήστη

% εισόδου και 3 έξοδοι φωτός LED με ένα γράφημα.

%Αυτό το σκίτσο γράφτηκε από την SparkFun Electronics, %με πολλή βοήθεια από την κοινότητα Arduino.

%Προσαρμόστηκε στο MATLAB από τον Eric Davishahl.

%Επισκεφθείτε τη διεύθυνση 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);

%προ -κατανομή μεταβλητών temp και μεταβλητής για τον αριθμό των μετρήσεων που θα αποθηκεύσει

tempC = μηδενικά (numSamples, 1);

tempF = tempC;

% χρησιμοποιώντας το παράθυρο διαλόγου εισαγωγής για αποθήκευση μέγιστων και ελάχιστων θερμοκρασιών σιδηροδρόμου

dlg_prompts = {'Enter Max Temp', 'Enter Min Temp'};

dlg_title = 'Διαστήματα θερμοκρασίας σιδηροδρόμου';

Ν = 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 και αποθηκεύστε ως μεταβλητά βολτ

volts = readVoltage (a, tempPin);

tempC (δείκτης) = tempCfromVolts (βολτ);

tempF (index) = tempC (index)*9/5+32; % Μετατροπή από Κελσίου σε Φαρενάιτ

% Εάν οι δηλώσεις για την ανάκτηση συγκεκριμένων λυχνιών LED αναβοσβήνουν ανάλογα με την προϋπόθεση που πληρούται

εάν tempF (ευρετήριο)> = max_temp % Κόκκινο LED

writeDigitalPin (a, 'D13', 0);

παύση (0,5).

writeDigitalPin (a, 'D13', 1)?

παύση (0,5).

writeDigitalPin (a, 'D13', 0);

elseif tempF (index)> = min_temp && tempF (index) <max_temp % Green 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)")

τίτλος («Αναγνώσεις θερμοκρασίας από το RedBoard»)

Βήμα 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 <vΣτεγνώστε

playTone (a, 'D09', 2400) % playTone συνάρτηση από το MathWorks

% Εμφανίστε μια προειδοποίηση στους επιβάτες εάν εντοπιστεί νερό

waitfor (warndlg ("Το τρένο σας μπορεί να καθυστερήσει λόγω κινδύνων για το νερό");

τέλος

% Εμφάνιση της τάσης όπως μετράται από τον αισθητήρα νερού

fprintf ('Η τάση σε %d δευτερόλεπτα είναι %5.4f V. / n',…

samplingTimes (δείκτης), volt2);

παύση (samplingInterval)

τέλος

Βήμα 5: Έξοδος αισθητήρα νερού βροχής

Έξοδος αισθητήρα βροχής
Έξοδος αισθητήρα βροχής

Πάνω είναι η καλωδίωση για έναν βομβητή που ηχεί κάθε φορά που πέφτει πολύ νερό στην πίστα. Ο κωδικός για τον βομβητή είναι ενσωματωμένος στον κωδικό για την είσοδο του νερού της βροχής.

Βήμα 6: Είσοδος αισθητήρα δόνησης

Είσοδος αισθητήρα δόνησης
Είσοδος αισθητήρα δόνησης
Είσοδος αισθητήρα δόνησης
Είσοδος αισθητήρα δόνησης

Πάνω είναι η καλωδίωση για τον αισθητήρα δόνησης. Οι αισθητήρες δόνησης μπορεί να είναι σημαντικοί για τα σιδηροδρομικά συστήματα σε περίπτωση πτώσης βράχων σε μια πίστα. Ο κώδικας MATLAB είναι αναρτημένος παρακάτω.

%% Αισθητήρας δόνησηςΚαθαρίστε τα πάντα, clc

PIEZO_PIN = 'A3'; % Δήλωση του αναλογικού πείρου συνδεδεμένου στον αισθητήρα δόνησης a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno'); % Αρχικοποίηση του χρόνου και του διαστήματος για τη μέτρηση της δειγματοληψίας κραδασμών Διάρκεια = 30; % Seconds samplingInterval = 1;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = μήκος (samplingTimes);

% Χρησιμοποιώντας τον κώδικα από την ακόλουθη πηγή, τον τροποποιήσαμε για να ενεργοποιήσουμε το a

% μωβ LED αν ανιχνευτεί δόνηση.

% SparkFun Tinker Kit, RGB LED, γραμμένο από την SparkFun Electronics, % με πολλή βοήθεια από την κοινότητα Arduino

% Προσαρμόστηκε στο MATLAB από τον Eric Davishahl

% Αρχικοποίηση της ακίδας RGB

RED_PIN = 'D5';

GREEN_PIN = 'D6';

BLUE_PIN = 'D7';

% Για βρόχο για καταγραφή μεταβολών τάσης από τον αισθητήρα δόνησης πάνω από a

% συγκεκριμένο χρονικό διάστημα (30 δευτερόλεπτα)

για δείκτη = 1: numSamples

volt3 = readVoltage (a, PIEZO_PIN);

% Εάν η ένδειξη ενεργοποιήσει ένα μοβ LED σε περίπτωση ανίχνευσης κραδασμών

αν volt3> 0,025

writeDigitalPin (a, RED_PIN, 1);

% Δημιουργία μωβ φωτός

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 1);

else % Απενεργοποιήστε το LED εάν δεν ανιχνευτεί δόνηση.

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

τέλος

% Εμφάνιση της τάσης όπως μετράται.

fprintf ('Η τάση σε %d δευτερόλεπτα είναι %5.4f V. / n',…

samplingTimes (δείκτης), volt3);

παύση (samplingInterval)

τέλος

% Κόψτε το φως όταν ολοκληρωθεί η μέτρηση των κραδασμών

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

Βήμα 7: Έξοδος αισθητήρα δόνησης

Έξοδος αισθητήρα δόνησης
Έξοδος αισθητήρα δόνησης

Πάνω είναι η καλωδίωση για το φωτιστικό LED RBG που χρησιμοποιείται. Το φως θα ανάψει μωβ όταν ανιχνευθούν δονήσεις. Ο κωδικός MATLAB για την έξοδο είναι ενσωματωμένος στον κώδικα για την είσοδο.

Βήμα 8: Συμπέρασμα

Αφού ακολουθήσετε όλα αυτά τα βήματα, θα πρέπει τώρα να έχετε ένα arduino με δυνατότητα ανίχνευσης θερμοκρασίας, νερού της βροχής και κραδασμών. Ενώ βλέπουμε πώς λειτουργούν αυτοί οι αισθητήρες σε μικρή κλίμακα, είναι εύκολο να φανταστεί κανείς πόσο ζωτικής σημασίας θα μπορούσαν να είναι για τα σιδηροδρομικά συστήματα στη σύγχρονη ζωή!

Συνιστάται: