Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-23 15:02
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
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
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
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
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
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
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:
Komme i gang med trådløse temperatur- og vibrasjonssensorer for lang rekkevidde: 7 trinn
Komme i gang med trådløse temperatur- og vibrasjonssensorer for lang rekkevidde: Noen ganger er vibrasjon årsaken til alvorlige problemer i mange applikasjoner. Fra maskinaksler og lagre til harddiskytelse, vibrasjoner forårsaker maskinskader, tidlig utskifting, lav ytelse og påfører nøyaktigheten et stort treff. Overvåkning
Neopixel Ws2812 Rainbow LED-glød med M5stick-C - Kjører Rainbow på Neopixel Ws2812 Bruke M5stack M5stick C Bruke Arduino IDE: 5 trinn
Neopixel Ws2812 Rainbow LED-glød med M5stick-C | Running Rainbow på Neopixel Ws2812 Bruke M5stack M5stick C Bruke Arduino IDE: Hei folkens i denne instruksen, vi lærer hvordan du bruker neopixel ws2812 LED eller led strip eller led matrise eller led ring med m5stack m5stick-C utviklingstavle med Arduino IDE, og vi skal lage et regnbuemønster med den
Strukturell helseovervåking av sivile infrastrukturer ved bruk av trådløse vibrasjonssensorer: 8 trinn
Strukturell helseovervåking av sivile infrastrukturer ved bruk av trådløse vibrasjonssensorer: Forringelsen av den gamle bygningen og sivil infrastruktur kan føre til dødelig og farlig situasjon. Den konstante overvåking av disse strukturene er obligatorisk. Strukturell helseovervåking er en ekstremt viktig metode for å evaluere
Hvordan lage en FALDØR for å beskytte basen din!: 6 trinn
Hvordan lage en TRAP -DØR for å beskytte basen din !!!: I dag skulle vi lære hvordan du lager en fantastisk TRAP -DØR for å beskytte basen din
Slik gjør du det: Konfigurer en IPCop Virtual Machine -brannmur for å beskytte Windows -verten (gratis!): 5 trinn
Slik gjør du det: Konfigurer en IPCop -virtuell maskinbrannmur for å beskytte Windows -verten (gratis!): Sammendrag: Målet med dette prosjektet er å bruke IpCop (gratis Linux -distribusjon) i en virtuell maskin for å beskytte et Windows -vertssystem i alle nettverk. IpCop er en veldig kraftig Linux -basert brannmur med avanserte funksjoner som: VPN, NAT, Intrusion Det