Kazalo:

Uporaba senzorjev temperature, deževnice in vibracij na Arduinu za zaščito železnic: 8 korakov (s slikami)
Uporaba senzorjev temperature, deževnice in vibracij na Arduinu za zaščito železnic: 8 korakov (s slikami)

Video: Uporaba senzorjev temperature, deževnice in vibracij na Arduinu za zaščito železnic: 8 korakov (s slikami)

Video: Uporaba senzorjev temperature, deževnice in vibracij na Arduinu za zaščito železnic: 8 korakov (s slikami)
Video: Часть 3 — Аудиокнига Герберта Уэллса «Война миров» (книга 2 — главы 1–10) 2024, Julij
Anonim
Uporaba senzorjev temperature, deževnice in vibracij na Arduinu za zaščito železnic
Uporaba senzorjev temperature, deževnice in vibracij na Arduinu za zaščito železnic

V sodobni družbi povečanje števila potnikov v železniškem prometu pomeni, da morajo železniška podjetja narediti več za optimizacijo omrežij, da bi sledila povpraševanju. V tem projektu bomo v majhnem obsegu pokazali, kako lahko senzorji temperature, deževnice in vibracij na arduino plošči potencialno povečajo varnost potnikov.

Ta Instructable bo korak za korakom prikazal ožičenje senzorjev temperature, deževnice in vibracij na arduinu ter prikazal kodo MATLAB, potrebno za zagon teh senzorjev.

1. korak: Deli in materiali

1. Računalnik z nameščeno najnovejšo različico programa MATLAB

2. Arduino plošča

3. Temperaturni senzor

4. Senzor deževnice

5. Senzor vibracij

6. Rdeča LED luč

7. Modra LED luč

8. Zelena LED luč

9. RBG LED luč

10. Zvočni signal

11. 18 Moško-moške žice

12. 3 Žensko-moške žice

13. 2 Žensko-ženske žice

14. 6 330 ohmskih uporov

15. 1 100 ohmski upor

Korak: Ožičenje temperaturnega senzorja

Ožičenje temperaturnega senzorja
Ožičenje temperaturnega senzorja
Ožičenje temperaturnega senzorja
Ožičenje temperaturnega senzorja

Zgoraj je tudi ožičenje in koda MATLAB za vhod temperaturnega senzorja.

Ozemljitvene žice in 5V morajo biti napeljane le na negativno oziroma pozitivno le za celotno ploščo. Od tu naprej bodo vse ozemljitvene povezave prihajale iz negativnega stolpca, vse 5V povezave pa iz pozitivnega stolpca.

Spodnjo kodo je mogoče kopirati in prilepiti za temperaturni senzor.

%% TEMPERATURNI SENZOR % Za temperaturni senzor smo skupaj s tem uporabili naslednji vir

% Materiala spletnega mesta EF230 za spremembo našega temperaturnega senzorja, ki uporabniku omogoča

% vhoda in 3 LED izhodi svetlobe z grafom.

%To skico je napisal SparkFun Electronics, %z veliko pomoči skupnosti Arduino.

%MATLAB prilagodil Eric Davishahl.

%Obiščite https://learn.sparkfun.com/products/2 za informacije o SIK -u.

počisti vse, clc

tempPin = 'A0'; % Deklariranje analognega zatiča, priključenega na senzor temp

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

% Določite anonimno funkcijo, ki pretvori napetost v temperaturo

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

samplingDuration = 30;

samplingInterval = 2; % Sekunde med odčitki temperature

%nastavljen vektor časov vzorčenja

samplingTimes = 0: samplingInterval: samplingDuration;

%izračuna število vzorcev na podlagi trajanja in intervala

numSamples = dolžina (samplingTimes);

%vnaprej določi spremenljivke temp in spremenljivko za število odčitkov, ki jih bo shranil

tempC = ničle (numSamples, 1);

tempF = tempC;

% z uporabo pogovornega okna za vnos za shranjevanje najvišje in najnižje temperature tirnic

dlg_prompts = {'Vnesi največjo temperaturo', 'Vnesi najnižjo temperaturo'};

dlg_title = 'Intervali temperature železnice';

N = 22;

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

% Shranjevanje vhodov od uporabnika in prikaz, da je bil vnos posnet

max_temp = str2double (dlg_ans {1})

min_temp = str2double (dlg_ans {2})

txt = sprintf ('Vaš vnos je bil posnet');

h = sporočilo (txt);

počakajte (h);

% Zanka za branje temperatur določeno število krat.

za indeks = 1: numSamples

% Preberite napetost pri tempPin in jo shranite kot spremenljive volte

volts = readVoltage (a, tempPin);

tempC (indeks) = tempCfromVolts (volti);

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

% Če izjave o določenih LED lučkah utripajo, odvisno od tega, kateri pogoj je izpolnjen

če je tempF (indeks)> = max_temp % Rdeča LED

writeDigitalPin (a, 'D13', 0);

premor (0,5);

writeDigitalPin (a, 'D13', 1);

premor (0,5);

writeDigitalPin (a, 'D13', 0);

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

writeDigitalPin (a, 'D11', 0);

premor (0,5);

writeDigitalPin (a, 'D11', 1);

premor (0,5);

writeDigitalPin (a, 'D11', 0);

elseif tempF (indeks) <= min_temp % Modra LED

writeDigitalPin (a, 'D12', 0);

premor (0,5);

writeDigitalPin (a, 'D12', 1);

premor (0,5);

writeDigitalPin (a, 'D12', 0);

konec

% Prikažite temperature, ko se merijo

fprintf ('Temperatura pri %d sekundah je %5.2f C ali %5.2f F. / n',…

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

pause (samplingInterval) %zakasnitev do naslednjega vzorca

konec

% Načrtovanje odčitkov temperature

slika (1)

ploskev (vzorčenjeTimes, tempF, 'r-*')

xlabel ('Čas (sekunde)')

ylabel ('Temperatura (F)')

title ('Odčitki temperature iz RedBoarda')

3. korak: Izhod temperaturnega senzorja

Izhod temperaturnega senzorja
Izhod temperaturnega senzorja
Izhod temperaturnega senzorja
Izhod temperaturnega senzorja

Zgoraj je ožičenje in koda MATLAB za izhod temperaturnega senzorja.

Za ta projekt smo uporabili tri LED luči za izhod našega temperaturnega senzorja. Če so bile vroče, smo uporabili rdečo, če je bilo prehladno, in zeleno, če je bilo vmes.

4. korak: Vhod senzorja deževnice

Vhod senzorja deževnice
Vhod senzorja deževnice
Vhod senzorja deževnice
Vhod senzorja deževnice

Zgoraj je ožičenje senzorja deževnice, spodaj pa je oznaka MATLAB.

%% Senzor vode

počisti vse, clc

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

waterPin = 'A1';

vDry = 4,80; % Napetost, ko ni vode

samplingDuration = 60;

samplingInterval = 2;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = dolžina (samplingTimes);

% Zanka za branje napetosti za določen čas (60 sekund)

za indeks = 1: numSamples

volt2 = readVoltage (a, waterPin); % Odčitajte napetost iz analognega vodnega zatiča

% Če se oglasi izjava o zvočnem signalu, če zazna vodo. Padec napetosti = voda

če je volt2 <vDry

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

% Prikažite opozorilo potnikom, če zazna vodo

waitfor (warndlg ('Vaš vlak lahko zamuja zaradi nevarnosti vode'));

konec

% Prikažite napetost, kot jo meri senzor vode

fprintf ('Napetost pri %d sekundah je %5,4f V. / n',…

samplingTimes (indeks), volt2);

premor (vzorčenjeInterval)

konec

5. korak: Izhod senzorja deževnice

Izhod senzorja deževnice
Izhod senzorja deževnice

Zgoraj je ožičenje za zvočni signal, ki piska vsakič, ko na stezo pade preveč vode. Koda za zvočni signal je vdelana v kodo za vnos deževnice.

6. korak: Vhod senzorja vibracij

Vhod senzorja vibracij
Vhod senzorja vibracij
Vhod senzorja vibracij
Vhod senzorja vibracij

Zgoraj je ožičenje za senzor vibracij. Tipala vibracij so lahko pomembna za železniške sisteme v primeru padanja kamenja na tiru. Koda MATLAB je objavljena spodaj.

%% Vibracijski senzorJedno vse, clc

PIEZO_PIN = 'A3'; % Razglasitev analognega zatiča, priključenega na senzor vibracij a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno'); % Začetek časa in intervala za merjenje vzorčenja vibracijDraje = 30; % Sekund samplingInterval = 1;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = dolžina (samplingTimes);

% S kodo iz naslednjega vira smo jo spremenili tako, da je vklopila a

% vijolična LED, če zaznate vibracije.

% SparkFun Tinker Kit, RGB LED, avtor SparkFun Electronics, % z veliko pomoči skupnosti Arduino

% MATLAB prilagodil Eric Davishahl

% Začetek zatiča RGB

RED_PIN = 'D5';

GREEN_PIN = 'D6';

BLUE_PIN = 'D7';

% For zanka za snemanje sprememb napetosti senzorja vibracij nad a

% določen časovni interval (30 sekund)

za indeks = 1: numSamples

volt3 = readVoltage (a, PIEZO_PIN);

% Izjava o vklopu vijolične LED diode, če zaznate vibracije

če je volt3> 0,025

writeDigitalPin (a, RED_PIN, 1);

% Ustvarjanje vijolične svetlobe

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 1);

else % Izklopite LED, če ni zaznanih vibracij.

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

konec

% Prikažite napetost, ko se meri.

fprintf ('Napetost pri %d sekundah je %5,4f V. / n',…

samplingTimes (indeks), volt3);

premor (vzorčenjeInterval)

konec

% Ko merite vibracije, izključite svetlobo

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

7. korak: Izhod senzorja vibracij

Izhod senzorja vibracij
Izhod senzorja vibracij

Zgoraj je ožičenje za uporabljeno LED luč RBG. Ko se zaznajo vibracije, bo luč zasvetila vijolično. Koda MATLAB za izhod je vdelana v kodo za vhod.

8. korak: Zaključek

Po vseh teh korakih bi morali imeti arduino z možnostjo zaznavanja temperature, deževnice in vibracij. Med ogledom, kako ti senzorji delujejo v majhnem obsegu, si je enostavno predstavljati, kako pomembni bi lahko bili za železniške sisteme v sodobnem življenju!

Priporočena: