Tartalomjegyzék:

Hőmérséklet-, esővíz- és rezgésérzékelők használata egy Arduino -n a vasutak védelmére: 8 lépés (képekkel)
Hőmérséklet-, esővíz- és rezgésérzékelők használata egy Arduino -n a vasutak védelmére: 8 lépés (képekkel)

Videó: Hőmérséklet-, esővíz- és rezgésérzékelők használata egy Arduino -n a vasutak védelmére: 8 lépés (képekkel)

Videó: Hőmérséklet-, esővíz- és rezgésérzékelők használata egy Arduino -n a vasutak védelmére: 8 lépés (képekkel)
Videó: Öntözőrendszer a kertben - esővíz gyűjtése 2024, Július
Anonim
Hőmérséklet-, esővíz- és rezgésérzékelők használata egy Arduino -n a vasutak védelmére
Hőmérséklet-, esővíz- és rezgésérzékelők használata egy Arduino -n a vasutak védelmére

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

Hőmérséklet -érzékelő huzalozása
Hőmérséklet -érzékelő huzalozása
Hőmérséklet -érzékelő huzalozása
Hőmérséklet -érzékelő huzalozása

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

Hőmérséklet érzékelő kimenet
Hőmérséklet érzékelő kimenet
Hőmérséklet érzékelő kimenet
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

Esővíz érzékelő bemenet
Esővíz érzékelő bemenet
Esővíz érzékelő bemenet
Esővíz érzékelő bemenet

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

Esővíz érzékelő kimenet
Esővíz érzékelő kimenet

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

Rezgésérzékelő bemenet
Rezgésérzékelő bemenet
Rezgésérzékelő bemenet
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

Rezgésérzékelő kimenet
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: