กลับไปหน้ารวมไฟล์
automated-model-railway-layout-with-passing-siding-28859b.md

การทำเลย์เอาต์รถไฟโมเดลเป็นงานอดิเรกที่เจ๋งมาก แต่ถ้าได้ทำให้มันอัตโนมัติล่ะก็...มันจะเจ๋งกว่าเดิมอีกหลายเท่า! มาดูกันดีกว่าว่ามันมีข้อดีอะไรบ้าง:

  • ต้นทุนต่ำเวอร์: ระบบทั้งหมดควบคุมด้วยบอร์ดไมโครคอนโทรลเลอร์ Arduino ใช้ไดรเวอร์มอเตอร์ L298N ราคาเมื่อเทียบกับชุดควบคุมรถไฟแบบดั้งเดิมแล้วถือว่า "ถูกเกิ๊น"
  • เหมาะสำหรับจัดแสดง: เพราะระบบมันอัตโนมัติ ไม่ต้องมีคนมานั่งกดปุ่มควบคุมตลอดเวลา เหมาะมากสำหรับการตั้งโชว์ในงานที่เราไม่สามารถอยู่เฝ้าได้ตลอด
  • โปรเจกต์ปังสำหรับนักเล่นไมโครคอนโทรลเลอร์: ถ้าน้องเป็นหรืออยากเริ่มเล่น Arduino กับเขียนโปรแกรม นี่คือโปรเจกต์ที่เหมาะจะเอามาฝึกสกิลสุดๆ

ถ้าสนใจ น้องลองไปดูเวอร์ชั่นก่อนหน้าของโปรเจกต์นี้ก็ได้นะ มันจะง่ายกว่านี้อีกนิดนึง (เป็นเวอร์ชั่น 1.0)

เอาล่ะ พูดเยอะแล้ว มาเริ่มกันเลยดีกว่า!

ขั้นตอนที่ 1: ดูคลิปโปรเจกต์พี่ทำงานก่อน

ขั้นตอนที่ 2: เตรียมอุปกรณ์ทั้งหมดให้ครบ

Parts and components

เริ่มต้นด้วยการเช็คให้ชัวร์ว่ามีของเหล่านี้ครบ:

  • บอร์ดไมโครคอนโทรลเลอร์ Arduino (แนะนำเป็น UNO)
  • บอร์ดไดรเวอร์มอเตอร์ L298N แบบ Dual H-Bridge
  • จัมเปอร์ไวร์ แบบผู้-ผู้ 6 เส้น
  • จัมเปอร์ไวร์ แบบผู้-เมีย 7 เส้น
  • ไขควง
  • อแดปเตอร์ไฟเลี้ยง 12V DC
  • รางรถไฟที่มีเซนเซอร์วัดระยะอินฟราเรด (IR Proximity Sensor) ติดอยู่ด้านล่าง (พี่ใช้ราง Kato S62)

ขั้นตอนที่ 3: อัพโหลดโปรแกรมลงบอร์ด Arduino

Arduino IDE

ดาวน์โหลด Arduino IDE มาไว้ในคอมถ้ายังไม่มี จากนั้นก็ดาวน์โหลดและเปิดไฟล์โปรแกรมที่ให้ไว้

ขั้นตอนที่ 4: วางรางและจัดเลย์เอาต์

Track layout

ทำรางเป็นวงรีที่มีทางหลบ (Passing Siding) ประมาณตามรูปด้านบน ให้แน่ใจว่าระยะห่างระหว่างรางเซนเซอร์กับทางแยกแรกที่รถไฟจะผ่านหลังจากออกจากเซนเซอร์นั้น "ยาวกว่ารถไฟขบวนหนึ่ง" เพื่อให้ไม่มีส่วนไหนของขบวนรถไฟทับอยู่บนรางเซนเซอร์ตอนที่มันกำลังผ่านทางแยก

ขั้นตอนที่ 5: ดูแผนผังวงจรช่วยชีวิต

Circuit schematic

ห้ามข้าม! ดูแผนผังวงจรและรายละเอียดทั้งหมดให้เข้าใจก่อนลงมือต่อสาย

ขั้นตอนที่ 6: ต่อทางแยก (Turnout) เข้ากับขาออกของบอร์ด L298N

Turnout wiring 1 Turnout wiring 2

นำสายสีแดงและสีดำของทางแยกทั้งสอง ต่อเข้าด้วยกันตามสี (แดงต่อกับแดง, ดำต่อกับดำ) แบบขนาน จากนั้นนำปลายสายสีแดงที่รวมกันแล้วไปต่อกับขา OUT4 และสายสีดำไปต่อกับขา OUT3 ของบอร์ดไดรเวอร์มอเตอร์

ขั้นตอนที่ 7: ต่อรางจ่ายไฟ (Power Feeder Track) เข้ากับขาออกที่เหลือของบอร์ดขับมอเตอร์ L298N

Power feeder connection

ต่อสายสีขาวของรางจ่ายไฟเข้ากับขา out1 และสายสีน้ำเงินเข้ากับขา out2 ของบอร์ดขับมอเตอร์เลยจ้า

ขั้นตอนที่ 8: ต่อบอร์ดขับมอเตอร์ L298N เข้ากับขาจ่ายไฟของบอร์ด Arduino

Power connections

ต่อขา 12V ของบอร์ดขับมอเตอร์เข้ากับขา VIN ของ Arduino, ขา GND ต่อกับ GND ของ Arduino และแนะนำให้ต่อขา 5V ของบอร์ดขับมอเตอร์เข้ากับขา 5V ของ Arduino ด้วยนะ

ขั้นตอนที่ 9: ต่อเซ็นเซอร์เข้ากับบอร์ด Arduino

Sensor connection

ต่อขา VCC ของเซ็นเซอร์เข้ากับขา 5V ของ Arduino, ขา GND ต่อกับ GND ของ Arduino และขา OUT ต่อเข้ากับขา A0 ของ Arduino

ขั้นตอนที่ 10: ต่อขาอินพุตของบอร์ดขับมอเตอร์เข้ากับบอร์ด Arduino

Motor driver input connections

ต่อขาดิจิตอลของ Arduino เข้ากับขาอินพุตของบอร์ดขับมอเตอร์ตามนี้เลย:

  • D9 ต่อกับ IN1
  • D10 ต่อกับ IN2
  • D11 ต่อกับ IN3
  • D12 ต่อกับ IN4

ขั้นตอนที่ 11: วางรถไฟลงบนราง

Train on siding

หลังจากตรวจสอบการต่อสายทั้งหมดแล้ว ก็วางรถไฟลงบนรางสับ (siding) ได้เลย

ขั้นตอนที่ 12: เปิดไฟเลี้ยงระบบ

Powered setup

เปิดไฟเลี้ยงระบบแล้วเช็คให้แน่ใจว่ารางสับเปลี่ยนทิศทางไปที่ทางหลบ ถ้าไม่เปลี่ยนก็แค่สลับสายของรางสับที่ต่อกับบอร์ดขับมอเตอร์ก็พอ แล้วก็ดูด้วยว่ารถไฟเริ่มเคลื่อนที่ไปข้างหน้าหรือเปล่า ถ้ามันวิ่งผิดทางก็ให้สลับสายของรางจ่ายไฟที่ต่อกับบอร์ดขับมอเตอร์นะ อย่าเพิ่งช็อตนะตัวนี้!

ขั้นตอนที่ 13: เสร็จแล้ววว!

โปรเจคนี้ก็เสร็จสมบูรณ์แล้วสำหรับตอนนี้ จัดไปวัยรุ่น! น้องสามารถไปแกะโค้ด Arduino เพื่อเปลี่ยนการทำงานของเลย์เอาท์, เพิ่มรางสับอีก ฯลฯ ได้ตามใจชอบเลย มันปรับแต่งได้หมด! สู้งานนะน้อง

รายละเอียดเทคนิคเพิ่มเติม

นอกเหนือจากเรื่องระยะห่างรางมาตรฐานแล้ว ระบบรางสับอัตโนมัติ (Automated Passing Siding) นี้แก้ปัญหาทางเรขาคณิตเฉพาะในวงการรถไฟโมเดล นั่นคือลูปรางเดี่ยวที่มีรถไฟสองขบวนวิ่งสวนทางกัน ระบบจะต้องตรวจจับการชนแบบหัวชนหัวที่อาจเกิดขึ้นได้อัตโนมัติ, สับรางให้ขบวนหนึ่งเข้าไปในรางข้าง, จอดรอ, แล้วปล่อยออกมาหลังจากที่ขบวนด่วนวิ่งผ่านไปแล้ว

ระบบลอจิกแบบหลายขั้นตอน (Multi-Stage Boolean Logic)

เจ้า Arduino เนี่ย มันทำหน้าที่เป็นเหมือนศูนย์ควบคุมหลักเลยแหละ ใช้ตัวแปรบูลีน (boolean) ในการจดจำสถานะต่างๆ ที่ซับซ้อนสุดๆ

  1. เซนเซอร์ตรวจจับขบวนรถเข้าใกล้: เราเอา Reed Switch หรือเซนเซอร์ Hall Effect ไปติดไว้ก่อนถึงรางแยกประมาณ 3 ฟุต
  2. bool Train1_Approaching = true; (แม่เหล็กที่ติดใต้รถไฟจะมากระตุ้นเซนเซอร์)
  3. ระบบลอจิกจะมาตรวจสอบสถานะของรางหลัก: if (Main_Track_Occupied == true) { Route_To_Siding(); }
  4. การสับราง: Micro Servo จะเป็นตัวดันกลไกรางแยกให้เลี้ยวซ้าย จากนั้น Arduino จะสั่งให้รีเลย์ตัดไฟ 12V DCC ที่จ่ายให้รางสาขาพอดี สุดยอด! ขบวนที่ 1 ติดแหง็ก!

การปลดล็อครางหลัก

ขบวนที่ 2 (ที่อยู่บนรางหลัก) ก็วิ่งผ่านรางสาขาไปเฉยเลย

  1. เซนเซอร์ทางออกตรวจจับว่าขบวนที่ 2 ได้ผ่านจุดคอขวดไปแล้ว Main_Track_Occupied = false;
  2. Arduino สั่งให้รีเลย์ 12V จ่ายไฟกลับไปที่รางสาขา
  3. ขบวนที่ 1 ก็กลับมาวิ่งได้อีกครั้ง! ฮูเร่!
  4. Arduino รอ 5 วินาที จากนั้นสั่งให้ Micro Servo ดันรางกลับไปที่ตำแหน่ง "ตรง/รางหลัก" เหมือนเดิม

สถาปัตยกรรมที่ต้องมีสำหรับการขยายระบบขั้นสูง

  • Arduino Mega: สำคัญมากถ้าจะติดตามตัวแปรบูลีนจำนวนมหาศาล และจัดการอินเตอร์รัพต์จากพอร์ต I/O เป็นสิบๆ ตัวพร้อมกันในเลย์เอาท์ใหญ่ๆ
  • เซนเซอร์ Hall Effect หรือ Reed Switch (6 ตัวขึ้นไป)
  • Micro Servos (SG90) ติดตั้งไว้ใต้รางโมเดล
  • บอร์ดรีเลย์หลายช่อง 5V (เพื่อใช้ตัดไฟ 12V เฉพาะในบล็อครางที่ต้องการ)
  • แหล่งจ่ายไฟ 12V, 2-3 แอมป์ ที่เสถียร สำหรับหัวรถจักร

จัดไปวัยรุ่น! จำไว้ ห้ามช็อตนะตัวนี้ ไม่งั้นไฟไหม้บ้านเอาได้ สู้งานนะน้อง!

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Arduino IDE"
author: "Tech_build"
category: "Motors & Robotics"
components:
  - "1x Dual H-Bridge motor drivers L298"
  - "1x IR proximity sensor"
  - "6x Male/Male Jumper Wires"
  - "1x 12V DC 1000mA (1A) switching power supply"
  - "7x Male/Female Jumper Wires"
  - "1x Arduino UNO"
  - "1x 12V DC 5A switching power supply"
description: "งานนี้จัดไป วัยรุ่น! เป็นเลย์เอาท์รถไฟโมเดลพื้นฐาน แต่เราจะทำให้มันเทพๆ ด้วยการเขียนโค้ดให้รถไฟวิ่งวนและจอดในซิดดิ้งอัตโนมัติ ใช้ Arduino ควบคุมเซนเซอร์และมอเตอร์ งานง่ายแต่หล่อ แถมได้เล่นกับ Interrupt เต็มๆ"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles:
  - "https://projects.arduinocontent.cc/828dc83f-d491-4aa9-98dd-48512ebd880c.ino"
encryptedPayload: "U2FsdGVkX1/o8NXkZae+7+PiV/LtN4gCHKaCTA7PTjOTpwjalo8rIMqhYPdSYM33Ll7LG5yDo5yHyou66MNP4Ky2o8nVcBxLBBRv6mQ+Ld8="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/automated-model-railway-layout-with-passing-siding-28859b_cover.jpeg"
lang: "en"
likes: 39
passwordHash: "3281b7bf7991c93bf6d7ec579acf8d5369594f817fab40bf9ef26ca27b3ef207"
price: 1120
seoDescription: "Build an automated Model Railway layout with a passing siding and automated train sequences."
tags:
  - "dc motor"
  - "motor"
  - "automation"
  - "trains"
title: "Automated Model Railway Layout with Passing Siding"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/aYDaJm61_qI"
  - "https://www.youtube.com/embed/NXI8Z7KKXjk"
views: 35477