บทความ ESPino32 ตอนที่ 14 การขับมอเตอร์แบบต่างๆ

สารบัญ บทความ ESPino32

บทความ ESPino32 ตอนที่ 14 การขับมอเตอร์แบบต่างๆ

        บทความ ESPino32 ตอนที่ 14 การขับมอเตอร์แบบต่างๆ เป็นการใช้งานบอร์ดไมโครคอนโทรเลอร์เพื่อทำการขับมอเตอร์ชนิดต่างๆ ในบทความนี้จะใช้บอร์ด ESPino32 ในการควบคุมมอเตอร์กระแสตรง สเต็ปเปอร์มอเตอร์ และ เซอร์โวมอเตอร์เพื่อใช้ในงานต่างๆ ที่เหมาะสม

ตัวอย่างการประยุกต์ใช้งานมอเตอร์ชนิดต่างๆ

– มอเตอร์กระแสตรง           ใช้ในงานที่ต้องการแรงบิดในปริมาณมาก เช่น ใช้เป็นล้อของหุ่นยนต์ ใช้ขับเคลื่อนประตูอัติโนมัติ ใช้ดึงผ้าม่าน เป็นต้น

– สเต็ปเปอร์มอเตอร์           ใช้ในงานที่ต้องการควบคุมองศาการหมุนของมอเตอร์ เช่น ใช้เป็นมอเตอร์ขับเคลื่อนแกนหมุน x y หรือ z ของเครื่อง CNC เป็นต้น

– เซอร์โวมอเตอร์               ใช้ในงานที่ต้องการควบคุมองศาการหมุนของมอเตอร์ เช่น ใช้เป็นมอเตอร์สำหรับปรับองศาของล้อรถบังคับวิทยุ ใช้เป็นมอเตอร์สำหรับปรับมุมของปีกเครื่องบินบังคับวิทยุ เป็นต้น

มอเตอร์กระแสตรง

มอเตอร์กระแสตรง (DC Motor) คืออุปกรณ์ทางไฟฟ้าที่แปลงพลังงานไฟฟ้าเป็นพลังงานกล หลักการทำงานของมอเตอร์เกิดจากการทำงานร่วมกันระหว่างสนามแม่เหล็กของแม่เหล็กในตัวมอเตอร์ และสนามแม่เหล็กที่เกิดจากกระแสในขดลวดทำให้เกิดแรงดูดและแรงผลักของสนามแม่เหล็กทั้งสอง สำหรับมอเตอร์รุ่นต่างๆจะมีคุณสมบัติที่แตกต่างกัน เช่น ขนาดแรงบิดของมอเตอร์  อัตราทดของเกียร์ งานที่นำไปใช้ ดังรูป มอเตอร์กระแสตรงรุ่นต่างๆ

มอเตอร์กระแสตรงรุ่นต่างๆ

การใช้งานมอเตอร์กระแสตรงกับบอร์ดไมโครคอนโทรเลอร์ไม่สามารถต่อใช้งานกันโดยตรงได้ เพราะว่าขา GPIO ของตัวบอร์ดไมโครคอนโทรเลอร์นั้นไม่สามารถจ่ายกระแสออกมามากขนาดที่จะทำให้มอเตอร์ทำงานได้ ต้องใช้งานบอร์ดขับมอเตอร์และแหล่งจ่ายไฟเลี้ยงที่เหมาะสมจากภายนอกเพิ่มเข้ามาด้วย โดยปกติแล้วบอร์ดขับมอเตอร์ 1 บอร์ดสามารถควบคุมมอเตอร์ได้ 1 ตัว หรือ 2 ตัวตามสเป็คของบอร์ดขับมอเตอร์ตัวนั้นๆ และการในการควบคุมมอเตอร์ 1 ตัวจะใช้ต้องสายสัญญาณ 3 สายในการควบคุมมอเตอร์ ดังตาราง รายละเอียดของขาสัญญาณที่ใช้ในการควบคุมมอเตอร์

รายละเอียดของขาสัญญาณที่ใช้ในการควบคุมมอเตอร์
การทำงานของมอเตอร์

ตัวอย่างนี้จะใช้บอร์ด ESPino32 ในการควบคุมมอเตอร์กระแสตรงผ่านบอร์ดขับมอเตอร์ที่ใช้ไอซีเบอร์ L298N สามารถควบคุมมอเตอร์ได้ 2 ตัวพร้อมๆกัน แต่มีข้อแตกต่างในการควบคุมคือการควบคุมทิศทางจะเปลี่ยนจากขา DIR เป็น IN1 หรือ IN2 แทน และบนบอร์ดขับมอเตอร์จะมีจั๊มเปอร์ตัวเลือกสำหรับต่อขา Enable อยู่เรียบร้อยแล้วจึงใช้แค่ขา IN1 หรือ IN2 ในการควบคุมเพียงอย่างเดียว ดังตาราง การทำงานของบอร์ดขับมอเตอร์ที่ใช้ไอซีเบอร์ L298N

การทำงานของบอร์ดขับมอเตอร์ที่ใช้ไอซีเบอร์ L298N (ใส่จั๊มเปอร์ Enable ไว้)

ต่อวงจรดังรูป ESPino32 ใช้งานมอเตอร์กระแสตรง

ESPino32 ใช้งานมอเตอร์กระแสตรง

ตัวอย่างโปรแกรมที่ใช้

บรรทัดที่ 1         ประกาศตัวแปร IN1 ชนิด Integer ที่เป็นค่าคงที่ให้มีค่าเท่ากับ 33
บรรทัดที่ 2         ประกาศตัวแปร IN2 ชนิด Integer ที่เป็นค่าคงที่ให้มีค่าเท่ากับ 32
บรรทัดที่ 3         สร้างฟังก์ชัน setup()
บรรทัดที่ 4         เปิดฟังก์ชัน setup()
บรรทัดที่ 5         กำหนดให้ IN1 เป็น OUTPUT
บรรทัดที่ 6         กำหนดให้ IN2 เป็น OUTPUT
บรรทัดที่ 7         ปิดฟังก์ชัน setup()
บรรทัดที่ 8         สร้างฟังก์ชัน loop()
บรรทัดที่ 9         เปิดฟังก์ชัน loop()
บรรทัดที่ 10        สั่งงานให้ขา IN1 มีสถานะเป็น HIGH
บรรทัดที่ 11        สั่งงานให้ขา IN2 มีสถานะเป็น LOW
บรรทัดที่ 12        หน่วงเวลา 1000 มิลลิวินาที
บรรทัดที่ 13        สั่งงานให้ขา IN1 มีสถานะเป็น LOW
บรรทัดที่ 14        สั่งงานให้ขา IN2 มีสถานะเป็น HIGH
บรรทัดที่ 15        หน่วงเวลา 1000 มิลลิวินาที
บรรทัดที่ 16        ปิดฟังก์ชัน loop()

ผลการทดลอง

        เมื่อบอร์ด ESPino32 เริ่มทำงานโปรแกรมจะใช้งานขา IN1 และ IN2 เป็นขาสัญญาณสำหรับควบคุมบอร์ดขับมอเตอร์ที่ใช้ไอซีเบอร์ L298N เมื่อเริ่มเข้าใน loop() โปรแกรมภายในบอร์ดจะสั่งงานขา IN1 ให้มีสถานะเป็น HIGH และ สั่งงานให้ขา IN2 ให้มีสถานะเป็น LOW ทำให้บอร์ดขับมอเตอร์จ่ายไฟให้แก่ตัวมอเตอร์และทำให้มอเตอร์หมุนไปในทิศทางทวนเข็มนาฬิกา เป็นเวลา 1000 มิลลิวินาที จากนั้นโปรแกรมจะสั่งงานขา IN1 ให้มีสถานะเป็น LOW และ สั่งงานให้ขา IN2 ให้มีสถานะเป็น HIGH เป็นเวลา 1000 มิลลิวินาทีสลับกันไป

*ในตัวอย่างนี้เป็นเพียงการควบคุมทิศทางของมอเตอร์เท่านั้น ถ้าต้องการควบคุมความเร็วของมอเตอร์ด้วยต้องเปลี่ยนจากสถานะทางลอจิกให้เป็นสัญญาณพัลซ์แทน

สเต็ปเปอร์มอเตอร์

สเต็ปเปอร์มอเตอร์ (Stepper Motor) คือมอเตอร์ที่มีการหมุนเป็นสเต็ป การทำงานของมอเตอร์ชนิดนี้คือจ่ายกระแสไฟไปที่ขดลวดต่างๆตามลำดับดังรูป ลำดับขั้นการทำงานของสเต็ปเปอร์มอเตอร์ โดยในหนึ่งสเต็ปของมอเตอร์ตัวนั้นๆจะเคลื่อนที่ไปเป็นจำนวนองศาตามที่สเป็คของมอเตอร์นั้นได้ระบุไว้

ลำดับขั้นการทำงานของสเต็ปเปอร์มอเตอร์

ในตัวอย่างนี้จะใช้บอร์ด ESPino32 ควบคุมการทำงานของสเต็ปเปอร์มอเตอร์ผ่านบอร์ดขับมอเตอร์ สำหรับสเต็ปเปอร์มอเตอร์จะมีอยู่หลายขนาด ดังรูป สเต็ปเปอร์มอเตอร์รุ่นต่างๆ ผู้ใช้งานสามารถเลือกใช้งานสเต็ปเปอร์มอเตอร์ได้ตามต้องการ

สเต็ปเปอร์มอเตอร์รุ่นต่างๆ

สเต็ปเปอร์มอเตอร์ สามารถแบ่งได้ 2 ประเภทคือ Bipolar และ Unipolar ผู้ใช้งานสามารถจำแนกได้จากจำนวนของสายไฟบนตัวสเต็ปเปอร์มอเตอร์ โดยสามารถจำแนกได้คือ สเต็ปเปอร์มอเตอร์แบบ Bipolar มีสายไฟ 4 เส้น ส่วนสเต็ปเปอร์มอเตอร์แบบ Unipolar มีสายไฟ 5 เส้น หรือ 6 เส้น

สเต็บเปอร์มอเตอร์แบบ Bipolar  และ สเต็บเปอร์มอเตอร์แบบ Unipolar        

การใช้งานสเต็ปเปอร์มอเตอร์ ไม่สามารถต่อเข้าไปที่ขา GPIO ของบอร์ด ESPino32 ได้โดยตรงต้องต่อใช้งานผ่านบอร์ดขับมอเตอร์เท่านั้น สาเหตุที่เป็นเช่นนั้นเพราะขา GPIO ของบอร์ดไม่สามารถจ่ายกระแสออกมามากพอที่จะทำให้สเต็ปเปอร์มอเตอร์หมุนได้ ในบทความนี้จะใช้บอร์ด ESPino32 ควบคุม Stepper Motor 5V & ULN2003 Driver Board ซึ่งเป็นแบบสเต็ปเปอร์มอเตอร์แบบ Unipolar การขับสเต็ปเปอร์มอเตอร์แบบนี้สามารถทำได้ 3 วิธี คือ

1. การควบคุมการหมุนของสเต็ปเปอร์มอเตอร์แบบเฟสเดียว (Single Phase) เป็นการควบคุมสเต็ปเปอร์มอเตอร์โดยการจ่ายกระแสไฟให้ขดลวดของสเต็ปเปอร์มอเตอร์ครั้งละขดเรียงกันไปตามลำดับในตาราง ลำดับการขับสเต็ปเปอร์มอเตอร์แบบเฟสเดียว ทำให้แรงขับของตัวมอเตอร์มีน้อย

ลำดับการขับสเต็ปเปอร์มอเตอร์แบบเฟสเดียว

2. การควบคุมการหมุนของสเต็ปเปอร์มอเตอร์แบบสองเฟส (Two Phase) เป็นการควบคุมสเต็ปเปอร์มอเตอร์โดยการจ่ายกระแสไฟให้ขดลวดของสเต็ปเปอร์มอเตอร์ครั้งละ 2 ขดเรียงกันไปตามลำดับในตาราง ลำดับการขับสเต็ปเปอร์มอเตอร์แบบสองเฟส ทำให้แรงขับของตัวมอเตอร์มีมากกว่าแบบเฟสเดียว

ลำดับการขับสเต็ปเปอร์มอเตอร์แบบสองเฟส

3. การควบคุมการหมุนของสเต็ปเปอร์มอเตอร์แบบครึ่งเฟส (Half Phase) เป็นการควบคุมสเต็ปเปอร์มอเตอร์โดยการจ่ายกระแสไฟให้ขดลวดของสเต็ปเปอร์มอเตอร์ครั้งละขดเรียงกันและครั้งละ 2 ขดสลับกันไปตามลำดับตาราง ลำดับการขับสเต็ปเปอร์มอเตอร์แบบครึ่งเฟส ทำให้แกนหมุนของมอเตอร์หมุนได้ละเอียดขึ้น

ลำดับการขับสเต็ปเปอร์มอเตอร์แบบครึ่งเฟส

ต่อวงจรดังรูป ESPino32 ใช้งานสเต็ปเปอร์มอเตอร์

ESPino32 ใช้งานสเต็ปเปอร์มอเตอร์

ตัวอย่างโปรแกรมที่ใช้

*
*
*

บรรทัดที่ 1         ประกาศตัวแปร in1 ชนิด Integer ที่เป็นค่าคงที่ให้มีค่าเท่ากับ 17
บรรทัดที่ 2         ประกาศตัวแปร in2 ชนิด Integer ที่เป็นค่าคงที่ให้มีค่าเท่ากับ 16
บรรทัดที่ 3         ประกาศตัวแปร in3 ชนิด Integer ที่เป็นค่าคงที่ให้มีค่าเท่ากับ 18
บรรทัดที่ 4         ประกาศตัวแปร in4 ชนิด Integer ที่เป็นค่าคงที่ให้มีค่าเท่ากับ 19
บรรทัดที่ 5         ประกาศตัวแปร _step ชนิด Integer ให้มีค่าเท่ากับ 0
บรรทัดที่ 6         ประกาศตัวแปร dir ชนิด boolean ให้มีค่าเท่ากับ false
บรรทัดที่ 7         สร้างฟังก์ชัน setup()
บรรทัดที่ 8         เปิดฟังก์ชัน setup()
บรรทัดที่ 9         กำหนดให้ in1 เป็น OUTPUT
บรรทัดที่ 10        กำหนดให้ in2 เป็น OUTPUT        
บรรทัดที่ 11        กำหนดให้ in3 เป็น OUTPUT
บรรทัดที่ 12        กำหนดให้ in4 เป็น OUTPUT
บรรทัดที่ 13        ปิดฟังก์ชัน setup()
บรรทัดที่ 14        สร้างก์ฟังก์ชัน motorStep() โดยมี INPUT คือ Step ชนิด Unsigned Char
บรรทัดที่ 15        เปิดฟังก์ชัน motorStep()
บรรทัดที่ 16        สร้างเงื่อนไขการทำงานแบบ Switch Case โดยมี INPUT คือ Step
บรรทัดที่ 17        ถ้าค่าในตัวแปร Step มีค่าเท่ากับ 0 ให้ทำงานดังนี้
บรรทัดที่ 18        สั่งงานให้ขา in1 มีสถานะเป็น LOW
บรรทัดที่ 19        สั่งงานให้ขา in2 มีสถานะเป็น LOW
บรรทัดที่ 20        สั่งงานให้ขา in3 มีสถานะเป็น LOW
บรรทัดที่ 21        สั่งงานให้ขา in4 มีสถานะเป็น HIGH

                                      *
                                      *  ลำดับการขับมอเตอร์แบบครึ่งเฟส
                                      *
บรรทัดที่ 73        สร้างฟังก์ชัน loop()
บรรทัดที่ 74        เปิดฟังก์ชัน loop()
บรรทัดที่ 75        ใช้งานฟังก์ชัน motorStep() โดยมีพารามิเตอร์คือตัวแปร _step
บรรทัดที่ 76        ตรวจสอบตัวแปร dir ว่ามีค่าเป็น true หรือไม่ และเปิดฟังก์ชันถ้าตัวแปร dir มีค่าเท่ากับ true
บรรทัดที่ 77        นำค่าในตัวแปร _step + 1 จากนั้นเก็บไว้ในตัวแปร _step  
บรรทัดที่ 78        ปิดฟังก์ชันถ้าตัวแปร dir มีค่าเท่ากับ true และ เปิดฟังก์ชันถ้าตัวแปร dir มีค่าไม่เท่ากับ true
บรรทัดที่ 79        นำค่าในตัวแปร _step – 1 จากนั้นเก็บไว้ในตัวแปร _step
บรรทัดที่ 80        ปิดฟังก์ชันถ้าตัวแปร dir มีค่าไม่เท่ากับ true
บรรทัดที่ 81        ตรวจสอบค่าในตัวแปร _step ว่ามีค่ามากกว่า 7 หรือไม่ และเปิดฟังก์ชันถ้าตัวแปร _step ว่ามีค่ามากกว่า 7
บรรทัดที่ 82        กำหนดให้ค่าในตัวแปร _step มีค่าเท่ากับ 0
บรรทัดที่ 83        ปิดฟังก์ชันถ้าตัวแปร _step ว่ามีค่ามากกว่า 7
บรรทัดที่ 84        ตรวจสอบค่าในตัวแปร _step ว่ามีค่าน้อยกว่า 0 หรือไม่ และเปิดฟังก์ชันถ้าตัวแปร _step ว่ามีค่าน้อยกว่า 0
บรรทัดที่ 85        กำหนดให้ค่าในตัวแปร _step มีค่าเท่ากับ 7
บรรทัดที่ 86        ปิดฟังก์ชันถ้าตัวแปร _step ว่ามีค่าน้อยกว่า 0
บรรทัดที่ 87        หน่วงเวลา 1 มิลลิวินาที
บรรทัดที่ 88        ปิดฟังก์ชัน loop()

ผลการทดลอง

        เมื่อบอร์ด ESPino32 เริ่มทำงานโปรแกรมจะใช้งานขา in1 in2 in3 และ in4 ของบอร์ด ESPino32 เป็นตัวควบคุมการทำงานของสเต็ปเปอร์มอเตอร์ โดยโปรแกรมจะสร้างลอจิกที่ควบคุมการทำงานหมุนของสเต็ปเปอร์มอเตอร์ตามตาราง ลำดับการขับสเต็ปเปอร์มอเตอร์แบบครึ่งเฟส โดยทิศทางการหมุนของสเต็ปเปอร์มอเตอร์จะขึ้นอยู่กับค่าในตัวแปร dir

เซอร์โวมอเตอร์

เซอร์โวมอเตอร์ (Servo Motor) คือชุดมอเตอร์ที่สามารถควบคุมแกนหมุนให้หมุนไปยังตำแหน่งที่ต้องการได้ อย่างแม่นยำ โดยอาศัยหลักการควบคุมแบบป้อนกลับ (Feedback Control) ในตัวอย่างนี้จะใช้บอร์ด ESPino32 ควบคุมการทำงานของเซอร์โวมอเตอร์ขนาดเล็ก สำหรับเซอร์โวมอเตอร์จะมีอยู่หลายขนาด ดังรูป เซอร์โวมอเตอร์รุ่นต่างๆ ผู้ใช้งานสามารถเลือกใช้งานเซอร์โวมอเตอร์ได้ตามต้องการ

เซอร์โวมอเตอร์รุ่นต่างๆ

การใช้งานเซอร์โวมอเตอร์ จะใช้สายสัญญาณพัลซ์ (สีส้ม หรือขาว) ในการควบคุมองศาของแกนหมุน โดยองศาของแกนหมุนนั้นจะขึ้นอยู่กับความกว้างของสัญญาณพัลซ์ดังรูป สัญญาณพัลซ์ที่ควบคุมองศาของเซอร์โวมอเตอร์

สัญญาณพัลซ์ที่ควบคุมองศาของเซอร์โวมอเตอร์

ในบทความนี้จะใช้บอร์ด ESPino32 สร้างสัญญาณพัลซ์เพื่อควบคุมแกนหมุนของเซอร์โวมอเตอร์โดยอาศัยไลบรารี่ ESP32 Arduino Servo ในการสร้างสัญญาณพัลซ์ออกมาทางขา GPIO ของบอร์ด ESPino32 สามารถดาวโหลดไลบรารี่ได้จากลิ้งค์ https://github.com/RoboticsBrno/ESP32-Arduino-Servo-Library ดังรูป โหลดไลบรารี่ ESP32 Arduino Servo

โหลดไลบรารี่ ESP32 Arduino Servo

หลังจากดาวโหลดไลบรารี่ ESP32 Arduino Servo สำเร็จจะได้ไฟล์ ESP32-Arduino-Servo-Library-master.zip จากนั้นทำติดตั้งไลบรารี่จาก zip ไฟล์ โดยเลือก Sketch > Include Library > Add .ZIP Library… ดังรูป ติดตั้งไลบรารี่จาก zip ไฟล์

ติดตั้งไลบรารี่จาก zip ไฟล์

หลังจากติดตั้งไลบรารี่สำเร็จแล้ว สามารถเรียกใช้งานตัวอย่างโปรแกรมได้โดยเลือก File > Example > ServoESP32 > 01- SimpleServo ดังรูป เรียกใช้งานตัวอย่างโปรแกรม 01- SimpleServo จาก ESP32 Arduino Servo Library

เรียกใช้งานตัวอย่างโปรแกรม 01- SimpleServo จาก ESP32 Arduino Servo Library

ต่อวงจรดังรูป ESPino32 ใช้งานเซอร์โวมอเตอร์

ESPino32 ใช้งานเซอร์โวมอเตอร์

ตัวอย่างโปรแกรมที่ใช้

บรรทัดที่ 1         เรียกใช้งานไลบรารี่ Servo
บรรทัดที่ 2         ประกาศตัวแปร servoPin ชนิด Integer แบบค่าคงที่ให้มีค่าเท่ากับ 4
บรรทัดที่ 3         ใช้งานไลบรารี่ Servo โดยใช้ชื่อออปเจค servo1
บรรทัดที่ 4         สร้างฟังก์ชัน setup()
บรรทัดที่ 5         เปิดฟังก์ชัน setup()
บรรทัดที่ 6         ใช้งานฟังก์ชัน Serial โดยกำหนดอัตราเร็ว Baud rate ที่ความเร็ว 9600 บิตต่อวินาที
บรรทัดที่ 7         ใช้งานออปเจค servo1 โดยมีพารามิเตอร์คือ servoPin
บรรทัดที่ 8         ปิดฟังก์ชัน setup()
บรรทัดที่ 9         สร้างฟังก์ชัน loop()
บรรทัดที่ 10        เปิดฟังก์ชัน loop()
บรรทัดที่ 11        สร้างฟังก์ชันวนรอบการทำงาน 180 รอบโดยเพิ่มรอบการทำงานขึ้นทีละ 1 รอบ และ เปิดฟังก์ชันการทำงาน 180 รอบ
บรรทัดที่ 12        ให้ servo หมุนแกนหมุนไปที่ posDegree องศา
บรรทัดที่ 13        แสดงค่าในตัวแปร posDegree และขึ้นบรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 14        หน่วงเวลา 20 มิลลิวินาที
บรรทัดที่ 15        ปิดฟังก์ชันการทำงาน 180 รอบ
บรรทัดที่ 16        สร้างฟังก์ชันวนรอบการทำงาน 180 รอบโดยลดรอบการทำงานลงทีละ 1 รอบ และ เปิดฟังก์ชันการทำงาน 180 รอบ
บรรทัดที่ 17        ให้ servo หมุนแกนหมุนไปที่ posDegree องศา
บรรทัดที่ 18        แสดงค่าในตัวแปร posDegree และขึ้นบรรทัดใหม่ออกทาง Serial Monitor
บรรทัดที่ 19        หน่วงเวลา 20 มิลลิวินาที
บรรทัดที่ 20        ปิดฟังก์ชันการทำงาน 180 รอบ
บรรทัดที่ 21        ปิดฟังก์ชัน loop()

ผลการทดลอง

        เมื่อบอร์ด ESPino32 เริ่มทำงานโปรแกรมจะเรียกใช้งานไลบรารี่ Servo เพื่อสร้างสัญญาณพัลซ์ขนาดหน้าความกว้างขนาดต่างๆ ในตัวอย่างโปรแกรมบอร์ด ESPino32 จะสร้างฟังก์ชันวนรอบการทำงาน 180 รอบที่สั่งงานให้เซอร์โวมอเตอร์หมุนตั้งแต่ 0 องศาจนถึง 180 องศา หลังจากนั้นจะแสดงค่าองศาออกมาทาง Serial Monitor และอีกฟังก์ชันหนึ่งจะวนรอบการทำงาน 180 รอบ แต่จะสั่งงานให้เซอร์โวมอเตอร์หมุนตั้งแต่ 180 องศาจนถึง 0 องศา ดังรูปผลลัพธ์จากโปรแกรม 01 – SimpleServo

ผลลัพธ์จากโปรแกรม SimpleServo

ขอขอบคุณข้อมูลอ้างอิงจาก

– https://th.wikipedia.org/wiki/%E0%B8%A1%E0%B8%AD%E0%B9%80%E0%B8%95%E0%B8%AD%E0%B8%A3%E0%B9%8C

– https://en.wikipedia.org/wiki/Stepper_motor

– http://aimagin.com/blog/driving-step-motor-and-rc-servo-motor/?lang=th

สารบัญ บทความ ESPino32