Բովանդակություն:

Երկաթուղիները պաշտպանելու համար Arduino- ում ջերմաստիճանի, անձրևաջրերի և թրթռման տվիչների օգտագործումը. 8 քայլ (նկարներով)
Երկաթուղիները պաշտպանելու համար Arduino- ում ջերմաստիճանի, անձրևաջրերի և թրթռման տվիչների օգտագործումը. 8 քայլ (նկարներով)

Video: Երկաթուղիները պաշտպանելու համար Arduino- ում ջերմաստիճանի, անձրևաջրերի և թրթռման տվիչների օգտագործումը. 8 քայլ (նկարներով)

Video: Երկաթուղիները պաշտպանելու համար Arduino- ում ջերմաստիճանի, անձրևաջրերի և թրթռման տվիչների օգտագործումը. 8 քայլ (նկարներով)
Video: Դահլիճում նստած տղային նայեք 😂 #armenia #humor #հումոր 2024, Հուլիսի
Anonim
Երկաթուղիները պաշտպանելու համար Arduino- ում ջերմաստիճանի, անձրևաջրերի և թրթռման տվիչների օգտագործումը
Երկաթուղիները պաշտպանելու համար Arduino- ում ջերմաստիճանի, անձրևաջրերի և թրթռման տվիչների օգտագործումը

Societyամանակակից հասարակության մեջ երկաթուղային ուղևորների աճը նշանակում է, որ երկաթուղային ընկերությունները պետք է ավելին անեն `ցանցը օպտիմալացնելու համար` պահանջարկին համապատասխան: Այս նախագծում մենք փոքր մասշտաբով ցույց կտանք, թե ինչպես են արդուինոյի տախտակի վրա ջերմաստիճանի, անձրևաջրերի և թրթռման սենսորները կարող են օգնել բարձրացնել ուղևորների անվտանգությունը:

Այս հրահանգը քայլ առ քայլ ցույց կտա arduino- ում ջերմաստիճանի, անձրևաջրերի և թրթռման տվիչների միացումը, ինչպես նաև ցույց կտա MATLAB ծածկագիրը, որն անհրաժեշտ է այս տվիչների գործարկման համար:

Քայլ 1: Մասեր և նյութեր

1. Համակարգիչ `տեղադրված MATLAB- ի վերջին տարբերակով

2. Arduino Board

3. Temերմաստիճանի ցուցիչ

4. Անձրևաջրերի ցուցիչ

5. Թրթռման ցուցիչ

6. Կարմիր LED լույս

7. Կապույտ LED լույս

8. Կանաչ LED լույս

9. RBG LED լույս

10. Բուզզեր

11. 18 Արական-արական լարեր

12. 3 Իգական-արական լարեր

13. 2 Իգական-իգական լարեր

14. 6 330 օմ ռեզիստոր

15. 1 100 օմ դիմադրություն

Քայլ 2. peratերմաստիճանի տվիչի լարերի միացում

Temերմաստիճանի տվիչի լարերի միացում
Temերմաստիճանի տվիչի լարերի միացում
Temերմաստիճանի տվիչի լարերի միացում
Temերմաստիճանի տվիչի լարերի միացում

Վերևում կա նաև ջերմաստիճանի տվիչի մուտքի էլեկտրագծերը և MATLAB ծածկագիրը:

Հողից և 5 Վ լարերը պետք է համապատասխանաբար մեկ անգամ ամբողջ տախտակի համար անցնեն բացասական և դրական: Այսուհետ, ցանկացած հիմքային միացում կգա բացասական սյունակից, իսկ ցանկացած 5V միացում `դրական սյունակից:

Ստորև բերված ծածկագիրը կարող է պատճենվել և տեղադրվել ջերմաստիճանի տվիչի համար:

%% EMերմաստիճանի տվիչ % theերմաստիճանի տվիչի համար մենք օգտագործել ենք հետեւյալ աղբյուրը

% EF230 կայքի նյութ ՝ փոփոխելու մեր ջերմաստիճանի տվիչը ՝ օգտագործողին թույլ տալու համար

% մուտքագրում և 3 LED լուսային ելք գրաֆիկով:

%Այս ուրվագիծը գրվել է SparkFun Electronics- ի կողմից, %Arduino համայնքի մեծ օգնությամբ:

%Հարմարեցված է MATLAB- ին ՝ Էրիկ Դավիշահլի կողմից:

%SIK տեղեկատվության համար այցելեք

մաքրել բոլորը, clc

tempPin = 'A0'; % Theերմաստիճանի տվիչին միացված անալոգային քորոց հայտարարելը

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

% Սահմանել անանուն գործառույթը, որը փոխակերպում է լարումը ջերմաստիճանի

tempCfromVolts = @(վոլտ) (վոլտ -0.5)*100;

samplingDuration = 30;

samplingInterval = 2; % Վայրկյան ջերմաստիճանի ընթերցումների միջև

%ստեղծել նմուշառման ժամանակների վեկտոր

samplingTimes = 0: samplingInterval: samplingDuration;

%-ը հաշվարկեք նմուշների քանակը `հիմնվելով տևողության և ընդմիջման վրա

numSamples = երկարություն (samplingTimes);

%նախաբաշխել ջերմաստիճանի փոփոխականներ և փոփոխական այն պահված ընթերցումների քանակի համար

tempC = զրո (numSamples, 1);

tempF = tempC;

% օգտագործելով մուտքային երկխոսության տուփ ՝ երկաթուղու առավելագույն և նվազագույն ջերմաստիճանը պահելու համար

dlg_prompts = {'Մուտքագրեք առավելագույն ջերմաստիճան', 'Մուտքագրեք նվազագույն ջերմաստիճան'};

dlg_title = 'Երկաթուղային ջերմաստիճանի ընդմիջումներ';

N = 22;

dlg_ans = inputdlg (dlg_prompts, dlg_title, [1, երկարություն (dlg_title)+N]);

% Օգտվողի մուտքերի պահպանում և ցուցադրում, որ մուտքագրումը գրանցվել է

max_temp = str2 կրկնակի (dlg_ans {1})

min_temp = str2 կրկնակի (dlg_ans {2})

txt = sprintf ('Ձեր մուտքագրումը գրանցված է');

h = msgbox (txt);

սպասել (ժ);

Օղակի համար ջերմաստիճանը որոշակի քանակությամբ կարդալու համար:

ինդեքսի համար = 1: numSamples

% Կարդացեք լարումը tempPin- ում և պահեք որպես փոփոխական վոլտ

վոլտ = readVoltage (a, tempPin);

tempC (ինդեքս) = tempCfromVolts (վոլտ);

tempF (ինդեքս) = tempC (ինդեքս)*9/5+32; % Փոխարկել elsելսիուսից Ֆարենհայտ

Եթե հատուկ LED լույսերը թարթելու մասին հայտարարությունները կախված են այն պայմանից, թե ինչ է կատարվում

եթե tempF (ինդեքս)> = max_temp % Կարմիր LED

writeDigitalPin (a, 'D13', 0);

դադար (0.5);

writeDigitalPin (a, 'D13', 1);

դադար (0.5);

writeDigitalPin (a, 'D13', 0);

elseif tempF (ինդեքս)> = min_temp && tempF (ինդեքս) <max_temp % Կանաչ LED

writeDigitalPin (a, 'D11', 0);

դադար (0.5);

writeDigitalPin (a, 'D11', 1);

դադար (0.5);

writeDigitalPin (a, 'D11', 0);

elseif tempF (ինդեքս) <= min_temp % Կապույտ LED

writeDigitalPin (a, 'D12', 0);

դադար (0.5);

writeDigitalPin (a, 'D12', 1);

դադար (0.5);

writeDigitalPin (a, 'D12', 0);

վերջ

% Displayուցադրել ջերմաստիճանը, երբ դրանք չափվում են

fprintf ('%երմաստիճանը %d վայրկյանում կազմում է %5.2f C կամ %5.2f F. / n',…

samplingTimes (ինդեքս), tempC (ինդեքս), tempF (ինդեքս));

դադար (samplingInterval) %ուշացում մինչև հաջորդ նմուշը

վերջ

% Otերմաստիճանի ընթերցումների գծագրում

գործիչ (1)

հողամաս (նմուշառման ժամանակներ, tempF, 'r-*')

xlabel («(ամանակ (վայրկյաններ)»)

ylabel ('peratերմաստիճանը (F)')

վերնագիր («Bերմաստիճանի ընթերցումներ կարմիր տախտակից»)

Քայլ 3. peratերմաստիճանի տվիչի ելք

Temերմաստիճանի տվիչի ելք
Temերմաստիճանի տվիչի ելք
Temերմաստիճանի տվիչի ելք
Temերմաստիճանի տվիչի ելք

Վերևում կա ջերմաստիճանի տվիչի ելքի էլեկտրագծերը և MATLAB ծածկագիրը:

Այս նախագծի համար մենք օգտագործեցինք երեք LED լույս `մեր ջերմաստիճանի տվիչի ելքի համար: Մենք օգտագործում էինք կարմիրը, եթե հետքերը չափազանց տաք էին, կապույտը, եթե դրանք շատ ցուրտ էին, և կանաչը, եթե դրանք գտնվում էին միջակայքում:

Քայլ 4. Անձրևաջրերի տվիչի մուտքագրում

Անձրևաջրերի տվիչի մուտքագրում
Անձրևաջրերի տվիչի մուտքագրում
Անձրևաջրերի տվիչի մուտքագրում
Անձրևաջրերի տվիչի մուտքագրում

Վերևում անձրևաջրերի սենսորի միացումն է, իսկ MATLAB ծածկագիրը տեղադրված է ստորև:

%% sensorրի ցուցիչ

մաքրել բոլորը, clc

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

waterPin = 'A1';

vDry = 4.80; Լարում, երբ ջուր չկա

samplingDuration = 60;

samplingInterval = 2;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = երկարություն (samplingTimes);

% Օղակի համար լարումը որոշակի ժամանակ կարդալու համար (60 վայրկյան)

ինդեքսի համար = 1: numSamples

volt2 = readVoltage (a, waterPin); Կարդացեք լարումը ջրի քորոց անալոգից

Եթե հայտարարություն հնչի բզզոց, եթե ջուրը հայտնաբերվի: Լարման անկում = ջուր

եթե volt2 <v Չորացնել

playTone (a, 'D09', 2400) % playTone գործառույթը MathWorks- ից

% Displayույց տվեք նախազգուշացում ուղևորներին, եթե ջուրը հայտնաբերվի

waitfor (warndlg («Ձեր գնացքը կարող է հետաձգվել ջրի վտանգների պատճառով»));

վերջ

% Displayուցադրել լարումը, քանի որ այն չափվում է ջրի սենսորով

fprintf ('Լարման %d վայրկյանում կազմում է %5.4f V. / n',…

samplingTimes (ինդեքս), volt2);

դադար (նմուշառման ինտերվալ)

վերջ

Քայլ 5. Անձրևաջրերի ցուցիչի ելք

Անձրևաջրերի ցուցիչի ելք
Անձրևաջրերի ցուցիչի ելք

Վերևում տեղադրված է մի ազդանշանի միացում, որն ազդարարում է, երբ շատ ջուր է ընկնում ուղու վրա: Zխի ազդանշանի ծածկագիրը տեղադրված է անձրևաջրերի մուտքի ծածկագրի մեջ:

Քայլ 6. Թրթռման տվիչի մուտքագրում

Թրթռման տվիչի մուտքագրում
Թրթռման տվիչի մուտքագրում
Թրթռման տվիչի մուտքագրում
Թրթռման տվիչի մուտքագրում

Վերևում թրթռման սենսորի էլեկտրագծերն են: Թրթռման տվիչները կարող են կարևոր լինել երկաթուղային համակարգերի համար `ժայռերի վրա ընկնելու դեպքում: MATLAB ծածկագիրը տեղադրված է ստորև:

%% Թրթռման սենսորներ, պարզ է բոլորը, դաս

PIEZO_PIN = 'A3'; % Թրթռման սենսորին միացված անալոգային քորոցի հայտարարում a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno'); % Վիբրացիայի նմուշառում չափելու ժամանակի և միջակայքի սկզբնավորումՏևողություն = 30; % Վայրկյան samplingInterval = 1;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = երկարություն (samplingTimes);

% Օգտագործելով հետևյալ աղբյուրի ծածկագիրը ՝ մենք փոփոխեցինք այն ՝ միացնելու համար a

% մանուշակագույն LED, եթե թրթռում է հայտնաբերվում:

% SparkFun Tinker Kit, RGB LED, գրված է SparkFun Electronics- ի կողմից, % Arduino համայնքի մեծ օգնությամբ

% Հարմարեցված է MATLAB- ին ՝ Էրիկ Դավիշահլի կողմից

% RGB- ի քորոցը նախաստորագրելը

RED_PIN = 'D5';

GREEN_PIN = 'D6';

BLUE_PIN = 'D7';

Օղակի համար թրթռման սենսորից լարման փոփոխությունները գրանցելու համար a

% կոնկրետ ժամանակային ընդմիջում (30 վայրկյան)

ինդեքսի համար = 1: numSamples

volt3 = readVoltage (a, PIEZO_PIN);

Եթե հայտարարությունը միացնել մանուշակագույն LED, եթե թրթռում է հայտնաբերվել

եթե volt3> 0.025

writeDigitalPin (a, RED_PIN, 1);

Ստեղծելով մանուշակագույն լույս

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 1);

else % Անջատեք LED- ը, եթե թրթռում չի հայտնաբերվում:

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

վերջ

% Displayուցադրել լարումը, երբ այն չափվում է:

fprintf ('Լարման %d վայրկյանում կազմում է %5.4f V. / n',…

samplingTimes (ինդեքս), volt3);

դադար (նմուշառման ինտերվալ)

վերջ

Կտրեք լույսը, երբ չափվում են թրթռումները

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

Քայլ 7: Թրթռման տվիչի ելք

Թրթռման տվիչի ելք
Թրթռման տվիչի ելք

Վերևում օգտագործվում է RBG LED լույսի էլեկտրագծերը: Երբ թրթռումները հայտնաբերվում են, լույսը մանուշակագույն է փայլելու: Ելքի համար MATLAB ծածկագիրը ներդրված է մուտքի համար նախատեսված ծածկագրի մեջ:

Քայլ 8: Եզրակացություն

Այս բոլոր քայլերը կատարելուց հետո դուք պետք է ունենաք արդուինո `ջերմաստիճանը, անձրևաջուրը և թրթռումները հայտնաբերելու ունակությամբ: Դիտելով, թե ինչպես են այս սենսորները աշխատում փոքր մասշտաբով, հեշտ է պատկերացնել, թե դրանք որքան կենսական կարող են լինել երկաթուղային համակարգերի համար ժամանակակից կյանքում:

Խորհուրդ ենք տալիս: