Obsah:

Použitie senzorov teploty, dažďovej vody a vibrácií na Arduine na ochranu železníc: 8 krokov (s obrázkami)
Použitie senzorov teploty, dažďovej vody a vibrácií na Arduine na ochranu železníc: 8 krokov (s obrázkami)

Video: Použitie senzorov teploty, dažďovej vody a vibrácií na Arduine na ochranu železníc: 8 krokov (s obrázkami)

Video: Použitie senzorov teploty, dažďovej vody a vibrácií na Arduine na ochranu železníc: 8 krokov (s obrázkami)
Video: Измерьте температуру и влажность Wi-Fi с помощью ESP32 DHT11 и DHT22 - Robojax 2024, Júl
Anonim
Použitie senzorov teploty, dažďovej vody a vibrácií na Arduine na ochranu železníc
Použitie senzorov teploty, dažďovej vody a vibrácií na Arduine na ochranu železníc

V modernej spoločnosti znamená nárast počtu cestujúcich v železničnej doprave, že železničné spoločnosti musia urobiť viac pre optimalizáciu sietí, aby držali krok s dopytom. V tomto projekte v malom meradle ukážeme, ako môžu snímače teploty, dažďovej vody a vibrácií na doske arduino potenciálne pomôcť zvýšiť bezpečnosť cestujúcich.

Tento návod krok za krokom ukáže zapojenie snímačov teploty, dažďovej vody a vibrácií na Arduine, ako aj kód MATLAB potrebný na spustenie týchto senzorov.

Krok 1: Diely a materiály

1. Počítač s nainštalovanou najnovšou verziou programu MATLAB

2. Doska Arduino

3. Snímač teploty

4. Senzor dažďovej vody

5. Senzor vibrácií

6. Červené LED svetlo

7. Modré LED svetlo

8. Zelené LED svetlo

9. RBG LED svetlo

10. Bzučiak

11. 18 Muž-Muž drôtov

12. 3 Ženské-mužské drôty

13. 2 Ženské-ženské drôty

14. 6 odpory 330 ohmov

15. Rezistor 1 100 ohmov

Krok 2: Zapojenie snímača teploty

Zapojenie snímača teploty
Zapojenie snímača teploty
Zapojenie snímača teploty
Zapojenie snímača teploty

Hore je zapojenie a kód MATLAB aj pre vstup snímača teploty.

Vodiče zo zeme a 5V je potrebné previesť na záporný a kladný pól iba raz pre celú dosku. Odteraz budú všetky uzemňovacie spojenia pochádzať zo záporného stĺpca a akékoľvek 5V spojenia budú pochádzať z kladného stĺpca.

Nasledujúci kód je možné skopírovať a prilepiť pre snímač teploty.

%% TEMPERATURE SENSOR % Pre teplotný senzor sme použili nasledujúci zdroj spolu s

% Webového materiálu EF230 na úpravu nášho teplotného senzora tak, aby to mohol používateľ umožniť

% vstupu a 3 svetelné výstupy LED s grafom.

%Túto skicu napísala spoločnosť SparkFun Electronics, %s veľkou pomocou komunity Arduino.

%Prispôsobené MATLAB -u Ericom Davishahlom.

%Informácie o SIK nájdete na stránke

vymazať všetko, clc

tempPin = 'A0'; % Deklarovanie analógového kolíka pripojeného k snímaču teploty

a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno');

% Definujte anonymnú funkciu, ktorá prevádza napätie na teplotu

tempCfromVolts = @(volty) (volty-0,5)*100;

samplingDuration = 30;

samplingInterval = 2; % Sekúnd medzi hodnotami teploty

%nastavený vektor časov vzorkovania

samplingTimes = 0: samplingInterval: samplingDuration;

%vypočítajte počet vzoriek na základe trvania a intervalu

numSamples = dĺžka (samplingTimes);

%preallocate premenných temp a premennej pre počet meraní, ktoré bude ukladať

tempC = nuly (numSamples, 1);

tempF = tempC;

% pomocou vstupného dialógového okna na uloženie maximálnej a minimálnej teploty koľajnice

dlg_prompts = {'Zadajte maximálnu teplotu', 'zadajte minimálnu teplotu'};

dlg_title = 'Intervaly teploty koľajnice';

N = 22;

dlg_ans = inputdlg (dlg_prompts, dlg_title, [1, dĺžka (dlg_title)+N]);

% Uloženie vstupov od užívateľa a zobrazenie, že vstup bol zaznamenaný

max_temp = str2double (dlg_ans {1})

min_temp = str2double (dlg_ans {2})

txt = sprintf ('Váš vstup bol zaznamenaný');

h = msgbox (txt);

čakať na (h);

% Pre slučku na čítanie teplôt konkrétny počet krát.

pre index = 1: numSamples

% Prečítajte napätie na tempPin a uložte ho ako variabilné volty

volty = readVoltage (a, tempPin);

tempC (index) = tempCfromVolts (volty);

tempF (index) = tempC (index)*9/5+32; % Konvertovať z Celzia na Fahrenheita

% Ak príkazy na spustenie konkrétnych LED svetiel blikajú podľa toho, ktorá podmienka je splnená

ak tempF (index)> = max_temp % Červená LED

writeDigitalPin (a, 'D13', 0);

pauza (0,5);

writeDigitalPin (a, 'D13', 1);

pauza (0,5);

writeDigitalPin (a, 'D13', 0);

elseif tempF (index)> = min_temp && tempF (index) <max_temp % Zelená LED

writeDigitalPin (a, 'D11', 0);

pauza (0,5);

writeDigitalPin (a, 'D11', 1);

pauza (0,5);

writeDigitalPin (a, 'D11', 0);

elseif tempF (index) <= min_temp % Modrá LED

writeDigitalPin (a, 'D12', 0);

pauza (0,5);

writeDigitalPin (a, 'D12', 1);

pauza (0,5);

writeDigitalPin (a, 'D12', 0);

koniec

% Zobrazenie teplôt pri ich meraní

fprintf („Teplota v %d sekundách je %5,2f C alebo %5,2f F. / n“,…

samplingTimes (index), tempC (index), tempF (index));

pauza (samplingInterval) %oneskorenie do ďalšej vzorky

koniec

% Vynesenie hodnôt teploty

postava 1)

plot (samplingTimes, tempF, 'r-*')

xlabel ('Čas (sekundy)')

ylabel („Teplota (F)“)

názov („Teploty z RedBoard“)

Krok 3: Výstup snímača teploty

Výstup snímača teploty
Výstup snímača teploty
Výstup snímača teploty
Výstup snímača teploty

Hore je zapojenie a kód MATLAB pre výstup snímača teploty.

Na tento projekt sme použili tri LED svetlá na výstup nášho teplotného senzora. Použili sme červenú, ak boli stopy príliš horúce, modrú, ak boli príliš studené a zelenú, ak boli medzi nimi.

Krok 4: Vstup snímača dažďovej vody

Vstup senzora dažďovej vody
Vstup senzora dažďovej vody
Vstup senzora dažďovej vody
Vstup senzora dažďovej vody

Hore je zapojenie senzora dažďovej vody a kód MATLAB je uvedený nižšie.

%% Senzor vody

vymazať všetko, clc

a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno');

waterPin = 'A1';

vDry = 4,80; % Napätia, keď nie je prítomná žiadna voda

samplingDuration = 60;

samplingInterval = 2;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = dĺžka (samplingTimes);

% Pre slučku na čítanie napätia za určitý čas (60 sekúnd)

pre index = 1: numSamples

volt2 = readVoltage (a, waterPin); % Načítajte napätie z analógu vodovodného kolíka

% Ak zaznie voda, zaznie bzučiak. Pokles napätia = voda

ak volt2 <vDry

playTone (a, 'D09', 2400) % funkcia playTone od MathWorks

% V prípade zistenia vody zobrazí cestujúcim varovanie

čakať (warndlg („Váš vlak môže mať meškanie kvôli nebezpečenstvu spojenému s vodou“));

koniec

% Zobrazte napätie merané vodným senzorom

fprintf ('Napätie v %d sekundách je %5,4f V. / n', …

samplingTimes (index), volt2);

pauza (vzorkovací interval)

koniec

Krok 5: Výstup snímača dažďovej vody

Výstup snímača dažďovej vody
Výstup snímača dažďovej vody

Hore je vedenie bzučiaka, ktorý pípne vždy, keď na trať spadne príliš veľa vody. Kód pre bzučiak je vložený do kódu pre vstup dažďovej vody.

Krok 6: Vstup senzora vibrácií

Vstup senzora vibrácií
Vstup senzora vibrácií
Vstup senzora vibrácií
Vstup senzora vibrácií

Hore je kabeláž pre snímač vibrácií. V prípade padajúcich skál na trati môžu byť senzory vibrácií dôležité pre železničné systémy. Kód MATLAB je uvedený nižšie.

%% snímač vibrácií, všetky

PIEZO_PIN = 'A3'; % Deklarovanie analógového kolíka pripojeného k senzoru vibrácií a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno'); % Inicializácia času a intervalu na meranie vzorkovania vibráciíDoba trvania = 30; Interval vzorkovania v % sekúnd = 1;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = dĺžka (samplingTimes);

% Pomocou kódu z nasledujúceho zdroja sme ho upravili tak, aby zapínal a

% purpurovej LED, ak sú detekované vibrácie.

% Sada SparkFun Tinker, RGB LED, napísaná spoločnosťou SparkFun Electronics, % s veľkou pomocou komunity Arduino

% Prispôsobené MATLAB -u Ericom Davishahlom

% Inicializácia kolíka RGB

RED_PIN = 'D5';

GREEN_PIN = 'D6';

BLUE_PIN = 'D7';

% Aby slučka zaznamenala zmeny napätia zo senzora vibrácií počas a

% špecifický časový interval (30 sekúnd)

pre index = 1: numSamples

volt3 = readVoltage (a, PIEZO_PIN);

% Príkaz if zapne purpurovú diódu LED, ak sú detekované vibrácie

ak volt3> 0,025

writeDigitalPin (a, RED_PIN, 1);

% Vytvorenie purpurového svetla

writeDigitalPin (a, ZELENÝ_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 1);

else % Vypnite LED, ak nie sú zistené žiadne vibrácie.

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, ZELENÝ_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

koniec

% Zobrazte napätie pri jeho meraní.

fprintf ('Napätie v %d sekundách je %5,4f V. / n', …

samplingTimes (index), volt3);

pauza (vzorkovací interval)

koniec

% Vypnutie svetla pri meraní vibrácií

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, ZELENÝ_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

Krok 7: Výstup snímača vibrácií

Výstup snímača vibrácií
Výstup snímača vibrácií

Hore je zapojenie použitého LED svetla RBG. Keď sú zistené vibrácie, svetlo bude svietiť purpurovo. Kód MATLAB pre výstup je vložený do kódu pre vstup.

Krok 8: Záver

Po vykonaní všetkých týchto krokov by ste teraz mali mať arduino so schopnosťou detekovať teplotu, dažďovú vodu a vibrácie. Pri pohľade na to, ako tieto senzory v malom meradle fungujú, je ľahké si predstaviť, aké dôležité by mohli byť pre železničné systémy v modernom živote!

Odporúča: