จุดประสงค์การเรียนรู้
สามารถเขียนCodeในKB-IDEควบคุมการทำงานของDC Motorได้
สาระการเรียนรู้
1. DC Motor
DC Motor เป็นมอเตอร์กระแสตรงที่เปลี่ยนพลังงานไฟฟ้าไปเป็นพลังงานกล โดยอาศัยหลักการเมื่อมีกระแสไฟฟ้าไหลผ่านตัวนำที่วางอยู่ในสนามแม่เหล็ก จะมีแรงเกิดขึ้นที่ลวดเหนี่ยวนำ ทำให้ลวดตัวนำเกิดการเคลื่อนที่ ซึ่งหาค่าแรงนี้ได้จาก สมการ F = BIL
เมื่อ F คือ แรงที่เกิดขึ้นจากลวดตัวนำ มีหน่วยเป็นนิวตัน
B คือ ค่าความหนาแน่นของเส้นแรงแม่เหล็ก มีหน่วยเป็นเทสลา
L คือ ความยาวของขดลวดเหนี่ยวนำมีหน่วยเป็นเมตร
การหาทิศทางของแรงมอเตอร์(แรงแม่เหล็กไฟฟ้า) โดยใช้กฎมือซ้าย โดยนิ้วชี้คือทิศของความหนาแน่นของเส้นแรงแม่เหล็ก (ฺB) นิ้วกลางคือทิศของการไหลกระแสไฟฟ้า(I) นิ้วหัวแม่มือคือทิศทางของแรงแม่เหล็กไฟฟ้าที่เป็นต้นกำเนิดให้DC Motorนั้นทำงาน ดังรูปข้างล่าง
PWM (Pulse-Width modulation) ซึ่งเป็นเทคนิคในการเข้ารหัสสัญญาณDigitalให้มีOuputเฉลี่ยคล้ายสัญญาณAnalog โดยจะสร้างLogic HIGH(5V) และ LOW(0V)สลับกันซึ่งจะทำให้คาบเวลาช่วงHIGHของหนึ่งลูกคลื่นมีหน่วยเป็นเปอร์เซนต์หรือที่เรียกกันว่าDuty Cycle หากใช้สัญญาณDigitalในการสั่งงานจะไม่สามารถทำให้DC Motorปรับความเร็วได้ ดังนั้นจึงจำเป็นต้องใช้สัญญาณPWMในการควบคุมความเร็วของมอเตอร์ เพื่อสั่งให้PWMทำงานตั้งแต่ 0 - 255 เทียบกับ 0 - 100 เปอร์เซนต์ของความต่างศักย์ที่จ่ายให้มอเตอร์นั่นเอง (ความต่างศักย์มากมอเตอร์หมุนเร็ว ความต่างศักย์น้อยมอเตอร์จะหมุนช้า) ซึ่งสามารถดูรายละเอียดและคำอธิบายสัญญาณ PWM ดังภาพประกอบข้างล่าง
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. กลุ่มคำสั่งการทำงานมอเตอร์ ด้วยภาษาC++ ใช้กับLibrary LotusMegaBot.h
4.1 run(ความเร็วมอเตอร์ซ้าย , ความเร็วมอเตอร์ขวา); // ความเร็วตั้งแต่ 0-255 ถ้ามอเตอร์หมุนกลับทางใส่เครื่องหมาย- ถ้าสั่งหยุดมอเตอร์ความเร็วเป็น 0
4.2 runa(ความเร็วมอเตอร์ซ้าย , ความเร็วมอเตอร์ขวา); //มอเตอร์ไดซ์a ความเร็วตั้งแต่ 0-255 ถ้ามอเตอร์หมุนกลับทางใส่เครื่องหมาย- ถ้าสั่งหยุดมอเตอร์ความเร็วเป็น 0
4.3 runb(ความเร็วมอเตอร์ซ้าย , ความเร็วมอเตอร์ขวา); //มอเตอร์ไดซ์b ความเร็วตั้งแต่ 0-255 ถ้ามอเตอร์หมุนกลับทางใส่เครื่องหมาย- ถ้าสั่งหยุดมอเตอร์ความเร็วเป็น 0
4.4 runc(ความเร็วมอเตอร์ซ้าย , ความเร็วมอเตอร์ขวา); //มอเตอร์ไดซ์c ความเร็วตั้งแต่ 0-255 ถ้ามอเตอร์หมุนกลับทางใส่เครื่องหมาย- ถ้าสั่งหยุดมอเตอร์ความเร็วเป็น 0
4.5 RUN(ความเร็วมอเตอร์ซ้าย , ความเร็วมอเตอร์ขวา); // มอเตอร์ทั้ง6ตัวทำงานพร้อมกัน
4.6 RUN4(ความเร็วมอเตอร์ซ้าย , ความเร็วมอเตอร์ขวา); // มอเตอร์ทั้ง4ตัวทำงานพร้อมกัน ช่องไดซ์ที่aและb
4.7 fd(ความเร็วมอเตอร์ทุกตัว); // มอเตอร์ทั้ง6ตัวทำงานพร้อมกัน เดินหน้าตามความเร็วที่ใส่เข้าไปตั้งแต่ 1-255
4.8 fd2(ความเร็วมอเตอร์ซ้าย,ความเร็วมอเตอร์ขวา); // ความเร็วตั้งแต่ 0-255 สามารถใช้ได้สูงสุด 255 ต่ำสุด -255 (เครื่องหมาย - จะกลับทาง)
4.9 bk(ความเร็วมอเตอร์ทุกตัว); // มอเตอร์ทั้ง6ตัวทำงานพร้อมกัน เดินหน้าตามความเร็วที่ใส่เข้าไปตั้งแต่ 1-255
4.10 sr(ความเร็วมอเตอร์ทุกตัว); // มอเตอร์ทั้ง6ตัวทำงานพร้อมกัน เดินหน้าตามความเร็วที่ใส่เข้าไปตั้งแต่ 1-255
4.11 sl(ความเร็วมอเตอร์ทุกตัว); // มอเตอร์ทั้ง6ตัวทำงานพร้อมกัน เดินหน้าตามความเร็วที่ใส่เข้าไปตั้งแต่ 1-255
4.12 tr(ความเร็วมอเตอร์ทุกตัว); // มอเตอร์ทั้ง6ตัวทำงานพร้อมกัน เดินหน้าตามความเร็วที่ใส่เข้าไปตั้งแต่ 1-255
4.13 tl(ความเร็วมอเตอร์ทุกตัว); // มอเตอร์ทั้ง6ตัวทำงานพร้อมกัน เดินหน้าตามความเร็วที่ใส่เข้าไปตั้งแต่ 1-255
4.14 ao(); //มอเตอร์ทั้ง6ตัวหยุดการทำงาน
4.15 AO(); //มอเตอร์ทั้ง6ตัวหยุดการทำงาน
เป้าหมาย
หลังจากกดปุ่ม ok (D53) หุ่นยนต์จะเคลื่อนที่ดังต่อไปนี้
เดินตรงไปข้างหน้า ในเวลา 1 วินาที ส่งเสียงจากBuzzerแล้วหยุด 0.5 วินาที
เลี้ยวซ้าย ในเวลา 1 วินาที ส่งเสียงจากBuzzerแล้วหยุด 0.5 วินาที
เลี้ยวขวา ในเวลา 1 วินาที ส่งเสียงจากBuzzerแล้วหยุด 0.5 วินาที
ถอยหลัง ในเวลา 1 วินาที ส่งเสียงจากBuzzerแล้วหยุด 0.5 วินาที
วัสดุอุปกรณ์
1. บอร์ดLotusMegaBot จำนวน 1 ตัว
2. สายMicro USB จำนวน 1 เส้น
3.DC Motor จำนวน 2-6 ตัว
4.Adapter 9 Vdc หรือ Battery Lipo 7.4Vdc จำนวน 1 ตัว/ก้อน
วิธีทำ
การประกอบตัวหุ่นยนต์ขับเคลื่อน 4 ล้อ ให้ทำการต่อมอเตอร์ตามผังต่อไปนี้ โดยที่ตอนไม่จ่ายไฟฟ้าให้กับมอเตอร์ เมื่อหมุนมอเตอร์ไปข้างหน้าหลอดLEDที่ไดซ์มอเตอร์จะต้องติดเป็นสีเขียวและเมื่อหมุนไปข้างหลังหลอดLEDจะต้องติดเป็นสีแดง
1. เปิด Arduino IDE แล้วทำการเขียนโค้ดดังภาพข้างล่าง โดยที่หากเขียนโค้ดไว้ในเครื่องหมายปีกกา{} ภายใต้ void setup() โปรแกรมจะทำงานเพียงครั้งเดียว และหากเขียนโค้ดภายในเครื่องหมายปีกกา{} ภายใต้void loop() โปรแกรมจะทำงานต่อเนื่อง
2.ทำการเสียบสายMicroUSBกับบอร์ดLotusMegaBotกับเครื่องคอมพิวเตอร์ ดังรูปข้างล่าง
3.สำหรับการอัพโหลดโปรแกรมลงบนบอร์ดสามารถทำตามขั้นตอนต่อไปนี้
ตัวอย่างVDOการทำงานของโปรแกรม