Innholdsfortegnelse:

Bruke temperatur-, regnvanns- og vibrasjonssensorer på en Arduino for å beskytte jernbaner: 8 trinn (med bilder)
Bruke temperatur-, regnvanns- og vibrasjonssensorer på en Arduino for å beskytte jernbaner: 8 trinn (med bilder)

Video: Bruke temperatur-, regnvanns- og vibrasjonssensorer på en Arduino for å beskytte jernbaner: 8 trinn (med bilder)

Video: Bruke temperatur-, regnvanns- og vibrasjonssensorer på en Arduino for å beskytte jernbaner: 8 trinn (med bilder)
Video: Hvorfor kortslutter ikke kraftledninger og stolper i regn? 2024, Juli
Anonim
Bruk av temperatur-, regnvann- og vibrasjonssensorer på en Arduino for å beskytte jernbaner
Bruk av temperatur-, regnvann- og vibrasjonssensorer på en Arduino for å beskytte jernbaner

I dagens samfunn betyr en økning i jernbanepassasjerer at jernbaneselskaper må gjøre mer for å optimalisere nettverk for å holde tritt med etterspørselen. I dette prosjektet vil vi vise i liten skala hvordan temperatur-, regnvann- og vibrasjonssensorer på et arduino -bord potensielt kan bidra til å øke passasjerens sikkerhet.

Denne instruksjonsboken viser trinn for trinn ledninger for temperatur-, regnvann- og vibrasjonssensorer på arduinoen, samt viser MATLAB-koden som kreves for å kjøre disse sensorene.

Trinn 1: Deler og materialer

1. En datamaskin med den nyeste versjonen av MATLAB installert

2. Arduino Board

3. Temperatursensor

4. Regnvannsensor

5. Vibrasjonssensor

6. Rødt LED -lys

7. Blått LED -lys

8. Grønt LED -lys

9. RBG LED -lys

10. Summer

11. 18 Mann-Hankabler

12. 3 hunn-hann-ledninger

13. 2 kvinnelige-kvinnelige ledninger

14. 6 330 ohm motstander

15. 1 100 ohm motstand

Trinn 2: Temperatursensorledninger

Temperatursensor ledninger
Temperatursensor ledninger
Temperatursensor ledninger
Temperatursensor ledninger

Over er også ledninger og MATLAB -kode for temperatursensorinngangen.

Ledningene fra bakken og 5V trenger bare å kjøres til henholdsvis negativ og positiv én gang for hele brettet. Fra nå av kommer alle jordforbindelser fra den negative kolonnen, og alle 5V -tilkoblinger kommer fra den positive kolonnen.

Koden nedenfor kan kopieres og limes inn for temperatursensoren.

%% TEMPERATURSENSOR % For temperatursensoren brukte vi følgende kilde sammen med

% EF230 nettstedsmateriale for å endre vår temperatursensor slik at brukeren kan

% inngang og 3 LED -lysutganger med en graf.

Denne skissen ble skrevet av SparkFun Electronics, %med mye hjelp fra Arduino -samfunnet.

%Tilpasset til MATLAB av Eric Davishahl.

%Besøk https://learn.sparkfun.com/products/2 for informasjon om SIK.

klar alt, clc

tempPin = 'A0'; % Angir den analoge pinnen som er koblet til temperatursensoren

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

% Definer anonym funksjon som konverterer spenningen til temperatur

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

samplingDuration = 30;

samplingInterval = 2; % Sekunder mellom temperaturavlesninger

%sette opp vektoren for prøvetakingstider

samplingTimes = 0: samplingInterval: samplingDuration;

%beregne antall prøver basert på varighet og intervall

numSamples = length (samplingTimes);

%forhåndsfordel temp -variabler og variabler for antall avlesninger den vil lagre

tempC = nuller (numSamples, 1);

tempF = tempC;

% bruker input -dialogboks for å lagre maks og min skinnetemperatur

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

dlg_title = 'Rail Temperature intervaller';

N = 22;

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

% Lagre inngangene fra brukeren og vise at inngangen ble spilt inn

max_temp = str2double (dlg_ans {1})

min_temp = str2double (dlg_ans {2})

txt = sprintf ('Inndataene dine er registrert');

h = msgbox (txt);

vente (h);

% For sløyfe for å lese temperaturene et bestemt antall ganger.

for indeks = 1: numSamples

% Les spenningen ved tempPin og lagre den som variabel volt

volt = readVoltage (a, tempPin);

tempC (indeks) = tempCfromVolts (volt);

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

% Hvis uttalelser om å få spesifikke LED -lamper blinker avhengig av hvilken betingelse som er oppfylt

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ønn 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);

slutt

% Vis temperaturene når de måles

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

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

pause (samplingInterval) %forsinkelse til neste prøve

slutt

% Plotte temperaturavlesningene

Figur 1)

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

xlabel ('Tid (sekunder)')

ylabel ('Temperatur (F)')

title ('Temperaturavlesninger fra RedBoard')

Trinn 3: Temperatursensorutgang

Temperatur sensor utgang
Temperatur sensor utgang
Temperatur sensor utgang
Temperatur sensor utgang

Over er ledningen og MATLAB -koden for temperatursensorutgangen.

For dette prosjektet brukte vi tre LED -lys for utgangen av temperatursensoren vår. Vi brukte en rød for hvis sporene var for varme, en blå hvis de var for kalde og en grønn hvis de var i mellom.

Trinn 4: Inngang av regnvannsensor

Inngang for regnvannsensor
Inngang for regnvannsensor
Inngang for regnvannsensor
Inngang for regnvannsensor

Over er ledningene for regnvannsensoren og MATLAB -koden er lagt ut nedenfor.

%% Vannsensor

klar alt, clc

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

waterPin = 'A1';

vDry = 4,80; % Spenning når det ikke er vann tilstede

samplingDuration = 60;

samplingInterval = 2;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = length (samplingTimes);

% For sløyfe for å lese spenningen i en bestemt tid (60 sekunder)

for indeks = 1: numSamples

volt2 = readVoltage (a, waterPin); % Les spenning fra vannpinne analog

% Hvis uttalelse om å høres en summer hvis det oppdages vann. Spenningsfall = vann

hvis volt2 <vDry

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

% Vis en advarsel til passasjerene hvis det oppdages vann

waitfor (warndlg ('Toget ditt kan bli forsinket på grunn av vannfare'));

slutt

% Vis spenningen som den måles av vannsensoren

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

samplingTimes (indeks), volt2);

pause (samplingInterval)

slutt

Trinn 5: Regnvannsensorutgang

Regnvannsensorutgang
Regnvannsensorutgang

Over er ledningen til en summer som piper når for mye vann faller på banen. Koden for summeren er innebygd i koden for regnvannstilførselen.

Trinn 6: Vibrasjonssensorinngang

Vibrasjonssensorinngang
Vibrasjonssensorinngang
Vibrasjonssensorinngang
Vibrasjonssensorinngang

Over er ledningene for vibrasjonssensoren. Vibrasjonssensorer kan være viktige for jernbanesystemer ved fallende stein på et spor. MATLAB -koden er lagt ut nedenfor.

%% Vibrasjonssensor tøm alt, clc

PIEZO_PIN = 'A3'; % Deklarere den analoge pinnen som er koblet til vibrasjonssensoren a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno'); % Initialiserer tid og intervall for å måle vibrasjonssamplingDuration = 30; % Seconds samplingInterval = 1;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = length (samplingTimes);

% Ved å bruke koden fra følgende kilde endret vi den for å slå på a

% lilla LED hvis det oppdages vibrasjon.

% SparkFun Tinker Kit, RGB LED, skrevet av SparkFun Electronics, % med mye hjelp fra Arduino -samfunnet

% Tilpasset til MATLAB av Eric Davishahl

% Initialiserer RGB -pinnen

RED_PIN = 'D5';

GREEN_PIN = 'D6';

BLUE_PIN = 'D7';

% For sløyfe for å registrere spenningsendringer fra vibrasjonssensoren over en

% spesifikt tidsintervall (30 sekunder)

for indeks = 1: numSamples

volt3 = readVoltage (a, PIEZO_PIN);

% Hvis uttalelse for å slå på en lilla LED hvis vibrasjon oppdages

hvis volt3> 0,025

writeDigitalPin (a, RED_PIN, 1);

Opprette et lilla lys

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 1);

ellers % Slå av LED hvis det ikke oppdages vibrasjoner.

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

slutt

% Vis spenningen når den måles.

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

samplingTimes (indeks), volt3);

pause (samplingInterval)

slutt

% Slå av lyset når vibrasjonsmåling er utført

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

Trinn 7: Vibrasjonssensorutgang

Vibrasjonssensorutgang
Vibrasjonssensorutgang

Over er ledningene til RBG LED -lyset som brukes. Lyset lyser lilla når det oppdages vibrasjoner. MATLAB -koden for utgangen er innebygd i koden for inngangen.

Trinn 8: Konklusjon

Etter å ha fulgt alle disse trinnene, bør du nå ha en arduino med evnen til å oppdage temperatur, regnvann og vibrasjoner. Mens du ser på hvordan disse sensorene fungerer i liten skala, er det lett å forestille seg hvor viktige de kan være for jernbanesystemer i moderne liv!

Anbefalt: