산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 산업기술

자동 철도 건널목 제어기: 아두이노 회로 & 소스 코드

아두이노와 초음파 센서를 이용한 고속 자동 철도 건널목 제어 회로

이 튜토리얼에서는 단순하고 효율적인 자동 고속 철도 건널목 제어 시스템 설계 방법을 배웁니다. 이는 비교적 단순한 접근이지만 이를 기본 빌딩 블록으로 삼아 향후 열차 통과 속도 추적 등 더 많은 기능을 추가할 수 있습니다. 튜토리얼에 들어가기 전에 자동화가 무엇이고 무엇을 기대할 수 있는지 알아보겠습니다.

자동화는 기본적으로 인간의 노력/개입을 줄이거나 없애는 방법을 고안하는 것을 의미합니다. 이 튜토리얼에서는 Proteus 소프트웨어를 이용해 서보 모터와 아두이노로 철도 건널목을 자동화하는 방법을 설명합니다.

자동화 복잡성은 기본적인 "온/오프" 제어부터 고도의 다변수 알고리즘까지 다양합니다. 자동화용 제어 시스템은 단일 입력 매개변수로 작동하는 개루프(Open Loop)거나, 출력이 입력으로 피드백되는 폐루프(Closed Loop)일 수 있습니다. 철도 산업 자동화는 첨단 시대로 진입함에 따라 인간 실수로 인한 사고 위험을 줄이기 위해 이러한 스마트 기계가 작업을 처리하도록 하는 것이 매우 중요합니다.

모든 기술과 마찬가지로 자동화에도 장단점이 있습니다:

장점

  1. 생산성 향상
  2. 예측 가능한 품질 (품질 개선)
  3. 강건성 증가
  4. 높은 출력 일관성
  5. 인건비 절감
  6. 높은 정확도
  7. 단조로운 작업에서 인간 노력 감소

단점

  1. 보안 위협 취약
  2. 개발 비용이 예측 초과 가능
  3. 초기 설정 비용 높음
  4. 다수 부문 실업 유발

언급된 장점이 단점을 훨씬 상회하므로 전 세계가 자동화 시대로 진입하고 있습니다.

이 튜토리얼에서는 회로가 선로를 따라 열차가 감지될 때마다 철도 건널목을 열고 닫도록 자동화하며, 열차 속도가 특정 임계값보다 높으면 부저나 경보를 울리는 기능도 구현합니다. 이를 위해 널리 사용되는 두 전자 부품인 아두이노와 서보 모터를 사용합니다.

이 튜토리얼에서 사용할 센서는 초음파 센서지만 필수는 아닙니다. IR 센서 모듈을 사용해 다른 버전을 만들 수도 있으며, 선택과 가용성에 따라 달라집니다.

철도 건널목 제어기 필요 부품

  1. 아두이노 우노(Arduino UNO)
  2. 부저(Buzzer)
  3. 초음파 센서 (HC-SR04)
  4. 서보 모터(Servo Motor)

필요 소프트웨어:

  1. 아두이노 IDE
  2. Proteus

철도 건널목 제어기 회로도

자동 철도 건널목 제어기: 아두이노 회로 & 소스 코드

부품 설명

아두이노 우노(Arduino UNO)

아두이노는 기본적으로 오픈 소스 개발 보드로, 주로 Microchip ATmega328P 마이크로컨트롤러를 사용하며 Arduino.cc에서 제조합니다. 디지털 및 아날로그 입출력 핀 세트가 있어 다양한 확장 보드와 외부 회로와 인터페이스할 수 있습니다.

보드에는 14개 디지털 핀과 6개 아날로그 핀이 있으며, 함께 제공되는 IDE(통합 개발 환경)인 아두이노 IDE로 프로그래밍 가능합니다. 프로그램은 USB 타입 B 케이블로 업로드됩니다. 전원 공급은 USB 케이블 또는 9V DC 연결로 가능하며, 허용 전압 범위는 7~20V입니다. 설계 및 작동 관점에서 Arduino Nano, Arduino Leonardo 등 다른 패밀리와 크게 다르지 않습니다.

STK500은 여전히 우노 통신의 원래 프로토콜입니다. 주요 차이점은 FTDI USB-시리얼 드라이버 칩을 사용하지 않고, USB-시리얼 컨버터로 프로그래밍된 ATmega 16U2(버전 R2까지는 Atmega8U2)를 사용한다는 점입니다.

자동 철도 건널목 제어기: 아두이노 회로 & 소스 코드

초음파 센서 (HC-SR04)

초음파 센서는 물체 거리를 측정하는 기본 센서입니다. 달리 말해 특정 기준점에서 물체가 얼마나 멀리 있는지 측정합니다. 기본적으로 4개 핀이 있습니다:

초음파 작동 원리: 송신부(Trig)가 고주파 음파 신호를 보내고, 물체에서 반사된 신호가 수신부(Echo)에서 수신됩니다. 공기 중 음속을 알 수 있으므로 거리를 계산할 수 있습니다. 이 센서는 아두이노 제작자들 사이에서 매우 인기 있어 일상 프로젝트에 매일 사용됩니다. 이 센서를 트리거하려면 10마이크로초 이상의 하이 펄스가 필요합니다.

초음파 센서 특징:

관련 글: 자동 식물 급수 및 관개 시스템 – 회로, 코드 & 프로젝트 보고서

자동 철도 건널목 제어기: 아두이노 회로 & 소스 코드

서보 모터(Servo Motor)

서보 모터는 특정 각도에서 매우 정밀한 움직임을 위해 사용되는 특수 모터입니다. 회전 또는 리니어 액추에이터로 특정 각도 또는 리니어 위치에서 정밀 제어를 가능하게 합니다. 서보 모터는 단일 개체가 아니라 적절한 모터와 현재 모터 위치를 피드백하는 센서의 조합입니다.

서보 모터를 사용하려면 DC 모터처럼 사용하기 쉽지 않아 여러 고급 모듈이 필요합니다. 이 모터들은 주로 로봇공학과 대규모 제조 산업에서 사용됩니다.

이 모터들은 개루프 제어를 나타내는 스테퍼 모터와 약간 유사합니다. 스테퍼 모터는 내장 스텝에서 회전하지만 피드백 시스템이 없어 설계·제조된 특정 용도로만 사용이 제한됩니다.

이 피드백 부재가 서보 모터를 스테퍼 모터와 구분하며, 프로그래밍 약간 변경으로 작업에 맞게 동적으로 커스터마이징할 수 있어 우위에 있습니다. 제조사에서 전용 컨트롤러 모듈을 일반적으로 제공합니다.

메커니즘 – 기본적으로 피드백 시스템을 이용해 모션과 로터 최종 위치를 업데이트하는 폐루프 서보메커니즘입니다. 모터 제어 입력은 아날로그 또는 디지털일 수 있습니다.

어떤 종류의 인코더가 모터와 페어링되어 위치와 속도 피드백을 제어기에 제공하고, 원하는 출력이 도달할 때까지 에러 신호를 생성합니다. 이 에러 신호를 줄이기 위해 모터가 양방향으로 움직여 최종적으로 에러 신호를 0으로 만듭니다. 이 조건이 달성되면 원하는 출력이 얻어집니다. 고급 서보 모터에는 출력축에 광학 로터리 인코더가 있어 속도를 측정합니다.

자동 철도 건널목 제어기: 아두이노 회로 & 소스 코드

부저(Buzzer)

부저는 기계식, 전자식, 전자기식, 압전식 등이 있습니다. 일반적으로 오븐, 게임 쇼, 가전제품 등에서 전자식을 사용합니다. 이 부저들은 내부 회로를 가지며, 디스크 움직임으로 소리가 발생합니다. 디스크는 강자성체입니다. 전압원을 입력으로 받는 전류 구동 장치입니다.

자동 철도 건널목 제어기: 아두이노 회로 & 소스 코드

자동 철도 건널목 제어기 작동 원리

이 회로에서는 초음파 센서 두 개와 서보 모터를 사용해 철도 건널목 작동을 재현합니다. 두 센서 모두 아두이노 보드의 트리거 핀으로 트리거되고 거리가 계산됩니다. 이후 회로 동작은 측정된 거리에 전적으로 의존합니다.

선로가 비어 있으면 서보 모터는 아무것도 하지 않지만, 열차가 선로 양쪽 중 어디인가에 도착하면 한 쪽 센서의 측정 거리가 이전과 달라집니다. 이렇게 하면 열차 도착을 인지하고 즉시 아두이노가 디지털 핀 7과 8을 HIGH로 설정합니다.

이 핀들은 두 서보 모터와 연결되어 있으며, 서보가 90° 각도를 움직여 차단기를 내려 차량 통행을 차단합니다. 열차가 다른 쪽 센서에서 멀어지면 아두이노에 열차 출발을 알리고 서보 모터가 다시 이전 위치로 돌아가 차단기를 엽니다.

사람 안전을 고려해 고속 열차 경보 기능을 추가했습니다. 이는 한 사이클에서 두 센서 간 전이 시간 계산으로 구현합니다. 시간이 특정 값 미만이면 부저가 울려 건널목 인근 사람들에게 경고합니다.

프로젝트 소스 코드 & 설명

이 스케치에서는 정수형 변수 5개, long형 변수 4개를 정의했습니다. tr1, tr2, eh1, eh2 변수는 펄스 전송과 마이크로초 단위 시간 수신용이며, val1, val2, dis1, dis2 변수는 마이크로초 단위 시간과 cm 단위 거리 저장에 사용됩니다. 보드레이트는 9600bps로 설정되어 보드와 시리얼 모니터 간 통신을 담당합니다.

const int tr1 = 13, eh1 = 12, tr2 = 3, eh2 = 2;; int bz = 11; unsigned long val1, dis1, val2, dis2; #include <Servo.h> Servo myservo1; Servo myservo2; int pos=-1; 

필요한 기능에 따라 초음파 센서를 지속적으로 트리거해 거리를 측정하고, 계산된 거리를 조건문의 매개변수로 사용합니다. 조건이 참이면 변수 "pos"를 증가시켜 서보 모터를 구동하고, 거짓이면 "pos"를 감소시켜 서보 모터를 원래 위치로 되돌립니다.

두 센서가 객체를 빠르게 감지하면(고속 열차) 핀 11을 HIGH로 설정해 부저에 전원을 공급, 주변 사람들에게 경고하는 조건문도 추가되었습니다. 이 모든 과정은 void loop()에 포함되어 아두이노가 리셋되거나 전원이 차단될 때까지 반복됩니다.

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 시뮬레이션용 Hex 파일 연동: 아두이노 IDE에서 File>Preferences 클릭 후 "Show verbose output"에서 컴파일과 업로드 옵션을 모두 체크합니다. 코드 컴파일 후 하단 창에서 hex 파일 위치를 선택·복사하고, Proteus에서 아두이노를 더블클릭해 Program file 옵션에 파일 위치를 붙여넣고 OK를 클릭합니다. 이제 회로가 Proteus에서 시뮬레이션 준비되었습니다.

관련 프로젝트:


산업기술

  1. NOR 게이트 SR 래치: 디지털 메모리 구축 및 이해
  2. 검증된 전기 시스템의 흔한 고장 모드
  3. TTL NOR 및 OR 게이트 이해: 회로 분석과 변환
  4. 고급 모터 제어 회로: 래칭, 정지, 시간지연 기법
  5. PIR 센서 구동 자동문 개방 시스템: 회로, 작동 및 응용
  6. M-TECH: 아폴로 라우터를 위한 고급 CNC 제어 시스템
  7. DIY 아두이노 자동 열차 제어 – 심플하고 신뢰성 높은 커스터마이징 가능
  8. SERENA: TFT LCD 터치스크린 탑재 아두이노 메가 2560 커스텀 알람 시스템
  9. 아두이노 파워 컨트롤 센터: N-FET, P-FET, 릴레이 & RTC 키트
  10. 클라우드 모니터링: 실시간 자산 관리를 위한 원격 제어 시스템