Indholdsfortegnelse:

Brug af temperatur-, regnvand- og vibrationssensorer på en Arduino til at beskytte jernbaner: 8 trin (med billeder)
Brug af temperatur-, regnvand- og vibrationssensorer på en Arduino til at beskytte jernbaner: 8 trin (med billeder)

Video: Brug af temperatur-, regnvand- og vibrationssensorer på en Arduino til at beskytte jernbaner: 8 trin (med billeder)

Video: Brug af temperatur-, regnvand- og vibrationssensorer på en Arduino til at beskytte jernbaner: 8 trin (med billeder)
Video: Крещение Господне | Река Иордан | Израиль 2024, November
Anonim
Brug af temperatur-, regnvand- og vibrationssensorer på en Arduino til at beskytte jernbaner
Brug af temperatur-, regnvand- og vibrationssensorer på en Arduino til at beskytte jernbaner

I nutidens samfund betyder en stigning i jernbanepassagerer, at jernbaneselskaber skal gøre mere for at optimere netværk for at følge med efterspørgslen. I dette projekt vil vi i lille skala vise, hvordan temperatur-, regnvand- og vibrationssensorer på et arduinotavle potentielt kan bidrage til at øge passagerernes sikkerhed.

Denne instruktionsbog viser trin for trin ledningerne til temperatur-, regnvands- og vibrationssensorer på arduinoen samt viser den MATLAB-kode, der kræves for at køre disse sensorer.

Trin 1: Dele og materialer

1. En computer med den nyeste version af MATLAB installeret

2. Arduino Board

3. Temperatursensor

4. Regnvandssensor

5. Vibrationssensor

6. Rødt LED -lys

7. Blåt LED -lys

8. Grønt LED -lys

9. RBG LED -lys

10. Lydsignal

11. 18 Mand-Hankabler

12. 3 Kvindelige-Hankabler

13. 2 Hunn-Hunnede

14. 6 330 ohm modstande

15. 1 100 ohm modstand

Trin 2: Temperatursensorledninger

Temperatursensor ledninger
Temperatursensor ledninger
Temperatursensor ledninger
Temperatursensor ledninger

Ovenfor er også ledningerne og MATLAB -koden til temperatursensorindgangen.

Ledningerne fra jorden og 5V behøver kun at blive kørt til henholdsvis negativ og positiv én gang for hele brættet. Herfra kommer alle jordforbindelser fra den negative kolonne, og alle 5V -forbindelser kommer fra den positive kolonne.

Koden herunder kan kopieres og indsættes til temperatursensoren.

%% TEMPERATURSENSOR % Til temperatursensoren brugte vi følgende kilde sammen med

% EF230 webstedsmateriale til ændring af vores temperatursensor, så brugeren kan

% input og 3 LED -lysudgange med en graf.

Denne skitse blev skrevet af SparkFun Electronics, %med masser af hjælp fra Arduino -samfundet.

%Tilpasset til MATLAB af Eric Davishahl.

%Besøg https://learn.sparkfun.com/products/2 for SIK -oplysninger.

ryd alt, clc

tempPin = 'A0'; % Angivelse af den analoge pin tilsluttet temp -sensoren

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

% Definer anonym funktion, der konverterer spændingen til temperatur

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

samplingDuration = 30;

samplingInterval = 2; % Sekunder mellem temperaturmålinger

%opsat vektor af prøveudtagningstider

samplingTimes = 0: samplingInterval: samplingDuration;

%beregner antallet af prøver baseret på varighed og interval

numSamples = længde (samplingTimes);

%forudfordel temp -variabler og variabel for antallet af aflæsninger, den vil gemme

tempC = nuller (numSamples, 1);

tempF = tempC;

% ved hjælp af inputdialogboks til at gemme maks og min skinnetemperaturer

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

dlg_title = 'Skinnetemperaturintervaller';

N = 22;

dlg_ans = inputdlg (dlg_prompts, dlg_title, [1, length (dlg_title)+N]);

% Lagring af input fra bruger og visning af, at input blev optaget

max_temp = str2double (dlg_ans {1})

min_temp = str2double (dlg_ans {2})

txt = sprintf ('Dit input er blevet registreret');

h = msgbox (txt);

vente (h);

% For loop for at aflæse temperaturerne et bestemt antal gange.

for indeks = 1: numSamples

% Læs spændingen ved tempPin og gem som variabel volt

volt = readVoltage (a, tempPin);

tempC (indeks) = tempCfromVolts (volt);

tempF (indeks) = tempC (indeks)*9/5+32; % Konverter fra Celsius til Fahrenheit

% Hvis udsagn om at få specifikke LED -lamper til at blinke afhængigt af, hvilken betingelse der er opfyldt

hvis tempF (indeks)> = max_temp % Rød LED

writeDigitalPin (a, 'D13', 0);

pause (0,5);

writeDigitalPin (a, 'D13', 1);

pause (0,5);

writeDigitalPin (a, 'D13', 0);

elseif tempF (index)> = min_temp && tempF (index) <max_temp % Grøn LED

writeDigitalPin (a, 'D11', 0);

pause (0,5);

writeDigitalPin (a, 'D11', 1);

pause (0,5);

writeDigitalPin (a, 'D11', 0);

elseif tempF (indeks) <= min_temp % Blå LED

writeDigitalPin (a, 'D12', 0);

pause (0,5);

writeDigitalPin (a, 'D12', 1);

pause (0,5);

writeDigitalPin (a, 'D12', 0);

ende

% Vis temperaturerne, når de måles

fprintf ('Temperatur ved %d sekunder er %5.2f C eller %5.2f F. / n', …

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

pause (samplingInterval) %forsinkelse indtil næste prøve

ende

% Plotte temperaturmålingerne

figur 1)

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

xlabel ('Tid (sekunder)')

ylabel ('Temperatur (F)')

title ('Temperaturaflæsninger fra det røde bord')

Trin 3: Temperatur sensor output

Temperatur sensor output
Temperatur sensor output
Temperatur sensor output
Temperatur sensor output

Ovenfor er ledningerne og MATLAB -koden til temperaturfølerens output.

Til dette projekt brugte vi tre LED -lys til output fra vores temperatursensor. Vi brugte en rød til, hvis sporene var for varme, en blå, hvis de var for kolde, og en grøn, hvis de var imellem.

Trin 4: Indgang til regnvandssensor

Indgang til regnvandssensor
Indgang til regnvandssensor
Indgang til regnvandssensor
Indgang til regnvandssensor

Ovenfor er ledningerne til regnvandssensoren, og MATLAB -koden er angivet nedenfor.

%% Vandsensor

ryd alt, clc

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

waterPin = 'A1';

vDry = 4,80; % Spænding, når der ikke er vand til stede

samplingDuration = 60;

samplingInterval = 2;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = længde (samplingTimes);

% For loop for at aflæse spændingen i et bestemt tidsrum (60 sekunder)

for indeks = 1: numSamples

volt2 = readVoltage (a, waterPin); % Læs spænding fra vandstift analog

% Hvis udsagn om at lyde en summer, hvis der registreres vand. Spændingsfald = vand

hvis volt2 <vDry

playTone (a, 'D09', 2400) % playTone -funktion fra MathWorks

% Vis en advarsel til passagerer, hvis der registreres vand

waitfor (warndlg ('Dit tog kan blive forsinket på grund af vandfare'));

ende

% Vis spændingen, som den måles af vandføleren

fprintf ('Spænding ved %d sekunder er %5,4f V. / n', …

samplingTimes (indeks), volt2);

pause (samplingInterval)

ende

Trin 5: Output fra regnvandssensor

Regnvandssensor output
Regnvandssensor output

Ovenfor er ledningerne til en summer, der bipper, når der falder for meget vand på banen. Koden til summeren er integreret i koden for regnvandstilførslen.

Trin 6: Vibrationssensorindgang

Vibrationssensorindgang
Vibrationssensorindgang
Vibrationssensorindgang
Vibrationssensorindgang

Ovenfor er ledningerne til vibrationssensoren. Vibrationssensorer kan være vigtige for jernbanesystemer i tilfælde af faldende sten på et spor. MATLAB -koden er angivet nedenfor.

%% Vibrationssensor ryd alle, clc

PIEZO_PIN = 'A3'; % Angivelse af den analoge pin tilsluttet vibrationssensoren a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno'); % Initialiserer tid og interval til måling af vibrationssamplingDuration = 30; % Seconds samplingInterval = 1;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = længde (samplingTimes);

% Ved hjælp af koden fra følgende kilde ændrede vi den til at tænde a

% lilla LED, hvis der registreres vibrationer.

% SparkFun Tinker Kit, RGB LED, skrevet af SparkFun Electronics, % med masser af hjælp fra Arduino -samfundet

% Tilpasset til MATLAB af Eric Davishahl

% Initialiserer RGB -stiften

RED_PIN = 'D5';

GREEN_PIN = 'D6';

BLUE_PIN = 'D7';

% For loop for at registrere spændingsændringer fra vibrationssensoren over en

% specifikt tidsinterval (30 sekunder)

for indeks = 1: numSamples

volt3 = readVoltage (a, PIEZO_PIN);

% Hvis erklæring om at tænde en lilla LED, hvis der registreres vibrationer

hvis volt3> 0,025

writeDigitalPin (a, RED_PIN, 1);

Oprettelse af et lilla lys

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 1);

ellers % Sluk for LED, hvis der ikke registreres vibrationer.

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

ende

% Vis spændingen, når den måles.

fprintf ('Spænding ved %d sekunder er %5,4f V. / n', …

samplingTimes (indeks), volt3);

pause (samplingInterval)

ende

% Sluk lyset, når der måles vibrationer

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

Trin 7: Vibrationssensoroutput

Vibrationssensorudgang
Vibrationssensorudgang

Ovenfor er ledningerne til det anvendte RBG LED -lys. Lyset lyser lilla, når der registreres vibrationer. MATLAB -koden for output er integreret i koden for input.

Trin 8: Konklusion

Efter at have fulgt alle disse trin skulle du nu have en arduino med evnen til at registrere temperatur, regnvand og vibrationer. Mens man ser, hvordan disse sensorer fungerer i lille skala, er det let at forestille sig, hvor vitale de kan være for jernbanesystemer i det moderne liv!

Anbefalede: