Arduino Antenna Rotator คุมเสาตามดาวเทียม
Tracking Software รู้แล้วว่าดาวเทียมอยู่ตรงไหน แต่ถ้าเสาอากาศยังต้องหมุนด้วยมือทุกครั้ง ระบบก็ยังไม่ได้ “Track” แบบอัตโนมัติจริง ๆ
นี่คือโจทย์ที่ Antenna Rotator Controller โปรเจกต์ Arduino ของ Viorel Racoviteanu พยายามแก้ โดยให้ Arduino รับตำแหน่งเป้าหมาย Azimuth และ Elevation จาก Tracking Software ผ่าน USB แล้วควบคุม Rotator ให้เคลื่อนตาม
ถ้าไม่ต่อคอมก็ยังใช้งานแบบ Manual ได้ ผ่าน Rotary Encoder สองตัว ส่วนตำแหน่งจริงของเสาอ่านกลับมาจาก Potentiometer ของแกน Azimuth และ Elevation
Project เริ่มจากงานเล่นสนุก แต่ถูกพัฒนาต่อเนื่องจน Code รุ่นปี 2026 รวมทั้ง AC/DC Motor, EasyComm II, Yaesu GS-232B, Automatic Calibration, EEPROM, Position Filtering, Stall Watchdog และความละเอียดการแสดงผลระดับ 0.1° ไว้ใน Controller เดียว
Key Takeaways
- ใช้ Arduino UNO เป็น Controller หลัก
- ควบคุมเสาอากาศสองแกน: Azimuth + Elevation
- ใช้งาน Manual ได้ด้วย Rotary Encoder 2 ตัว
- อ่านตำแหน่งจริงด้วย Potentiometer 2 ตัว
- รับคำสั่งจาก Tracking Software ผ่าน USB Serial ที่ 9600 baud
- รองรับ EasyComm II และ Yaesu GS-232B ใน Code รุ่นปัจจุบัน
- Source ยกตัวอย่าง Software เช่น PstRotator, WXtrack, HRD, MacDoppler, WXtoIMG และ Orbitron ผ่าน DDE Plugin
- Code เดียวสามารถตั้งให้ใช้ AC หรือ DC Motor ได้ แต่ต้องใช้ Electrical Diagram ให้ตรงกับ Motor
- DC Version มี Logic สำหรับ Soft-Start / Soft-Stop โดยปรับ Power ตาม Angle Error
- รองรับ Elevation 90° หรือ 180° และ Azimuth 360° หรือ 450° ตาม Configuration
- Code 2026 เพิ่ม Automatic Calibration และเก็บค่าที่ได้ลง EEPROM
- มี Stall Watchdog สำหรับตรวจกรณีสั่ง Motor แล้วตำแหน่งไม่เปลี่ยนตามเกณฑ์
โปรเจกต์นี้ไม่ใช่ Arduino Beginner Circuit ธรรมดา: ระบบเชื่อมต่อกับ Motor, Relay/Contactor, Power Stage และกลไกเสาอากาศที่สามารถหมุนด้วยแรงจริง โดยเฉพาะเวอร์ชัน AC ไม่ควรต่อวงจรไฟกำลังจากบทความสรุปเพียงอย่างเดียว ให้ใช้ Schematic ต้นฉบับและมาตรการด้าน Electrical Safety ที่เหมาะสมกับ Rotator ของคุณ
Antenna Rotator Controller คืออะไร?
Rotator คือชุดกลไกที่ทำหน้าที่หมุนเสาอากาศ ไปยังทิศทางที่ต้องการ
Controller ใน Project นี้ อยู่ตรงกลางระหว่าง คำสั่งตำแหน่ง กับ Motor ที่หมุนเสา
เราสามารถบอก Controller ได้ว่า ต้องการให้เสาหันไปทางไหน จากนั้น Arduino จะเปรียบเทียบ:
ตำแหน่งเป้าหมาย ↔ ตำแหน่งจริง
แล้วสั่ง Motor จนเสาเข้าใกล้ตำแหน่งเป้าหมายตามค่า Tolerance / Arrival ที่ตั้งไว้
สรุปแบบ Maker: Tracking Software ไม่ได้ขับ Motor โดยตรง แต่ส่ง “ตำแหน่งที่อยากได้” ให้ Arduino ส่วน Arduino เป็นคนจัดการ Feedback และ Output ไปยังชุดขับ Motor
Azimuth กับ Elevation คืออะไร?
Azimuth — หมุนซ้าย / ขวารอบตัว
Azimuth ใช้ระบุทิศบนระนาบแนวนอน เช่นหมุนเสาจากเหนือไปตะวันออก หรือไปยัง Bearing อื่น
Elevation — ก้ม / เงยเสา
Elevation คือมุมยกขึ้นจากแนวระดับ ซึ่งสำคัญกับ Satellite Tracking เพราะดาวเทียมไม่ได้อยู่ที่เส้นขอบฟ้าตลอดเวลา
Controller จึงต้องรู้ตำแหน่งทั้งสองแกนพร้อมกัน เพื่อให้เสา Point ไปยังเป้าหมายบนท้องฟ้า
ภาพรวมระบบ: จาก Tracking Software ไปถึง Motor
↓
USB Serial / 9600 baud
↓
EasyComm II หรือ Yaesu GS-232B
↓
Arduino UNO
↓
Relay / Contactor หรือ DC Motor Driver
↓
Azimuth + Elevation Rotator
↓
Potentiometer Position Feedback
↓
Arduino เปรียบเทียบ Target กับตำแหน่งจริง
อีกด้านหนึ่ง Arduino ยังส่งตำแหน่งจริงกลับทาง Serial เพื่อให้ Software ที่รองรับ สามารถแสดงตำแหน่งของเสาได้
Hardware ที่ Source ใช้
| Hardware | จำนวน / รายละเอียดจาก Source | หน้าที่ |
|---|---|---|
| Arduino UNO | 1 | Controller หลัก |
| Rotary Potentiometer | 2 ตัว สูงสุด 1 kΩ Source ระบุว่า 500 Ω ทำงานได้ดีกว่า |
Position Feedback ของ AZ / EL |
| Rotary Encoder + Push Button | 2 ตัว | Manual Jog Azimuth และ Elevation |
| Breadboard | 1 | Prototype / Wiring |
| Relay Module | 2 Modules × 2 Relay NO / COM / NC |
ใช้กับ AC / Relay Control Version |
| Power MOSFET Module | 2 Modules Source ระบุอย่างน้อย 12V / 3A |
ใช้ใน DC Motor Version |
| LCD I2C | Code ใช้ LiquidCrystal_I2C Address 0x27, 16 × 2 |
แสดง AZ / EL / Target / Error |
สาย Maker ที่อยากเริ่ม Prototype: Arduino UNO, Rotary Encoder, Potentiometer, Relay / MOSFET Module และอุปกรณ์ทดลอง เป็นกลุ่ม Hardware ที่สามารถนำ Concept นี้ไปศึกษาได้ โดยไม่จำเป็นต้องเริ่มจากเสาอากาศขนาดใหญ่ทันที
Manual Mode: ไม่ต่อ PC ก็หมุนได้
Project ใช้ Rotary Encoder แยกสำหรับ Azimuth และ Elevation
Code รุ่น 2026 ใช้ Full Quadrature Decode และให้ Encoder A Channel อยู่บน Hardware Interrupt ส่วน B Channel ใช้ Pin Change Interrupt
เมื่อหมุน Encoder Code จะปรับ Target แล้ว Control Loop ค่อยขับ Rotator ไปยังตำแหน่งใหม่
นี่ต่างจากการต่อปุ่ม “Motor Left / Motor Right” โดยตรง เพราะแม้จะหมุน Manual ผู้ใช้กำลังปรับ Target Position ของระบบ Feedback
Potentiometer ทำให้ Controller รู้ว่าเสาหันไปไหนแล้ว
Motor เพียงอย่างเดียว บอกไม่ได้ว่าเสาหมุนไปถึงกี่องศาแล้ว
Project จึงใช้ Potentiometer เป็น Position Feedback ของแต่ละแกน
Arduino อ่าน ADC จาก:
- Azimuth Potentiometer → A0
- Elevation Potentiometer → A1
จากนั้นนำ ADC ที่ผ่าน Filter ไป Map เป็นองศา ตามค่าที่ได้จาก Calibration
นี่คือหัวใจของ Closed-loop Control ใน Project: Software ไม่ได้สมมติว่า “สั่ง Motor 3 วินาที = 30°” แต่มี Sensor Feedback กลับมาว่าตำแหน่งจริงอยู่ตรงไหน
Automatic Mode: Tracking Software ส่ง Target มาให้ Arduino
เมื่อต่อ Controller เข้ากับ PC ผ่าน USB Software สามารถส่ง Azimuth และ Elevation เข้ามาทาง Serial
Arduino รับคำสั่ง แปลงเป็น Target ของแต่ละแกน แล้วใช้ Control Loop เดิม ขยับ Rotator ไปตามตำแหน่งใหม่
เมื่อดาวเทียมเคลื่อนผ่านท้องฟ้า Tracking Software ก็อัปเดต Target ไปเรื่อย ๆ ทำให้ Controller ปรับทิศทางเสาตามข้อมูลที่ได้รับ
EasyComm II และ Yaesu GS-232B ทำหน้าที่อะไร?
Tracking Software กับ Arduino ต้อง “พูดภาษาเดียวกัน”
Code รุ่น 2026 จึงมี Parser สำหรับสอง Protocol:
- EasyComm II
- Yaesu GS-232B
Controller ตรวจรูปแบบคำสั่งจากแต่ละ Line และเลือก Parser ที่ตรงกับข้อมูลที่เข้ามา
EasyComm II
ใน Code มีการค้นหา Marker AZ และ EL แล้วอ่านค่าตัวเลขที่ตามหลัง
นอกจากนี้ยังตอบ Query ด้วยตำแหน่งจริงของเสา เช่น Azimuth หรือ Elevation ตาม Field ที่ถูกถาม
GS-232B
Code รุ่นที่แนบรองรับคำสั่งบางส่วน เช่น:
-
C— Query Azimuth -
B— Query Elevation -
C2— Query ทั้งสองแกน -
S— Emergency Stop -
M— Set Azimuth -
W— Set Azimuth + Elevation
ไม่ควรคิดว่าเป็น GS-232B ทุก Command: Comment ใน Code ระบุว่าเป็น “documented Yaesu GS-232 subset” และ Jog Letter บางตัวไม่ได้ Implement ดังนั้นถ้า Tracking Software ใช้ Command อื่น ควรตรวจ Code รุ่นล่าสุดก่อน
Tracking Software ที่ผู้สร้างระบุว่าสามารถใช้ได้
Source ระบุ Controller ใช้งานกับ Software ที่ส่งคำสั่ง EasyComm II หรือ GS-232B ได้
ตัวอย่างที่ผู้สร้างพูดถึง ได้แก่:
- PstRotator
- WXtrack
- HRD
- MacDoppler
- WXtoIMG
- Orbitron ผ่าน DDE Plugin
หน้า Project ยังกล่าวถึง Orbitron และ SatPC32 ในคำอธิบายภาพรวมของ Project ด้วย
Orbitron ต้องมี DDE Plugin เพิ่ม
Source ระบุว่า Orbitron ใช้งานกับ Controller นี้ผ่าน DDE Plugin ที่ส่งค่า Azimuth / Elevation ออก Serial
ดังนั้น Flow จะกลายเป็น:
↓
DDE Azimuth / Elevation to Serial Plugin
↓
USB Serial
↓
Arduino Rotator Controller
ผู้ที่ต้องการใช้ Orbitron จริง ควรเปิดรายละเอียด Plugin จากลิงก์ที่ผู้สร้างให้ไว้ใน Source เพราะ Setting ของ Software ไม่ได้ถูกอธิบายครบในบทความสรุปนี้
Code เดียว แต่ AC กับ DC ไม่ได้ต่อ Hardware เหมือนกัน
Code รุ่น 2026 มี Configuration:
MOTOR_TYPE
เพื่อเลือกระหว่าง:
MOTOR_ACMOTOR_DC
AC Motor / Relay Version
Code ใช้ Output แบบ HIGH / LOW ไปยัง Relay หรือ Contactor เพื่อสั่งทิศทาง
AC Version ไม่มีการไล่ PWM Power แบบ DC ดังนั้นเมื่อเข้าใกล้เป้าหมาย Logic ต้องพิจารณา Mechanical Coast, Gearbox Backlash, Contactor Drop-out Time และ Inertia
DC Motor Version
DC Version ใช้ PWM เพื่อปรับกำลัง และมี Logic Soft-Start / Soft-Stop
เมื่อเริ่มเคลื่อน Power ค่อย ๆ เพิ่ม และเมื่อเข้าใกล้ Target Power จะลดลง ตาม Error ของตำแหน่ง
เลือก Schematic ให้ตรงกับ MOTOR_TYPE: Source มี Electric Diagram แยก AC และ DC ห้ามเอา Output Circuit ของสองแบบมาปนกัน โดยเฉพาะวงจร AC / Commercial Rotator ควรตรวจ Schematic และ Rating ของอุปกรณ์ไฟกำลังโดยตรง
Soft-Start / Soft-Stop ทำไมสำคัญกับ Rotator?
ถ้า Motor เริ่มด้วย Full Power ทันที เสาและ Gearbox จะรับแรงเปลี่ยนแปลงทันทีเช่นกัน
ใน DC Mode Code คำนวณ Power จากสองมุม:
- ระยะจากจุดเริ่มต้นของการเคลื่อนที่
- ระยะที่เหลือถึง Target
แล้วเลือก Power ที่เหมาะสม ภายใต้ค่า Minimum Power ที่กำหนด
แนวคิดคือ:
เริ่มช้า → เร่งขึ้น → เข้าใกล้ Target → ผ่อนลง → หยุด
Source เรียกพฤติกรรมนี้ว่า Soft-Start / Soft-Stop
Tolerance, Arrival และ Buffer ไม่ใช่ค่าเดียวกัน
Tolerance
เป็น Error ที่ยอมให้ตำแหน่ง Drift โดยยังไม่ต้องปลุก Motor ขึ้นมาขยับ
Default ใน Code ที่แนบ:
- AZ Tolerance = 3.0°
- EL Tolerance = 2.0°
Arrival
เป็นระยะใกล้ Target ที่ Controller ถือว่าใกล้พอที่จะ Cut Power
Code ระบุว่า AC Rotator อาจยังไหลต่อจาก Inertia หลัง Relay ตัดแล้ว จึงต้อง Tune Arrival ให้สัมพันธ์กับ Overshoot จริงของกลไก
Buffer
ใน DC Mode Buffer ใช้กำหนดช่วงระยะ ที่ Power ถูก Ramp สำหรับ Soft-Start / Soft-Stop
รองรับ 90° / 180° Elevation และ 360° / 450° Azimuth
Code มี Configuration:
ELEVATION_MAX = 90 หรือ 180AZIMUTH_MAX = 360 หรือ 450
สำหรับระบบ Elevation 90° Code รุ่น 2026 ยังมี Logic “Over the top” เมื่อ Software ส่ง Elevation สูงกว่า 90°
แนวทางใน Code คือ แปลง Elevation กลับลงมาในช่วงที่ Hardware เดินได้ พร้อมหมุน Azimuth เพิ่มอีก 180°
ส่วน 450° Azimuth เปิดโอกาสให้ Rotator มี Overlap มากกว่าหนึ่งรอบ 360° และ Code จะพยายามเลือก Raw Position ที่ใกล้ตำแหน่งปัจจุบัน
Position Filtering ลดอาการค่าตำแหน่งสั่น
Analog Potentiometer ไม่ได้ให้ ADC ที่นิ่งสนิททุก Sample
Code จึงใช้ Filter สองชั้น:
- Moving Average
- EWMA
Source Code ยังให้แนวทาง Config สองแบบ:
- Buffer ใหญ่ขึ้น + ปิดผล EWMA ถ้าต้องการอีก Character หนึ่ง
- Buffer เล็กลง + ใช้ EWMA สำหรับอีกลักษณะการตอบสนอง
Comment ใน Code ระบุชัดว่า ไม่มี Setting เดียวที่ดีที่สุดกับ Rotator ทุกตัว
Stall Watchdog: สั่ง Motor แล้วเสาไม่ขยับ ระบบรู้ได้อย่างไร?
Code รุ่น 2026 มี Stall Watchdog แยกแต่ละแกน
เมื่อ Motor กำลังทำงาน Code จะตรวจว่าภายในช่วงเวลาที่กำหนด Position Feedback ขยับมากพอหรือไม่
Default ใน Code:
- Stall Window = 2,000 ms
- AZ ต้องขยับอย่างน้อย 2.0°
- EL ต้องขยับอย่างน้อย 1.5°
ถ้าขยับต่ำกว่าเกณฑ์ Code จะ Stop Axis และตั้งสถานะ Fault
Watchdog ไม่ได้แทน Safety Hardware: Software Stall Detection ช่วยลดความเสี่ยงบางกรณี แต่ไม่ควรใช้แทน Limit Switch, Fuse, Over-current Protection, Mechanical Stop หรือระบบตัดกำลังที่เหมาะกับ Rotator จริง
Automatic Calibration: ขั้นตอนที่ต้องทำหลังประกอบ
Source ระบุว่า Potentiometer Calibration เป็นขั้นตอนจำเป็น เพื่อให้ ADC ถูก Map เป็นตำแหน่งจริงของ Rotator
Code 2026 เปลี่ยนกระบวนการให้เป็น Automatic Calibration และเก็บผลลง EEPROM
กดปุ่ม Azimuth ค้างตอน Boot
Code ตรวจสถานะปุ่ม ตั้งแต่ช่วง Setup และเรียก runCalibration() ถ้าปุ่มถูกกดอยู่
ระบบหา AZ + / AZ −
Controller ขับ Azimuth ไปแต่ละด้าน และติดตามค่า ADC จาก Potentiometer
ระบบหา EL + / EL −
ทำแบบเดียวกันกับ Elevation เพื่อหาขอบเขต ADC ของแกน
ตรวจ Plateau และ Minimum Movement
Code ใช้การดูว่าค่า ADC หยุดเปลี่ยนในช่วงเวลาหนึ่ง เพื่อมองว่ากลไกไปถึงปลายระยะแล้ว และยังตรวจว่ามีการเคลื่อนที่มากพอก่อนยอมรับ Calibration
บันทึกลง EEPROM
ถ้าทั้ง 4 Leg ผ่าน ค่า Min / Max ADC จะถูกบันทึกลง EEPROM
ระวังเป็นพิเศษตอน Calibration: ขั้นตอนนี้ทำให้ Motor และ Rotator เคลื่อนที่เอง เพื่อค้นหาขอบเขต Mechanical Travel ต้องตรวจพื้นที่รอบเสา, ทิศ Motor, Stop, Wiring และ Mechanical Limit ก่อนเริ่ม Calibration
ทำไม Video / Story บางส่วนอาจไม่ตรงกับ Code 2026?
ตัว Project ถูกพัฒนามาหลายปี และผู้สร้างเองระบุว่า Video เก่าไม่สามารถ Update ตาม Code ได้ตลอด
ตัวอย่างที่เห็นได้ชัดคือ Project Story ยังอธิบายว่า ปุ่ม Azimuth สามารถ Stop การเคลื่อนไหวทั้งหมด และเปลี่ยน Step เป็น 10°
แต่ Code 2026 ที่แนบมา แยกพฤติกรรมใหม่เป็น:
- AZ Button ตอน Boot → Calibration
- AZ Button ตอน Runtime → x1 / x10
- EL Button → Park
- GS-232B `S` → Emergency Stop
ถ้าข้อมูลใน Video กับ Code ไม่เหมือนกัน: สำหรับการ Build จริงควรยึด Code, Schematic และ Documentation เวอร์ชันล่าสุด มากกว่าพฤติกรรมในวิดีโอเก่า
จุดที่ควร Cross-check: D12 กับ PWM บน Arduino UNO
ใน Code 2026 Motor Output ถูกกำหนดไว้ที่:
- D9
- D10
- D11
- D12
Comment ใน Code ระบุ Output ชุดนี้ในบริบทของ AC HIGH/LOW และ DC PWM
แต่ถ้าใช้งานกับ Arduino UNO R3 Pinout ทางการของ Arduino ระบุ PWM ที่ D3, D5, D6, D9, D10 และ D11 โดย D12 ไม่ใช่ PWM Pin
ถ้าใช้ DC Motor + UNO R3: ก่อนนำ Soft-Start / Soft-Stop ไปใช้งานจริง ให้ตรวจ Motor Pin Mapping, Board Revision, Schematic และ Code ล่าสุดจากผู้สร้างอีกครั้ง โดยเฉพาะ Output ที่ใช้ D12 แทนการสมมติว่า PWM ทำงานเหมือนกันครบทุก Output
สามารถเปิด Arduino UNO R3 Official Pinout เพื่อตรวจ Pin Function ของบอร์ดโดยตรง
4 ค่าแรกที่ควรดูให้ตรงกับ Rotator ก่อน Upload
Code รุ่น 2026 ทำให้ Hardware หลายรูปแบบ ใช้ Code Base เดียวกันได้ แต่ต้องตั้ง Configuration ให้ตรงก่อน
| Configuration | ตัวเลือกจาก Code | ใช้กำหนดอะไร |
|---|---|---|
| MOTOR_TYPE | MOTOR_AC / MOTOR_DC | ชนิด Output Control |
| ELEVATION_MAX | 90 / 180 | Physical Elevation Range |
| AZIMUTH_MAX | 360 / 450 | Azimuth Travel |
| STOP_REFERENCE | STOP_NORTH / STOP_SOUTH | Reference ของ Azimuth Stop |
หลังจากนั้นจึงค่อยดูค่า:
- AZ / EL Tolerance
- Arrival Degrees
- Soft-Start / Stop Buffer
- Minimum DC Power
- Dead Time
- Park Position
- Filter Setting
- Stall Watchdog Threshold
Code Configuration ที่สำคัญ
Code ของ Project ตัวเต็มมีขนาดใหญ่ เพราะรวม Motor Control, Encoder Interrupt, Calibration, EEPROM, Filtering, LCD, EasyComm II และ GS-232B ไว้ด้วยกัน
ด้านล่างจึงแสดงส่วน Configuration ที่ต้องเข้าใจก่อนเป็นอันดับแรก ส่วน Code ตัวเต็มควรดาวน์โหลดจาก Hackster เพื่อให้ได้เวอร์ชันล่าสุดและไม่ตกหล่น
#define MOTOR_AC 0
#define MOTOR_DC 1
#define STOP_NORTH 0
#define STOP_SOUTH 1
#define MOTOR_TYPE MOTOR_AC
#define ELEVATION_MAX 180
#define AZIMUTH_MAX 360
#define STOP_REFERENCE STOP_NORTH
#define BUFFER_SIZE 10
#define EWMA_WEIGHT 0.11f
#define AZ_TOLERANCE_DEG 3.0f
#define EL_TOLERANCE_DEG 2.0f
#define AZ_ARRIVAL_DEG 3.0f
#define EL_ARRIVAL_DEG 2.0f
#define AZ_BUFFER_DEG 25.0f
#define EL_BUFFER_DEG 15.0f
#define AZ_MIN_POWER 25
#define EL_MIN_POWER 25
#define DEAD_TIME_MS 1000UL
#define PARK_AZ 270.0f
#define PARK_EL 0.0f
enum PinAssignment {
AzPotPin = A0,
ElPotPin = A1,
AzEncoderPinA = 2,
ElEncoderPinA = 3,
AzEncoderPinB = 4,
AzButtonPin = 5,
ElEncoderPinB = 6,
ElButtonPin = 7,
ElDirPin2 = 9,
ElDirPin1 = 10,
AzDirPin2 = 11,
AzDirPin1 = 12,
};
อย่า Upload Configuration นี้แบบ Copy แล้วจบ: ค่านี้เป็น Default จาก Code ที่อ้างอิง ต้องตรวจให้ตรงกับ Motor, Mechanical Range, Stop Reference, Driver และ Rotator ของระบบจริงก่อน
Video, Schematics และ Project Media
เนื่องจาก Media มีหลายรายการ จะแสดงเฉพาะ Hero ด้านบน ส่วน Video และ Diagram ถูกเก็บไว้ใน View more แบบ Pure CSS
Part 1 — Software and Prototyping
วิดีโอ Part 1 เน้น Software และช่วง Prototype ของ Antenna Rotator Controller จากผู้สร้าง Project
Part 2 — Hardware, Boards and Motors
วิดีโอ Part 2 อธิบายฝั่ง Hardware, Board และ Motor ของระบบ
Part 3 — Software Tracking Update
วิดีโอ Part 3 เน้นการ Update เรื่อง Software Tracking แต่ควรตรวจ Code 2026 ควบคู่กัน เพราะผู้สร้างระบุว่า Video เก่าไม่สามารถ Update ตาม Code ได้ตลอด
ถ้าจะศึกษา Project นี้ ควรไล่ตามลำดับไหน?
เริ่มจาก Rotator และ Position Feedback
ต้องรู้ก่อนว่า Rotator มี Travel เท่าไร, ใช้ AC หรือ DC, Potentiometer Feedback ทำงานอย่างไร และมี Mechanical Stop แบบไหน
เลือก AC หรือ DC Diagram
อย่าเริ่ม Wiring Motor จนกว่าจะเลือก MOTOR_TYPE และ Schematic ให้ตรงกัน
ตั้ง Range ของ AZ / EL
เลือก 90/180° สำหรับ Elevation และ 360/450° สำหรับ Azimuth ให้ตรงกับ Hardware
ตรวจ Manual Control ก่อน
ตรวจ Encoder, LCD, Position Feedback และทิศทาง Motor ก่อนเอา Tracking Software เข้ามาเพิ่ม
ทำ Calibration
เมื่อ Mechanical และ Feedback พร้อม จึงค่อยรัน Automatic Calibration เพื่อเก็บ ADC Limits
ค่อยต่อ Tracking Software
หลัง Controller รู้ตำแหน่งจริง และขยับ Manual ได้ถูกต้อง จึงค่อยทดสอบ Serial Protocol กับ Software ที่ต้องการ
Project นี้ซับซ้อน ควรอ่านต้นฉบับก่อน Build จริง
Antenna Rotator Controller ครอบคลุมทั้ง Embedded Software, Interrupt, Position Feedback, Motor Control, Relay / H-bridge, Serial Protocol, Calibration และ Mechanical Movement
บทความนี้จึงเหมาะสำหรับ ทำความเข้าใจ Architecture และเลือกจุดที่จะศึกษา แต่ไม่ควรใช้แทน Schematic และ Code ล่าสุดของผู้สร้าง
ก่อนประกอบจริง: เปิด Antenna Rotator Controller ฉบับเต็มบน Hackster , Rotator Instructions PDF และ Update จากเว็บไซต์ของผู้สร้าง ควบคู่กัน
FAQ: Arduino Antenna Rotator Controller
Project นี้ใช้บอร์ดอะไร?
Source ระบุ Arduino UNO เป็น Controller หลัก
ควบคุมเสาด้วยมือได้ไหม?
ได้ ใช้ Rotary Encoder แยก Azimuth และ Elevation สำหรับ Manual Positioning
ต่อกับ Tracking Software ได้อย่างไร?
ต่อ Arduino เข้ากับ PC ผ่าน USB Serial และใช้ Software ที่สื่อสารด้วย Protocol ที่ Controller รองรับ
รองรับ Protocol อะไร?
Code รุ่น 2026 ที่อ้างอิงรองรับ EasyComm II และ Yaesu GS-232B ที่ 9600 baud
ใช้ Orbitron ได้ไหม?
Source ระบุว่าสามารถใช้ Orbitron ผ่าน DDE Plugin สำหรับส่ง Azimuth / Elevation ออก Serial
ใช้กับ AC Motor และ DC Motor ได้ทั้งคู่หรือไม่?
Code รุ่นใหม่รวม Logic AC/DC ไว้ชุดเดียว แต่ต้องเลือก MOTOR_TYPE และใช้ Schematic / Output Stage ให้ตรงกับ Motor
Soft-Start / Soft-Stop ใช้กับ AC ด้วยหรือไม่?
Logic การปรับ PWM Power เป็นจุดเด่นของ DC Mode ส่วน AC ใช้ Relay/Contactor แบบ On/Off และ Code จัดการ Arrival / Dead Time ให้เหมาะกับลักษณะดังกล่าว
รองรับ Elevation 180° หรือไม่?
รองรับ โดย Code มี ELEVATION_MAX ให้เลือก 90 หรือ 180
รองรับ Rotator 450° หรือไม่?
รองรับผ่าน AZIMUTH_MAX ที่ตั้งเป็น 360 หรือ 450
Calibration ทำครั้งเดียวพอไหม?
เมื่อ Calibration สำเร็จ Code เก็บค่าลง EEPROM จึงสามารถใช้ค่าดังกล่าวหลัง Boot ครั้งถัดไปได้ แต่ถ้ามีการเปลี่ยนกลไกหรือ Feedback ควรประเมินว่าต้อง Calibration ใหม่หรือไม่
ทำไมต้องมี Potentiometer?
ใช้เป็น Position Feedback เพื่อให้ Arduino รู้ตำแหน่งจริงของ Azimuth และ Elevation แล้วเปรียบเทียบกับ Target
มีระบบตรวจ Motor ค้างหรือไม่?
Code 2026 มี Per-axis Stall Watchdog ที่ตรวจว่าระหว่างขับ Motor ตำแหน่งเปลี่ยนมากพอภายใน Stall Window หรือไม่
ทำไมบทความไม่ใส่ Full Code หลายร้อยบรรทัด?
Code ถูกพัฒนาและอัปเดตต่อเนื่อง และไฟล์ Source ที่แนบในรอบนี้ถูกตัดท้ายในระบบ จึงแสดง Configuration ที่ตรวจได้ครบ พร้อมลิงก์ดาวน์โหลด Full Code จาก Hackster เพื่อไม่สร้างหรือเติม Code ที่ขาดขึ้นเอง
โปรเจกต์นี้น่าสนใจตรงที่ Arduino ไม่ได้แค่ “สั่ง Motor”
ถ้ามองผิว ๆ Antenna Rotator Controller อาจดูเหมือนระบบ Arduino ที่สั่ง Motor ซ้าย-ขวา ก้ม-เงย
แต่สิ่งที่ทำให้ Project นี้จริงจังกว่านั้นคือ Controller ต้องเชื่อมหลาย Layer เข้าด้วยกัน:
Tracking Software → Protocol → Target Position → Motor Control → Position Feedback → Error → Correction
ในรุ่นล่าสุด ยังเพิ่ม Filtering, Calibration, EEPROM, Stall Watchdog, North/South Stop, 360/450° Azimuth และ 90/180° Elevation เข้าไปอีก
สำหรับ Maker ต่อให้ยังไม่มีเสา Satellite จริง Project นี้ก็เป็นตัวอย่างที่ดีมาก ของการเชื่อม:
- Arduino
- Encoder
- Analog Position Sensor
- Motor Driver
- Closed-loop Control
- PC Software
- Serial Protocol
และนี่คือจุดที่ Project จาก “งานทำเล่น” ค่อย ๆ กลายเป็นระบบ ที่มี Architecture ใกล้เคียงอุปกรณ์จริงมากขึ้น
References / แหล่งข้อมูลต้นฉบับ
กำลังทำ Arduino, Motor Control หรือ Tracking Project?
ถ้ากำลังหา Arduino, Rotary Encoder, Sensor, Potentiometer, Relay / MOSFET Module หรืออุปกรณ์ Maker สำหรับเริ่ม Prototype สามารถเข้ามาดูสินค้า พูดคุยกับ Community หรือส่งโจทย์มาสอบถามทีม Globalbyte ได้