
Tartalomjegyzék:
2025 Szerző: John Day | [email protected]. Utoljára módosítva: 2025-01-23 14:48

A modern társadalomban a vasúti utasok számának növekedése azt jelenti, hogy a vasúttársaságoknak többet kell tenniük a hálózatok optimalizálása érdekében, hogy lépést tudjanak tartani a kereslettel. Ebben a projektben kis léptékben megmutatjuk, hogy az arduino tábla hőmérséklet-, esővíz- és rezgésérzékelői hogyan segíthetnek az utasok biztonságának növelésében.
Ez az útmutató lépésről lépésre bemutatja az arduino hőmérséklet-, esővíz- és rezgésérzékelőinek vezetékeit, valamint az érzékelők futtatásához szükséges MATLAB kódot.
1. lépés: Alkatrészek és anyagok
1. Számítógép a MATLAB legújabb verziójával
2. Arduino Board
3. Hőmérséklet érzékelő
4. Esővíz érzékelő
5. Rezgésérzékelő
6. Piros LED fény
7. Kék LED fény
8. Zöld LED fény
9. RBG LED fény
10. Zümmögő
11. 18 Férfi-férfi vezetékek
12. 3 Nő-férfi vezeték
13. 2 Nő-nő vezeték
14. 6 330 ohmos ellenállások
15. 1 100 ohmos ellenállás
2. lépés: Hőmérséklet -érzékelő bekötése


Fentebb a hőmérséklet -érzékelő bemenetének kábelezése és MATLAB -kódja található.
A földről és az 5 V -ból érkező vezetékeket csak egyszer kell levezetni a negatívra és a pozitívra a teljes táblán. Innentől kezdve minden földelőcsatlakozás a negatív oszlopból, az 5 V -os csatlakozások pedig a pozitív oszlopból származnak.
Az alábbi kód másolható és beilleszthető a hőmérséklet -érzékelőhöz.
%% HŐMÉRSÉKLET -ÉRZÉKELŐ A hőmérséklet -érzékelőhöz a következő forrást használtuk
% EF230 webhelyanyaga a hőmérséklet -érzékelőnk módosításához, hogy lehetővé tegye a felhasználó számára
% bemenet és 3 LED -es fénykimenet grafikonnal.
Ezt a vázlatot a SparkFun Electronics írta, %az Arduino közösség sok segítségével.
%A MATLAB -hoz adaptálta Eric Davishahl.
%Látogassa meg a https://learn.sparkfun.com/products/2 webhelyet a SIK -információkért.
tiszta minden, clc
tempPin = 'A0'; % A hőmérséklet -érzékelőhöz csatlakoztatott analóg tű deklarálása
a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno');
% Határozza meg a névtelen függvényt, amely a feszültséget hőmérsékletre alakítja
tempCfromVolts = @(volt) (0,5 volt)*100;
samplingDuration = 30;
samplingInterval = 2; % Másodperc a hőmérséklet leolvasása között
%mintavételi idő vektor beállítása
samplingTimes = 0: samplingInterval: samplingDuration;
%kiszámítja a minták számát az időtartam és az intervallum alapján
numSamples = hossz (samplingTimes);
%előre kiosztott hőmérsékleti változók és változó a tárolt leolvasások számához
tempC = nullák (számminták, 1);
tempF = tempC;
% a bemeneti párbeszédpanel használatával a maximális és a minimális sínhőmérséklet tárolására
dlg_prompts = {'Enter Max Temp', 'Enter Min Temp'};
dlg_title = 'Sínhőmérséklet -intervallumok';
N = 22;
dlg_ans = inputdlg (dlg_prompts, dlg_title, [1, length (dlg_title)+N]);
% A felhasználói bemenetek tárolása és a bemenet rögzítésének megjelenítése
max_temp = str2double (dlg_ans {1})
min_temp = str2double (dlg_ans {2})
txt = sprintf ('A bemenet rögzítésre került');
h = msgbox (txt);
várakozás (h);
% A ciklus a hőmérsékletek meghatározott számú leolvasásához.
indexhez = 1: numSamples
% Olvassa le a feszültséget a tempPin -en, és tárolja változó voltként
volt = olvasott feszültség (a, tempPin);
tempC (index) = tempCfromVolts (volt);
tempF (index) = tempC (index)*9/5+32; % Konvertálás Celsius -ból Fahrenheitbe
% Ha az adott LED -lámpák villogására vonatkozó utasítások attól függően, hogy melyik feltétel teljesül
ha tempF (index)> = max_temp % Piros LED
writeDigitalPin (a, 'D13', 0);
szünet (0,5);
writeDigitalPin (a, 'D13', 1);
szünet (0,5);
writeDigitalPin (a, 'D13', 0);
elseif tempF (index)> = min_temp && tempF (index) <max_temp % Zöld LED
writeDigitalPin (a, 'D11', 0);
szünet (0,5);
writeDigitalPin (a, 'D11', 1);
szünet (0,5);
writeDigitalPin (a, 'D11', 0);
elseif tempF (index) <= min_temp % Kék LED
writeDigitalPin (a, 'D12', 0);
szünet (0,5);
writeDigitalPin (a, 'D12', 1);
szünet (0,5);
writeDigitalPin (a, 'D12', 0);
vége
% Megjeleníti a hőmérsékleteket a mérés során
fprintf ('A hőmérséklet %d másodperc alatt %5.2f C vagy %5.2f F. / n',…
samplingTimes (index), tempC (index), tempF (index));
szünet (samplingInterval) %késés a következő mintáig
vége
% A hőmérséklet leolvasása
1.ábra)
plot (samplingTimes, tempF, 'r-*')
xlabel ('Idő (másodperc)')
ylabel ('Hőmérséklet (F)')
title ('Hőmérséklet leolvasása a RedBoard -tól')
3. lépés: Hőmérséklet -érzékelő kimenet


Fentebb a hőmérséklet -érzékelő kimenetének kábelezése és MATLAB -kódja látható.
Ehhez a projekthez három LED -es lámpát használtunk a hőmérséklet -érzékelőnk kimenetére. Vöröset használtunk, ha a pályák túl forróak voltak, kéket, ha túl hidegek voltak, és zöldet, ha köztük voltak.
4. lépés: Az esővíz érzékelő bemenete


A fenti az esővíz -érzékelő vezetéke, és a MATLAB -kódot az alábbiakban közöljük.
%% Vízérzékelő
tiszta minden, clc
a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno');
waterPin = 'A1';
vDry = 4,80; % Feszültség, ha nincs víz
samplingDuration = 60;
samplingInterval = 2;
samplingTimes = 0: samplingInterval: samplingDuration;
numSamples = hossz (samplingTimes);
% A ciklus a feszültség meghatározott ideig (60 másodperc) történő leolvasásához
indexhez = 1: numSamples
volt2 = olvasott feszültség (a, vízPin); % Olvassa el a feszültséget a vízcsap analógból
% Ha a hangjelzés hangjelzést ad, ha vizet észlel. Feszültségcsökkenés = víz
ha volt2 <vSzáraz
playTone (a, 'D09', 2400) % playTone függvény a MathWorks -től
% Figyelmeztetés megjelenítése az utasok számára, ha vizet észlel
waitfor (warndlg ('A vonat késhet vízveszély miatt'));
vége
% A vízérzékelő által mért feszültség megjelenítése
fprintf ('A feszültség %d másodpercnél %5.4f V. / n',…
samplingTimes (index), volt2);
szünet (mintavétel intervallum)
vége
5. lépés: Az esővíz érzékelő kimenete

Fent van egy zümmögő vezeték, amely sípol, amikor túl sok víz esik a pályára. A zümmögő kódja be van ágyazva az esővíz bemenet kódjába.
6. lépés: Rezgésérzékelő bemenet


Fent van a rezgésérzékelő vezetéke. A rezgésérzékelők fontosak lehetnek a vasúti rendszerek számára a pályán leeső sziklák esetén. A MATLAB kódot alább közöljük.
%% Rezgésérzékelő tiszta minden, clc
PIEZO_PIN = 'A3'; % A rezgésérzékelőhöz csatlakoztatott analóg tű deklarálása a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno'); % Idő és intervallum inicializálása a rezgésmintavétel méréséreDuration = 30; % Seconds samplingInterval = 1;
samplingTimes = 0: samplingInterval: samplingDuration;
numSamples = hossz (samplingTimes);
% A következő forrásból származó kód segítségével módosítottuk a bekapcsolásához
% lila LED, ha rezgést észlel.
% SparkFun Tinker Kit, RGB LED, írta: SparkFun Electronics, % az Arduino közösség sok segítségével
% A MATLAB -hoz adaptálta Eric Davishahl
% RGB pin inicializálása
RED_PIN = 'D5';
ZÖLD_PIN = 'D6';
KÉK_PIN = 'D7';
% A hurok a rezgésérzékelő feszültségváltozásának rögzítésére a
% meghatározott időintervallum (30 másodperc)
index = 1 esetén: számminták
volt3 = olvasott feszültség (a, PIEZO_PIN);
% Ha a nyilatkozat bekapcsolja a lila LED -et, ha rezgést észlel
ha volt3> 0,025
writeDigitalPin (a, RED_PIN, 1);
% Lila fény létrehozása
writeDigitalPin (a, ZÖLD_PIN, 0);
writeDigitalPin (a, BLUE_PIN, 1);
else % Kapcsolja ki a LED -et, ha nem észlel rezgést.
writeDigitalPin (a, RED_PIN, 0);
writeDigitalPin (a, ZÖLD_PIN, 0);
writeDigitalPin (a, BLUE_PIN, 0);
vége
% A mért feszültség megjelenítése.
fprintf ('A feszültség %d másodpercnél %5.4f V. / n',…
samplingTimes (index), volt3);
szünet (mintavétel intervallum)
vége
% Kapcsolja ki a fényt a rezgések mérésekor
writeDigitalPin (a, RED_PIN, 0);
writeDigitalPin (a, ZÖLD_PIN, 0);
writeDigitalPin (a, KÉK_PIN, 0);
7. lépés: Rezgésérzékelő kimenet

Fentebb az alkalmazott RBG LED lámpa vezetékei láthatók. A fény lilán világít, ha rezgést észlel. A kimenet MATLAB kódja be van ágyazva a bemenet kódjába.
8. lépés: Következtetés
Mindezen lépések végrehajtása után most rendelkeznie kell egy arduino -val, amely képes érzékelni a hőmérsékletet, az esővizet és a rezgéseket. Miközben ezeket az érzékelőket kis méretben nézzük, könnyen el lehet képzelni, mennyire fontosak lehetnek a vasúti rendszerek számára a modern életben!
Ajánlott:
Százalékos differenciálrelé a háromfázisú transzformátor védelmére: 7 lépés

Százalékos differenciálrelé a háromfázisú transzformátor védelméhez: Ebben az utasításban megmutatom, hogyan lehet százalékos differenciálrelét készíteni az Arduino segítségével, amely egy nagyon gyakori mikrokontroller kártya. A teljesítménytranszformátor a legfontosabb berendezés az energiaellátás rendszerben történő továbbítására. A javítás költsége
A polgári infrastruktúrák szerkezeti egészségének nyomon követése vezeték nélküli rezgésérzékelők használatával: 8 lépés

A polgári infrastruktúrák szerkezeti állapotfelügyelete vezeték nélküli rezgésérzékelőkkel: A régi épület és a polgári infrastruktúra romlása halálos és veszélyes helyzethez vezethet. Ezen struktúrák folyamatos ellenőrzése kötelező. A strukturális egészségügyi monitorozás rendkívül fontos módszertan a
ESP32 NTP hőmérséklet szonda főzési hőmérő Steinhart-Hart korrekcióval és hőmérséklet riasztással: 7 lépés (képekkel)

ESP32 NTP hőmérséklet szonda főzési hőmérő Steinhart-Hart korrekcióval és hőmérséklet riasztással: Még mindig úton van egy "közelgő projekt" befejezéséhez, "ESP32 NTP hőmérséklet szonda főzési hőmérő Steinhart-Hart korrekcióval és hőmérséklet riasztással" egy utasítás, amely bemutatja, hogyan adhatok hozzá NTP hőmérséklet -szondát, piezo b
Ultrahangos esővíz -tartály kapacitásmérő: 10 lépés (képekkel)

Ultrahangos esővíz -tartály kapacitásmérő: Ha hasonlít hozzám, és van egy kis környezeti lelkiismerete (vagy csak skinflints szeretne megspórolni néhány dollárt - ami szintén én vagyok …), akkor esővíztartálya lehet. Van egy tartályom a ritka eső betakarítására
Esővíz zsilip: 11 lépés (képekkel)

Esővízi zsilip: A heves esőzések túlcsordulást okozhatnak: járdán, esővíz kutakon, pólusokon és gátjainkon. Ennek elkerülése érdekében feltaláltunk egy esővízi zsilipet! Az esővíz zsilip digitálisan kiszámítja az esővíz közötti távolságot