Lab 2 Lotus Motor

จุดประสงค์การเรียนรู้

    เพื่อใช้งานควบคุมมอเตอร์กระแสตรงโดยผ่านPlatform CiRA COREในการสื่อสารข้อมูลแบบSerial


สาระการเรียนรู้ 

 1. DC Motor

        DC Motor เป็นมอเตอร์กระแสตรงที่เปลี่ยนพลังงานไฟฟ้าไปเป็นพลังงานกล โดยอาศัยหลักการเมื่อมีกระแสไฟฟ้าไหลผ่านตัวนำที่วางอยู่ในสนามแม่เหล็ก จะมีแรงเกิดขึ้นที่ลวดเหนี่ยวนำ ทำให้ลวดตัวนำเกิดการเคลื่อนที่ ซึ่งหาค่าแรงนี้ได้จากสมการ F = BIL   

               เมื่อ  F  คือ แรงที่เกิดขึ้นจากลวดตัวนำ   มีหน่วยเป็นนิวตัน

                   B  คือ ค่าความหนาแน่นของเส้นแรงแม่เหล็ก มีหน่วยเป็นเทสลา

                   L คือ ความยาวของขดลวดเหนี่ยวนำมีหน่วยเป็นเมตร 


การหาทิศทางของแรงมอเตอร์(แรงแม่เหล็กไฟฟ้า) โดยใช้กฎมือซ้าย โดยนิ้นชี้คือทิศของความหนาแน่นของเส้นแรงแม่เหล็ก (ฺB) นิ้วกลางคือทิศของการไหลกระแสไฟฟ้า(I)

 นิ้วหัวแม่มือคือทิศทางของแรงแม่เหล็กไฟฟ้าที่เป็นต้นกำเนิดให้DC Motorนั้นทำงาน ดังรูปข้างล่าง 

ที่มาของภาพ : https://blog.rmutl.ac.th/montri/assets/dc06.pdf

 2. สัญญาณ PWM

        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 ดังภาพประกอบข้างล่าง

 3. ไดซ์ควบคุมมอเตอร์TB6612FNG

        คุณสมบัติโดยทั่วไปของไดซ์ควบคุมมอเตอร์ 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การต่อวงจรสำหรับควบคุมมอเตอร์

ตารางDatasheetการต่อวงจรทั้งหมดสำหรับทุกLab

7 Word Document.pdf

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 ดังนี้

การทำงานในแต่ละกล่อง

7. ทำการRun Code  บนPlatform CiRA CORE แล้วกดปุ่มSTART และRun ที่Button Run จะทำให้มอเตอร์ทั้ัง 2 ตัวเคลื่อนที่เดินหน้าไปด้วยกัน