Оглавление:

Использование датчиков температуры, дождевой воды и вибрации на Arduino для защиты железных дорог: 8 шагов (с изображениями)
Использование датчиков температуры, дождевой воды и вибрации на Arduino для защиты железных дорог: 8 шагов (с изображениями)

Видео: Использование датчиков температуры, дождевой воды и вибрации на Arduino для защиты железных дорог: 8 шагов (с изображениями)

Видео: Использование датчиков температуры, дождевой воды и вибрации на Arduino для защиты железных дорог: 8 шагов (с изображениями)
Видео: Гидродинамическая прочистка канализации Полтава 2024, Июль
Anonim
Использование датчиков температуры, дождевой воды и вибрации на Arduino для защиты железных дорог
Использование датчиков температуры, дождевой воды и вибрации на Arduino для защиты железных дорог

В современном обществе рост числа пассажиров железных дорог означает, что железнодорожные компании должны делать больше для оптимизации сетей, чтобы не отставать от спроса. В этом проекте мы покажем в небольшом масштабе, как датчики температуры, дождевой воды и вибрации на плате Arduino могут потенциально помочь повысить безопасность пассажиров.

В этом руководстве будет поэтапно показана проводка датчиков температуры, дождевой воды и вибрации на Arduino, а также показан код MATLAB, необходимый для запуска этих датчиков.

Шаг 1: Детали и материалы

1. Компьютер с установленной последней версией MATLAB.

2. Плата Arduino

3. Датчик температуры

4. Датчик дождевой воды

5. Датчик вибрации

6. Красный светодиодный индикатор

7. Синий светодиодный индикатор

8. Зеленый светодиодный индикатор

9. Светодиодная лампа RBG

10. Зуммер

11. 18 проводов папа-папа

12. 3 женских-мужских провода

13. 2 женских-женских провода

14. 6 резисторов 330 Ом

15. 1 резистор 100 Ом

Шаг 2: Подключение датчика температуры

Проводка датчика температуры
Проводка датчика температуры
Проводка датчика температуры
Проводка датчика температуры

Выше показаны проводка и код MATLAB для входа датчика температуры.

Провода от земли и 5V нужно подключить к отрицательному и положительному положению только один раз для всей платы. С этого момента любые заземляющие соединения будут исходить от отрицательной колонки, а любые соединения 5 В - от положительной колонки.

Приведенный ниже код можно скопировать и вставить для датчика температуры.

%% TEMPERATURE SENSOR% Для датчика температуры мы использовали следующий источник вместе с

Материал веб-сайта% EF230 для модификации нашего датчика температуры, чтобы позволить пользователю

% входа и 3 светодиодных выхода с графиком.

% Этот скетч был написан SparkFun Electronics, % с большой помощью сообщества Arduino.

% Адаптировано к MATLAB Эриком Дэвишахлом.

% Посетите 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 = {'Введите максимальную температуру', 'Введите минимальную температуру'};

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);

waitfor (h);

% Для цикла, чтобы считывать температуру определенное количество раз.

для индекса = 1: numSamples

% Считайте напряжение на tempPin и сохраните как переменные вольт

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

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

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

% Если инструкции по включению определенных светодиодных индикаторов мигают в зависимости от того, какое условие выполнено

если tempF (index)> = max_temp% Красный светодиод

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% Зеленый светодиод

writeDigitalPin (a, 'D11', 0);

пауза (0,5);

writeDigitalPin (а, 'D11', 1);

пауза (0,5);

writeDigitalPin (a, 'D11', 0);

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

pause (samplingInterval)% задержки до следующей выборки

конец

% Построение показаний температуры

Рисунок 1)

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

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

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

title («Показания температуры с RedBoard»)

Шаг 3: Выходной сигнал датчика температуры

Выход датчика температуры
Выход датчика температуры
Выход датчика температуры
Выход датчика температуры

Выше показаны проводка и код MATLAB для выхода датчика температуры.

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

Шаг 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);

% Для цикла для считывания напряжения в течение определенного промежутка времени (60 секунд)

для индекса = 1: numSamples

volt2 = readVoltage (a, waterPin); % Считайте напряжение с аналогового вывода воды

% Если заявление о включении зуммера при обнаружении воды. Падение напряжения = вода

если volt2 <vDry

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

% Отображение предупреждения для пассажиров при обнаружении воды

waitfor (warndlg ('Ваш поезд может задержаться из-за препятствий на воде'));

конец

% Отображение напряжения, измеренного датчиком воды

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

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

пауза (интервал выборки)

конец

Шаг 5: Выход датчика дождевой воды

Выход датчика дождевой воды
Выход датчика дождевой воды

Выше приведена проводка для зуммера, который издает звуковой сигнал, когда на дорожку падает слишком много воды. Код для зуммера встроен в код для входа дождевой воды.

Шаг 6: Вход датчика вибрации

Вход датчика вибрации
Вход датчика вибрации
Вход датчика вибрации
Вход датчика вибрации

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

%% Датчик вибрации очистить все, clc

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

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = длина (samplingTimes);

% Используя код из следующего источника, мы изменили его, чтобы включить

% пурпурный светодиод, если обнаружена вибрация.

% SparkFun Tinker Kit, светодиод RGB, написанный SparkFun Electronics, % с большой помощью сообщества Arduino

% Адаптировано к MATLAB Эриком Дэвишахлом

% Инициализация вывода RGB

RED_PIN = 'D5';

GREEN_PIN = 'D6';

BLUE_PIN = 'D7';

% Для контура регистрации изменений напряжения с датчика вибрации в течение

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

для индекса = 1: numSamples

volt3 = readVoltage (a, PIEZO_PIN);

% If заявление о включении пурпурного светодиода при обнаружении вибрации

если вольт3> 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 В. / n',…

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

пауза (интервал выборки)

конец

% Отключение света при измерении вибрации завершено

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

Шаг 7: Выходной сигнал датчика вибрации

Выход датчика вибрации
Выход датчика вибрации

Выше показана проводка для используемой светодиодной лампы RBG. При обнаружении вибрации индикатор загорится фиолетовым светом. Код MATLAB для вывода встроен в код для ввода.

Шаг 8: Заключение

После выполнения всех этих шагов у вас должен быть Arduino, способный определять температуру, дождевую воду и вибрации. Наблюдая за тем, как эти датчики работают в небольшом масштабе, легко представить, насколько они жизненно важны для железнодорожных систем в современной жизни!

Рекомендуемые: