Approved Reseller of Raspberry Pi

ESP32 ทำไดรเวอร์สเต็ปเปอร์มอเตอร์แบบไร้สายได้แล้ว

ESP32 ทำไดรเวอร์สเต็ปเปอร์มอเตอร์แบบไร้สายได้แล้ว

สร้างระบบควบคุมมอเตอร์แบบไร้สายด้วย TMC2240 และ Web UI

การควบคุมสเต็ปเปอร์มอเตอร์แบบดั้งเดิมมักต้องใช้สายเคเบิลยาวๆ และตัวควบคุมที่ซับซ้อน แต่ด้วย ESP32 และไดรเวอร์ TMC2240 เราสามารถสร้างระบบควบคุมแบบไร้สายที่ทันสมัยได้ โปรเจกต์นี้จะแนะนำการออกแบบและสร้างไดรเวอร์สเต็ปเปอร์มอเตอร์ไร้สายที่สามารถควบคุมผ่าน WiFi ด้วย Web Interface ที่ทำงานได้ทั้งบนมือถือและคอมพิวเตอร์ ระบบนี้ใช้ ESP32-S3 เป็นตัวควบคุมหลัก ไดรเวอร์ TMC2240 ที่มีความเงียบและแม่นยำสูง พร้อมเซนเซอร์ AS5600 สำหรับตรวจจับตำแหน่งแบบแม่เหล็ก เหมาะสำหรับงาน CNC, 3D Printer, Robotics หรืองาน Automation ต่างๆ ที่ต้องการความแม่นยำสูงและการควบคุมแบบไร้สาย

Wireless Stepper Motor Driver with ESP32 and TMC2240
📡

Wireless Stepper Motor Controller คืออะไร?

Wireless Stepper Motor Controller เป็นระบบควบคุมสเต็ปเปอร์มอเตอร์ที่ผสานเทคโนโลยี WiFi เข้ากับไดรเวอร์มอเตอร์คุณภาพสูง ทำให้สามารถควบคุมมอเตอร์ได้จากระยะไกลผ่านเว็บบราวเซอร์ ไม่จำเป็นต้องใช้สาย USB หรือสายสัญญาณยาวๆ ระบบนี้สร้างขึ้นจาก ESP32-S3 ซึ่งเป็น Microcontroller ที่มี WiFi และ Bluetooth ในตัว ทำงานร่วมกับ TMC2240 ซึ่งเป็นไดรเวอร์สเต็ปเปอร์มอเตอร์รุ่นล่าสุดจาก Trinamic ที่มีความสามารถ Silent Operation, StallGuard4, CoolStep และ StealthChop2 ทำให้มอเตอร์หมุนเงียบ ประหยัดพลังงาน และตรวจจับการติดขัดได้อัตโนมัติ นอกจากนี้ยังมีเซนเซอร์ AS5600 ที่เป็น Magnetic Encoder 12-bit สำหรับตรวจจับตำแหน่งและความเร็วของมอเตอร์แบบเรียลไทม์ ระบบนี้เหมาะสำหรับโปรเจกต์ที่ต้องการความยืดหยุ่นในการติดตั้งและควบคุม เช่น Robotic Arm, Camera Slider, Automated Turntable หรือ Lab Equipment

Wireless Stepper Motor Controller Overview

คุณสมบัติเด่นของระบบ

ระบบนี้มีคุณสมบัติที่โดดเด่นหลายประการ ได้แก่

  • WiFi Control: ควบคุมผ่าน Web UI ที่ทำงานได้ทั้งบน Access Point Mode และ Station Mode สามารถเข้าถึงได้จากมือถือหรือคอมพิวเตอร์
  • TMC2240 Advanced Features: Silent operation ด้วย StealthChop2, Load detection ด้วย StallGuard4, Energy saving ด้วย CoolStep และ Position sensing ด้วย Encoder interface
  • AS5600 Magnetic Encoder: ตรวจจับตำแหน่งแบบ Non-contact ด้วยความละเอียด 12-bit (4096 positions per revolution) ไม่มีการสึกหรอ
  • Wide Voltage Range: รองรับแรงดันไฟ 12-48V สำหรับ Motor power และ 5V สำหรับ Logic circuit
  • Real-time Monitoring: แสดงข้อมูล Position, Speed, Current, Temperature แบบเรียลไทม์บน Web UI
  • Multiple Control Modes: รองรับทั้ง Step/Direction mode, SPI control, UART control และ Stand-alone mode
  • Compact PCB Design: ออกแบบ PCB ขนาดกะทัดรัด 70x50mm พร้อม Mounting holes และ Heat sink mounting
  • OTA Update: สามารถอัพเดท Firmware ผ่าน WiFi ได้โดยไม่ต้องถอด PCB ออกมา
Schematic Diagram
🔧

อุปกรณ์ที่ต้องใช้

สำหรับโปรเจกต์นี้คุณจะต้องเตรียมอุปกรณ์ดังนี้:

ส่วน Electronics: ESP32-S3-WROOM-1 Module (หรือ ESP32-S3-DevKitC-1), TMC2240-LA Stepper Driver IC, AS5600 Magnetic Position Sensor, AMS1117-5.0 และ AMS1117-3.3 Voltage Regulators, Power MOSFETs (เช่น IRLZ44N) สำหรับ Motor power switching, Capacitors (100µF, 10µF, 1µF, 100nF), Resistors (10kΩ, 4.7kΩ, 1kΩ), LEDs และ Status indicators, Screw terminals สำหรับต่อมอเตอร์และไฟเลี้ยง, JST connectors สำหรับเซนเซอร์

ส่วน Mechanical: NEMA17 Stepper Motor (หรือ NEMA23), Neodymium magnet ขนาด 6x2mm สำหรับ AS5600, Custom PCB (สั่งผลิตจาก Gerber files), Heat sink สำหรับ TMC2240 และ Power MOSFETs, Mounting screws M3, Acrylic หรือ 3D printed enclosure

ส่วน Tools: Soldering iron และ solder wire, Hot air station (สำหรับ QFN packages), Multimeter, Oscilloscope (Optional แต่แนะนำ), USB-C cable สำหรับ Programming ESP32, Power supply 12-24V/2A ขึ้นไป

Power Section Circuit

💡 เกี่ยวกับ TMC2240

TMC2240 เป็นไดรเวอร์สเต็ปเปอร์มอเตอร์รุ่นล่าสุดจาก Trinamic ที่มีความสามารถพิเศษหลายอย่าง รองรับกระแสได้ถึง 3A RMS (5A Peak), มี 256 microsteps สำหรับการเคลื่อนที่ที่ละเอียด, StallGuard4 สำหรับตรวจจับการติดขัด, CoolStep สำหรับประหยัดพลังงานถึง 75%, StealthChop2 สำหรับการหมุนเงียบ และมี Integrated SPI interface สำหรับการตั้งค่าแบบละเอียด IC นี้ใช้ Package แบบ QFN-48 ซึ่งต้องใช้ Hot air station ในการบัดกรี

📐

Wiring Diagram และการเชื่อมต่อ

การเชื่อมต่อระบบแบ่งออกเป็น 4 ส่วนหลัก:

1. Power Section: Input power 12-48V เข้าที่ Screw terminal J1, ต่อผ่าน reverse polarity protection diode D1, ใช้ AMS1117-5.0 แปลงเป็น 5V สำหรับ ESP32 และ Logic circuits, ใช้ AMS1117-3.3 แปลงจาก 5V เป็น 3.3V สำหรับ AS5600, ใช้ Bulk capacitors 100µF ที่ Input และ Output ของแต่ละ Regulator

2. ESP32-S3 Section: ต่อ ESP32-S3 เข้ากับ 3.3V Power rail, GPIO pins สำหรับ SPI communication กับ TMC2240 (MOSI, MISO, SCK, CS), GPIO pins สำหรับ STEP และ DIR signals, GPIO pins สำหรับ I2C communication กับ AS5600 (SDA, SCL), Status LEDs ต่อที่ GPIO pins ผ่าน 1kΩ resistors, Boot และ EN buttons สำหรับ Programming mode

3. TMC2240 Section: ต่อ VM (Motor voltage) เข้าที่ Input power rail, ต่อ VCC_IO (Logic voltage) เข้า 3.3V, ต่อ Motor phases (A+, A-, B+, B-) เข้า Screw terminal, ต่อ SPI pins เข้า ESP32, ต่อ STEP/DIR pins เข้า ESP32, ใส่ Capacitors 100nF ที่ทุก Power pins, ติด Heat sink ที่ด้านหลัง PCB

4. AS5600 Section: ต่อ VCC เข้า 3.3V, GND เข้า Ground, SDA/SCL เข้า ESP32 I2C pins, ติดตั้ง Magnet บน Motor shaft ให้อยู่ตรงกลาง AS5600 ห่างประมาณ 0.5-3mm

ESP32-S3 Section TMC2240 Circuit AS5600 Magnetic Sensor

⚠️ ข้อควรระวัง: TMC2240 เป็น Package แบบ QFN-48 ที่มี Thermal pad ด้านล่าง ต้องใช้ Hot air station ในการบัดกรี และต้องมี Thermal vias บน PCB เพื่อระบายความร้อน ห้ามบัดกรีด้วยหัวแร้งธรรมดา

🖥️

การออกแบบ PCB

PCB ออกแบบเป็น 2 layers ขนาด 70x50mm โดยคำนึงถึงความกะทัดรัดและประสิทธิภาพในการระบายความร้อน รายละเอียดการออกแบบ:

Top Layer: วาง ESP32-S3 module ตรงกลาง PCB, วาง TMC2240 ใกล้กับ Motor connector เพื่อลด Noise, วาง AS5600 ที่ขอบ PCB เพื่อให้ติดตั้ง Magnet ได้ง่าย, วาง Screw terminals สำหรับ Power และ Motor connection, วาง Status LEDs ที่มองเห็นได้ง่าย

Bottom Layer: ใช้เป็น Ground plane ส่วนใหญ่เพื่อลด Noise, วาง Thermal vias ใต้ TMC2240 และ MOSFETs เพื่อระบายความร้อน, เดิน Power traces กว้างๆ (ขั้นต่ำ 1mm สำหรับ Motor current), เดิน Signal traces ห่างจาก Power traces

Design Considerations: ใช้ Copper pour บน Top และ Bottom layers แล้วต่อด้วย Multiple vias, แยก Digital ground และ Power ground แล้วต่อที่จุดเดียว (Star ground), วาง Decoupling capacitors ใกล้ Power pins ของทุก IC, เว้นที่สำหรับติด Heat sink บน TMC2240, เจาะรู Mounting holes M3 ที่ 4 มุม, เพิ่ม Silkscreen ระบุขั้ว Power, Motor phase, และ Jumper settings

PCB Design Layout PCB Front and Back View

🏭 การสั่งผลิต PCB

PCB สามารถสั่งผลิตได้จากบริษัทต่างๆ เช่น JLCPCB, PCBWay หรือ ALLPCB โดยส่ง Gerber files ไปให้ แนะนำให้เลือก Specifications ดังนี้: 2-layer PCB, 1.6mm thickness, HASL surface finish (หรือ ENIG ถ้าต้องการคุณภาพสูงสุด), 1oz copper weight (หรือ 2oz สำหรับ High current application), Green soldermask และ White silkscreen ราคาสั่งผลิต 5 แผ่นประมาณ 5-10 USD รอเวลาประมาณ 5-10 วัน

🔨

การประกอบฮาร์ดแวร์

ขั้นตอนการประกอบ PCB:

Step 1 - SMD Components: เริ่มจากบัดกรี SMD components ที่เล็กที่สุดก่อน (Resistors, Capacitors 0805/0603), ใช้ Solder paste และ Hot air station หรือ Reflow oven, ตรวจสอบด้วย Multimeter ว่าไม่มี Short circuit

Step 2 - TMC2240: ทา Solder paste บน Pads ทั้ง Pins และ Thermal pad ตรงกลาง, วาง TMC2240 ให้ตรงกับ Pads โดยใช้ Tweezer, ใช้ Hot air station 300-350°C เป่าจนกระทั่ง Solder paste ละลาย, ตรวจสอบ Pins ด้วย Microscope หรือ Magnifying glass, ใช้ Multimeter ตรวจสอบ Short circuit ระหว่าง Pins, Reflow อีกครั้งถ้ามี Cold joint

Step 3 - Power Section: บัดกรี Voltage regulators (AMS1117-5.0, AMS1117-3.3), บัดกรี MOSFETs และติด Heat sink, บัดกรี Diodes และ Electrolytic capacitors, ตรวจสอบ Output voltage ก่อนต่ออุปกรณ์อื่น

Step 4 - Through-hole Components: บัดกรี Screw terminals, JST connectors, ESP32-S3 module (หรือ Socket ถ้าต้องการถอดได้), AS5600 module, LEDs และ Buttons

Step 5 - Testing: ต่อ Power supply แล้ววัด Voltage ทุกจุด (5V, 3.3V), ตรวจสอบ LED status, Program ESP32 ด้วย Test firmware, ทดสอบ Communication กับ TMC2240 ผ่าน SPI, ทดสอบอ่านค่า AS5600, ต่อ Stepper motor แล้วทดสอบหมุน

Assembled PCB with Components Laser Cut Enclosure Parts All Components Layout Magnet Placement on Motor Shaft 3D Illustration of Complete Assembly Final Assembled Unit

💡 เคล็ดลับ: การติดตั้ง Magnet บน Motor shaft ต้องให้ Magnet อยู่ตรงกลาง AS5600 sensor และห่างประมาณ 0.5-3mm หาก Magnet อยู่ใกล้เกินไปหรือไกลเกินไป AS5600 จะอ่านค่าไม่ได้ ควรตรวจสอบด้วย AGC (Automatic Gain Control) value ผ่าน I2C

💻

การเขียนโปรแกรม ESP32

Firmware สำหรับโปรเจกต์นี้เขียนด้วย Arduino IDE หรือ PlatformIO โดยใช้ Libraries หลักดังนี้:

Core Libraries: WiFi.h และ WebServer.h สำหรับ WiFi และ Web server, SPI.h สำหรับสื่อสารกับ TMC2240, Wire.h สำหรับ I2C communication กับ AS5600, SPIFFS.h สำหรับเก็บ Web UI files, ArduinoJSON.h สำหรับ JSON data handling

Specific Libraries: TMCStepper.h สำหรับควบคุม TMC2240 แบบละเอียด (ต้อง Install จาก Library Manager), AS5600.h สำหรับอ่านค่าจาก Magnetic encoder

Main Functions: setup() - Initialize WiFi (AP mode or STA mode), Initialize SPI และต่อกับ TMC2240, Initialize I2C และต่อกับ AS5600, Configure TMC2240 parameters (Current, Microstepping, StealthChop), Initialize Web server และ Define routes, Load saved settings from SPIFFS

loop() - Handle Web server requests, Read position จาก AS5600, Control motor based on commands, Monitor motor status (Current, Temperature), Send real-time data to Web UI ผ่าน WebSocket, Handle OTA update requests

Motor Control Functions: moveSteps(steps, speed) - เคลื่อนที่จำนวน steps ที่กำหนด, moveToPosition(angle) - หมุนไปยังตำแหน่งที่กำหนด (ใช้ AS5600 feedback), setSpeed(rpm) - ตั้งความเร็วในหน่วย RPM, enableMotor() / disableMotor() - เปิด/ปิด Motor driver, setCurrent(mA) - ตั้งค่ากระแส, setMicrosteps(value) - ตั้งค่า Microstepping (16, 32, 64, 128, 256)

Uploading Firmware to ESP32

📱 Web UI Features

Web Interface ออกแบบให้ใช้งานง่ายและทำงานได้ทั้งบนมือถือและคอมพิวเตอร์ ประกอบด้วย Control Panel สำหรับ Jog motor (Forward/Reverse), Set position, Set speed, Enable/Disable motor, Real-time Display แสดง Current position (Degrees และ Steps), Current draw (mA), Motor temperature, Connection status, Settings Page สำหรับ WiFi configuration, Motor parameters (Current, Microstepping, Acceleration), Calibration (Zero position, Steps per revolution) และ Monitoring Page แสดง Position history graph, Speed graph, Current consumption graph, Error logs

🚀

การอัพโหลด Firmware และทดสอบ Web UI

ขั้นตอนการอัพโหลดและทดสอบ:

1. Prepare Arduino IDE: ติดตั้ง ESP32 board support (ใช้ URL: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json), ติดตั้ง Libraries ที่จำเป็นทั้งหมด, เลือก Board: ESP32S3 Dev Module, ตั้งค่า Partition Scheme: Huge APP (3MB No OTA)

2. Upload Firmware: เชื่อมต่อ ESP32 กับคอมพิวเตอร์ผ่าน USB-C, กดปุ่ม Boot บน ESP32 แล้วกด Upload, รอจนกระทั่ง Upload เสร็จ (ประมาณ 1-2 นาที), เปิด Serial Monitor (Baud rate 115200) เพื่อดู Debug messages

3. Upload SPIFFS (Web files): เตรียม Web UI files (HTML, CSS, JavaScript) ในโฟลเดอร์ data/, ติดตั้ง ESP32 Sketch Data Upload plugin, Upload SPIFFS ผ่าน Tools > ESP32 Sketch Data Upload

4. Connect to WiFi: ครั้งแรกที่เปิดเครื่อง ESP32 จะเปิด Access Point mode ชื่อ "StepperMotor_XXXX", เชื่อมต่อ WiFi จากมือถือหรือคอมพิวเตอร์, เปิดเว็บบราวเซอร์ไปที่ 192.168.4.1, ตั้งค่า WiFi ให้เชื่อมต่อกับ Router ของคุณ (Station mode), ESP32 จะ Restart และเชื่อมต่อกับ WiFi ของคุณ, ดู IP address ที่ได้รับจาก Serial Monitor

5. Test Web UI: เปิดเว็บบราวเซอร์ไปที่ IP address ที่ ESP32 ได้รับ, ควรเห็น Web UI พร้อมปุ่มควบคุมต่างๆ, ทดสอบ Jog motor ไปข้างหน้า/ข้างหลัง, ทดสอบ Set position และดูว่า Motor หมุนไปยังตำแหน่งที่ต้องการ, ตรวจสอบ Real-time position display จาก AS5600, ทดสอบปรับ Speed, Current, Microstepping, ทดสอบ Enable/Disable motor

6. Troubleshooting: ถ้า Motor ไม่หมุน ตรวจสอบ Power supply และ Motor connections, ถ้าหมุนไม่ถูกทิศทาง สลับ A และ B phase, ถ้าหมุนไม่นุ่น ปรับ Current และ Microstepping, ถ้า AS5600 อ่านค่าไม่ได้ ตรวจสอบ Magnet position, ถ้า TMC2240 ร้อนเกินไป ติด Heat sink และลด Current

Web UI Interface

🌐 Advanced Features

  • Home Position: ใช้ AS5600 หรือ Limit switch เพื่อหา Home position เมื่อเปิดเครื่อง
  • G-code Support: รองรับ G-code commands เบื้องต้น (G0, G1, G28) สำหรับ CNC applications
  • Multi-motor Control: ขยายระบบให้ควบคุมหลาย Motors พร้อมกันด้วย Multiple TMC2240
  • MQTT Integration: เชื่อมต่อกับ Home Assistant หรือ IoT platforms ผ่าน MQTT
  • Closed-loop Control: ใช้ AS5600 feedback เพื่อตรวจจับและแก้ไข Lost steps
  • Load Monitoring: ใช้ StallGuard4 เพื่อตรวจจับการติดขัดและหยุดอัตโนมัติ

สรุป: ไดรเวอร์มอเตอร์ไร้สายที่ทรงพลัง

โปรเจกต์ Wireless Stepper Motor Driver นี้แสดงให้เห็นถึงความสามารถของ ESP32 และ TMC2240 ในการสร้างระบบควบคุมมอเตอร์ที่ทันสมัยและมีประสิทธิภาพสูง ด้วยการผสานเทคโนโลยี WiFi, Silent stepper driver และ Magnetic encoder เข้าด้วยกัน เราได้ระบบที่สามารถควบคุมได้จากระยะไกล ทำงานเงียบ และมีความแม่นยำสูง ระบบนี้เหมาะสำหรับโปรเจกต์หลากหลายประเภท ไม่ว่าจะเป็น Robotics, Camera slider, Rotary table, Lab equipment หรือ Art installation โดยสามารถปรับแต่งและขยายความสามารถได้ตามต้องการ การออกแบบ Custom PCB ทำให้ระบบมีขนาดกะทัดรัด เสถียร และสามารถติดตั้งได้ง่าย การใช้ TMC2240 ทำให้ได้ประโยชน์จากฟีเจอร์ขั้นสูงอย่าง Silent operation, Energy saving และ Stall detection ส่วน AS5600 magnetic encoder ให้ความสามารถในการตรวจจับตำแหน่งแบบ Real-time สำหรับ Closed-loop control หากคุณสนใจเทคโนโลยี Motor control และ IoT โปรเจกต์นี้เป็นจุดเริ่มต้นที่ดีในการเรียนรู้และพัฒนาต่อยอดไปสู่ระบบที่ซับซ้อนมากขึ้น เริ่มต้นสร้าง Wireless Stepper Motor Driver ของคุณเองวันนี้!

พร้อมสร้าง Wireless Stepper Motor Driver แล้วหรือยัง? มาช้อป ESP32 และอุปกรณ์กันเลย!

ช้อป ESP32 และอุปกรณ์

แท็ก


Blog posts

© 2025 บริษัท โกลบอลโทรนิค อินเตอร์เทรด จํากัด, ขับเคลื่อนโดย Shopify

    • PayPal

    เข้าสู่ระบบ

    ลืมรหัสผ่านใช่ไหม?

    ยังไม่มีบัญชีใช่ไหม?
    สร้างบัญชี