จุดประสงค์การเรียนรู้
เพื่อใช้งานควบคุมมอเตอร์กระแสตรงโดยผ่านPlatform CiRA COREในการสื่อสารข้อมูลแบบSerial
สาระการเรียนรู้
1. DC Motor
เมื่อ F คือ แรงที่เกิดขึ้นจากลวดตัวนำ มีหน่วยเป็นนิวตัน
B คือ ค่าความหนาแน่นของเส้นแรงแม่เหล็ก มีหน่วยเป็นเทสลา
L คือ ความยาวของขดลวดเหนี่ยวนำมีหน่วยเป็นเมตร
การหาทิศทางของแรงมอเตอร์(แรงแม่เหล็กไฟฟ้า) โดยใช้กฎมือซ้าย โดยนิ้นชี้คือทิศของความหนาแน่นของเส้นแรงแม่เหล็ก (ฺB) นิ้วกลางคือทิศของการไหลกระแสไฟฟ้า(I) นิ้วหัวแม่มือคือทิศทางของแรงแม่เหล็กไฟฟ้าที่เป็นต้นกำเนิดให้DC Motorนั้นทำงาน ดังรูปข้างล่าง
ที่มาของภาพ : https://blog.rmutl.ac.th/montri/assets/dc06.pdf
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 ดังภาพประกอบข้างล่าง
ที่มาของภาพ : https://blog.thaieasyelec.com/espino32-ch6-how-to-use-analog-output/
คุณสมบัติโดยทั่วไปของไดซ์ควบคุมมอเตอร์ 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) มอเตอร์จะหมุนกลับทาง
วัสดุอุปกรณ์
1. ไมโครสวิตซ์ ชนิดกดติดปล่อยดับ จำนวน 1 ตัว
2. ตัวต้านทาน 10 กิโลโอห์ม จำนวน 1 ตัว
3. บอร์ด ESP32 Devkit V.1 จำนวน 1 บอร์ด
4. สายMicro USB จำนวน 1 เส้น
5. Breadboard
6. สายแพร Male-Male
7. หลอด LED จำนวน 3 หลอด
8. ตัวต้านทาน 220 โอห์ม จำนวน 3 ตัว
9. ตัวต้านทานปรับค่าได้ Potentiometer จำนวน 1 ตัว
10. ลำโพงBuzzer จำนวน 1 อัน
11. จอแสดงผล OLED I2C จำนวน 1 อัน
12. Servo Motor จำนวน 1 ตัว
13. โมดูลMb 102 Breadboard จำนวน 1 ตัว
14. Adaptor 9Vdc จำนวน 1 ตัว
15. ไดซ์มอเตอร์ TB6612 FNG จำนวน 1 ตัว
16. มอเตอร์กระแสตรง จำนวน 2 ตัว
วิธีทำการทดลอง
1. ทำการUpload Code firmware ของArduino IDE ไปที่บอร์ดESP32 Devkit v.1 โดยCode Frimware จะอยู่ที่นี่
2. ต่อวงจรดังตารางและรูปข้างล่าง (ถ้าหากอุปกรณ์ไม่ครบสามารถต่อแค่ไดซ์มอเตอร์TB6612FNG,โมดูล MB102 Breadboard,มอเตอร์กระแสตรง,AdaptorและESP32ก็ได้ ในรูปเป็นการต่อวงจรการทำงานแบบครบทุกLAB)
ตารางDatasheetการต่อวงจร
ตารางDatasheetการต่อวงจรสำหรับควบคุมมอเตอร์
ไดซ์มอเตอร์ TB6612FNG
ESP32
MB102 Breadboard
DC Motor
VM
VCC
GND
A01
A02
B01
B02
PWMA
AI1
AI2
PWMB
BI1
BI2
STBY
3V3
GND
D4
D16
D17
D13
D2
D15
3V3
+ (5V-OFF)
-
มอเตอร์ตัวที่1 +
มอเตอร์ตัวที่1 -
มอเตอร์ตัวที่2 +
มอเตอร์ตัวที่2 -
ตารางDatasheetการต่อวงจรทั้งหมดสำหรับทุกLab
3.ทำการเปิดโปรแกรมโดยการเรียงลำดับในตารางดังนี้
ลำดับที่
1
2
3
ชื่อโปรแกรม
4. หลังจากเรียกใช้โปรแกรม CiRA Lotus Nano ตัวโปรแกรมจะถามถึงรหัสผ่านในการเข้าใช้งานโปรแกรม ให้ทำการกรอกรหัสผ่านของเครื่องก่อนแล้วคลิกที่ปุ่มOK
5. หลังจากนั้นตัวโปรแกรม CiRA Lotus Nano จะทำการเปิดหน้าต่างดังรูปข้างล่างนี้ขึ้น ซึ่งให้เราเลือก Device เป็น /dev/ttyUSB0 แล้วกดที่ปุ่มSTART
****แต่ถ้าหากกดที่ปุ่มSTARTแล้วขึ้นError ให้ทำการเปิดพอร์ตUSB โดยใช้คำสั่งที่Terminal ดังนี้ :sudo chmod 666 /dev/ttyUSB0
ในกรณีที่ใช้งานได้จะมีหน้าตาดังรูปข้างล่าง
6.หลังจากนั้นให้เปิดที่หน้าต่างของCiRA COREและทำการเขียนFlow data code ดังนี้
การทำงานในแต่ละกล่อง
ชื่อกล่อง
Java Script / การตั้งค่าในเฟือง
การทำงาน
กดปุ่ม Run เมื่อต้องการให้โปรแกรมเริ่มทำงาน
มอเตอร์เดินหน้าทั้ง 2 ตัว
DL1 = 1 //ทิศทางมอเตอร์ตัวที่1
DL2 = 0 //ทิศทางมอเตอร์ตัวที่1
PWML = 128 // ความเร็วมอเตอร์ตัวที่1 PWM
DR1 = 1 //ทิศทางมอเตอร์ตัวที่2
DR2 = 0 //ทิศทางมอเตอร์ตัวที่2
PWMR = 128 // ความเร็วมอเตอร์ตัวที่2 PWM
7. ทำการRun Code บนPlatform CiRA CORE แล้วกดปุ่มSTART และRun ที่Button Run จะทำให้มอเตอร์ทั้ัง 2 ตัวเคลื่อนที่เดินหน้าไปด้วยกัน