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

DIY 아두이노 자동 열차 제어 – 심플하고 신뢰성 높은 커스터마이징 가능

부품 및 소모품

부품수량
점퍼 와이어1
Arduino UNO (나노, 메가 등 어떤 보드든 가능)1
L298 듀얼 H-브리지 모터 드라이버 (모듈 형태 권장)1

앱 및 온라인 서비스

프로젝트 소개

이 간단한 회로로 열차 운행 스케줄을 쉽게 자동화할 수 있습니다. 운행 시간, 정차 시간, 가속/감속 프로파일 모두 설정 가능. 스케치의 스케줄 파라미터만 바꾸면 어떤 자동 운행 패턴이든 만들 수 있습니다. 전원만 켜면 열차가 알아서 출발합니다.

스케치에서 시간 파라미터 변경으로 시간표 작성

// 1 | 0초 ~ 5초: 출발
if (counterScheduler <= 5) { ...... }

// 2 | 10초 ~ 15초: 정차
if ((counterScheduler >= 10) && (counterScheduler <= 15)) { ...... }

// 3 | 16초: 방향 전환
if (counterScheduler == 16) { .... }

// 등등...

이동 파라미터

int brakingDelta = 5;    // 감속 스텝
int accelerateDelta = 6; // 가속 스텝

열차의 가속/감속 특성을 정의합니다.

방향 제어

// 기본 방향: 전진
digitalWrite(L298_IN1, HIGH);
digitalWrite(L298_IN2, LOW);

D6, D7 핀 상태(L298_IN1, L298_IN2)로 방향 결정. 스케치를 마음껏 수정해 새로운 자동 운행 패턴을 만들어보세요.

즐거운 운행 되세요!

코드

Swing (왕복 운행) 스케치

// L298 핀 정의
#define L298_ENA 5
#define L298_IN1 6
#define L298_IN2 7

// 스케줄 변수
int counterScheduler;
unsigned long timerScheduler = 0;
unsigned long timerLocal = 0;
byte speedAuto = 0;

void setup() {
  pinMode(L298_ENA, OUTPUT);
  pinMode(L298_IN1, OUTPUT);
  pinMode(L298_IN2, OUTPUT);
  // 기본 방향: 전진
  digitalWrite(L298_IN1, HIGH);
  digitalWrite(L298_IN2, LOW);
}

void loop() {
  // 스케줄러: 1초마다 카운터 증가
  if (millis() > (timerScheduler + 1000)) {
    counterScheduler++;
    timerScheduler = millis();
  }

  // ------------- 스크립트: 왕복 운행 -------------
  int brakingDelta = 5;
  int accelerateDelta = 6;

  // 1단계: 0~5초 - 가속 출발
  if (counterScheduler <= 5) {
    if (millis() > (timerLocal + 100)) {
      if (speedAuto < 240) speedAuto += accelerateDelta;
      else speedAuto = 255;
      analogWrite(L298_ENA, speedAuto);
      timerLocal = millis();
    }
  }

  // 2단계: 10~15초 - 정차 (감속 후 정지)
  if ((counterScheduler >= 10) && (counterScheduler <= 15)) {
    if (millis() > (timerLocal + 100)) {
      if (speedAuto > 30) speedAuto -= brakingDelta;
      else speedAuto = 0;
      analogWrite(L298_ENA, speedAuto);
      timerLocal = millis();
    }
  }

  // 3단계: 16초 - 방향 전환
  if (counterScheduler == 16) {
    digitalWrite(L298_IN1, LOW);
    digitalWrite(L298_IN2, HIGH);
  }

  // 4단계: 20~30초 - 반대 방향 가속 출발
  if ((counterScheduler >= 20) && (counterScheduler <= 30)) {
    if (millis() > (timerLocal + 100)) {
      if (speedAuto < 240) speedAuto += accelerateDelta;
      else speedAuto = 255;
      analogWrite(L298_ENA, speedAuto);
      timerLocal = millis();
    }
  }

  // 5단계: 31~40초 - 정차 (감속 후 정지)
  if ((counterScheduler >= 31) && (counterScheduler <= 40)) {
    if (millis() > (timerLocal + 100)) {
      if (speedAuto > 30) speedAuto -= brakingDelta;
      else speedAuto = 0;
      analogWrite(L298_ENA, speedAuto);
      timerLocal = millis();
    }
  }

  // 6단계: 40초 초과 - 1단계로 복귀 (무한 루프)
  if (counterScheduler > 40) {
    counterScheduler = 0;
    digitalWrite(L298_IN1, HIGH);
    digitalWrite(L298_IN2, LOW);
  }
}

회로도

배선 회로도:

DIY 아두이노 자동 열차 제어 – 심플하고 신뢰성 높은 커스터마이징 가능

DIY 아두이노 자동 열차 제어 – 심플하고 신뢰성 높은 커스터마이징 가능

제조공정

  1. 제어 회로: 기초, 응용, 모범 사례
  2. 자동 수영장 급수 및 모니터링 시스템
  3. 벤치워크(Benchwork) 이해하기: 정의, 용도, 이점
  4. 품질 관리(Quality Control) 완벽 가이드: 일관된 우수성 보장
  5. 자동 프레스 머신(Automatic Press Machine)의 작동 원리, 장점 및 응용 분야
  6. 자동 파워 프레스 이해: 특징, 이점, 응용 분야
  7. 자동 파이프 벤더의 이해: 기능, 장점 및 응용 분야
  8. 자동 로터리 테이블: 금속 가공의 정밀도와 효율성
  9. 자동 변속기 시스템 종합 가이드: 종류, 부품, 작동 원리
  10. 자동 급유 시스템(ALS) 완벽 가이드: 종류·구성·작동·장단점 총정리