Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Промышленные технологии

Автоматическая система управления железнодорожными воротами – схема и исходный код

Схема контроллера высокоскоростных железнодорожных ворот с использованием Arduino и ультразвуковых датчиков

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

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

Сложность автоматизации может варьироваться от простого управления включением/выключением до очень сложных многовариантных алгоритмов. Системы управления для целей автоматизации могут быть либо с разомкнутым контуром, либо с замкнутым контуром, что означает, что они могут работать либо с одним входным параметром, либо в ответ на выход, подаваемый в качестве входа, как в случае систем с замкнутым контуром. Автоматизация в железнодорожной отрасли является важной потребностью, поскольку мы вступаем в продвинутую эпоху, и для снижения риска несчастных случаев из-за ошибок, вызванных человеческим фактором, очень важно, чтобы эти задачи выполнялись этими умными машинами.

Как и в случае с любой технологией, автоматизация также имеет свои плюсы и минусы:

Плюсы

  1. Увеличение производительности
  2. Предсказуемое качество (улучшение качества)
  3. Повышенная надежность
  4. Отличная согласованность вывода
  5. Снижение трудозатрат
  6. Высокая точность
  7. Снижает усилия человека при монотонной работе.

Минусы

  1. Подвержен угрозам безопасности
  2. Стоимость разработки может превысить прогнозируемую.
  3. Высокая стоимость настройки
  4. Причина безработицы во многих секторах

Упомянутые плюсы намного перевешивают минусы, и именно поэтому весь мир вступает в эру автоматизации.

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

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

Компоненты, необходимые для контроллера железнодорожных ворот

  1. Ардуино УНО
  2. Зуммер
  3. Ультразвуковой датчик (HC-SR04)
  4. Серводвигатель

Необходимое программное обеспечение:

  1. Интегрированная среда разработки Arduino
  2. Протей

Схема контроллера железнодорожных ворот 

Описание компонента

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.

Ультразвуковой датчик (HC-SR04)

Ультразвуковой датчик — это основной датчик, который мы используем для определения расстояния до объекта. По-другому можно сказать, что он используется для измерения того, насколько далеко объект находится от конкретной точки отсчета. Он имеет в основном 4 контакта;

Как работает ультразвук? Передатчик (триггер) посылает высокочастотный звуковой сигнал, который затем отражается объектом, а затем отраженный сигнал принимается приемником (эхо). Значит скорость звука в воздухе нам известна, мы можем рассчитать расстояние. Этот датчик чрезвычайно популярен среди мастеров Arduino, которые ежедневно используют его в своих проектах, и для срабатывания этого датчика нам требуется высокий импульс длительностью 10 микросекунд и более.

Особенности ультразвукового датчика:-

Публикация по теме:Автоматическая система полива и орошения растений — схема, код и отчет о проекте

Сервопривод

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

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

Эти двигатели немного похожи на шаговые двигатели, которые обеспечивают управление без обратной связи. Шаговые двигатели имеют встроенные шаги, с которыми они вращаются, но из-за отсутствия системы обратной связи их использование ограничено одним конкретным приложением, для которого они были разработаны и изготовлены.

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

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

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

Зуммер

Зуммер может быть механическим, электронным, электромеханическим и пьезоэлектрическим по своей природе. Обычно мы используем электронный в печах, игровых шоу и бытовой технике и т. д. Эти зуммеры имеют внутреннюю цепь. Звук получается из-за движения диска. Диск имеет ферромагнитную природу. Это управляемое током устройство, на вход которого подается источник напряжения.

Работа контроллера автоматических железнодорожных ворот

В этой схеме мы использовали ультразвуковые датчики и серводвигатели, чтобы воспроизвести работу железнодорожного переезда. Оба датчика запускаются с помощью триггерных контактов, прикрепленных к плате 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.

Связанные проекты:


Промышленные технологии

  1. Защелка NOR Gate S-R
  2. Вероятные сбои в проверенных системах
  3. Элементы TTL NOR и OR
  4. Цепи управления двигателем
  5. Схема системы автоматического открывания дверей с обнаружением движения и работа
  6. Система управления ЧПУ M-TECH
  7. Автоматическое управление поездом
  8. Система сигнализации Arduino:SERENA
  9. Центр управления Arduino
  10. Облачный мониторинг, система удаленного управления