Satura rādītājs:

Temperatūras, lietus ūdens un vibrācijas sensoru izmantošana Arduino, lai aizsargātu dzelzceļus: 8 soļi (ar attēliem)
Temperatūras, lietus ūdens un vibrācijas sensoru izmantošana Arduino, lai aizsargātu dzelzceļus: 8 soļi (ar attēliem)

Video: Temperatūras, lietus ūdens un vibrācijas sensoru izmantošana Arduino, lai aizsargātu dzelzceļus: 8 soļi (ar attēliem)

Video: Temperatūras, lietus ūdens un vibrācijas sensoru izmantošana Arduino, lai aizsargātu dzelzceļus: 8 soļi (ar attēliem)
Video: 20 товаров для автомобиля с Алиэкспресс, автотовары №35 2024, Novembris
Anonim
Temperatūras, lietus ūdens un vibrācijas sensoru izmantošana Arduino, lai aizsargātu dzelzceļus
Temperatūras, lietus ūdens un vibrācijas sensoru izmantošana Arduino, lai aizsargātu dzelzceļus

Mūsdienu sabiedrībā dzelzceļa pasažieru skaita pieaugums nozīmē, ka dzelzceļa pārvadājumu uzņēmumiem ir jādara vairāk, lai optimizētu tīklus, lai neatpaliktu no pieprasījuma. Šajā projektā mēs nelielā mērogā parādīsim, kā temperatūras, lietus ūdens un vibrācijas sensori uz arduino plates var potenciāli palīdzēt palielināt pasažieru drošību.

Šī pamācība soli pa solim parādīs arduino temperatūras, lietus ūdens un vibrācijas sensoru vadus, kā arī parādīs MATLAB kodu, kas nepieciešams šo sensoru darbināšanai.

1. darbība: detaļas un materiāli

1. Dators ar instalētu jaunāko MATLAB versiju

2. Arduino valde

3. Temperatūras sensors

4. Lietus ūdens sensors

5. Vibrācijas sensors

6. Sarkana LED gaisma

7. Zila LED gaisma

8. Zaļā LED gaisma

9. RBG LED gaisma

10. Signāls

11. 18 Vīriešu un vīriešu vadi

12. 3 Sieviešu-vīriešu vadi

13. 2 Sieviešu-sieviešu vadi

14. 6 330 omi rezistori

15. 1 100 omu rezistors

2. solis: Temperatūras sensora elektroinstalācija

Temperatūras sensora vadi
Temperatūras sensora vadi
Temperatūras sensora vadi
Temperatūras sensora vadi

Augšpusē ir arī vadu un MATLAB kods temperatūras sensora ieejai.

Vadi no zemes un 5 V ir tikai jāpārvieto uz negatīvo un pozitīvo attiecīgi vienreiz visai plāksnei. Turpmāk visi zemējuma savienojumi nāks no negatīvās kolonnas, un visi 5 V savienojumi - no pozitīvās kolonnas.

Tālāk norādīto kodu var nokopēt un ielīmēt temperatūras sensoram.

%% TEMPERATŪRAS SENSORS % Temperatūras sensoram kopā ar

% EF230 vietnes materiāls, lai pārveidotu mūsu temperatūras sensoru, lai lietotājs varētu to izmantot

% ieeja un 3 LED gaismas izejas ar grafiku.

Šo skici uzrakstīja SparkFun Electronics, %ar lielu palīdzību no Arduino kopienas.

%MATLAB pielāgojis Ēriks Deiviss.

%Lai iegūtu informāciju par SIK, apmeklējiet vietni

notīrīt visu, clc

tempPin = 'A0'; % Analogas tapas deklarēšana, kas pievienota temperatūras sensoram

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

% Definējiet anonīmu funkciju, kas spriegumu pārvērš temperatūrā

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

paraugu ņemšanas ilgums = 30;

paraugu ņemšanas intervāls = 2; % Sekundes starp temperatūras rādījumiem

%izveidots paraugu ņemšanas laiku vektors

samplingTimes = 0: samplingInterval: samplingDuration;

%aprēķina paraugu skaitu, pamatojoties uz ilgumu un intervālu

numSamples = garums (samplingTimes);

%iepriekš sadalīti temp mainīgie un mainīgais rādījumu skaitam, ko tas saglabās

tempC = nulles (skaitsSamples, 1);

tempF = tempC;

%, izmantojot ievades dialoglodziņu, lai saglabātu maksimālo un minimālo sliedes temperatūru

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

dlg_title = 'Dzelzceļa temperatūras intervāli';

N = 22;

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

% Lietotāja ievadīto datu saglabāšana un ieraksta ierakstīšanas parādīšana

max_temp = str2double (dlg_ans {1})

min_temp = str2double (dlg_ans {2})

txt = sprintf ('Jūsu ievade ir ierakstīta');

h = msgbox (txt);

gaidīt (h);

% Lai cilpa noteiktu laiku nolasītu temperatūru.

indeksam = 1: numSamples

% Nolasiet spriegumu tempPin un uzglabājiet kā mainīgus voltus

volti = lasāmspriegums (a, tempPin);

tempC (indekss) = tempCfromVolts (volti);

tempF (indekss) = tempC (indekss)*9/5+32; % Konvertēt no Celsija uz Fārenheitu

% Ja paziņojumi noteiktām gaismas diodēm mirgo atkarībā no tā, kurš nosacījums ir izpildīts

ja tempF (indekss)> = max_temp % Sarkana gaismas diode

writeDigitalPin (a, 'D13', 0);

pauze (0,5);

writeDigitalPin (a, 'D13', 1);

pauze (0,5);

writeDigitalPin (a, 'D13', 0);

elseif tempF (indekss)> = min_temp && tempF (indekss) <max_temp % Zaļā gaismas diode

writeDigitalPin (a, 'D11', 0);

pauze (0,5);

writeDigitalPin (a, 'D11', 1);

pauze (0,5);

writeDigitalPin (a, 'D11', 0);

elseif tempF (indekss) <= min_temp % Zils LED

writeDigitalPin (a, 'D12', 0);

pauze (0,5);

writeDigitalPin (a, 'D12', 1);

pauze (0,5);

writeDigitalPin (a, 'D12', 0);

beigas

% Parādiet izmērītās temperatūras

fprintf ('Temperatūra %d sekundēs ir %5,2f C vai %5,2f F. / n',…

samplingTimes (indekss), tempC (indekss), tempF (indekss));

pauze (samplingInterval) %aizkave līdz nākamajam paraugam

beigas

% Temperatūras rādījumu uzzīmēšana

attēls (1)

diagramma (paraugu ņemšanas laiks, tempF, 'r-*')

xlabel ('Laiks (sekundes)')

ylabel ('Temperatūra (F)')

title ('RedBoard temperatūras rādījumi')

3. solis: Temperatūras sensora izeja

Temperatūras sensora izeja
Temperatūras sensora izeja
Temperatūras sensora izeja
Temperatūras sensora izeja

Augšpusē ir temperatūras sensora izejas vadi un MATLAB kods.

Šim projektam mēs izmantojām trīs gaismas diodes mūsu temperatūras sensora izejai. Mēs izmantojām sarkanu, ja celiņi bija pārāk karsti, zilu, ja tie bija pārāk auksti, un zaļu, ja tie bija pa vidu.

4. solis: lietus ūdens sensora ievade

Lietus ūdens sensora ievade
Lietus ūdens sensora ievade
Lietus ūdens sensora ievade
Lietus ūdens sensora ievade

Augšpusē ir lietus ūdens sensora vadi, un MATLAB kods ir ievietots zemāk.

%% Ūdens sensors

notīrīt visu, clc

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

waterPin = 'A1';

vDry = 4,80; % Spriegums, ja nav ūdens

paraugu ņemšanas ilgums = 60;

paraugu ņemšanas intervāls = 2;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = garums (samplingTimes);

% Lai cilpa nolasītu spriegumu noteiktu laiku (60 sekundes)

indeksam = 1: numSamples

volt2 = lasīt spriegumu (a, waterPin); % Nolasiet spriegumu no ūdens tapas analoga

% Ja paziņojums skaņas signālam, ja tiek konstatēts ūdens. Sprieguma kritums = ūdens

ja volt2 <vSus

playTone (a, 'D09', 2400) % playTone funkcija no MathWorks

% Parādiet brīdinājumu pasažieriem, ja tiek konstatēts ūdens

waitfor (warndlg ('Jūsu vilciens var aizkavēties ūdens apdraudējuma dēļ'));

beigas

% Parādiet spriegumu tā, kā to mēra ūdens sensors

fprintf ('Spriegums %d sekundēs ir %5.4f V. / n',…

samplingTimes (indekss), volt2);

pauze (paraugu ņemšanas intervāls)

beigas

5. solis: lietus ūdens sensora izeja

Lietus ūdens sensora izeja
Lietus ūdens sensora izeja

Augšpusē ir skaņas signāla vadi, kas pīkst, kad trasē nokrīt pārāk daudz ūdens. Signāla kods ir iestrādāts lietus ūdens ievades kodā.

6. darbība: vibrācijas sensora ievade

Vibrācijas sensora ieeja
Vibrācijas sensora ieeja
Vibrācijas sensora ieeja
Vibrācijas sensora ieeja

Augšpusē ir vibrācijas sensora vadi. Vibrācijas sensori var būt svarīgi dzelzceļa sistēmām, ja uz sliežu ceļa nokrīt akmeņi. MATLAB kods ir ievietots zemāk.

%% Vibrācijas sensorsSkaidrs viss, clc

PIEZO_PIN = 'A3'; % Vibrācijas sensoram pievienotās analogās tapas deklarēšana a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno'); % Vibrācijas paraugu ņemšanas laika un intervāla inicializēšanaIlgums = 30; % Sekundes paraugu ņemšanaInterval = 1;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = garums (samplingTimes);

% Izmantojot kodu no šī avota, mēs to pārveidojām, lai ieslēgtu a

% violeta gaismas diode, ja tiek konstatēta vibrācija.

% SparkFun Tinker Kit, RGB LED, rakstījis SparkFun Electronics, % ar lielu palīdzību no Arduino kopienas

% MATLAB pielāgojis Ēriks Deiviss

% RGB tapas inicializēšana

RED_PIN = 'D5';

GREEN_PIN = 'D6';

BLUE_PIN = 'D7';

% Lai cilpa ierakstītu sprieguma izmaiņas no vibrācijas sensora pa a

% konkrēts laika intervāls (30 sekundes)

indeksam = 1: numSamples

volt3 = readVoltage (a, PIEZO_PIN);

% Ja paziņojums ieslēgt violetu gaismas diodi, ja tiek konstatēta vibrācija

ja volt3> 0,025

writeDigitalPin (a, RED_PIN, 1);

Violetas gaismas radīšana

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 1);

cits % Izslēdziet LED, ja nav konstatēta vibrācija.

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

beigas

% Parādiet spriegumu, kā tas tiek mērīts.

fprintf ('Spriegums %d sekundēs ir %5.4f V. / n',…

samplingTimes (indekss), volt3);

pauze (paraugu ņemšanas intervāls)

beigas

% Izslēdziet gaismu, mērot vibrācijas

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

7. solis: Vibrācijas sensora izeja

Vibrācijas sensora izeja
Vibrācijas sensora izeja

Augšpusē ir izmantotās RBG LED gaismas vadi. Gaisma iemirdzēsies purpursarkanā krāsā, kad tiks konstatētas vibrācijas. Izejas MATLAB kods ir iestrādāts ievades kodā.

8. solis. Secinājums

Pēc visu šo darbību veikšanas jums tagad vajadzētu būt arduino ar spēju noteikt temperatūru, lietus ūdeni un vibrācijas. Skatoties, kā šie sensori darbojas nelielā mērogā, ir viegli iedomāties, cik svarīgi tie varētu būt dzelzceļa sistēmām mūsdienu dzīvē!

Ieteicams: