Автоматическая система управления железнодорожными воротами – схема и исходный код
Схема контроллера высокоскоростных железнодорожных ворот с использованием Arduino и ультразвуковых датчиков
В этом руководстве мы узнаем, как спроектировать простую и эффективную систему автоматического управления высокоскоростными железнодорожными воротами. Это относительно простой подход к этому проекту, но вы можете взять его в качестве основного строительного блока, и в дальнейшей модификации мы также можем отслеживать скорость поезда, с которым он проезжает, и многое другое. Но прежде чем мы перейдем непосредственно к руководству, нам нужно получить представление о том, что такое автоматизация и чего именно от нее можно ожидать.
Автоматизация в основном означает разработку метода, позволяющего сократить или исключить вмешательство человека. В этом уроке мы собираемся объяснить, как автоматизировать железнодорожные ворота с помощью Arduino, используя серводвигатель вместе с программным обеспечением Proteus.
Сложность автоматизации может варьироваться от простого управления включением/выключением до очень сложных многовариантных алгоритмов. Системы управления для целей автоматизации могут быть либо с разомкнутым контуром, либо с замкнутым контуром, что означает, что они могут работать либо с одним входным параметром, либо в ответ на выход, подаваемый в качестве входа, как в случае систем с замкнутым контуром. Автоматизация в железнодорожной отрасли является важной потребностью, поскольку мы вступаем в продвинутую эпоху, и для снижения риска несчастных случаев из-за ошибок, вызванных человеческим фактором, очень важно, чтобы эти задачи выполнялись этими умными машинами.
- Публикация по теме:Схема детектора скорости автомобиля — работа и исходный код
Как и в случае с любой технологией, автоматизация также имеет свои плюсы и минусы:
Плюсы
- Увеличение производительности
- Предсказуемое качество (улучшение качества)
- Повышенная надежность
- Отличная согласованность вывода
- Снижение трудозатрат
- Высокая точность
- Снижает усилия человека при монотонной работе.
Минусы
- Подвержен угрозам безопасности
- Стоимость разработки может превысить прогнозируемую.
- Высокая стоимость настройки
- Причина безработицы во многих секторах
Упомянутые плюсы намного перевешивают минусы, и именно поэтому весь мир вступает в эру автоматизации.
В этом руководстве мы пытаемся автоматизировать открытие и закрытие железнодорожных ворот всякий раз, когда цепь обнаруживает поезд на пути, а также мы будем включать зуммер или сигнал тревоги, отображающий скорость поезда выше определенного порога, и для достижения этого мы собираемся использовать два очень широко используемых электронных компонента, то есть Arduino и серводвигатель.
Датчик, который мы собираемся использовать в этом уроке, — это ультразвуковой датчик, но его использование не обязательно, мы также можем сделать другую версию этого проекта, используя ИК-датчик. модуль, и это зависит от нашего выбора, что мы хотим использовать и что нам доступно.
- Публикация по теме:Система автоматизации умного дома — схема и исходный код
Компоненты, необходимые для контроллера железнодорожных ворот
- Ардуино УНО
- Зуммер
- Ультразвуковой датчик (HC-SR04)
- Серводвигатель
Необходимое программное обеспечение:
- Интегрированная среда разработки Arduino
- Протей
Схема контроллера железнодорожных ворот
Описание компонента
Arduino UNO
Arduino — это, по сути, плата для разработки с открытым исходным кодом, использующая в основном микроконтроллер Microchip ATmega328P и производимая Arduino.cc. Плата поставляется с набором входных/выходных контактов, состоящих из цифровых и аналоговых, которые могут быть подключены к различным платам расширения и внешним схемам.
Плата поставляется с 14 цифровыми контактами и 6 аналоговыми контактами, которые используются или программируются с помощью интегрированной среды разработки (IDE), которая поставляется вместе с Arduino. ИДЕ. Программа записывается через USB-кабель типа B. Способы питания платы могут быть либо с помощью USB-кабеля, либо путем подключения источника постоянного тока 9 вольт. Допустимый диапазон напряжения варьируется от 7 до 20 вольт. С точки зрения дизайна и работы он не слишком отличается от других членов своего семейства, а именно Arduino Nano и Arduino Leonardo.
STK500 по-прежнему является исходным протоколом для связи Uno. Основное отличие от своих предшественников заключается в том, что он не использует микросхему драйвера FTDI USB-to-serial. Напротив, он использует ATmega 16U2 (Atmega8U2 до версии R2), который запрограммирован как преобразователь USB-to-serial.
- Похожая статья:Переменный источник питания с использованием Arduino UNO — схема и код
Ультразвуковой датчик (HC-SR04)
Ультразвуковой датчик — это основной датчик, который мы используем для определения расстояния до объекта. По-другому можно сказать, что он используется для измерения того, насколько далеко объект находится от конкретной точки отсчета. Он имеет в основном 4 контакта;
- Триггер
- Эхо-булавка
- Контакт заземления
- Контакт VCC (+5 В)
Как работает ультразвук? Передатчик (триггер) посылает высокочастотный звуковой сигнал, который затем отражается объектом, а затем отраженный сигнал принимается приемником (эхо). Значит скорость звука в воздухе нам известна, мы можем рассчитать расстояние. Этот датчик чрезвычайно популярен среди мастеров Arduino, которые ежедневно используют его в своих проектах, и для срабатывания этого датчика нам требуется высокий импульс длительностью 10 микросекунд и более.
Особенности ультразвукового датчика:-
- Электропитание:+5 В постоянного тока.
- Ток покоя:<2 мА
- Рабочий ток:15 мА
- Рабочий угол:<15°
- Радиус действия:от 2 до 400 см/1 дюйм – 13 футов.
- Разрешение:0,3 см.
- Угол измерения:30 градусов.
- Длительность входного импульса триггера:10 мкс.
- Размеры:45 мм x 20 мм x 15 мм.
Публикация по теме:Автоматическая система полива и орошения растений — схема, код и отчет о проекте
Сервопривод
Это особый тип двигателей, которые используются для очень специфического движения под определенным углом. Это поворотный или линейный привод, который обеспечивает точное управление в определенных угловых или линейных положениях. Серводвигатель — это не отдельный элемент, а комбинация подходящего двигателя и датчика, который дает обратную связь о текущем положении двигателя.
Для использования этого серводвигателя необходимо использовать несколько других усовершенствованных модулей, поскольку он не похож с точки зрения простоты использования двигателя постоянного тока. Эти двигатели в основном используются в робототехнике и крупномасштабном производстве.
Эти двигатели немного похожи на шаговые двигатели, которые обеспечивают управление без обратной связи. Шаговые двигатели имеют встроенные шаги, с которыми они вращаются, но из-за отсутствия системы обратной связи их использование ограничено одним конкретным приложением, для которого они были разработаны и изготовлены.
Отсутствие обратной связи — это то, что отличает серводвигатель от этих шаговых двигателей и дает им преимущество, поскольку они динамичны и могут быть настроены в соответствии с поставленной задачей с помощью небольшие изменения в программировании. Специальный модуль контроллера обычно поставляется производителем с серводвигателем.
Механизм – По сути, это сервомеханизм с замкнутым контуром, использующий систему обратной связи для обновления движения и конечного положения ротора. Вход для управления двигателем может быть аналоговым или цифровым.
- Похожая статья: Измерение расстояния с помощью Arduino и ультразвукового датчика
К двигателю подключается энкодер определенного типа, чтобы передавать информацию о положении и скорости в систему управления, которая генерирует сигнал ошибки до тех пор, пока желаемый выходной сигнал не будет достигнут. И чтобы уменьшить этот сигнал ошибки, двигатель может двигаться в любом направлении, чтобы окончательно уменьшить сигнал ошибки до нуля. Когда это условие достигается, желаемый результат достигается. Усовершенствованные и сложные серводвигатели оснащены оптическим энкодером на выходном валу для измерения его скорости.
Зуммер
Зуммер может быть механическим, электронным, электромеханическим и пьезоэлектрическим по своей природе. Обычно мы используем электронный в печах, игровых шоу и бытовой технике и т. д. Эти зуммеры имеют внутреннюю цепь. Звук получается из-за движения диска. Диск имеет ферромагнитную природу. Это управляемое током устройство, на вход которого подается источник напряжения.
Работа контроллера автоматических железнодорожных ворот
В этой схеме мы использовали ультразвуковые датчики и серводвигатели, чтобы воспроизвести работу железнодорожного переезда. Оба датчика запускаются с помощью триггерных контактов, прикрепленных к плате Arduino, и рассчитывается расстояние. Дальнейшая работа схемы полностью зависит от измеренного расстояния.
Если путь свободен, серводвигатели ничего не сделают, но если поезд прибудет с любой стороны пути, расстояние, измеренное одним из датчиков, будет отличаться от предыдущего расстояния. Таким образом, мы будем получать информацию о прибытии поезда, и в мгновение ока Arduino установит свои цифровые контакты 7 и 8 в состояние ВЫСОКИЙ.
Эти штифты соединены с двумя серводвигателями, после чего сервопривод пройдет угловое расстояние 90 o и, следовательно, ворота закроются, чтобы заблокировать путь для транспортных средств. Когда поезд отойдет от другого датчика, Arduino получит уведомление об отправлении поезда, а серводвигатели снова займут прежнее положение, чтобы открыть ворота.
Учитывая безопасность людей, мы добавили в эту схему еще одну функцию, а именно оповещение их о приближении высокоскоростного поезда. Это достигается расчетом времени между переходами двух датчиков в одном цикле. Если обнаружится, что время меньше определенного значения, зуммер издаст жужжащий звук, чтобы предупредить людей, находящихся поблизости от перехода.
- Публикация по теме:Умная система орошения — принципиальная схема и код
Исходный код проекта и объяснение
В этом скетче мы определили пять переменных целочисленного типа и четыре переменных типа long. Переменные tr1, tr2, eh1 и eh2 используются для отправки импульса и получения значения времени в микросекундах, а переменные val1, val2, dis1 и dis2 используются для хранения значений времени в микросекундах и расстояния в см. Скорость передачи установлена на 9600 бит/сек и отвечает за связь между платой и последовательным монитором.
const int tr1 = 13, eh1 = 12, tr2 = 3, eh2 = 2;;
int bz = 11;
unsigned long val1, dis1, val2, dis2;
#include
Servo myservo1;
Servo myservo2;
int pos=-1;
Функции, включенные в настройку void (), будут выполняться только один раз во время выполнения, и их задачей является определение скорости передачи данных и режима контакта в качестве входа или выхода.
void setup() {
// put your setup code here, to run once:
pinMode(tr1, OUTPUT);
pinMode(tr2, OUTPUT);
pinMode(bz, OUTPUT);
pinMode(eh1, INPUT);
pinMode(eh2, INPUT);
myservo1.attach(8);
myservo2.attach(7);
Serial.begin(9600);
}
В соответствии с требуемым функционированием мы непрерывно измеряем расстояние, активируя ультразвуковой датчик, и вычисленное расстояние устанавливается в качестве параметра условного оператора. Если условие истинно, то переменная «pos» увеличивает свое значение для запуска серводвигателей, а когда условие оказывается неверным, переменная «pos» уменьшает свое значение, чтобы вернуть серводвигатели в их предыдущее положение.
Есть еще одно условное выражение, которое проверяет, быстро ли обнаруживают объект два датчика, а затем устанавливает высокий уровень на выводе 11, чтобы включить зуммер, чтобы предупредить людей. Все эти процессы заключены в цикле void () и повторяются до тех пор, пока Arduino не будет сброшен или питание не прекратится.
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(tr1, LOW);
delayMicroseconds(2);
digitalWrite(tr1, HIGH);
delayMicroseconds(10);
digitalWrite(tr1, LOW);
val1 = pulseIn(eh1, HIGH);
dis1 = (val1 * 0.0343) / 2;
digitalWrite(tr2, LOW);
delayMicroseconds(2);
digitalWrite(tr2, HIGH);
delayMicroseconds(10);
digitalWrite(tr2, LOW);
val2 = pulseIn(eh2, HIGH);
dis2 = (val2 * 0.0343) / 2;
Serial.println("distance is ");
Serial.println(dis1);
Serial.println(dis2);
if(dis1 < 100 || dis2 < 100)
{
if(pos==-1){
for (pos = 0; pos <= 90; pos += 1) {
myservo1.write(pos);
myservo2.write(pos);
delay(15);}
}
delay(1000);
digitalWrite(tr1, LOW);
delayMicroseconds(2);
digitalWrite(tr1, HIGH);
delayMicroseconds(10);
digitalWrite(tr1, LOW);
val1 = pulseIn(eh1, HIGH);
dis1 = (val1 * 0.0343) / 2;
digitalWrite(tr2, LOW);
delayMicroseconds(2);
digitalWrite(tr2, HIGH);
delayMicroseconds(10);
digitalWrite(tr2, LOW);
val2 = pulseIn(eh2, HIGH);
dis2 = (val2 * 0.0343) / 2;
if(dis1 < 100 || dis2 < 100) {digitalWrite(bz, HIGH); Serial.println("distance2 is "); Serial.println(dis1); Serial.println(dis2);} } else if(dis1 >= 100 && dis2 >= 100)
{ if(pos==91){
for (pos = 90; pos >= 0; pos -= 1) {
myservo1.write(pos);
myservo2.write(pos);
delay(15);
}
}
digitalWrite(bz, LOW);
delay(200);
}
}
Сопряжение шестнадцатеричного файла с Proteus для моделирования: В Arduino IDE нажмите «Файл»> «Настройки», а затем в «Показать подробный вывод» проверьте параметры компиляции и загрузки. И после компиляции кода в окне ниже выберите и скопируйте расположение шестнадцатеричного файла, а в Proteus дважды щелкните Arduino, вставьте расположение файла в параметр «Файл программы» и нажмите «ОК». Теперь ваша схема готова к моделированию в Proteus.
Связанные проекты:
- Автоматический дверной звонок с обнаружением объектов с помощью Arduino
- Автоматическая ночная лампа с использованием Arduino
- Программирование ШИМ Arduino и его функции в Arduino
- Arduino Serial:последовательная связь Arduino
- Список идей для финальных проектов в области электроники
- Идеи проекта по электронике для студентов-инженеров
- Простые и базовые идеи мини-проекта по электронике для начинающих
Промышленные технологии
- Защелка NOR Gate S-R
- Вероятные сбои в проверенных системах
- Элементы TTL NOR и OR
- Цепи управления двигателем
- Схема системы автоматического открывания дверей с обнаружением движения и работа
- Система управления ЧПУ M-TECH
- Автоматическое управление поездом
- Система сигнализации Arduino:SERENA
- Центр управления Arduino
- Облачный мониторинг, система удаленного управления