Sadržaj:

Korištenje senzora temperature, kišnice i vibracija na Arduinu za zaštitu željeznica: 8 koraka (sa slikama)
Korištenje senzora temperature, kišnice i vibracija na Arduinu za zaštitu željeznica: 8 koraka (sa slikama)

Video: Korištenje senzora temperature, kišnice i vibracija na Arduinu za zaštitu željeznica: 8 koraka (sa slikama)

Video: Korištenje senzora temperature, kišnice i vibracija na Arduinu za zaštitu željeznica: 8 koraka (sa slikama)
Video: New Quantum Gravity Sensor Can Look Under Earth's Surface in Unprecedented Detail 2024, Novembar
Anonim
Korištenje senzora temperature, kišnice i vibracija na Arduinu za zaštitu željeznica
Korištenje senzora temperature, kišnice i vibracija na Arduinu za zaštitu željeznica

U savremenom društvu, povećanje broja putnika u željeznici znači da željezničke kompanije moraju učiniti više na optimizaciji mreža kako bi bile u skladu sa potražnjom. U ovom projektu pokazat ćemo u malom opsegu kako senzori temperature, kišnice i vibracije na arduino ploči mogu potencijalno pomoći u povećanju sigurnosti putnika.

Ovaj Instructable će korak po korak pokazati ožičenje senzora temperature, kišnice i vibracije na arduinu, kao i prikazati MATLAB kôd potreban za pokretanje ovih senzora.

Korak 1: Dijelovi i materijali

1. Računar sa instaliranom najnovijom verzijom MATLAB -a

2. Arduino ploča

3. Senzor temperature

4. Senzor kišnice

5. Senzor vibracija

6. Crveno LED svjetlo

7. Plavo LED svjetlo

8. Zeleno LED svjetlo

9. RBG LED svjetlo

10. Zujalica

11. 18 Muško-muške žice

12. 3 Žensko-Muške žice

13. 2 Žensko-ženske žice

14. 6 330 ohmskih otpornika

15. 1 100 ohmski otpornik

Korak 2: Ožičenje osjetnika temperature

Ožičenje osjetnika temperature
Ožičenje osjetnika temperature
Ožičenje osjetnika temperature
Ožičenje osjetnika temperature

Iznad je ožičenje i MATLAB kod za ulaz osjetnika temperature.

Žice od uzemljenja i 5V potrebno je samo jednom provesti na negativne i pozitivne strane za cijelu ploču. Od sada pa nadalje, svi uzemljeni spojevi dolazit će iz negativnog stupa, a svi 5V priključci iz pozitivnog stupa.

Donji kôd se može kopirati i zalijepiti za senzor temperature.

%% TEMPERATURNI SENZOR % Za senzor temperature koristili smo sljedeći izvor zajedno sa

% EF230 materijal za web stranicu za izmjenu našeg senzora temperature kako bi omogućio korisniku

% ulaza i 3 LED svjetlosna izlaza sa grafikonom.

%Ovu skicu je napisala SparkFun Electronics, %uz puno pomoći zajednice Arduino.

%Prilagođeno MATLAB -u od Eric Davishahla.

%Posjetite https://learn.sparkfun.com/products/2 za informacije o SIK -u.

obriši sve, clc

tempPin = 'A0'; % Deklarisanje analognog pina povezanog sa senzorom temperature

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

% Definirajte anonimnu funkciju koja pretvara napon u temperaturu

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

samplingDuration = 30;

samplingInterval = 2; % Sekunde između očitavanja temperature

%postavljen vektor vremena uzorkovanja

samplingTimes = 0: samplingInterval: samplingDuration;

%izračunati broj uzoraka na osnovu trajanja i intervala

numSamples = length (samplingTimes);

%unaprijed dodijeli temp varijable i varijablu za broj očitanja koja će pohraniti

tempC = nule (numSamples, 1);

tempF = tempC;

% koristeći dijaloški okvir za unos za pohranjivanje maksimalnih i minimalnih temperatura šine

dlg_prompts = {'Unesite maksimalnu temperaturu', 'Unesite minimalnu temperaturu'};

dlg_title = 'Intervali temperature šine';

N = 22;

dlg_ans = inputdlg (dlg_prompti, dlg_title, [1, dužina (dlg_title)+N]);

% Pohranjivanje unosa od korisnika i prikaz da je ulaz snimljen

max_temp = str2dvostruki (dlg_ans {1})

min_temp = str2dvostruki (dlg_ans {2})

txt = sprintf ('Vaš unos je snimljen');

h = msgbox (txt);

waitfor (h);

% For petlja za očitavanje temperatura određeni broj puta.

za indeks = 1: numSamples

% Očitajte napon na tempPin i pohranite ga kao promjenjive volte

volts = readVoltage (a, tempPin);

tempC (indeks) = tempCfromVolts (volti);

tempF (indeks) = tempC (indeks)*9/5+32; % Pretvori iz Celzijusa u Fahrenheit

% Ako naredbe za stvaranje specifičnih LED lampica trepere u zavisnosti od toga koji je uslov ispunjen

ako je tempF (indeks)> = max_temp % Crvena LED

writeDigitalPin (a, 'D13', 0);

pauza (0,5);

writeDigitalPin (a, 'D13', 1);

pauza (0,5);

writeDigitalPin (a, 'D13', 0);

elseif tempF (index)> = min_temp && tempF (index) <max_temp % Zelena LED dioda

writeDigitalPin (a, 'D11', 0);

pauza (0,5);

writeDigitalPin (a, 'D11', 1);

pauza (0,5);

writeDigitalPin (a, 'D11', 0);

elseif tempF (index) <= min_temp % Plava LED

writeDigitalPin (a, 'D12', 0);

pauza (0,5);

writeDigitalPin (a, 'D12', 1);

pauza (0,5);

writeDigitalPin (a, 'D12', 0);

kraj

% Prikažite temperature dok se mjere

fprintf ('Temperatura na %d sekundama je %5.2f C ili %5.2f F. / n',…

samplingTimes (indeks), tempC (indeks), tempF (indeks));

pause (samplingInterval) %kašnjenja do sljedećeg uzorka

kraj

% Iscrtavanje očitanja temperature

slika (1)

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

xlabel ('Vrijeme (sekunde)')

ylabel ('Temperatura (F)')

title ('Očitavanja temperature sa RedBoarda')

Korak 3: Izlaz senzora temperature

Izlaz senzora temperature
Izlaz senzora temperature
Izlaz senzora temperature
Izlaz senzora temperature

Iznad je ožičenje i MATLAB kôd za izlaz senzora temperature.

Za ovaj projekt koristili smo tri LED svjetla za izlaz našeg senzora temperature. Koristili smo crvenu boju ako su staze prevruće, plavu ako je prehladna i zelenu ako su između.

Korak 4: Ulaz senzora za kišnicu

Ulaz senzora za kišnicu
Ulaz senzora za kišnicu
Ulaz senzora za kišnicu
Ulaz senzora za kišnicu

Iznad je ožičenje za senzor kišnice, a MATLAB kôd je postavljen ispod.

%% Senzor vode

obriši sve, clc

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

waterPin = 'A1';

vDry = 4,80; % Napon kada nema vode

samplingDuration = 60;

samplingInterval = 2;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = length (samplingTimes);

% For petlja za očitavanje napona određeno vrijeme (60 sekundi)

za indeks = 1: numSamples

volt2 = readVoltage (a, waterPin); % Očitavanje napona sa analognog vodiča

% Ako izjava oglasi zvučni signal ako se otkrije voda. Pad napona = voda

ako je volt2 <vDry

playTone (a, 'D09', 2400) % funkcija playTone iz MathWorksa

% Prikažite upozorenje putnicima ako se otkrije voda

waitfor (warndlg ('Vaš voz može kasniti zbog opasnosti od vode'));

kraj

% Prikažite napon kako ga mjeri senzor vode

fprintf ('Napon na %d sekundi je %5,4f V. / n',…

samplingTimes (indeks), volt2);

pauza (samplingInterval)

kraj

Korak 5: Izlaz senzora za kišnicu

Izlaz senzora za kišnicu
Izlaz senzora za kišnicu

Iznad je ožičenje za zujalicu koja se oglašava kad god previše vode padne na stazu. Kôd za zujalicu ugrađen je u kôd za ulaz kišnice.

Korak 6: Ulaz senzora vibracije

Ulaz senzora vibracije
Ulaz senzora vibracije
Ulaz senzora vibracije
Ulaz senzora vibracije

Iznad je ožičenje senzora vibracija. Senzori vibracija mogu biti važni za željezničke sisteme u slučaju pada kamenja na kolosijek. MATLAB kôd je objavljen ispod.

%% Osjetnik vibracija Jasno sve, klc

PIEZO_PIN = 'A3'; % Deklariranje analognog pina spojenog na senzor vibracije a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno'); % Pokretanje vremena i intervala za merenje uzorkovanja vibracijaDrajanje = 30; % Sekundi samplingInterval = 1;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = length (samplingTimes);

% Koristeći kôd iz sljedećeg izvora izmijenili smo ga tako da uključuje a

% ljubičasta LED ako se otkriju vibracije.

% SparkFun Tinker Kit, RGB LED, napisao SparkFun Electronics, % uz puno pomoći zajednice Arduino

% Prilagođeno MATLAB -u od Eric Davishahla

% Inicijalizacija RGB pina

RED_PIN = 'D5';

GREEN_PIN = 'D6';

BLUE_PIN = 'D7';

% For petlja za snimanje promene napona sa senzora vibracija preko a

% određeni vremenski interval (30 sekundi)

za indeks = 1: numSamples

volt3 = readVoltage (a, PIEZO_PIN);

% If izjava o uključivanju ljubičaste LED diode ako se otkriju vibracije

ako je volt3> 0,025

writeDigitalPin (a, RED_PIN, 1);

% Stvaranje ljubičastog svjetla

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 1);

else % Isključite LED ako se ne otkriju vibracije.

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

kraj

% Prikaz napona kako se meri.

fprintf ('Napon na %d sekundi je %5,4f V. / n',…

samplingTimes (indeks), volt3);

pauza (samplingInterval)

kraj

% Ugasite svjetlo kada se vrše mjerenja vibracija

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

Korak 7: Izlaz senzora vibracije

Izlaz senzora vibracije
Izlaz senzora vibracije

Iznad je ožičenje za RBG LED svjetlo koje se koristi. Svjetlo će svijetliti ljubičasto kada se otkriju vibracije. MATLAB kôd za izlaz je ugrađen u kôd za ulaz.

Korak 8: Zaključak

Nakon što slijedite sve ove korake, sada biste trebali imati arduino sa sposobnošću otkrivanja temperature, kišnice i vibracija. Gledajući kako ti senzori rade u malim razmjerima, lako je zamisliti koliko bi mogli biti vitalni za željezničke sisteme u savremenom životu!

Preporučuje se: