Sisukord:

Temperatuuri, vihmavee ja vibratsiooni andurite kasutamine Arduino raudteede kaitsmiseks: 8 sammu (koos piltidega)
Temperatuuri, vihmavee ja vibratsiooni andurite kasutamine Arduino raudteede kaitsmiseks: 8 sammu (koos piltidega)

Video: Temperatuuri, vihmavee ja vibratsiooni andurite kasutamine Arduino raudteede kaitsmiseks: 8 sammu (koos piltidega)

Video: Temperatuuri, vihmavee ja vibratsiooni andurite kasutamine Arduino raudteede kaitsmiseks: 8 sammu (koos piltidega)
Video: В Антарктида се Случва Нещо Необяснимо 2024, Juuli
Anonim
Raudtee kaitsmiseks temperatuuri, vihmavee ja vibratsiooni andurite kasutamine Arduino's
Raudtee kaitsmiseks temperatuuri, vihmavee ja vibratsiooni andurite kasutamine Arduino's

Tänapäeva ühiskonnas tähendab rongireisijate arvu suurenemine seda, et raudtee-ettevõtted peavad nõudlusega sammu pidamiseks võrgustike optimeerimiseks rohkem ära tegema. Selles projektis näitame väikeses mahus, kuidas temperatuuri, vihmavee ja vibratsiooni andurid arduino tahvlil võivad potentsiaalselt aidata reisijate ohutust suurendada.

See juhend sisaldab samm-sammult arduino temperatuuri, vihmavee- ja vibratsiooniandurite juhtmestikku ning näitab nende andurite käitamiseks vajalikku MATLAB-koodi.

Samm: osad ja materjalid

1. Arvuti, kuhu on installitud MATLABi uusim versioon

2. Arduino juhatus

3. Temperatuuri andur

4. Vihmavee andur

5. Vibratsiooniandur

6. Punane LED -tuli

7. Sinine LED -tuli

8. Roheline LED -tuli

9. RBG LED -tuli

10. Sumin

11. 18 Mees-mees juhtmed

12. 3 Nais-mees juhtmed

13. 2 Naissoost traati

14. 6 330 oomi takistid

15. 1 100 oomi takisti

Samm: temperatuurianduri juhtmestik

Temperatuurianduri juhtmestik
Temperatuurianduri juhtmestik
Temperatuurianduri juhtmestik
Temperatuurianduri juhtmestik

Eespool on ka temperatuurianduri sisendi juhtmestik ja MATLAB -kood.

Maandus- ja 5 V juhtmed tuleb kogu plaadi jaoks viia ainult ühe korra miinusesse ja positiivsesse. Siit edasi tulevad kõik maaühendused negatiivsest veerust ja kõik 5 V ühendused positiivsest veerust.

Allolevat koodi saab temperatuurianduri jaoks kopeerida ja kleepida.

%% TEMPERATUURIANDUR % Kasutasime temperatuurianduri juures järgmist allikat

% EF230 veebisaidi materjal, et muuta meie temperatuuriandurit, et see kasutajale võimaldada

% sisend ja 3 LED -valgusväljundit koos graafikuga.

Selle visandi on kirjutanud SparkFun Electronics, %, kus on palju abi Arduino kogukonnalt.

%Kohandatud MATLAB -iga Eric Davishahli poolt.

%SIK -i teabe saamiseks külastage veebisaiti

selge kõik, clc

tempPin = 'A0'; % Tempoanduriga ühendatud analoogpistiku deklareerimine

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

% Määratlege anonüümne funktsioon, mis teisendab pinge temperatuuriks

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

proovide võtmineKestus = 30;

valimiintervall = 2; % Sekundeid temperatuurinäitude vahel

%seadistatud proovivõtu aegade vektor

samplingTimes = 0: samplingInterval: samplingDuration;

%arvutab proovide arvu kestuse ja intervalli põhjal

numSamples = pikkus (samplingTimes);

Tempo muutujate eeljaotamine ja salvestatavate näitude arvu muutuja

tempC = nullid (numSamples, 1);

tempF = tempC;

% sisenddialoogiboksi abil, et salvestada rööpa max ja min temperatuurid

dlg_prompts = {'Enter Max Temp', 'Enter Min Temp'};

dlg_title = 'Rööpa temperatuuri intervallid';

N = 22;

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

% Kasutaja sisendite salvestamine ja sisendi salvestamise kuvamine

max_temp = str2double (dlg_ans {1})

min_temp = str2double (dlg_ans {2})

txt = sprintf ('Teie sisend on salvestatud');

h = msgbox (txt);

oota (h);

% Tsükli jaoks, et lugeda temperatuure teatud arv kordi.

indeksi jaoks = 1: numSamples

% Lugege pinget tempPinis ja salvestage muutuvate voltidena

voltid = lugemispinge (a, tempPin);

tempC (indeks) = tempCfromVolts (volt);

tempF (indeks) = tempC (indeks)*9/5+32; % Teisenda Celsiuse järgi Fahrenheiti

% Kui teatud LED -tulede vilkumise avaldused sõltuvad sellest, milline tingimus on täidetud

kui tempF (indeks)> = max_temp % Punane LED

writeDigitalPin (a, 'D13', 0);

paus (0,5);

writeDigitalPin (a, 'D13', 1);

paus (0,5);

writeDigitalPin (a, 'D13', 0);

elseif tempF (indeks)> = min_temp && tempF (indeks) <max_temp % roheline LED

writeDigitalPin (a, 'D11', 0);

paus (0,5);

writeDigitalPin (a, 'D11', 1);

paus (0,5);

writeDigitalPin (a, 'D11', 0);

elseif tempF (indeks) <= min_temp % Sinine LED

writeDigitalPin (a, 'D12', 0);

paus (0,5);

writeDigitalPin (a, 'D12', 1);

paus (0,5);

writeDigitalPin (a, 'D12', 0);

lõpp

% Kuva temperatuurid nende mõõtmise ajal

fprintf ('Temperatuur %d sekundis on %5,2f C või %5,2f F. / n',…

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

paus (samplingInterval) %viivitus järgmise proovini

lõpp

% Temperatuuri näitude joonistamine

Joonis 1)

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

xlabel ('Aeg (sekundid)')

ylabel ('Temperatuur (F)')

pealkiri ("RedBoard'i temperatuurinäidud")

3. samm: temperatuurianduri väljund

Temperatuurianduri väljund
Temperatuurianduri väljund
Temperatuurianduri väljund
Temperatuurianduri väljund

Eespool on temperatuurianduri väljundi juhtmestik ja MATLAB -kood.

Selle projekti jaoks kasutasime oma temperatuurianduri väljundiks kolme LED -valgustit. Kasutasime punast, kui rajad olid liiga kuumad, sinist, kui need olid liiga külmad, ja rohelist, kui need olid vahepeal.

4. samm: vihmaveeanduri sisend

Vihmavee anduri sisend
Vihmavee anduri sisend
Vihmavee anduri sisend
Vihmavee anduri sisend

Ülal on vihmaveeanduri juhtmestik ja MATLAB -kood on postitatud allpool.

%% Veeandur

selge kõik, clc

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

vesiPin = 'A1';

vDry = 4,80; % Pinge, kui vett pole

proovide võtmineKestus = 60;

valimiintervall = 2;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = pikkus (samplingTimes);

% Ahela jaoks pinge lugemiseks teatud aja jooksul (60 sekundit)

indeksi jaoks = 1: numSamples

volt2 = lugemispinge (a, waterPin); % Loe pinge veetihvti analoogist

% Kui avaldus annab märku helisignaalist, kui tuvastatakse vesi. Pingelangus = vesi

kui volt2 <vKuiv

playTone (a, 'D09', 2400) % playTone funktsioon MathWorksilt

% Kuvab reisijatele hoiatuse vee tuvastamise korral

waitfor (warndlg ('Teie rong võib veeohtude tõttu hilineda'));

lõpp

% Kuva pinge nii, nagu seda mõõdab veeandur

fprintf ('Pinge %d sekundis on %5.4f V. / n',…

samplingTimes (indeks), volt2);

paus (samplingInterval)

lõpp

5. samm: vihmaveeanduri väljund

Vihmaveeanduri väljund
Vihmaveeanduri väljund

Eespool on summeri juhtmestik, mis piiksub, kui rajale satub liiga palju vett. Summuri kood on manustatud vihmavee sisendkoodi.

6. samm: vibratsioonianduri sisend

Vibratsioonianduri sisend
Vibratsioonianduri sisend
Vibratsioonianduri sisend
Vibratsioonianduri sisend

Eespool on vibratsioonianduri juhtmestik. Vibratsiooniandurid võivad raudteesüsteemide jaoks olulised olla, kui kivid langevad rajale. MATLAB -kood on postitatud allpool.

%% Vibratsiooniandur selge kõik, clc

PIEZO_PIN = 'A3'; % Vibratsioonianduriga ühendatud analoogpinna deklareerimine a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno'); % Vibratsiooni proovivõtmise aja ja intervalli lähtestamineKestus = 30; % Sekundite proovide võtmineVäli = 1;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = pikkus (samplingTimes);

% Järgmisest allikast pärit koodi kasutades muutsime seda a sisselülitamiseks

% lilla LED, kui tuvastatakse vibratsioon.

% SparkFun Tinker Kit, RGB LED, kirjutanud SparkFun Electronics, %, kus on palju abi Arduino kogukonnalt

% Kohandatud MATLAB -iga Eric Davishahli poolt

% RGB tihvti initsialiseerimine

RED_PIN = 'D5';

GREEN_PIN = 'D6';

BLUE_PIN = 'D7';

% Silmus vibratsioonianduri pinge muutuste salvestamiseks a

% konkreetne ajavahemik (30 sekundit)

indeksi jaoks = 1: numSamples

volt3 = lugemispinge (a, PIEZO_PIN);

% Kui lause lilla LED -i sisselülitamiseks vibratsiooni tuvastamisel

kui volt3> 0,025

writeDigitalPin (a, RED_PIN, 1);

Lilla valguse loomine

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, SININE_PIN, 1);

else % Lülita LED välja, kui vibratsiooni ei tuvastata.

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, SININE_PIN, 0);

lõpp

% Kuva pinge nii, nagu seda mõõdetakse.

fprintf ('Pinge %d sekundis on %5.4f V. / n',…

samplingTimes (indeks), volt3);

paus (samplingInterval)

lõpp

% Vibratsiooni mõõtmisel lülitage valgus välja

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, SININE_PIN, 0);

7. samm: vibratsioonianduri väljund

Vibratsioonianduri väljund
Vibratsioonianduri väljund

Eespool on kasutatud RBG LED -tule juhtmestik. Vibratsiooni tuvastamisel süttib tuli lillalt. Väljundi MATLAB -kood on sisestatud sisestatud koodi sisse.

8. samm: järeldus

Pärast kõigi nende toimingute tegemist peaks teil nüüd olema arduino, mis suudab tuvastada temperatuuri, vihmavett ja vibratsiooni. Vaadates, kuidas need andurid väikeses mahus töötavad, on lihtne ette kujutada, kui olulised need võiksid olla tänapäevases elus raudteesüsteemide jaoks!

Soovitan: