Innehållsförteckning:
- Steg 1: Delar och material
- Steg 2: Anslutning av temperaturgivare
- Steg 3: Temperatursensorutgång
- Steg 4: Inmatning av regnvattenssensor
- Steg 5: Regnvattensensorutgång
- Steg 6: Inmatning av vibrationssensor
- Steg 7: Vibrationssensorutgång
- Steg 8: Slutsats
Video: Använda temperatur-, regnvatten- och vibrationssensorer på en Arduino för att skydda järnvägar: 8 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
I dagens samhälle innebär en ökning av järnvägspassagerare att järnvägsföretag måste göra mer för att optimera nätverk för att hålla jämna steg med efterfrågan. I detta projekt kommer vi att visa i liten skala hur temperatur-, regnvatten- och vibrationssensorer på en arduino -skiva potentiellt kan bidra till att öka passagerarnas säkerhet.
Denna instruktionsbok visar steg-för-steg ledningarna för temperatur-, regnvatten- och vibrationssensorerna på arduinoen samt visar MATLAB-koden som krävs för att köra dessa sensorer.
Steg 1: Delar och material
1. En dator med den senaste versionen av MATLAB installerad
2. Arduino Board
3. Temperaturgivare
4. Regnvattensensor
5. Vibrationssensor
6. Rött LED -ljus
7. Blått LED -ljus
8. Grönt LED -ljus
9. RBG LED -ljus
10. Summer
11. 18 Man-Hankablar
12. 3 Kvinnliga-Hankablar
13. 2 Kvinnliga-Kvinnliga Trådar
14. 6 330 ohm motstånd
15. 1 100 ohm motstånd
Steg 2: Anslutning av temperaturgivare
Ovan finns också kabeldragning och MATLAB -kod för temperaturgivarens ingång.
Ledningarna från marken och 5V behöver bara köras till det negativa respektive positiva en gång för hela kortet. Härifrån kommer alla jordanslutningar från den negativa kolumnen och alla 5V -anslutningar kommer från den positiva kolumnen.
Koden nedan kan kopieras och klistras in för temperaturgivaren.
%% TEMPERATURSENSOR % För temperatursensorn använde vi följande källa tillsammans med
% EF230 webbplatsmaterial för att modifiera vår temperatursensor för att tillåta användare
% ingång och 3 LED -ljusutgångar med en graf.
Denna skiss skrevs av SparkFun Electronics, %med massor av hjälp från Arduino -samhället.
%Anpassad till MATLAB av Eric Davishahl.
%Besök https://learn.sparkfun.com/products/2 för SIK -information.
rensa allt, clc
tempPin = 'A0'; % Deklarerar det analoga stiftet som är anslutet till temperatursensorn
a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno');
% Definiera anonym funktion som omvandlar spänningen till temperaturen
tempCfromVolts = @(volt) (volt-0,5)*100;
samplingDuration = 30;
samplingInterval = 2; % Sekunder mellan temperaturavläsningar
%ställer in vektorn för provtagningstider
samplingTimes = 0: samplingInterval: samplingDuration;
%beräkna antalet prover baserat på varaktighet och intervall
numSamples = length (samplingTimes);
%fördela tempvariabler och variabler för antalet avläsningar som den kommer att lagra
tempC = nollor (numSamples, 1);
tempF = tempC;
% använder inmatningsdialogrutan för att lagra max och min sken temperaturer
dlg_prompts = {'Ange max temp', 'Ange min temp'};
dlg_title = 'Rälstemperaturintervall';
N = 22;
dlg_ans = inputdlg (dlg_prompts, dlg_title, [1, length (dlg_title)+N]);
% Lagra inmatningarna från användaren och visa att ingången spelades in
max_temp = str2double (dlg_ans {1})
min_temp = str2double (dlg_ans {2})
txt = sprintf ('Din inmatning har registrerats');
h = msgbox (txt);
vänta på (h);
% För loop för att läsa temperaturerna ett visst antal gånger.
för index = 1: numSamples
% Läs spänningen vid tempPin och lagra som variabel volt
volt = readVoltage (a, tempPin);
tempC (index) = tempCfromVolts (volt);
tempF (index) = tempC (index)*9/5+32; % Konvertera från Celsius till Fahrenheit
% Om uttalanden om specifika LED -lampor blinkar beroende på vilket villkor som är uppfyllt
om tempF (index)> = max_temp % Röd LED
writeDigitalPin (a, 'D13', 0);
paus (0,5);
writeDigitalPin (a, 'D13', 1);
paus (0,5);
writeDigitalPin (a, 'D13', 0);
elseif tempF (index)> = min_temp && tempF (index) <max_temp % Grön LED
writeDigitalPin (a, 'D11', 0);
paus (0,5);
writeDigitalPin (a, 'D11', 1);
paus (0,5);
writeDigitalPin (a, 'D11', 0);
elseif tempF (index) <= min_temp % Blå LED
writeDigitalPin (a, 'D12', 0);
paus (0,5);
writeDigitalPin (a, 'D12', 1);
paus (0,5);
writeDigitalPin (a, 'D12', 0);
slutet
% Visa temperaturerna när de mäts
fprintf ('Temperaturen vid %d sekunder är %5.2f C eller %5.2f F. / n', …
samplingTimes (index), tempC (index), tempF (index));
paus (samplingInterval) %fördröjning till nästa prov
slutet
% Plotta temperaturavläsningarna
Figur 1)
plot (samplingTimes, tempF, 'r-*')
xlabel ('Time (Seconds)')
ylabel ('Temperatur (F)')
title ('Temperaturavläsningar från röda brädet')
Steg 3: Temperatursensorutgång
Ovan är ledningarna och MATLAB -koden för temperaturgivarens utgång.
För detta projekt använde vi tre LED -lampor för utmatningen av vår temperatursensor. Vi använde en röd för om spåren var för heta, en blå om de var för kalla och en grön om de var däremellan.
Steg 4: Inmatning av regnvattenssensor
Ovan är ledningarna för regnvattensensorn och MATLAB -koden finns nedan.
%% Vattensensor
rensa allt, clc
a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno');
waterPin = 'A1';
vDry = 4,80; % Spänning när det inte finns något vatten
samplingDuration = 60;
samplingInterval = 2;
samplingTimes = 0: samplingInterval: samplingDuration;
numSamples = length (samplingTimes);
% För slinga att läsa spänningen under en viss tid (60 sekunder)
för index = 1: numSamples
volt2 = readVoltage (a, waterPin); % Läs spänning från vattenstift analog
% Om uttalande för att låta en summer om vatten detekteras. Spänningsfall = vatten
om volt2 <vDry
playTone (a, 'D09', 2400) % playTone -funktion från MathWorks
% Visa en varning för passagerare om vatten upptäcks
waitfor (warndlg ('Ditt tåg kan bli försenat på grund av vattenrisker'));
slutet
% Visa spänningen som den mäts av vattensensorn
fprintf ('Spänning vid %d sekunder är %5.4f V. / n', …
samplingTimes (index), volt2);
paus (samplingInterval)
slutet
Steg 5: Regnvattensensorutgång
Ovan är ledningarna för en summer som piper när för mycket vatten faller på banan. Koden för summern är inbäddad i koden för regnvatteninmatningen.
Steg 6: Inmatning av vibrationssensor
Ovan är ledningarna för vibrationssensorn. Vibrationssensorer kan vara viktiga för järnvägssystem vid fallande stenar på ett spår. MATLAB -koden publiceras nedan.
%% Vibration Sensorrensa alla, clc
PIEZO_PIN = 'A3'; % Deklarerar den analoga stift som är ansluten till vibrationssensorn a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno'); % Initierar tid och intervall för att mäta vibrationssamplingDuration = 30; % Seconds samplingInterval = 1;
samplingTimes = 0: samplingInterval: samplingDuration;
numSamples = length (samplingTimes);
% Genom att använda koden från följande källa ändrade vi den för att aktivera a
% lila LED om vibrationer detekteras.
% SparkFun Tinker Kit, RGB LED, skriven av SparkFun Electronics, % med mycket hjälp från Arduino -samhället
% Anpassad till MATLAB av Eric Davishahl
% Initierar RGB -stiftet
RED_PIN = 'D5';
GREEN_PIN = 'D6';
BLUE_PIN = 'D7';
% För slinga för att registrera spänningsförändringar från vibrationssensorn över en
% specifikt tidsintervall (30 sekunder)
för index = 1: numSamples
volt3 = readVoltage (a, PIEZO_PIN);
% Om uttalande för att tända en lila lysdiod om vibrationer detekteras
om volt3> 0,025
writeDigitalPin (a, RED_PIN, 1);
Skapa ett lila ljus
writeDigitalPin (a, GREEN_PIN, 0);
writeDigitalPin (a, BLUE_PIN, 1);
annars % Stäng av lysdioden om ingen vibration detekteras.
writeDigitalPin (a, RED_PIN, 0);
writeDigitalPin (a, GREEN_PIN, 0);
writeDigitalPin (a, BLUE_PIN, 0);
slutet
% Visa spänningen när den mäts.
fprintf ('Spänning vid %d sekunder är %5.4f V. / n', …
samplingTimes (index), volt3);
paus (samplingInterval)
slutet
% Stäng av ljuset när vibrationsmätningen är klar
writeDigitalPin (a, RED_PIN, 0);
writeDigitalPin (a, GREEN_PIN, 0);
writeDigitalPin (a, BLUE_PIN, 0);
Steg 7: Vibrationssensorutgång
Ovan är ledningarna för RBG LED -lampan som används. Ljuset lyser lila när vibrationer detekteras. MATLAB -koden för utmatningen är inbäddad i koden för ingången.
Steg 8: Slutsats
Efter att ha följt alla dessa steg bör du nu ha en arduino med förmågan att detektera temperatur, regnvatten och vibrationer. När man tittar på hur dessa sensorer fungerar i liten skala är det lätt att föreställa sig hur viktiga de kan vara för järnvägssystem i det moderna livet!
Rekommenderad:
Skydda dina idéer, skydda ditt arbete: 8 steg
Skydda dina idéer, skydda ditt arbete: Jag tappade data för några dagar sedan genom en datorkrasch. En dags arbete gick förlorat. :/ Jag sparar mina data i molnet för att förhindra en hårddiskfel. Jag använder en versioneringsprogramvara så att jag kan återställa äldre versioner av mitt arbete. Jag gör en säkerhetskopia varje dag, men den här gången
Väggfäste för iPad som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: 4 steg (med bilder)
Väggfäste för iPad Som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: På senare tid har jag ägnat ganska mycket tid åt att automatisera saker i och runt mitt hus. Jag använder Domoticz som min hemautomationsapplikation, se www.domoticz.com för mer information. I min sökning efter en instrumentpanelapplikation som visar all Domoticz -information tillsammans
Hur man gör en FALLDÖRR för att skydda din bas !!!: 6 steg
Hur man gör en TRAP -DÖRR för att skydda din bas !!!: Idag skulle vi lära dig hur du gör en fantastisk TRAP DOOR för att skydda din bas
Övertyga dig själv om att bara använda en 12V-till-AC-omriktare för LED-ljussträngar istället för att koppla om dem för 12V: 3 steg
Övertyga dig själv om att bara använda en 12V-till-AC-linjeomvandlare för LED-ljussträngar istället för att koppla om dem för 12V: Min plan var enkel. Jag ville klippa upp en väggdriven LED-ljussträng i bitar och sedan dra om den för att gå av 12 volt. Alternativet var att använda en kraftomvandlare, men vi vet alla att de är fruktansvärt ineffektiva, eller hur? Höger? Eller är de det?
Att använda Parallax Basic Stamp II för att ringa en dörrklocka på distans: 4 steg (med bilder)
Att använda Parallax Basic Stamp II för att ringa en dörrklocka på distans: Problemet? En hund som blir alldeles för upphetsad när dörrklockan ringer. Lösningen? Ring på dörren vid slumpmässiga tillfällen när ingen är där, och ingen svarar på den, för att motkonditionera hunden - för att bryta föreningen som en ringande dörrklocka e