Inhoudsopgave:
- Stap 1: Onderdelen en materialen
- Stap 2: Temperatuursensorbedrading
- Stap 3: Uitgang temperatuursensor
- Stap 4: Invoer regenwatersensor
- Stap 5: Uitgang regenwatersensor
- Stap 6: Ingang trillingssensor
- Stap 7: Uitgang trillingssensor
- Stap 8: Conclusie
Video: Temperatuur-, regenwater- en trillingssensoren op een Arduino gebruiken om spoorwegen te beschermen - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
In de huidige samenleving betekent een toename van treinreizigers dat spoorwegmaatschappijen meer moeten doen om netwerken te optimaliseren om aan de vraag te kunnen voldoen. In dit project laten we op kleine schaal zien hoe temperatuur-, regenwater- en trillingssensoren op een arduino-bord mogelijk kunnen helpen de veiligheid van passagiers te vergroten.
Deze Instructable toont stap voor stap de bedrading voor de temperatuur-, regenwater- en trillingssensoren op de Arduino en toont de MATLAB-code die nodig is om deze sensoren uit te voeren.
Stap 1: Onderdelen en materialen
1. Een computer waarop de nieuwste versie van MATLAB is geïnstalleerd
2. Arduino-bord
3. Temperatuursensor
4. Regenwatersensor
5. Trillingssensor
6. Rood LED-licht
7. Blauw LED-licht
8. Groen LED-licht
9. RBG LED-licht
10. Zoemer
11. 18 mannelijke-mannelijke draden
12. 3 vrouwelijk-mannelijke draden
13. 2 Vrouwelijk-Vrouwelijke Draden
14. 6 weerstanden van 330 ohm
15. 1 100 ohm weerstand
Stap 2: Temperatuursensorbedrading
Hierboven vindt u ook de bedrading en MATLAB-code voor de ingang van de temperatuursensor.
De draden van aarde en 5V hoeven voor het hele bord slechts één keer naar respectievelijk negatief en positief te worden geleid. Vanaf hier komen alle aardverbindingen uit de negatieve kolom en komen eventuele 5V-verbindingen uit de positieve kolom.
Onderstaande code kan worden gekopieerd en geplakt voor de temperatuursensor.
%% TEMPERATUURSENSOR % Voor de temperatuursensor hebben we de volgende bron gebruikt samen met:
% EF230 websitemateriaal om onze temperatuursensor aan te passen zodat de gebruiker
% input en 3 LED-lichtuitgangen met een grafiek.
%Deze schets is geschreven door SparkFun Electronics, %met veel hulp van de Arduino-gemeenschap.
Aangepast aan MATLAB door Eric Davishahl.
%Bezoek https://learn.sparkfun.com/products/2 voor SIK-informatie.
alles wissen, clc
tempPin = 'A0'; % De analoge pin die op de temperatuursensor is aangesloten aangeven
a=arduino('/dev/tty.usbserial-DA017PNO', 'uno');
% Definieer anonieme functie die de spanning omzet in temperatuur
tempCfromVolts = @(volt) (volt-0,5)*100;
bemonsteringsduur = 30;
bemonsteringsinterval = 2; % Seconden tussen temperatuurmetingen
%vector van bemonsteringstijden instellen
samplingTimes = 0:samplingInterval:samplingDuration;
%bereken het aantal monsters op basis van de duur en het interval
numSamples = lengte (samplingTimes);
%vooraf toewijzen van tijdelijke variabelen en variabele voor het aantal metingen dat het zal opslaan
tempC = nullen (numSamples, 1);
tempF = tempC;
% via invoerdialoogvenster om max. en min. railtemperaturen op te slaan
dlg_prompts = {'Voer Max Temp in', 'Voer Min Temp in'};
dlg_title = 'Spoortemperatuurintervallen';
N=22;
dlg_ans = inputdlg(dlg_prompts, dlg_title, [1, lengte(dlg_title)+N]);
% De invoer van de gebruiker opslaan en weergeven dat de invoer is opgenomen
max_temp = str2double(dlg_ans{1})
min_temp = str2double(dlg_ans{2})
txt = sprintf('Je invoer is geregistreerd');
h=msgbox(txt);
wachten op (h);
% For-lus om de temperaturen een bepaald aantal keren uit te lezen.
voor index = 1:numSamples
% Lees de spanning bij tempPin en sla op als variabele volt
volt = leesVoltage (a, tempPin);
tempC(index) = tempCfromVolts(volt);
tempF(index) = tempC(index)*9/5+32; % Converteren van Celsius naar Fahrenheit
% Als verklaringen om specifieke LED-lampjes te laten knipperen, afhankelijk van aan welke voorwaarde is voldaan
if tempF(index) >= max_temp % Rode LED
writeDigitalPin(a, 'D13', 0);
pauze (0.5);
writeDigitalPin(a, 'D13', 1);
pauze (0.5);
writeDigitalPin(a, 'D13', 0);
elseif tempF(index) >= min_temp && tempF(index) < max_temp % Groene LED
writeDigitalPin(a, 'D11', 0);
pauze (0.5);
writeDigitalPin(a, 'D11', 1);
pauze (0.5);
writeDigitalPin(a, 'D11', 0);
elseif tempF(index) <= min_temp % Blauwe LED
writeDigitalPin(a, 'D12', 0);
pauze (0.5);
writeDigitalPin(a, 'D12', 1);
pauze (0.5);
writeDigitalPin(a, 'D12', 0);
einde
% Geef de temperaturen weer zoals ze worden gemeten
fprintf('Temperatuur op %d seconden is %5.2f C of %5.2f F.\n', …
samplingTimes(index), tempC(index), tempF(index));
pauze(samplingInterval) %vertraging tot volgende sample
einde
% De temperatuurmetingen plotten
Figuur 1)
plot(samplingTimes, tempF, 'r-*')
xlabel('Tijd (Seconden)')
ylabel('Temperatuur (F)')
title('Temperatuurmetingen van het RedBoard')
Stap 3: Uitgang temperatuursensor
Hierboven vindt u de bedrading en MATLAB-code voor de uitgang van de temperatuursensor.
Voor dit project hebben we drie LED-lampjes gebruikt voor de uitgang van onze temperatuursensor. We gebruikten een rode voor als de tracks te warm waren, een blauwe als ze te koud waren en een groene als ze er tussenin zaten.
Stap 4: Invoer regenwatersensor
Hierboven staat de bedrading voor de regenwatersensor en de MATLAB-code staat hieronder.
%% Watersensor
alles wissen, clc
a=arduino('/dev/tty.usbserial-DA017PNO', 'uno');
waterPin = 'A1';
vDroog = 4,80; % Spanning wanneer er geen water aanwezig is
bemonsteringsduur = 60;
bemonsteringsinterval = 2;
samplingTimes = 0:samplingInterval:samplingDuration;
numSamples = lengte (samplingTimes);
% For-lus om de spanning gedurende een bepaalde tijd (60 seconden) te lezen
voor index = 1:numSamples
volt2 = leesVoltage (a, waterPin); % Lees spanning van waterpen analoog
% If-statement om een zoemer te laten klinken als er water wordt gedetecteerd. Spanningsval = water
als volt2 < vDry
playTone(a, 'D09', 2400) % playTone-functie van MathWorks
% Een waarschuwing voor passagiers weergeven als er water wordt gedetecteerd
waitfor(warndlg('Uw trein kan vertraging oplopen vanwege waterhindernissen'));
einde
% Geef de spanning weer zoals deze wordt gemeten door de watersensor
fprintf('Spanning op %d seconden is %5.4f V.\n', …
samplingTimes (index), volt2);
pauze(samplingInterval)
einde
Stap 5: Uitgang regenwatersensor
Hierboven bevindt zich de bedrading voor een zoemer die piept wanneer er te veel water op de baan valt. De code voor de zoemer is ingebed in de code voor de regenwaterinvoer.
Stap 6: Ingang trillingssensor
Hierboven ziet u de bedrading voor de trillingssensor. Trillingssensoren kunnen voor spoorwegsystemen van belang zijn bij vallend gesteente op een spoor. De MATLAB-code staat hieronder.
%% Trillingssensorwis alles, clc
PIEZO_PIN = 'A3'; % De analoge pin die is aangesloten op de trillingssensor declareren a=arduino('/dev/tty.usbserial-DA017PNO', 'uno'); % Initialiseren van de tijd en het interval voor het meten van vibratiebemonsteringDuration = 30; % Seconden samplingInterval = 1;
samplingTimes = 0:samplingInterval:samplingDuration;
numSamples = lengte (samplingTimes);
% Met behulp van de code van de volgende bron hebben we deze aangepast om een
% paarse led als trilling wordt gedetecteerd.
% SparkFun Tinker Kit, RGB LED, geschreven door SparkFun Electronics, % met veel hulp van de Arduino-gemeenschap
% Aangepast aan MATLAB door Eric Davishahl
% De RGB-pin initialiseren
RED_PIN = 'D5';
GROENE_PIN = 'D6';
BLAUWE_PIN = 'D7';
% For-lus om spanningsveranderingen van de trillingssensor over a. te registreren
% specifiek tijdsinterval (30 seconden)
voor index = 1:numSamples
volt3 = leesVoltage (a, PIEZO_PIN);
% If-instructie om een paarse LED in te schakelen als trilling wordt gedetecteerd
als volt3>0,025
writeDigitalPin(a, RED_PIN, 1);
% Een paars licht creëren
writeDigitalPin(a, GROENE_PIN, 0);
writeDigitalPin (a, BLAUWE_PIN, 1);
else % Schakel de LED uit als er geen trilling wordt gedetecteerd.
writeDigitalPin(a, RED_PIN, 0);
writeDigitalPin(a, GROENE_PIN, 0);
writeDigitalPin (a, BLAUWE_PIN, 0);
einde
% Geef de spanning weer zoals deze wordt gemeten.
fprintf('Spanning op %d seconden is %5.4f V.\n', …
samplingTimes(index), volt3);
pauze(samplingInterval)
einde
% Licht uitgeschakeld wanneer het meten van trillingen is voltooid
writeDigitalPin(a, RED_PIN, 0);
writeDigitalPin(a, GROENE_PIN, 0);
writeDigitalPin (a, BLAUWE_PIN, 0);
Stap 7: Uitgang trillingssensor
Hierboven is de bedrading voor de RBG LED lamp gebruikt. Het licht zal paars oplichten wanneer trillingen worden gedetecteerd. De MATLAB-code voor de uitvoer is ingebed in de code voor de invoer.
Stap 8: Conclusie
Nadat je al deze stappen hebt gevolgd, zou je nu een arduino moeten hebben met de mogelijkheid om temperatuur, regenwater en trillingen te detecteren. Als je ziet hoe deze sensoren op kleine schaal werken, kun je je gemakkelijk voorstellen hoe belangrijk ze in het moderne leven voor spoorwegsystemen kunnen zijn!
Aanbevolen:
Aan de slag met draadloze temperatuur- en trillingssensoren met groot bereik: 7 stappen
Aan de slag met draadloze temperatuur- en trillingssensoren met groot bereik: Soms zijn trillingen de oorzaak van ernstige problemen in veel toepassingen. Van machineassen en lagers tot de prestaties van de harde schijf, trillingen veroorzaken schade aan de machine, vroegtijdige vervanging, lage prestaties en veroorzaken een grote aanslag op de nauwkeurigheid. Toezicht houden
Hoe de GPIO-pinnen en Avrdude van een Raspberry Pi te gebruiken om DIMP 2 of DA PIMP te Bit-bang-programma te gebruiken 2: 9 stappen
Hoe de GPIO-pinnen van een Raspberry Pi en Avrdude te gebruiken voor Bit-bang-programma DIMP 2 of DA PIMP 2: Dit zijn stapsgewijze instructies voor het gebruik van een Raspberry Pi en het gratis open-source commando avrdude to bit-bang -programmeer een DIMP 2 of DA PIMP 2. Ik neem aan dat je bekend bent met je Raspberry Pi en de LINUX-opdrachtregel. Je hoeft niet
Een STM32 gebruiken als een Arduino-zelfstudie - STM32F103C8: 5 stappen:
Een STM32 gebruiken als een Arduino-zelfstudie | STM32F103C8: Hé, wat is er, jongens! Akarsh hier van CETech. In de volgende tutorial zullen we kijken naar de verschillende microcontrollers die door STM worden aangeboden, zoals de STM32F103C8, STM32F030F4 en STM8S103F3. We zullen deze micro's met elkaar vergelijken, samen met
How To: een IPCop Virtual Machine-firewall instellen om uw Windows-host te beschermen (gratis!): 5 stappen
Procedure: een IPCop Virtual Machine-firewall instellen om uw Windows-host te beschermen (gratis!): Samenvatting: Het doel van dit project is om IpCop (gratis Linux-distributie) in een virtuele machine te gebruiken om een Windows-hostsysteem op elk netwerk te beschermen. IpCop is een zeer krachtige op Linux gebaseerde firewall met geavanceerde functies zoals: VPN, NAT, Intrusion Det
Hoe een gitaar te beschermen: 7 stappen
Een gitaar afschermen: Een gitaar afschermen is de beste manier om een deel van het geluid van single-coil pickups te dempen. Sheilding betekent dat je een soort krachtveld rond de interne elektronica van je gitaren maakt. Coil pickups fungeren bijna als een antenne en pakt andere ele