Sisällysluettelo:

Lämpötila-, sadevesi- ja tärinäantureiden käyttäminen Arduinolla rautateiden suojaamiseen: 8 vaihetta (kuvilla)
Lämpötila-, sadevesi- ja tärinäantureiden käyttäminen Arduinolla rautateiden suojaamiseen: 8 vaihetta (kuvilla)

Video: Lämpötila-, sadevesi- ja tärinäantureiden käyttäminen Arduinolla rautateiden suojaamiseen: 8 vaihetta (kuvilla)

Video: Lämpötila-, sadevesi- ja tärinäantureiden käyttäminen Arduinolla rautateiden suojaamiseen: 8 vaihetta (kuvilla)
Video: EkoLive: Järviemme tila – miten vetemme voivat? 2024, Marraskuu
Anonim
Lämpötila-, sadevesi- ja tärinäantureiden käyttäminen Arduinossa rautateiden suojaamiseen
Lämpötila-, sadevesi- ja tärinäantureiden käyttäminen Arduinossa rautateiden suojaamiseen

Nykyaikaisessa yhteiskunnassa rautateiden matkustajien lisääntyminen tarkoittaa, että rautatieyritysten on tehtävä enemmän verkkojen optimoimiseksi kysynnän mukaan. Tässä projektissa näytämme pienessä mittakaavassa, kuinka arduino -kortin lämpötila-, sadevesi- ja tärinäanturit voivat auttaa lisäämään matkustajien turvallisuutta.

Tämä opetusohjelma näyttää askel askeleelta arduinon lämpötila-, sadevesi- ja tärinäantureiden johdotukset sekä näyttää näiden antureiden käyttämiseen vaadittavan MATLAB-koodin.

Vaihe 1: Osat ja materiaalit

1. Tietokone, johon on asennettu uusin MATLAB -versio

2. Arduino Board

3. Lämpötila -anturi

4. Sadevesianturi

5. Tärinäanturi

6. Punainen LED -valo

7. Sininen LED -valo

8. Vihreä LED -valo

9. RBG -LED -valo

10. summeri

11. 18 uros-urosjohdot

12. 3 Naaras-urosjohtoa

13. 2 Naaras-naaraslankaa

14. 6 330 ohmin vastukset

15. 1 100 ohmin vastus

Vaihe 2: Lämpötila -anturin johdotus

Lämpötila -anturin johdotus
Lämpötila -anturin johdotus
Lämpötila -anturin johdotus
Lämpötila -anturin johdotus

Yllä on myös lämpötila -anturin tulon johdotus ja MATLAB -koodi.

Maan ja 5 V: n johdot on vedettävä koko kortille vain kerran negatiiviseen ja positiiviseen. Tästä eteenpäin kaikki maadoitusliitännät tulevat negatiivisesta sarakkeesta ja kaikki 5 V: n liitännät tulevat positiivisesta sarakkeesta.

Alla oleva koodi voidaan kopioida ja liittää lämpötila -anturia varten.

%% LÄMPÖTILA -ANTURI % Lämpötila -anturissa käytimme seuraavaa lähdettä yhdessä

% EF230 -verkkosivumateriaali lämpötila -anturimme muuttamiseksi käyttäjän sallimiseksi

% tulo ja 3 LED -valolähtöä, joissa on kaavio.

%Tämän luonnoksen on kirjoittanut SparkFun Electronics, %paljon apua Arduino -yhteisöltä.

%Eric Davishahlin mukauttama MATLABiin.

%Käy osoitteessa https://learn.sparkfun.com/products/2 saadaksesi SIK -tietoja.

tyhjennä kaikki, clc

tempPin = 'A0'; % Lämpötila -anturiin kytketyn analogisen nastan ilmoittaminen

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

% Määritä anonyymi toiminto, joka muuntaa jännitteen lämpötilaksi

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

näytteenottoKesto = 30;

näytteenottointervalli = 2; % Sekuntia lämpötilalukemien välillä

%näytteenottoajan vektori

samplingTimes = 0: samplingInterval: samplingDuration;

%laskee näytteiden määrän keston ja välin perusteella

numSamples = pituus (näytteenottoajat);

%ennalta varattuja lämpömuuttujia ja muuttuja sen lukemien lukumäärälle, jonka se tallentaa

tempC = nollia (näytteet, 1);

tempF = tempC;

% syöttövalintaikkunan avulla tallentamaan kiskon maksimi- ja minilämpötilat

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

dlg_title = 'Kiskon lämpötilavälit';

N = 22;

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

% Käyttäjän tulojen tallentaminen ja tulon tallennuksen näyttäminen

max_temp = str2double (dlg_ans {1})

min_temp = str2double (dlg_ans {2})

txt = sprintf ('Syöttösi on tallennettu');

h = viestilaatikko (txt);

odota (h);

% Silmukka, joka lukee lämpötilat tietyn määrän kertoja.

indeksille = 1: numSamples

% Lue jännite tempPinistä ja tallenna muuttuvaksi voltiksi

volttia = lukuVoltage (a, tempPin);

tempC (indeksi) = tempCfromVolts (volttia);

tempF (indeksi) = tempC (indeksi)*9/5+32; % Muunna Celsiuksesta Fahrenheitiksi

% Jos tietyt LED -valot vilkkuvat, riippuen siitä, mikä ehto täyttyy

jos tempF (indeksi)> = max_temp % Punainen LED

writeDigitalPin (a, 'D13', 0);

tauko (0,5);

writeDigitalPin (a, 'D13', 1);

tauko (0,5);

writeDigitalPin (a, 'D13', 0);

elseif tempF (indeksi)> = min_temp && tempF (index) <max_temp % Vihreä LED

writeDigitalPin (a, 'D11', 0);

tauko (0,5);

writeDigitalPin (a, 'D11', 1);

tauko (0,5);

writeDigitalPin (a, 'D11', 0);

elseif tempF (indeksi) <= min_temp % Sininen LED

writeDigitalPin (a, 'D12', 0);

tauko (0,5);

writeDigitalPin (a, 'D12', 1);

tauko (0,5);

writeDigitalPin (a, 'D12', 0);

loppuun

% Näytä lämpötilat sellaisina kuin ne on mitattu

fprintf ('Lämpötila %d sekunnissa on %5.2f C tai %5.2f F. / n',…

samplingTimes (indeksi), tempC (indeksi), tempF (indeksi));

tauko (samplingInterval) %viive seuraavaan näytteeseen

loppuun

% Lämpötilalukemien piirtäminen

Kuvio 1)

kuvaaja (näytteenottoajat, tempF, 'r-*')

xlabel ('Aika (sekuntia)')

ylabel ('Lämpötila (F)')

title ('RedBoardin lämpötilalukemat')

Vaihe 3: Lämpötila -anturin lähtö

Lämpötila -anturin lähtö
Lämpötila -anturin lähtö
Lämpötila -anturin lähtö
Lämpötila -anturin lähtö

Yllä on lämpötila -anturin lähdön johdotus ja MATLAB -koodi.

Tässä projektissa käytimme kolme LED -valoa lämpötila -anturimme ulostuloon. Käytimme punaista, jos kappaleet olivat liian kuumia, sinistä, jos ne olivat liian kylmiä, ja vihreää, jos ne olivat välissä.

Vaihe 4: Sadevesianturin tulo

Sadevesianturin tulo
Sadevesianturin tulo
Sadevesianturin tulo
Sadevesianturin tulo

Yllä on sadevesianturin johdotus ja MATLAB -koodi on alla.

%% Vesianturi

tyhjennä kaikki, clc

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

waterPin = 'A1';

vDry = 4,80; % Jännite, kun vettä ei ole läsnä

näytteenottoKesto = 60;

näytteenottointervalli = 2;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = pituus (näytteenottoajat);

% Silmukka jännitteen lukemiseksi tietyn ajan (60 sekuntia)

indeksille = 1: numSamples

volt2 = lukuJännite (a, waterPin); % Lue jännite vesitapan analogista

% Jos väite antaa summerin, jos vettä havaitaan. Jännitehäviö = vesi

jos volt2 <vKuiva

playTone (a, 'D09', 2400) % playTone -toiminto MathWorksilta

% Näytä varoitus matkustajille, jos vettä havaitaan

waitfor (warndlg ('Juna saattaa viivästyä vesivaarojen vuoksi'));

loppuun

% Näytä jännite vesianturin mittaamana

fprintf ('Jännite %d sekunnissa on %5.4f V. / n',…

näytteenottoajat (indeksi), voltti2);

tauko (näytteenottointervalli)

loppuun

Vaihe 5: Sadevesianturin lähtö

Sadevesianturin lähtö
Sadevesianturin lähtö

Yllä on johdotus summerille, joka piippaa aina, kun radalle putoaa liikaa vettä. Summerin koodi on upotettu sadeveden tulon koodiin.

Vaihe 6: Värähtelyanturin tulo

Värähtelyanturin tulo
Värähtelyanturin tulo
Tärinäanturin tulo
Tärinäanturin tulo

Yllä on tärinäanturin johdotus. Tärinätunnistimet voivat olla tärkeitä rautatiejärjestelmille, jos radalla putoaa kiviä. MATLAB -koodi on alla.

%% Tärinätunnistinpuhdista kaikki, clc

PIEZO_PIN = 'A3'; % Värähtelyanturiin kytketyn analogisen nastan ilmoittaminen a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno'); % Alustetaan aika ja aikaväli värähtelyn näytteenoton mittaamiseksiKesto = 30; % Seconds samplingInterval = 1;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = pituus (näytteenottoajat);

% Käyttämällä seuraavan lähteen koodia muutimme sen kytkeäksesi päälle

% violetti LED, jos tärinää havaitaan.

% SparkFun Tinker Kit, RGB LED, kirjoittanut SparkFun Electronics, % paljon apua Arduino -yhteisöltä

% Eric Davishahlin mukauttama MATLABiin

% Alustetaan RGB -nasta

RED_PIN = 'D5';

VIHREÄ_PIN = 'D6';

BLUE_PIN = 'D7';

% Silmukka värähtelyanturin jännitteenmuutosten tallentamiseksi a

% tietty aikaväli (30 sekuntia)

indeksille = 1: numSamples

volt3 = lukujännite (a, PIEZO_PIN);

% Jos lausunto violetin LED -valon sytyttämiseksi, jos tärinää havaitaan

jos volt3> 0,025

writeDigitalPin (a, RED_PIN, 1);

% Purppuraisen valon luominen

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, SININEN_PIN, 1);

else % Sammuta LED, jos tärinää ei havaita.

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, SININEN_PIN, 0);

loppuun

% Näytä jännite mitattuna.

fprintf ('Jännite %d sekunnissa on %5.4f V. / n',…

näytteenottoajat (indeksi), voltti3);

tauko (näytteenottoväli)

loppuun

% Katkaise valo, kun tärinää mitataan

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, SININEN_PIN, 0);

Vaihe 7: Värähtelyanturin lähtö

Tärinäanturin lähtö
Tärinäanturin lähtö

Yllä on käytetyn RBG -LED -valon johdotus. Valo palaa purppuranpunaisena, kun tärinää havaitaan. Lähdön MATLAB -koodi on upotettu tulon koodiin.

Vaihe 8: Johtopäätös

Kun olet suorittanut kaikki nämä vaiheet, sinulla pitäisi nyt olla arduino, joka pystyy havaitsemaan lämpötilan, sadeveden ja tärinän. Tarkasteltaessa näiden antureiden toimintaa pienessä mittakaavassa on helppo kuvitella, kuinka tärkeitä ne voisivat olla rautatiejärjestelmille nykyajan elämässä!

Suositeltava: