Агуулгын хүснэгт:

Төмөр замыг хамгаалахын тулд Arduino дээрх температур, борооны ус, чичиргээ мэдрэгчийг ашиглах: 8 алхам (зурагтай)
Төмөр замыг хамгаалахын тулд Arduino дээрх температур, борооны ус, чичиргээ мэдрэгчийг ашиглах: 8 алхам (зурагтай)

Видео: Төмөр замыг хамгаалахын тулд Arduino дээрх температур, борооны ус, чичиргээ мэдрэгчийг ашиглах: 8 алхам (зурагтай)

Видео: Төмөр замыг хамгаалахын тулд Arduino дээрх температур, борооны ус, чичиргээ мэдрэгчийг ашиглах: 8 алхам (зурагтай)
Видео: LDmicro 2: Создание лестничной схемы (программирование лестничной логики ПЛК микроконтроллера с помощью LDmicro) 2024, Долдугаар сарын
Anonim
Төмөр замыг хамгаалахын тулд Arduino дээрх температур, борооны ус, чичиргээ мэдрэгчийг ашиглах
Төмөр замыг хамгаалахын тулд Arduino дээрх температур, борооны ус, чичиргээ мэдрэгчийг ашиглах

Орчин үеийн нийгэмд төмөр замын зорчигчид нэмэгдэх нь төмөр замын компаниуд эрэлт хэрэгцээг хангахын тулд сүлжээг оновчтой болгохын тулд илүү их зүйлийг хийх ёстой гэсэн үг юм. Энэхүү төсөлд бид arduino самбар дээрх температур, борооны ус, чичиргээ мэдрэгч нь зорчигчдын аюулгүй байдлыг нэмэгдүүлэхэд хэрхэн тусалж болохыг бага хэмжээгээр харуулах болно.

Энэхүү зааварчилгаа нь arduino дээрх температур, борооны ус, чичиргээ мэдрэгчүүдийн утсыг алхам алхамаар харуулахаас гадна эдгээр мэдрэгчийг ажиллуулахад шаардлагатай MATLAB кодыг харуулах болно.

Алхам 1: эд анги, материал

1. MATLAB -ийн хамгийн сүүлийн хувилбарыг суулгасан компьютер

2. Arduino самбар

3. Температур мэдрэгч

4. Борооны усны мэдрэгч

5. Чичиргээ мэдрэгч

6. Улаан LED гэрэл

7. Цэнхэр LED гэрэл

8. Ногоон LED гэрэл

9. RBG LED гэрэл

10. Баззер

11. 18 эрэгтэй-эрэгтэй утас

12. 3 эмэгтэй эрэгтэй утас

13. 2 Эмэгтэй-Эмэгтэй утас

14. 6 330 ом эсэргүүцэл

15. 100 ом эсэргүүцэл

Алхам 2: Температур мэдрэгчийн утас

Температур мэдрэгчийн утас
Температур мэдрэгчийн утас
Температур мэдрэгчийн утас
Температур мэдрэгчийн утас

Дээрх нь температур мэдрэгчийн оролтын утас ба MATLAB код юм.

Газраас болон 5В -аас утаснуудыг бүхэлд нь самбар дээр зөвхөн нэг удаа сөрөг ба эерэг чиглэлд ажиллуулах шаардлагатай. Эндээс эхлэн бүх газардуулгын холболтыг сөрөг баганаас, 5В -ийн аливаа холболтыг эерэг баганаас хийх болно.

Доорх кодыг температур мэдрэгчийн хувьд хуулж буулгаж болно.

%% TEMPERATURE SENSOR % Температур мэдрэгчийн хувьд бид дараах эх сурвалжийг ашигласан

% EF230 вэбсайтын материал нь хэрэглэгчдэд температурын мэдрэгчийг өөрчлөх боломжийг олгодог

% оролт ба 3 LED гэрэл гаралт нь графиктай.

%Энэ эскизийг SparkFun Electronics бичсэн, %нь Arduino -ийн олон нийтийн туслалцаатайгаар.

%Эрик Давишахлын MATLAB -д дасан зохицсон.

%SIK -ийн мэдээллийг https://learn.sparkfun.com/products/2 хаягаар орж үзнэ үү.

бүгдийг цэвэрлэ, clc

tempPin = 'A0'; % Температур мэдрэгчтэй холбогдсон аналог зүүг зарлаж байна

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

% Хүчдэлийг температур болгон хувиргадаг нэргүй функцийг тодорхойл

tempCfromVolts = @(вольт) (вольт-0.5)*100;

дээж авахХугацаа = 30;

түүвэр хийх Interval = 2; % Температурын заалтын хоорондох секунд

%дээж авах хугацааны векторыг тохируулсан

samplingTimes = 0: samplingInterval: samplelingDuration;

%үргэлжлэх хугацаа, интервал дээр үндэслэн дээжийн тоог тооцоолно

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 = str2double (dlg_ans {1})

min_temp = str2double (dlg_ans {2})

txt = sprintf ('Таны оруулсан оролт бүртгэгдсэн');

h = msgbox (txt);

хүлээх (h);

% Температурыг тодорхой тооны удаа унших давталтын хувьд.

индексийн хувьд = 1: numSamples

% TempPin дээрх хүчдэлийг уншаад хувьсах вольт болгон хадгална

вольт = readVoltage (a, tempPin);

tempC (индекс) = tempCfromVolts (вольт);

tempF (индекс) = tempC (индекс)*9/5+32; % Цельсийн хэмээс Фаренгейт рүү хөрвүүлэх

% Хэрэв ямар нөхцөл хангагдаж байгаагаас шалтгаалан тодорхой LED гэрэл асаах мэдэгдэл

if tempF (index)> = max_temp % Улаан LED

writeDigitalPin (a, 'D13', 0);

түр зогсоох (0.5);

writeDigitalPin (a, 'D13', 1);

түр зогсоох (0.5);

writeDigitalPin (a, 'D13', 0);

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

writeDigitalPin (a, 'D11', 0);

түр зогсоох (0.5);

writeDigitalPin (a, 'D11', 1);

түр зогсоох (0.5);

writeDigitalPin (a, 'D11', 0);

elseif tempF (index) <= min_temp % Цэнхэр LED

writeDigitalPin (a, 'D12', 0);

түр зогсоох (0.5);

writeDigitalPin (a, 'D12', 1);

түр зогсоох (0.5);

writeDigitalPin (a, 'D12', 0);

Төгсгөл

% Температурыг хэмжих үед харуулна

fprintf (' %d секундын температур %5.2f C буюу %5.2f F. / n',…

samplingTimes (индекс), tempC (индекс), tempF (индекс));

түр зогсоох (түүвэрлэлтийн интервал) %дараагийн саатал хүртэл саатал

Төгсгөл

% Температурын заалтыг төлөвлөх

зураг (1)

талбай (samplepingTimes, tempF, 'r-*')

xlabel ('Цаг (секунд)')

ylabel ('Температур (F)')

гарчиг ('RedBoard -ийн температурын уншилт')

Алхам 3: Температур мэдрэгчийн гаралт

Температур мэдрэгчийн гаралт
Температур мэдрэгчийн гаралт
Температур мэдрэгчийн гаралт
Температур мэдрэгчийн гаралт

Дээрх нь температур мэдрэгчийн гаралтын утас ба MATLAB код юм.

Энэ төслийн хувьд бид температур мэдрэгчийн гаралтанд гурван LED гэрлийг ашигласан. Хэрэв зам хэт халуун байвал улаан өнгийг, хэт хүйтэн байвал цэнхэр өнгийг, завсар байвал ногоон өнгийг ашигласан.

Алхам 4: Борооны усны мэдрэгчийн оролт

Борооны усны мэдрэгчийн оролт
Борооны усны мэдрэгчийн оролт
Борооны усны мэдрэгчийн оролт
Борооны усны мэдрэгчийн оролт

Дээрх нь борооны усны мэдрэгчийн утас бөгөөд MATLAB кодыг доор байрлуулсан болно.

%% усны мэдрэгч

бүгдийг цэвэрлэ, clc

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

waterPin = 'A1';

vDry = 4.80; Ус байхгүй үед хүчдэл

дээж авахХугацаа = 60;

түүвэр хийх Interval = 2;

samplingTimes = 0: samplingInterval: samplelingDuration;

numSamples = урт (samplepingTimes);

% Хүчдэлийг тодорхой хугацаанд (60 секунд) унших давталтын хувьд

индексийн хувьд = 1: numSamples

volt2 = readVoltage (a, waterPin); % Усны зүү аналогоос хүчдэлийг уншина уу

Хэрэв ус илэрсэн бол дуугарах дууны дохио. Хүчдэлийн уналт = ус

хэрэв вольт2 <vХуурай

playTone (a, 'D09', 2400) % playTone функц нь MathWorks -ээс

% Ус илэрсэн тохиолдолд зорчигчдод анхааруулга харуулна

waitfor (warningdlg ('Таны галт тэрэг усны аюулаас болж саатаж магадгүй'));

Төгсгөл

% Хүчдэлийг усны мэдрэгчээр хэмжиж харуулна

fprintf (' %d секунд дэх хүчдэл нь %5.4f V. / n',…

samplingTimes (индекс), вольт2);

түр зогсоох (түүвэрлэлтийн интервал)

Төгсгөл

Алхам 5: Борооны усны мэдрэгчийн гаралт

Борооны усны мэдрэгчийн гаралт
Борооны усны мэдрэгчийн гаралт

Дээрх нь зам дээр хэт их ус унах бүрт дуугардаг дуугарагчийн утас юм. Буузны кодыг борооны усны оролтын код дотор оруулсан болно.

Алхам 6: Чичиргээ мэдрэгчийн оролт

Чичиргээ мэдрэгчийн оролт
Чичиргээ мэдрэгчийн оролт
Чичиргээ мэдрэгчийн оролт
Чичиргээ мэдрэгчийн оролт

Дээрх нь чичиргээ мэдрэгчийн утас юм. Чулуулаг зам дээр унасан тохиолдолд чичиргээ мэдрэгч нь төмөр замын системд чухал үүрэг гүйцэтгэдэг. MATLAB кодыг доор байрлуулсан болно.

%% чичиргээ мэдрэгч Бүгдийг цэвэрлэ, clc

PIEZO_PIN = 'A3'; % Чичиргээ мэдрэгчтэй холбогдсон аналог зүүг зарлах a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno'); % Чичиргээний түүвэрлэлтийг хэмжих цаг ба интервалыг эхлүүлэхDuration = 30; % Секундын түүвэрлэлтийн интервал = 1;

samplingTimes = 0: samplingInterval: samplelingDuration;

numSamples = урт (samplingTimes);

% Дараах эх сурвалжаас авсан кодыг ашиглан бид үүнийг асаахын тулд өөрчилсөн

чичиргээ илэрсэн бол % ягаан 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 асаах тухай мэдэгдэл

хэрэв вольт3> 0.025

writeDigitalPin (a, RED_PIN, 1);

Нил ягаан өнгийн гэрэл үүсгэх

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 1);

өөр % Хэрэв чичиргээ илрээгүй бол LED -ийг унтраа.

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

Төгсгөл

% Хүчдэлийг хэмжих үед харуулна.

fprintf (' %d секунд дэх хүчдэл нь %5.4f V. / n',…

samplingTimes (индекс), вольт3);

түр зогсоох (түүвэр хийх завсар)

Төгсгөл

% Чичиргээг хэмжих үед гэрлийг таслах

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

Алхам 7: Чичиргээ мэдрэгчийн гаралт

Чичиргээ мэдрэгчийн гаралт
Чичиргээ мэдрэгчийн гаралт

Дээрх нь RBG LED гэрлийг ашигладаг утас юм. Чичиргээ илрэх үед гэрэл ягаан өнгөтэй болно. Гаралтын MATLAB кодыг оролтын код дотор оруулсан болно.

Алхам 8: Дүгнэлт

Эдгээр бүх алхмуудыг хийсний дараа та одоо температур, борооны ус, чичиргээг илрүүлэх чадвартай ардуинотой байх ёстой. Эдгээр мэдрэгчүүд хэрхэн бага хэмжээгээр ажилладаг болохыг харахад орчин үеийн амьдралд төмөр замын системд ямар чухал ач холбогдолтой болохыг төсөөлөхөд хялбар байдаг!

Зөвлөмж болгож буй: