INHOUDSOPGAWE:

Gebruik van temperatuur-, reënwater- en trillingsensors op 'n Arduino om spoorweë te beskerm: 8 stappe (met foto's)
Gebruik van temperatuur-, reënwater- en trillingsensors op 'n Arduino om spoorweë te beskerm: 8 stappe (met foto's)

Video: Gebruik van temperatuur-, reënwater- en trillingsensors op 'n Arduino om spoorweë te beskerm: 8 stappe (met foto's)

Video: Gebruik van temperatuur-, reënwater- en trillingsensors op 'n Arduino om spoorweë te beskerm: 8 stappe (met foto's)
Video: Hoe handmatige kleibakstenen te maken Klassiek volledig proces in de ovenindustrie in India, Pak 2024, Julie
Anonim
Gebruik temperatuur-, reënwater- en trillingsensors op 'n Arduino om spoorweë te beskerm
Gebruik temperatuur-, reënwater- en trillingsensors op 'n Arduino om spoorweë te beskerm

In die hedendaagse samelewing beteken 'n toename in spoorpassasiers dat spoorwegondernemings meer moet doen om netwerke te optimaliseer om aan die vraag te voldoen. In hierdie projek sal ons op klein skaal wys hoe temperatuur-, reënwater- en vibrasiesensors op 'n arduino -bord moontlik die veiligheid van passasiers kan verhoog.

Hierdie instruksies sal stap-vir-stap die bedrading van die temperatuur-, reënwater- en vibrasiesensors op die arduino wys, asook die MATLAB-kode wat nodig is om hierdie sensors te laat werk.

Stap 1: Onderdele en materiaal

1. 'n Rekenaar met die nuutste weergawe van MATLAB geïnstalleer

2. Arduino -bord

3. Temperatuur sensor

4. Reënwatersensor

5. Trillingsensor

6. Rooi LED -lig

7. Blou LED -lig

8. Groen LED -lig

9. RBG LED Light

10. Gonser

11. 18 Man-Man-drade

12. 3 Wyfie-Man-drade

13. 2 Vrou-vroulike drade

14. 6 330 ohm weerstande

15. 1 100 ohm weerstand

Stap 2: Bedrading van temperatuursensor

Temperatuur sensor bedrading
Temperatuur sensor bedrading
Temperatuur sensor bedrading
Temperatuur sensor bedrading

Hierbo is ook die bedrading en die MATLAB -kode vir die ingang van die temperatuursensor.

Die drade van die grond en 5V hoef slegs een keer vir die hele bord na onderskeidelik negatief en positief te loop. Van hier af sal enige aardverbindings uit die negatiewe kolom kom en enige 5V -verbindings uit die positiewe kolom.

Die onderstaande kode kan vir die temperatuursensor gekopieer en geplak word.

%% TEMPERATUURSENSOR % Vir die temperatuursensor het ons die volgende bron saam met gebruik

% EF230 webwerf -materiaal om ons temperatuursensor te verander om die gebruiker in staat te stel

% insette en 3 LED -liguitsette met 'n grafiek.

Hierdie skets is geskryf deur SparkFun Electronics, %met baie hulp van die Arduino -gemeenskap.

%Aangepas by MATLAB deur Eric Davishahl.

Besoek https://learn.sparkfun.com/products/2 vir SIK -inligting.

maak alles duidelik, clc

tempPin = 'A0'; % Verklaar die analoog pen wat aan die temp sensor gekoppel is

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

% Definieer anonieme funksie wat die spanning na temperatuur omskakel

tempCfromVolts = @(volt) (volt-0.5)*100;

steekproefduur = 30;

samplingInterval = 2; % Sekondes tussen temperatuurmetings

%stel vektor op van monstertye

samplingTimes = 0: samplingInterval: samplingDuration;

%bereken die aantal monsters gebaseer op die duur en interval

numSamples = lengte (samplingTimes);

%plaas tydelike veranderlikes en veranderlike voor die aantal lesings wat dit sal stoor

tempC = nulle (numSamples, 1);

tempF = tempC;

% gebruik die invoer -dialoogkassie om maksimum en min spoortemperature op te slaan

dlg_prompts = {'Tik maksimum temperatuur', 'Voer minimum temperatuur' in;

dlg_title = 'Spoor temperatuur intervalle';

N = 22;

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

Stoor die insette van die gebruiker en wys dat die insette opgeneem is

max_temp = str2double (dlg_ans {1})

min_temp = str2double (dlg_ans {2})

txt = sprintf ('U insette is aangeteken');

h = msgbox (txt);

wag (h);

% Vir lus om die temperatuur 'n spesifieke aantal kere te lees.

vir indeks = 1: numSamples

% Lees die spanning by tempPin en stoor as veranderlike volt

volt = readVoltage (a, tempPin);

tempC (indeks) = tempCfromVolts (volt);

tempF (indeks) = tempC (indeks)*9/5+32; Skakel om van Celsius na Fahrenheit

% As verklarings om spesifieke LED -ligte te laat flikker, afhangende van watter voorwaarde daaraan voldoen word

as tempF (indeks)> = max_temp % Rooi LED

writeDigitalPin (a, 'D13', 0);

pouse (0,5);

writeDigitalPin (a, 'D13', 1);

pouse (0,5);

writeDigitalPin (a, 'D13', 0);

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

writeDigitalPin (a, 'D11', 0);

pouse (0,5);

writeDigitalPin (a, 'D11', 1);

pouse (0,5);

writeDigitalPin (a, 'D11', 0);

andersif tempF (indeks) <= min_temp % Blou LED

writeDigitalPin (a, 'D12', 0);

pouse (0,5);

writeDigitalPin (a, 'D12', 1);

pouse (0,5);

writeDigitalPin (a, 'D12', 0);

einde

% Gee die temperature soos dit gemeet word

fprintf ('Temperatuur by %d sekondes is %5.2f C of %5.2f F. / n', …

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

pouse (samplingInterval) %vertraging tot volgende monster

einde

% Plot die temperatuurlesings

Figuur 1)

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

xlabel ('Tyd (sekondes)')

ylabel ('Temperatuur (F)')

title ('Temperatuurlesings van die Rooibord')

Stap 3: Temperatuursensoruitset

Temperatuur sensor uitset
Temperatuur sensor uitset
Temperatuur sensor uitset
Temperatuur sensor uitset

Hierbo is die bedrading en die MATLAB -kode vir die uitset van die temperatuursensor.

Vir hierdie projek het ons drie LED -ligte gebruik vir die uitvoer van ons temperatuursensor. Ons gebruik 'n rooi as die spore te warm was, 'n blou as dit te koud was en 'n groen as dit tussenin was.

Stap 4: Invoer van reënwatersensor

Invoer van reënwatersensor
Invoer van reënwatersensor
Invoer van reënwatersensor
Invoer van reënwatersensor

Hierbo is die bedrading vir die reënwatersensor en die MATLAB -kode word hieronder geplaas.

%% Watersensor

maak alles duidelik, clc

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

waterPin = 'A1';

vDry = 4,80; % Spanning as daar geen water is nie

steekproefduur = 60;

samplingInterval = 2;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = lengte (samplingTimes);

% Vir lus om die spanning vir 'n spesifieke tyd (60 sekondes) te lees

vir indeks = 1: numSamples

volt2 = readVoltage (a, waterPin); % Lees spanning van waterpen analoog

% As verklaring om 'n gonser te laat klink as water opgespoor word. Spanningsval = water

as volt2 <vDry

playTone (a, 'D09', 2400) % playTone -funksie van MathWorks

Wys 'n waarskuwing aan passasiers as daar water opgespoor word

waitfor (warndlg ('Jou trein kan vertraag word as gevolg van watergevare'));

einde

Wys die spanning soos dit gemeet word deur die watersensor

fprintf ('Spanning by %d sekondes is %5.4f V. / n', …

monsternemingstye (indeks), volt2);

pouse (samplingInterval)

einde

Stap 5: Uitvoer van reënwatersensor

Uitvoer van reënwatersensor
Uitvoer van reënwatersensor

Hierbo is die bedrading vir 'n zoemer wat piep wanneer te veel water op die baan val. Die kode vir die zoemer is ingebed in die kode vir die invoer van reënwater.

Stap 6: Invoer van vibrasiesensor

Invoer van vibrasiesensor
Invoer van vibrasiesensor
Invoer van vibrasiesensor
Invoer van vibrasiesensor

Hierbo is die bedrading vir die vibrasiesensor. Trillingsensors kan belangrik wees vir spoorwegstelsels as rotse op 'n spoor val. Die MATLAB -kode word hieronder geplaas.

%% Vibrasiesensor Maak alles skoon, clc

PIEZO_PIN = 'A3'; % Verklaring van die analoog pen wat aan die vibrasiesensor gekoppel is a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno'); % Initialiseer die tyd en interval om vibrasie -monsterneming te meet Duration = 30; % Sekondes samplingInterval = 1;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = lengte (samplingTimes);

Deur die kode uit die volgende bron te gebruik, het ons dit aangepas om a aan te skakel

% pers LED as vibrasie waargeneem word.

% SparkFun Tinker Kit, RGB LED, geskryf deur SparkFun Electronics, % met baie hulp van die Arduino -gemeenskap

% Aangepas by MATLAB deur Eric Davishahl

% Initialiseer die RGB -pen

RED_PIN = 'D5';

GREEN_PIN = 'D6';

BLUE_PIN = 'D7';

% Vir lus om spanningveranderings van die vibrasiesensor oor 'n

% spesifieke tydsinterval (30 sekondes)

vir indeks = 1: numSamples

volt3 = readVoltage (a, PIEZO_PIN);

% As verklaring om 'n pers LED aan te skakel as vibrasie waargeneem word

as volt3> 0,025

writeDigitalPin (a, RED_PIN, 1);

Die skep van 'n pers lig

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 1);

anders % Skakel die LED af as daar geen trilling opgemerk word nie.

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

einde

% Toon die spanning soos dit gemeet word.

fprintf ('Spanning by %d sekondes is %5.4f V. / n', …

monsternemingstye (indeks), volt3);

pouse (samplingInterval)

einde

% Knip lig af wanneer vibrasies gemeet word

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

Stap 7: Uitvoer van trillingsensor

Uitvoer van trillingsensor
Uitvoer van trillingsensor

Hierbo is die bedrading vir die RBG LED -lig wat gebruik word. Die lig sal pers skyn as vibrasies waargeneem word. Die MATLAB -kode vir die uitset is ingebed in die kode vir die invoer.

Stap 8: Gevolgtrekking

Nadat u al hierdie stappe gevolg het, moet u nou 'n arduino hê wat die temperatuur, reënwater en trillings kan opspoor. As u kyk hoe hierdie sensors op klein skaal werk, is dit maklik om te dink hoe noodsaaklik dit vir spoorwegstelsels in die moderne lewe kan wees!

Aanbeveel: