Съдържание:

Използване на сензори за температура, дъждовна вода и вибрации на Arduino за защита на железниците: 8 стъпки (със снимки)
Използване на сензори за температура, дъждовна вода и вибрации на Arduino за защита на железниците: 8 стъпки (със снимки)

Видео: Използване на сензори за температура, дъждовна вода и вибрации на Arduino за защита на железниците: 8 стъпки (със снимки)

Видео: Използване на сензори за температура, дъждовна вода и вибрации на Arduino за защита на железниците: 8 стъпки (със снимки)
Видео: Proyecto de heliostato Templastat / Templastat Heliostat Project: improvements, updates and test 2024, Юли
Anonim
Използване на сензори за температура, дъждовна вода и вибрации на Arduino за защита на железниците
Използване на сензори за температура, дъждовна вода и вибрации на Arduino за защита на железниците

В съвременното общество увеличението на железопътните пътници означава, че железопътните компании трябва да направят повече за оптимизиране на мрежите, за да бъдат в крак с търсенето. В този проект ще покажем в малък мащаб как сензорите за температура, дъждовна вода и вибрации на дъска arduino могат потенциално да помогнат за повишаване на безопасността на пътниците.

Този Instructable стъпка по стъпка ще покаже окабеляването за сензорите за температура, дъждовна вода и вибрации на arduino, както и ще покаже кода MATLAB, необходим за работа на тези сензори.

Стъпка 1: Части и материали

1. Компютър с инсталирана най -новата версия на MATLAB

2. Arduino Board

3. Температурен сензор

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: Окабеляване на сензора за температура

Окабеляване на температурния сензор
Окабеляване на температурния сензор
Окабеляване на температурния сензор
Окабеляване на температурния сензор

По -горе е окабеляването и кодът MATLAB за входа на температурния сензор.

Проводниците от земята и 5V трябва да се проверят съответно веднъж до отрицателни и положителни за цялата платка. От тук нататък всички заземяващи връзки ще идват от отрицателната колона и всички 5V връзки ще идват от положителната колона.

Кодът по -долу може да бъде копиран и поставен за температурния сензор.

%% ТЕМПЕРАТУРЕН СЕНЗОР % За температурния сензор използвахме следния източник заедно с

% Материал за уебсайт EF230 за промяна на нашия сензор за температура, за да позволи на потребителя

% вход и 3 LED светлинни изхода с графика.

%Тази скица е написана от SparkFun Electronics, %с много помощ от общността на Arduino.

%Адаптирано към MATLAB от Eric Davishahl.

%Посетете https://learn.sparkfun.com/products/2 за информация за SIK.

изчисти всичко, clc

tempPin = 'A0'; % Деклариране на аналоговия щифт, свързан към сензора за температура

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 = {'Enter Max Temp', 'Enter Min Temp'};

dlg_title = 'Интервали на температурата на релсите';

N = 22;

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

% Съхранение на входовете от потребителя и показване, че входът е записан

max_temp = str2double (dlg_ans {1})

min_temp = str2double (dlg_ans {2})

txt = sprintf ('Вашият вход е записан');

h = msgbox (txt);

изчакайте (h);

% For цикъл за четене на температурите определен брой пъти.

за индекс = 1: numSamples

% Прочетете напрежението при tempPin и запазете като променливи волта

volts = readVoltage (a, tempPin);

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

tempF (индекс) = tempC (индекс)*9/5+32; % Конвертиране от Целзий в Фаренхайт

% Ако изявленията за налагане на конкретни LED светлини мигат в зависимост от това кое условие е изпълнено

ако tempF (индекс)> = max_temp % Червен светодиод

writeDigitalPin (a, 'D13', 0);

пауза (0,5);

writeDigitalPin (a, 'D13', 1);

пауза (0,5);

writeDigitalPin (a, 'D13', 0);

elseif tempF (индекс)> = min_temp && tempF (индекс) <max_temp % Зелен светодиод

writeDigitalPin (a, 'D11', 0);

пауза (0,5);

writeDigitalPin (a, 'D11', 1);

пауза (0,5);

writeDigitalPin (a, 'D11', 0);

elseif tempF (индекс) <= min_temp % Син светодиод

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 (индекс));

пауза (samplingInterval) %забавяне до следващата проба

край

% Начертаване на показанията на температурата

Фигура 1)

сюжет (samplingTimes, tempF, 'r-*')

xlabel ('Време (секунди)')

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

заглавие („Температурни показания от RedBoard“)

Стъпка 3: Изход на сензора за температура

Изход на сензора за температура
Изход на сензора за температура
Изход на сензора за температура
Изход на сензора за температура

По -горе е окабеляването и MATLAB кодът за изхода на температурния сензор.

За този проект използвахме три LED светлини за изхода на нашия температурен сензор. Използвахме червено за, ако пистите бяха твърде горещи, синьо, ако бяха твърде студени, и зелено, ако бяха между тях.

Стъпка 4: Вход на сензора за дъждовна вода

Вход за сензор за дъждовна вода
Вход за сензор за дъждовна вода
Вход за сензор за дъждовна вода
Вход за сензор за дъждовна вода

По -горе е окабеляването за сензора за дъждовна вода и кодът MATLAB е публикуван по -долу.

%% Воден сензор

изчисти всичко, clc

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

waterPin = 'A1';

vDry = 4,80; % Напрежение, когато няма вода

samplingDuration = 60;

samplingInterval = 2;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = дължина (samplingTimes);

% For цикъл за отчитане на напрежението за определен период от време (60 секунди)

за индекс = 1: numSamples

volt2 = readVoltage (a, waterPin); % Прочетете напрежението от аналоговия воден щифт

% Ако изявлението да издаде звуков сигнал, ако се открие вода. Спад на напрежението = вода

ако volt2 <vDry

playTone (a, 'D09', 2400) % функция playTone от MathWorks

% Показва предупреждение на пътниците, ако се открие вода

waitfor (warndlg („Вашият влак може да закъснее поради опасности за водата“));

край

% Показва напрежението, измерено от сензора за вода

fprintf ('Напрежението при %d секунди е %5.4f V. / n',…

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

пауза (samplingInterval)

край

Стъпка 5: Изход на сензора за дъждовна вода

Изход на сензора за дъждовна вода
Изход на сензора за дъждовна вода

По -горе е окабеляването за зумер, който издава звуков сигнал, когато на пистата падне твърде много вода. Кодът за зумера е вграден в кода за входа на дъждовната вода.

Стъпка 6: Вход на сензора за вибрации

Вход за сензор за вибрации
Вход за сензор за вибрации
Вход за сензор за вибрации
Вход за сензор за вибрации

По -горе е окабеляването за сензора за вибрации. Сензорите за вибрации могат да бъдат важни за железопътните системи в случай на падащи скали по релса. Кодът на MATLAB е публикуван по -долу.

%% Вибрационен сензор Ясно всички, clc

PIEZO_PIN = 'A3'; % Деклариране на аналоговия щифт, свързан към сензора за вибрации a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno'); % Инициализиране на времето и интервала за измерване на вземане на проби от вибрации Продължителност = 30; % Секунди samplingInterval = 1;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = дължина (samplingTimes);

% Използвайки кода от следния източник, ние го променихме, за да включим a

% лилав светодиод, ако се открие вибрация.

% SparkFun Tinker Kit, RGB LED, написано от SparkFun Electronics, % с много помощ от общността на Arduino

% Адаптирано към MATLAB от Eric Davishahl

% Инициализиране на RGB пина

RED_PIN = 'D5';

GREEN_PIN = 'D6';

BLUE_PIN = 'D7';

% For контур за запис на промени в напрежението от сензора за вибрации над a

% определен интервал от време (30 секунди)

за индекс = 1: numSamples

volt3 = readVoltage (a, PIEZO_PIN);

% Ако изявление за включване на лилав светодиод, ако се открие вибрация

ако volt3> 0,025

writeDigitalPin (a, RED_PIN, 1);

% Създаване на лилава светлина

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 1);

else % Изключете светодиода, ако не се открият вибрации.

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

край

% Показва напрежението, докато се измерва.

fprintf ('Напрежението при %d секунди е %5.4f V. / n',…

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

пауза (samplingInterval)

край

% Изключете светлината, когато се правят измервания на вибрациите

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

Стъпка 7: Изход на сензора за вибрации

Изход на сензора за вибрации
Изход на сензора за вибрации

По -горе е окабеляването за използваната RBG LED светлина. Светлината ще свети лилаво, когато се открият вибрации. Кодът MATLAB за изхода е вграден в кода за входа.

Стъпка 8: Заключение

След като изпълните всички тези стъпки, сега трябва да имате arduino с възможност за откриване на температура, дъждовна вода и вибрации. Докато разглеждате как тези сензори работят в малък мащаб, е лесно да си представим колко жизненоважни биха могли да бъдат те за железопътните системи в съвременния живот!

Препоръчано: