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, Srpanj
Anonim
Korištenje osjetnika temperature, kišnice i vibracija na Arduinu za zaštitu željeznica
Korištenje osjetnika temperature, kišnice i vibracija na Arduinu za zaštitu željeznica

U suvremenom društvu povećanje broja željezničkih putnika znači da željezničke tvrtke moraju učiniti više kako bi optimizirale mreže kako bi bile u skladu s 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 prikazati ožičenje senzora temperature, kišnice i vibracija na arduinu, kao i prikazati MATLAB kôd potreban za rad ovih senzora.

Korak 1: Dijelovi i materijali

1. Računalo s instaliranom najnovijom verzijom programa MATLAB

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. Zvučni signal

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

Gore se nalazi ožičenje i MATLAB kod za ulaz osjetnika temperature.

Žice od uzemljenja i 5V potrebno je samo jednom provesti na negativnu i pozitivnu stranu za cijelu ploču. Od sada nadalje, svi uzemljeni spojevi dolazit će iz negativnog stupa, a svi 5V spojevi iz pozitivnog stupca.

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

%% TEMPERATURNI SENZOR % Za senzor temperature upotrijebili smo sljedeći izvor zajedno s

% EF230 materijal web stranice za izmjenu našeg osjetnika temperature kako bi se omogućilo korisniku

% ulaza i 3 LED svjetlosna izlaza s grafikonom.

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

%Prilagodio MATLAB -u Eric Davishahl.

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

obriši sve, clc

tempPin = 'A0'; % Deklariranje analognog pina spojenog na senzor 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čitanja temperature

%postavljen vektor vremena uzorkovanja

samplingTimes = 0: samplingInterval: samplingDuration;

%izračunati broj uzoraka na temelju trajanja i intervala

numSamples = length (samplingTimes);

%unalolocate temp varijable i varijabla za broj očitanja koja će pohraniti

tempC = nule (numSamples, 1);

tempF = tempC;

% pomoću dijaloškog okvira za unos za pohranu maksimalnih i minimalnih temperatura tračnica

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

dlg_title = 'Intervali temperature šine';

N = 22;

dlg_ans = inputdlg (dlg_prompts, dlg_title, [1, length (dlg_title)+N]);

% Pohranjivanje ulaza od korisnika i prikaz da je ulaz snimljen

max_temp = str2dvostruki (dlg_ans {1})

min_temp = str2double (dlg_ans {2})

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

h = poruka (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

volti = readVoltage (a, tempPin);

tempC (index) = tempCfromVolts (volti);

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

% Ako izjave o određenim LED svjetlima trepere ovisno o tome koji je uvjet ispunjen

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

writeDigitalPin (a, 'D13', 0);

stanka (0,5);

writeDigitalPin (a, 'D13', 1);

stanka (0,5);

writeDigitalPin (a, 'D13', 0);

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

writeDigitalPin (a, 'D11', 0);

stanka (0,5);

writeDigitalPin (a, 'D11', 1);

stanka (0,5);

writeDigitalPin (a, 'D11', 0);

elseif tempF (index) <= min_temp % Plava LED

writeDigitalPin (a, 'D12', 0);

stanka (0,5);

writeDigitalPin (a, 'D12', 1);

stanka (0,5);

writeDigitalPin (a, 'D12', 0);

kraj

% Prikažite temperature dok se mjere

fprintf ('Temperatura u %d sekundama je %5,2f C ili %5,2f F. / n',…

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

pauza (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 s RedBoarda')

Korak 3: Izlaz osjetnika temperature

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

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

Za ovaj projekt koristili smo tri LED svjetla za izlaz našeg osjetnika temperature. Koristili smo crvenu za 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 dolje.

%% 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 iz 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š vlak može kasniti zbog opasnosti od vode'));

kraj

% Prikažite napon kako ga mjeri senzor vode

fprintf ('Napon u %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 osjetnika vibracija

Ulaz senzora vibracija
Ulaz senzora vibracija
Ulaz senzora vibracija
Ulaz senzora vibracija

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

%% Osjetnik vibracija Jasno sve, clc

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

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = length (samplingTimes);

% Pomoću koda 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

% Prilagodio MATLAB -u Eric Davishahl

% Pokretanje RGB pina

RED_PIN = 'D5';

GREEN_PIN = 'D6';

BLUE_PIN = 'D7';

% For petlja za snimanje promjena napona senzora vibracija preko a

% određeni vremenski interval (30 sekundi)

za indeks = 1: numSamples

volt3 = readVoltage (a, PIEZO_PIN);

% If izjava za uključivanje 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 mjeri.

fprintf ('Napon u %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 osjetnika vibracija

Izlaz senzora vibracija
Izlaz senzora vibracija

Iznad je ožičenje za korišteno RBG LED svjetlo. Svjetlo će svijetliti ljubičasto kad se otkriju vibracije. MATLAB kôd za izlaz ugrađen je 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 sustave u suvremenom životu!

Preporučeni: