Indholdsfortegnelse:
- Trin 1: Dele og materialer
- Trin 2: Temperatursensorledninger
- Trin 3: Temperatur sensor output
- Trin 4: Indgang til regnvandssensor
- Trin 5: Output fra regnvandssensor
- Trin 6: Vibrationssensorindgang
- Trin 7: Vibrationssensoroutput
- Trin 8: Konklusion
Video: Brug af temperatur-, regnvand- og vibrationssensorer på en Arduino til at beskytte jernbaner: 8 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
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
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
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
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
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
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
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:
Kom godt i gang med trådløse temperatur- og vibrationssensorer med lang rækkevidde: 7 trin
Kom godt i gang med trådløse temperatur- og vibrationssensorer med lang rækkevidde: Nogle gange er vibration årsag til alvorlige problemer i mange applikationer. Fra maskinaksler og lejer til harddiskydelse, vibrationer forårsager maskinskader, tidlig udskiftning, lav ydeevne og påfører et stort hit på nøjagtigheden. Overvågning
Brug Raspberry Pi til at evaluere fugtighed og temperatur med SI7006: 6 trin
Ved hjælp af Raspberry Pi, evaluer fugtighed og temperatur med SI7006: Som en entusiast for Raspberry Pi tænkte vi på nogle mere spektakulære eksperimenter med det.I denne kampagne måler vi temperatur og fugtighed, der skal kontrolleres, ved hjælp af en Raspberry Pi og SI7006, Fugtighed og temperaturfølelse
I2C / IIC LCD -skærm - Brug et SPI LCD til I2C LCD Display Brug SPI til IIC modul med Arduino: 5 trin
I2C / IIC LCD -skærm | Brug en SPI LCD til I2C LCD -skærmen Brug af SPI til IIC -modulet med Arduino: Hej fyre, da en normal SPI LCD 1602 har for mange ledninger at tilslutte, så det er meget svært at grænseflade det med arduino, men der er et modul på markedet, som kan konverter SPI -skærm til IIC -skærm, så du skal kun tilslutte 4 ledninger
Brug Cortana og en Arduino til at styre RGB -lysdioder eller Ledstrips med din stemme !: 4 trin (med billeder)
Brug Cortana og en Arduino til at styre RGB -lysdioder eller Ledstrips med din stemme !: I denne instruktive vil jeg vise dig, hvordan du kan styre din RGB -LED eller LED -strip med din stemme. Dette gøres af CoRGB -appen, som er tilgængelig gratis i Windows App Store. Denne app er en del af mit CortanaRoom -projekt. Når du er færdig med
Brug af Parallax Basic Stamp II til at ringe til en dørklokke eksternt: 4 trin (med billeder)
Brug af Parallax Basic Stamp II til at ringe til en dørklokke eksternt: Problemet? En hund der bliver alt for begejstret når dørklokken ringer. Løsningen? Ring på døren på tilfældige tidspunkter, hvor ingen er der, og ingen svarer på den for at modvirke hunden - for at bryde foreningen, som en ringende dørklokke e