จุดประสงค์การเรียนรู้
สามารถเขียนCodeภาษาCในArduino IDEควบคุมการทำงานของDC Motorได้
สาระการเรียนรู้
1. DC Motor
เมื่อ F คือ แรงที่เกิดขึ้นจากลวดตัวนำ มีหน่วยเป็นนิวตัน
B คือ ค่าความหนาแน่นของเส้นแรงแม่เหล็ก มีหน่วยเป็นเทสลา
L คือ ความยาวของขดลวดเหนี่ยวนำมีหน่วยเป็นเมตร
การหาทิศทางของแรงมอเตอร์(แรงแม่เหล็กไฟฟ้า) โดยใช้กฎมือซ้าย โดยนิ้นชี้คือทิศของความหนาแน่นของเส้นแรงแม่เหล็ก (ฺB) นิ้วกลางคือทิศของการไหลกระแสไฟฟ้า(I) นิ้วหัวแม่มือคือทิศทางของแรงแม่เหล็กไฟฟ้าที่เป็นต้นกำเนิดให้DC Motorนั้นทำงาน ดังรูปข้างล่าง
PWM (Pulse-Width modulation) ซึ่งเป็นเทคนิคในการเข้ารหัสสัญญาณDigitalให้ัมีOuputเฉลี่ยคล้ายสัญญาณAnalog โดยจะสร้างLogic HIGH(3.3V) และ LOW(0V)สลับกันซึ่งจะทำให้คาบเวลาช่วงHIGHของหนึ่งลูกคลื่นมีหน่วยเป็นเปอร์เซนต์หรือที่เรียกกันว่าDuty Cycle หากใช้สัญญาณDigitalในการสั่งงานจะไม่สามารถทำให้DC Motorปรับความเร็วได้ ดังนั้นจึงจำเป็นต้องใช้สัญญาณPWMในการควบคุมความเร็วของมอเตอร์ ในที่นี้เราจะใช้ Library-> ESP32Servo.h ที่มีคำสั่ง analogWrite เพื่อสั่งให้PWMทำงานตั้งแต่ 0 - 255 เทียบกับ 0 - 100 เปอร์เซนต์ของความต่างศักย์ที่จ่ายให้มอเตอร์นั่นเอง (ความต่างศักย์มากมอเตอร์หมุนเร็ว ความต่างศักย์น้อยมอเตอร์จะหมุนช้า) ซึ่งสามารถดูรายละเอียดและคำอธิบายสัญญาณ PWM ดังภาพประกอบข้างล่าง
คุณสมบัติโดยทั่วไปของไดซ์ควบคุมมอเตอร์ TB6612FNG
- รับค่าความต่างศักย์สูงสุดVMที่ใช้งานกับมอเตอร์สูงสุดที่ 15 V
- กระแสที่ขับได้อย่างต่อเนื่องสูงสุด 1.2A
- กระแสสูงสุดชั่วขณะไม่เกิน 3.2A
Datasheetการทำงานของขาสัญญาณ TB6612FNG
หลักการในการสั่งงานความเร็วและควบคุมทิศทางของมอเตอร์กระแสตรง โดยปกติจะใช้ 3 พอร์ตสัญญาณในการควบคุมมอเตอร์กระแสตรง 1 ตัว ดังนี้ พอร์ตดิจิตอล 2 พอร์ต และพอร์ตPWM1พอร์ต ดังนี้
- กรณีที่ 1 Digital AI1 เป็น HIGH -> Digital AI2 เป็น HIGH มอเตอร์จะหยุดโดยมีการจ่ายกระแสไฟฟ้าล้อจะเบรก
- กรณีที่ 2 Digital AI1 เป็น LOW - >Digital AI2 เป็น LOW มอเตอร์จะหยุดโดยไม่มีการจ่ายกระแสไฟฟ้าล้อจะฟรี
- กรณีที่ 3 Digital AI1 เป็น HIGH -> Digital AI2 เป็น LOW - > PWMA(ความเร็วจาก 0-255) มอเตอร์จะหมุนไปข้างหน้า
- กรณีที่ 4 Digital AI1 เป็น LOW - >Digital AI2 เป็น HIGH- > PWMA (ความเร็วจาก 0-255) มอเตอร์จะหมุนกลับทาง
4. คำสั่งการใช้งาน
รูปแบบการใช้งานคำสั่งในภาษาซีของArduino IDEในเนื้อหานี้ จะใช้คำสั่งดังต่อไปนี้
วัสดุอุปกรณ์
1. บอร์ดLotus Devkit V.1.0 จำนวน 1 ตัว
2. สายMicro USB จำนวน 1 เส้น
3. DC Motor จำนวน 1-2 ตัว
4. Adapter 9 Vdc หรือ Battery Lipo 7.4Vdc จำนวน 1 ตัว/ก้อน
ข้อมูลพื้นฐานการใช้งานDC Motor
ตอนที่ 1 การใช้งาน DC Motor 1 ตัว
เป้าหมายในการทำงานของLabนี้ เพื่อเขียนโปรแกรมสั่งให้DC Motor ทำงานตามที่กำหนดได้ 1 ตัว
นำบอร์ดLotus Devkit V.1.0 มาต่อกับสายMicro USB และDC motor ดังรูปข้างล่าง
2. ทำการCopy Codeด้านล่างก่อนUpload code Arduino IDE ลงไปใบนบอร์ด ESP32 Devkit v1 ควรเลือกที่Tool -> Board -> ESP32 Arduino ->ESP32 Dev Module (ดังภาพประกอบด้านล่าง)
3.หลังจากนั้นให้เข้ามาที่ Tool ->Port แล้วเลือกพอร์ตC om portที่เชื่อมกับUSB ดังรูปข้างล่าง
4. หลังจากUpload Code เสร็จสิ้น ให้เสียบAdapter 9 Vdc หรือ แบตเตอรี่ Lipo 7.4 Vdc เพื่อใช้เป็นไฟเลี้ยงDC Motor ใหักับวงจร จากนั้นให้เลื่อนสวิตซ์เปิดการใช้งานแบตเตอรี่ขึ้น ดังวีดีโอข้างล่าง
ตอนที่ 2 การใช้งาน DC Motor 2 ตัว
เป้าหมายในการทำงานของLabนี้ เพื่อเขียนโปรแกรมสั่งให้DC Motor ทำงานตามที่กำหนดได้ 2 ตัว เพื่อความปลอดภัยของหุ่นยนต์จะมีการเขียนCodeก่อนการทำงานของDC Motor จะต้องกดสวิตซ์ GPIO27 ก่อน
วิธีการทดลอง
Copy Codeด้านล่างและ Upload code Arduino IDE ลงในบอร์ดให้เรียบร้อย