Obsah:

Použití snímačů teploty, dešťové vody a vibrací na Arduinu k ochraně železnic: 8 kroků (s obrázky)
Použití snímačů teploty, dešťové vody a vibrací na Arduinu k ochraně železnic: 8 kroků (s obrázky)

Video: Použití snímačů teploty, dešťové vody a vibrací na Arduinu k ochraně železnic: 8 kroků (s obrázky)

Video: Použití snímačů teploty, dešťové vody a vibrací na Arduinu k ochraně železnic: 8 kroků (s obrázky)
Video: Senzory a měřicí technika - Snímače výšky hladiny 2024, Červen
Anonim
Používání snímačů teploty, dešťové vody a vibrací na Arduinu k ochraně železnic
Používání snímačů teploty, dešťové vody a vibrací na Arduinu k ochraně železnic

V moderní společnosti znamená nárůst počtu cestujících v železniční dopravě, že železniční společnosti musí udělat více pro optimalizaci sítí, aby udržely krok s poptávkou. V tomto projektu v malém měřítku ukážeme, jak mohou snímače teploty, dešťové vody a vibrací na desce arduino potenciálně pomoci zvýšit bezpečnost cestujících.

Tento instruktážní krok za krokem ukáže zapojení snímačů teploty, dešťové vody a vibrací na Arduinu a také ukáže kód MATLAB potřebný ke spuštění těchto senzorů.

Krok 1: Díly a materiály

1. Počítač s nainstalovanou nejnovější verzí MATLABu

2. Deska Arduino

3. Teplotní senzor

4. Čidlo dešťové vody

5. Senzor vibrací

6. Červené LED světlo

7. Modré LED světlo

8. Zelené LED světlo

9. RBG LED světlo

10. Bzučák

11. 18 Muž-Muž dráty

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

13. 2 dráty žena-žena

14. 6 330 ohmové odpory

15. Rezistor 1 100 ohmů

Krok 2: Zapojení teplotního senzoru

Zapojení teplotního senzoru
Zapojení teplotního senzoru
Zapojení teplotního senzoru
Zapojení teplotního senzoru

Nahoře je také zapojení a kód MATLAB pro vstup teplotního senzoru.

Dráty ze země a 5V je třeba vést pouze na záporný a kladný pól pro celou desku. Od této chvíle budou všechna zemní spojení pocházet ze záporného sloupce a všechna 5V připojení budou vycházet ze kladného sloupce.

Níže uvedený kód lze zkopírovat a vložit pro teplotní čidlo.

%% TEMPERATURE SENSOR % Pro teplotní čidlo jsme použili následující zdroj spolu s

% EF230 webový materiál pro úpravu našeho teplotního senzoru, aby umožnil uživateli

% vstupu a 3 světelné výstupy LED s grafem.

%Tuto skicu napsala společnost SparkFun Electronics, %se spoustou pomoci komunity Arduino.

%Přizpůsobeno MATLABu Ericem Davishahlem.

%Navštivte https://learn.sparkfun.com/products/2 informace o SIK.

vymazat vše, clc

tempPin = 'A0'; % Deklarace analogového pinu připojeného k teplotnímu čidlu

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

% Definujte anonymní funkci, která převádí napětí na teplotu

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

samplingDuration = 30;

samplingInterval = 2; % Sekund mezi odečty teploty

%nastavit vektor vzorkovací doby

samplingTimes = 0: samplingInterval: samplingDuration;

%vypočítat počet vzorků na základě doby trvání a intervalu

numSamples = délka (samplingTimes);

%preallocate temp variables and variable for the number of read it will store

tempC = nuly (numSamples, 1);

tempF = tempC;

% pomocí vstupního dialogového okna pro uložení maximální a minimální teploty kolejnice

dlg_prompts = {'Zadejte maximální teplotu', 'Zadejte minimální teplotu'};

dlg_title = 'Intervaly teploty kolejnice';

N = 22;

dlg_ans = inputdlg (dlg_prompts, dlg_title, [1, délka (dlg_title)+N]);

% Uložení vstupů od uživatele a zobrazení, že byl vstup zaznamenán

max_temp = str2double (dlg_ans {1})

min_temp = str2double (dlg_ans {2})

txt = sprintf ('Váš vstup byl zaznamenán');

h = msgbox (txt);

čekat na (h);

% Pro smyčku ke čtení teplot určitý počet opakování.

pro index = 1: numSamples

% Odečtěte napětí na tempPin a uložte jako proměnné volty

volts = readVoltage (a, tempPin);

tempC (index) = tempCfromVolts (volty);

tempF (index) = tempC (index)*9/5+32; % Převod z Celsia na Fahrenheita

% Pokud příkazy k provedení konkrétních LED diod blikají podle toho, která podmínka je splněna

pokud 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);

konec

% Zobrazte teploty při jejich měření

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

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

pauza (samplingInterval) %zpoždění do dalšího vzorku

konec

% Vynesení naměřených hodnot teploty

Obrázek 1)

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

xlabel ('Time (Seconds)')

ylabel ('Teplota (F)')

title ('Teplotní údaje z RedBoardu')

Krok 3: Výstup teplotního senzoru

Výstup teplotního čidla
Výstup teplotního čidla
Výstup teplotního čidla
Výstup teplotního čidla

Nahoře je kabeláž a kód MATLAB pro výstup teplotního čidla.

Pro tento projekt jsme použili tři LED světla pro výstup našeho teplotního senzoru. Použili jsme červenou, pokud byly stopy příliš horké, modrou, pokud byly příliš studené, a zelenou, pokud byly mezi nimi.

Krok 4: Vstup senzoru dešťové vody

Vstup senzoru dešťové vody
Vstup senzoru dešťové vody
Vstup senzoru dešťové vody
Vstup senzoru dešťové vody

Nahoře je zapojení senzoru dešťové vody a kód MATLAB je uveden níže.

%% Čidlo vody

vymazat vše, clc

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

waterPin = 'A1';

vDry = 4,80; % Napětí, když není přítomna voda

samplingDuration = 60;

samplingInterval = 2;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = délka (samplingTimes);

% Pro smyčku ke čtení napětí po určitou dobu (60 sekund)

pro index = 1: numSamples

volt2 = readVoltage (a, waterPin); % Odečtěte napětí z analogového vodního kolíku

% Pokud zazní voda, zazní bzučák. Pokles napětí = voda

pokud volt2 <vDry

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

% Zobrazit varování cestujícím, pokud je detekována voda

waitfor (warndlg („Váš vlak může mít zpoždění kvůli nebezpečí pro vodu“));

konec

% Zobrazte napětí měřené snímačem vody

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

samplingTimes (index), volt2);

pauza (vzorkovací interval)

konec

Krok 5: Výstup snímače dešťové vody

Výstup snímače dešťové vody
Výstup snímače dešťové vody

Nahoře je zapojení bzučáku, který pípne, kdykoli na trať spadne příliš mnoho vody. Kód pro bzučák je vložen do kódu pro vstup dešťové vody.

Krok 6: Vstup snímače vibrací

Vstup snímače vibrací
Vstup snímače vibrací
Vstup snímače vibrací
Vstup snímače vibrací

Nahoře je kabeláž pro snímač vibrací. V případě padajících kamení na trati mohou být senzory vibrací důležité pro železniční systémy. Kód MATLAB je uveden níže.

%% Vibration Sensorclear all, clc

PIEZO_PIN = 'A3'; % Deklarace analogového pinu připojeného k senzoru vibrací a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno'); % Inicializace času a intervalu pro měření vzorkování vibrací Trvání = 30; Interval vzorkování % sekund = 1;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = délka (samplingTimes);

% Pomocí kódu z následujícího zdroje jsme jej upravili tak, aby zapnul a

% fialové LED, pokud jsou detekovány vibrace.

% SparkFun Tinker Kit, RGB LED, napsáno SparkFun Electronics, % se spoustou pomoci komunity Arduino

% Přizpůsobeno MATLABu Ericem Davishahlem

% Inicializace kolíku RGB

RED_PIN = 'D5';

GREEN_PIN = 'D6';

BLUE_PIN = 'D7';

% Aby smyčka zaznamenala změny napětí ze snímače vibrací za a

% specifický časový interval (30 sekund)

pro index = 1: numSamples

volt3 = readVoltage (a, PIEZO_PIN);

% Příkaz pro zapnutí fialové LED, pokud jsou detekovány vibrace

pokud volt3> 0,025

writeDigitalPin (a, RED_PIN, 1);

% Vytvoření fialového světla

writeDigitalPin (a, ZELENÝ_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 1);

else % Vypněte LED, pokud nejsou detekovány žádné vibrace.

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, ZELENÝ_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

konec

% Zobrazte napětí při jeho měření.

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

samplingTimes (index), volt3);

pauza (vzorkovací interval)

konec

% Odřízněte světlo při měření vibrací

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, ZELENÝ_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

Krok 7: Výstup snímače vibrací

Výstup snímače vibrací
Výstup snímače vibrací

Nahoře je použito zapojení pro LED světlo RBG. Když jsou detekovány vibrace, světlo bude svítit purpurově. Kód MATLAB pro výstup je vložen do kódu pro vstup.

Krok 8: Závěr

Po provedení všech těchto kroků byste nyní měli mít arduino se schopností detekovat teplotu, dešťovou vodu a vibrace. Při pohledu na to, jak tyto senzory fungují v malém měřítku, je snadné si představit, jak důležité by mohly být pro železniční systémy v moderním životě!

Doporučuje: