งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

รายวิชา ไมโครโปรเซสเซอร์ในงานอุตสาหกรรม

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "รายวิชา ไมโครโปรเซสเซอร์ในงานอุตสาหกรรม"— ใบสำเนางานนำเสนอ:

1 รายวิชา 9560206 ไมโครโปรเซสเซอร์ในงานอุตสาหกรรม
รายวิชา   ไมโครโปรเซสเซอร์ในงานอุตสาหกรรม  อ.โสภณ มหาเจริญ บทที่ 7 การออกแบบวงจรภาคเอาต์พุตและการเขียนโปรแกรม

2 วัตถุประสงค์ 7.1 เพื่อให้ผู้เรียนเข้าใจขั้นตอนการเชื่อมต่ออุปกรณ์เอาต์พุตกับบอร์ด Arduino 7.2 เพื่อให้ผู้เรียนสามารถพัฒนาโปรแกรมการใช้งานอุปกรณ์เอาต์พุตได้อย่างถูกต้อง 7.3 เพื่อให้ผู้เรียนมีความรู้ความเข้าใจในการใช้งานอุปกรณ์เอาต์พุตรูปแบบต่างๆ

3 เนื้อหาประจำบท การใช้งานเอาต์พุต LED การใช้งานเอาต์พุต ลำโพง
การใช้งานเอาต์พุต รีเลย์ การใช้งานเอาต์พุต ดีซีมอเตอร์ การใช้งานเอาต์พุต เซอร์โวมอเตอร์ การใช้งานเอาต์พุต จอแสดงผล LCD

4 วัตถุประสงค์เชิงพฤติกรรม
ผู้เรียนสามารถพัฒนาโปรแกรมผ่านบอร์ด Arduino เพื่อการควบคุมอุปกรณ์ภาคเอาต์พุตได้

5 เอาต์พุต

6 การขับหลอด LED การควบคุมให้ LED กระพริบ รายการอุปกรณ์
หลอด LED: (F9)-(F10) Note: longer wire on F9 ตัวต้านทาน Resistor: (J10) to (any -ve column hole) สายเชื่อมต่อ Wire 1: (J9) to (Arduino Pin 13) สายเชื่อมต่อ Wire 2: (any breadboard -ve column hole) to (Arduino GND) Note: either GND power pin is ok! สายาเชื่อมต่อ Wire 3: (any breadboard +ve column hole) to (Arduino 5V

7 การขับหลอด LED

8 การขับหลอด LED int ledPin = 13; void setup() { pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); }

9 การขับหลอด LED

10 การขับหลอด LED

11 การขับหลอด LED

12 การขับหลอด LED

13 Active Buzzer Module

14 Active Buzzer Module โมดูล Active Buzzer ใช้ไฟเลี้ยง V สามารถสร้างเสียงเตือนได้อย่างง่าย ๆ เพียงแค่จ่ายไฟเข้าไปที่ ขา I/O โมดูลนี้มีทรานซิสเตอร์เบอร์ 9012 ช่วยขยายสัญญาณจึงมีความดังเป็นพิเศษ คุณสมบัติของอุปกรณ์ module USES 9012 transistor driver working voltage 3.3 V-5 V has fixed bolt hole and easy installation Seven little board PCB size: 3.3 cm * 1.3 cm

15 ตำแหน่งขาของ Active Buzzer Module
ขา Pinout ของตัวโมดูล  (3 wire):     1. GND ต่อกับ GND     2. I/O ต่อกับ Pin digital ของบอร์ด Arduino     3. VCC ต่อกับไฟเลี้ยง 3.3 V-5 V

16 ต่อวงจรโมดูล Active buzzer กับ Arduino

17 โค้ดตัวอย่างการใช้โมดูล Active buzzer

18 โมดูลรีเลย์

19 โมดูลรีเลย์

20 โมดูลรีเลย์

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

22 โมดูลรีเลย์ ผู้เรียนสามารถพัฒนาโปรแกรมผ่านบอร์ด Aduino ได้อย่างสมบูรณ์

23 ส่วนประกอบโมดูลรีเลย์

24 ส่วนประกอบโมดูลรีเลย์

25 ตัวอย่างการใช้งานโมดูลรีเลย์
การนำโมดูลรีเลย์เพื่อควบคุมการเปิด/ปิดหลอดไฟ 220V

26 วงจรควบคุมหลอดไฟด้วยโมดูลรีเลย

27 ตัวอย่างโปรแกรม int relayPin =  10;    // Relay connected to digital pin 10   void setup()    {                     pinMode(relayPin, OUTPUT);      } void loop()                      {   digitalWrite(relayPin, HIGH);      delay(1000);                     digitalWrite(relayPin, LOW);       delay(1000);                   }

28 มอเตอร์ดีซี

29 โมดูลขับมอเตอร์ดีซี โมดูลนี้สามารถขับมอเตอร์ดีซีขนาดเล็ก ได้ 2 ตัว แต่ละตัวสามารถหมุนได้ทั้งสองทิศทางอิสระด้วยสัญญาณควบคุม 4 เส้น

30 หลักการหมุนของมอเตอร์ดีซี
วงจรต่อการใช้งานมอเตอร์ 1 ตัว

31 หลักการหมุนของมอเตอร์ดีซี
วงจรต่อการใช้งานมอเตอร์ 2 ตัว

32 Arduino ควบคุม DC Motor ด้วย L298

33 ตัวอย่างการสั่งให้ Motor หมุนกลับไปกลับมา

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

35 เซอร์โวมอเตอร์ หมายของ Servo Motor ก็คือ Motor ที่เราสามารถสั่งงานหรือตั้งค่า แล้วตัว Motor จะหมุนไปยังตำแหน่งองศาที่เราสั่งได้เองอย่างถูกต้อง โดยใช้การควบคุมแบบป้อนกลับ (Feedback Control) ในบทความนี้จะกล่าวถึง RC Servo Motor ซึ่งนิยมนำมาใช้ในเครื่องเล่นที่บังคับด้วยคลื่นวิทยุ (RC = Radio - Controlled) เช่น เรือบังคับวิทยุ รถบังคับวิทยุ เฮลิคอปเตอร์บังคับวิทยุ เป็นต้น

36 ส่วนประกอบภายใน RC SERVO MOTOR
1. MOTOR เป็นส่วนของตัวมอเตอร์ 2. GEAR TRAIN หรือ GEARBOX เป็นชุดเกียร์ทดแรง 3. POSITION SENSOR เป็นเซ็นเซอร์ตรวจจับตำแหน่งเพื่อหาค่าองศาในการหมุน 4. ELECTRONIC CONTROL SYSTEM เป็นส่วนที่ควบคุมและประมวลผล

37 หลักการทำงานของ RC Servo Motor
             เมื่อจ่ายสัญญาณพัลซ์เข้ามายัง RC Servo Motor ส่วนวงจรควบคุม (Electronic Control System) ภายใน Servo จะทำการอ่านและประมวลผลค่าความกว้างของสัญญาณพัลซ์ที่ส่งเข้ามาเพื่อแปลค่าเป็นตำแหน่งองศาที่ต้องการให้ Motor หมุนเคลื่อนที่ไปยังตำแหน่งนั้น แล้วส่งคำสั่งไปทำการควบคุมให้ Motor หมุนไปยังตำแหน่งที่ต้องการ โดยมี Position Sensor เป็นตัวเซ็นเซอร์คอยวัดค่ามุมที่ Motor กำลังหมุน เป็น Feedback กลับมาให้วงจรควบคุมเปรียบเทียบกับค่าอินพุตเพื่อควบคุมให้ได้ตำแหน่งที่ต้องการอย่างถูกต้องแม่นยำ

38 สัญญาณ RC ในรูปแบบ PWM             ตัว RC SERVO MOTOR ออกแบบมาใช้สำหรับรับคำสั่งจาก REMOTE CONTROL ที่ใช้ควบคุมของเล่นด้วยสัญญาณวิทยุต่างๆ เช่น เครื่องบินบังคับ รถบังบังคับ เรือบังคับ เป็นต้น ซึ่ง REMOTE จำพวกนี้ที่ภาครับจะแปลงความถี่วิทยุออกมาในรูปแบบสัญญาณ PWM (PULSE WIDTH MODULATION)          มุมหรือองศาจะขึ้นอยู่กับความกว้างของสัญญาณพัลซ์ ซึ่งโดยส่วนมากความกว้างของพัลซ์ที่ใช้ใน RC SERVO MOTOR จะอยู่ในช่วง 1-2 ms หรือ ms          

39 วิธีควบคุม RC Servo Motor ด้วย Arduino
            Arduino มีไลบรารี่สำหรับสั่งงาน RC Servo Motor มาให้ใช้งานอยู่แล้วเป็นฟังก์ชั่นสำเร็จรูปและใช้งานได้ง่าย ในหน้าเว็บไซต์ ได้ให้ข้อมูลไว้ว่า Servo Library ของ Arduino สามารถสั่งงาน RC Servo Motor ได้ทั้งแบบหมุนไป-กลับได้ องศา ฟังก์ชั่นภายใน Servo Library - attach() ,- write(), - writeMicroseconds(), - read(), - attached(), - detach()

40 attach() Description           คือฟังก์ชั่นที่ใช้ในการกำหนดขาสัญญาณที่ Servo Motor ต่อกับ Arduino และกำหนดความกว้างของพัลซ์ที่ 0 องศาและ 180 องศา Syntax           Servo.attach(pin)           Servo.attach(pin,min,max) Parameters           Pin: คือ ขาสัญญาณของ Arduino ที่ใช้เชื่อมต่อกับ Servo Motor           Min: คือ ความกว้างของพัลซ์ที่ 0 องศาของ Servo ตัวที่ใช้ในหน่วยไมโครวินาที (us) โดยปกติแล้วหากไม่มีการตั้งค่าโปรแกรมจะกำหนดค่าไว้ที่ 544 us           Max: คือ ความกว้างของพัลซ์ที่ 180 องศาของ Servo ตัวที่ใช้ในหน่วยไมโครวินาที (us) โดยปกติแล้วหากไม่มีการตั้งค่าโปรแกรมจะกำหนดค่าไว้ที่ 2400 us

41 Write() Description           คือฟังก์ชั่นที่ใช้ควบคุมตำแหน่งที่ต้องการให้ Servo Motor หมุนไปยังองศาที่กำหนดสามารถกำหนดเป็นค่าองศาได้เลย คือ องศา แต่ใน Servo Motor ที่เป็น Full Rotation คำสั่ง write จะเป็นการกำหนดความเร็วในการหมุน โดย           ค่าเท่ากับ 90 คือคำสั่งให้ Servo Motor หยุดหมุน           ค่าเท่ากับ 0 คือการหมุนด้วยความเร็วสูงสุดในทิศทางหนึ่ง           ค่าเท่ากับ 180 คือการหมุนด้วยความเร็วสูงสุดในทิศทางตรงกันข้าม Syntax           servo.write(angle) Parameters           Angle: คือมุมที่ต้องการให้ RC Servo Motor แบบ องศาหมุนไป แต่หากเป็น RC Servo Motor แบบ Full Rotation ค่า Angle คือ การกำหนดความเร็วและทิศทางในการหมุน

42 writeMicroseconds() Description           คือฟังก์ชั่นที่ใช้ควบคุมตำแหน่งที่ให้ Servo Motor หมุนไปยังตำแหน่งองศาที่กำหนดโดยกำหนดเป็นค่าความกว้างของพัลซ์ในหน่วย us ซึ่งปกติแล้ว RC Servo Motor จะใช้ความกว้างของพัลซ์อยู่ที่ us ตามที่ได้กล่าวไปข้างต้นแล้ว แต่ RC Servo Motor บางรุ่นหรือบางยี่ห้อไม่ได้ใช้ ช่วงความกว้างของพัลซ์ตามที่ได้กล่าวเอาไว้นี้ อาจจะใช้ช่วง แทนก็สามารถใช้ฟังก์ชั่น writeMicroseconds นี้เพื่อกำหนดความกว้างพัลซ์ได้เอง           Syntax           servo.writeMicroseconds(uS) Parameters           uS: คือค่าความกว้างของพัลซ์ที่ต้องการกำหนดในหน่วยไมโครวินาที (โดยตัวแปร int) หมายเหตุ การใช้ฟังก์ชั่น writeMicroseconds สามารถกำหนดค่าได้อิสระ ตรงนี้ ”ต้องระวังในการใช้งาน” หากสั่งงาน RC Servo Motor (แบบ องศา) จนหมุนไปเกินจุดสิ้นสุดคือเกินทั้งฝั่ง 0 หรือ 180 องศา จะทำให้เกิดเสียงครางดังจากการหมุนไปต่อไม่ได้และมอเตอร์จะกินกระแสสูงขึ้นด้วยในเวลาเดียวกันนั้น ซึ่งอาจทำให้ RC Servo Motor เกิดความเสียหายได้

43 read() Description           คือฟังก์ชั่นอ่านค่าองศาที่สั่งเข้าไปด้วยฟังก์ชั่น write() เพื่อให้รู้ว่าตำแหน่งองศาสุดท้ายที่เราสั่งเข้าไปนั้นมีค่าเท่าไหร่ซึ่งค่าที่อ่านออกมานั้นจะมีค่าอยู่ในช่วง Syntax           servo.read() Parameters           ไม่มี: จะ Return ค่า 0-180

44 attached() , detac() attached() Description            คือฟังก์ชั่นตรวจสอบว่า Servo ที่เราต้องการใช้กำลังต่ออยู่กับขสัญญาณของ Arduino หรือไม่ Syntax            servo.attached() Parameters            ไม่มี: จะ Return ค่า True ออกมา หาก Servo Motor เชื่อมต่ออยู่กับ Arduino แต่ถ้าหาก Return ออกมาเป็นค่าอื่นถือว่าไม่เชื่อมต่อ detach() Description            คือฟังก์ชั่นคืนสถานะของขาที่เรากำหนดให้เป็นขาควบคุม Servo Motor ด้วยคำสั่ง attached() ให้กลับคือสู่การใช่งานปกติ Syntax            servo.detach() Parameters            ไม่มี

45 วงจรการต่อเซอร์โวเข้ากับบอร์ด Arduino

46 โค้ดตัวอย่างการควบคุมตำแหน่ง Rc Servo Motor

47 กำหนดให้เซอร์โวหมุนตำแหน่ง 0 องศา
ผลลัพธ์

48 กำหนดให้เซอร์โวหมุนตำแหน่ง 90 องศา
ผลลัพธ์

49 กำหนดให้เซอร์โวหมุนตำแหน่ง 180 องศา
ผลลัพธ์ myservo.write(180); delay(1000);

50 โค้ดตัวอย่างการควบคุมตำแหน่ง เซอร์โยแบบ Sweep

51 การใช้งาน Character LCD Display

52 การใช้งาน Character LCD Display
จอ LCD 16x2 Character ที่นิยมวางจำหน่ายจะมีอยู่ 2 แบบด้วยกันคือ LCD แบบปกติที่เชื่อมต่อแบบขนาน (Parallel) และ LCD แบบที่เชื่อมต่ออนุกรม (Serial) แบบ I2C โดยทั้ง 2 แบบตัวจอมีลักษณะเดียวกันเพียงแต่แบบ I2C จะมีบอร์ดเสริมทำให้สื่อสารแบบ I2C ได้เชื่อมต่อได้สะดวกขึ้น

53 การใช้งาน Character LCD Display
LCD ที่มีการเชื่อมแบบ I2C นั้นเรียกอีกอย่างว่าการเชื่อมต่อแบบ Serial จะเป็นจอ LCD ธรรมดาทั่วไปที่มาพร้อมกับบอร์ด I2C Bus ที่ทำให้การใช้งานได้สะดวกยิ่งขึ้นและยังมาพร้อมกับ VR สำหรับปรับความเข้มของจอ ในรูปแบบ I2C จะใช้ขาในการเชื่อมต่อกับ Microcontroller เพียง 4 ขา (แบบ Parallel ใช้ 16 ขา) ซึ่งทำให้ใช้งานได้ง่ายและสะดวกมากยิ่งขึ้น สามารถดูได้จากตารางต่อไปนี้

54 ตำแหน่งขาของแอลซีดี (LCD) I2C
รูปที่ 4 ด้านหลังจอ LCD 16X2 (I2C) ตารางที่ 2 ตารางขาของจอ LCD 16X2 แบบ I2C ตำแหน่งขาของแอลซีดี (LCD) I2C

55 การควบคุมการแสดงผลของจอ LCD (I2C)
           ในการควบคุมหรือสั่งงาน โดยทั่วไปจอ LCD จะมีส่วนควบคุม (Controller) อยู่ในตัวแล้ว ผู้ใช้สามารถส่งรหัสคำสั่งสำหรับควบคุมการทำงานของจอ LCD (I2C) เช่นเดียวกันกับจอ LCD แบบธรรมดา พูดง่ายๆ คือรหัสคำสั่งที่ใช้ในการควบคุมนั้นเหมือนกัน แต่ต่างกันตรงที่รูปแบบในการรับส่งข้อมูล ในบทความนี้เราจะมาพูดถึงจอ LCD 16x2 ที่มีการส่งข้อมูลรูปแบบ I2C ที่ใช้ขาเพียง 4 ขาที่ใช้ในการเชื่อมต่อเท่านั้น            1. GND เป็น Ground ใช้ต่อระหว่าง Ground ของระบบ Microcontroller กับ LCD            2. VCC เป็นไฟเลี้ยงวงจรที่ป้อนให้กับ LCD มีขนาด +5VDC            3. SDA (Serial Data) เป็นขาที่ใช้ในการรับส่งข้อมูล            4. SCL (Serial Clock) เป็นขาสัญญาณนาฬิกาในการรับส่งข้อมูล

56 การเชื่อมต่อระหว่าง Arduino กับจอ LCD (I2C)

57 ชุดคำสั่งที่ใช้ในการสั่งงานระหว่าง Arduino กับจอ LCD
           คำสั่งที่ใช้ในการควบคุมจอ LCD ของ Arduino แบบ I2C นั้นไม่ต่างจากจอ LCD แบบธรรมดา (Parallel) มากนัก ทั้งนี้ยังได้มีการพัฒนา Library I2C มาให้ใช้งานได้อย่างสะดวกมากยิ่งขึ้น เรามาเริ่มต้นขั้นตอนแรกในการเขียนโปรแกรมกันเลยครับ ขั้นตอนแรกคือการนำไฟล์ Library LCD (I2C) ไปไว้ใน Library ของ Arduino ก่อนเพื่อให้ง่ายต่อการเรียกใช้ Library ผู้ใช้สามารถทำตามขั้นตอนด้านล่างได้เลยครับ            1. Download Library LCD (I2C) ก่อนครับ >> (ไฟล์ LiquidCrystal_I2C.7z)            2. ทำการแยกไฟล์ที่โหลดมาข้างต้น แล้วนำไปไว้ยัง  C:\Program Files (x86)\Arduino\libraries (Drive ที่ได้ทำการติดตั้งโปรแกรม Arduino IDE ไว้)

58 ชุดคำสั่งที่ใช้ในการสั่งงานระหว่าง Arduino กับจอ LCD

59 ชุดคำสั่งที่ใช้ในการสั่งงานระหว่าง Arduino กับจอ LCD
หลังจากที่เรานำไฟล์ Library ไปไว้เรียบร้อยแล้ว เราก็มาเริ่มการเขียนโปรแกรมกันเลยครับ ก่อนอื่นให้เราเรียก Library ของการสื่อสารแบบ I2C และ Library ของจอ LCD (I2C) ก่อนเลยครับ คือ Wire.h และ LiquidCrystal_I2C.h หลังจากทำการเรียก Library เรียบร้อยแล้ว เราจะมาดูกันว่ามีฟังก์ชั่นเบื้องต้นอะไรบ้างที่จะทำให้จอ LCD ของเราแสดงผล            ฟังก์ชั่นแรก LiquidCrystal_I2C(); ใช้ในการประกาศ Address และ ขนาดของจอ รูปแบบของคำสั่งคือ LiquidCrystal_I2C lcd(Address, columns, rows); ในบทความนี้เราจะกำหนดดังนี้ LiquidCrystal_I2C lcd(0x27, 16, 2); หมายถึง Address ของจอคือ 27 ขนาดของจอคือ 16 ตัวอักษร 2 บรรทัด            ฟังก์ชั่นต่อมา begin(); ใช้ในการกำหนดการเริ่มต้นในการใช้งานจอ            ฟังก์ชั่นต่อมา setCursor(); ใช้ในการกำหนดตำแหน่งของ Cursor เช่น lcd.setCursor(0, 1); คือให้เคอร์เซอร์ไปที่ ตำแหน่งที่ 0 บรรทัดที่ 1 (การนับตำแหน่งเริ่มจาก 0)            ฟังก์ชั่น print(); ใช้ในการกำหนดข้อความที่ต้องการแสดง เช่น lcd.print(“Hello world"); คือกำหนดให้แสดงข้อความ “Hello word” ออกทางหน้าจอ LCD

60 ตัวอย่างโค้ดโปรแกรม

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

62 แบบฝึกหัด วงจรส่งเสียงดนตรีโน้ต โด เร มี ฟา ซอน รา ซี ออกสู่ลำโพง
จงต่อวงจรมอเตอร์ ดีซี ขนาดแรงดัน 24 V จำนวน 2 ตัว พร้อมเขียนโปรแกรมให้หมุนทั้งสองทิศทาง จงต่อวงจร LED 4 ดวงกระพริบ ทุก 1 วินาที สลับเรียงกัน 4 ดวง วงจรส่งเสียงดนตรีโน้ต โด เร มี ฟา ซอน รา ซี ออกสู่ลำโพง วงจรรับค่าทางสวิตช์ 1 ตัว เมื่อกดแล้ว หลอด LED ติด พร้อมเสียงบีบดัง 1 ครั้ง


ดาวน์โหลด ppt รายวิชา ไมโครโปรเซสเซอร์ในงานอุตสาหกรรม

งานนำเสนอที่คล้ายกัน


Ads by Google