https://www.arduitronics.com/article/22/arduino-and-motor-control-part-1
- รับลิงก์
- X
- อีเมล
- แอปอื่นๆ
Arduino and Motor Control : Part 1
เมื่อ 3 ปีที่ผ่านมา
โดย เจ้าของร้าน
วันนี้เรามาพูดถึงการควบคุมมอเตอร์กระแสตรงกันหน่อย (ขอโฆษณานิดนะครับ ของที่ใช้ในการทำอยู่ในArduino Stater Kit 1) แต่บอกไว้ก่อนนะครับ ผมกะจะเขียนบทความแบ่งออกเป็นตอนๆ โดยจะมีเนื้อหาในการควบคุมมอเตอร์ชนิดต่างๆ ดังนี้ครับ
- ง่ายสุดก็ DC motor หรือ มอเตอร์กระแสตรง ซัก 2 ตอน โดยว่ากันถึงการควบคุมทิศการหมุน และ การควบคุมความเร็วรอบ
- ต่อมาก็ Servo motor ซัก 2 ตอน
- และปิดท้ายด้วย Stepping Motor 2 ตอน ครับ
วันนี้ก็ดูจะง่ายๆ ไปก่อนนะครับ Sketch ที่ใช้เป็นตัวอย่างผมไปเอามาจาก Arduino Cookbook โดยคุณ Michael Margolis นะครับ แล้วมาเขียนเนื้อหาใหม่ โดยอธิบายให้ง่าย และลึกขึ้น บอกไว้ก่อนเดี๋ยวจะมีคนหาว่าไปลอกมาอีก
DC motor ประกอบด้วย 2 ส่วนหลักๆ ได้แก่ โรเตอร์ และสเตเตอร์ นะครับ โรเตอร์ก็คือส่วนที่หมุน ส่วนสเตเตอร์คือส่วนที่เป็นขดลวดที่สร้างสนามแม่เหล็ก
หลักการทำงานของ DC motor คร่าวๆ ก็คือการนำกระแสตรงมาตัดผ่านสนามแม่เหล็ก ทำให้เกิดทอร์กขึ้นในทิศที่เหมาะสม และสร้างให้เกิดการหมุนของแกนโรเตอร์ ถ้าอยากดู Animation เท่ห์ๆ ของ Professor ใจดีที่ทำเพื่ออธิบายหลักการทำงานของ DC motor ก็ไปที่นี่เลยครับ
ทีนี้ในงานส่วนมาก เราต้องการควบคุมทิศทาง และ ความเร็วรอบของมอเตอร์ ไม่ว่าจะเป็นการขับเคลื่อนสายพาน หรือ ล้อของหุ่นยนต์ เพราะเราคงไม่ต้องการให้หมุนแบบอิสระควบคุมไม่ได้ ดังนั้นก็เลยมีคนคิดวงจรที่ใช้ในการควบคุมมอเตอร์ขึ้นมา แบบที่นิยมใช้กันเรียกว่าวงจร "H-Bridge"
วงจรที่เห็นนี้ทำหน้าที่ได้ทั้งคุมทิศทางและความเร็วของมอเตอร์นะครับ มาว่ากันทีละส่วน เริ่มจากการคุมทิศทางการหมุนก่อนครับ
โดยปกติหากต้องการกลับทิศการหมุนของมอเตอร์กระแสตรง วิธีนึงที่ทำได้คือ กลับทิศแหล่งจ่าย ทีนี้ลองดูที่รูปวงจร H-Bridge ด้านบนนะครับ
- หากต้องการให้หมุนตามเข็ม (Clockwise :CW) ก็ให้ S1 และ S4 ปิดวงจร และให้ S2 และ S3 เปืดวงจร
- หากต้องการให้หมุนทวนเข็ม (Conter Clockwise :CCW) ก็ให้ S2และ S3 ปิดวงจร และให้ S1 และ S4 เปืดวงจร
จะเห็นว่าสวิตช์จะทำงานเป็นคู่นะครับ S1 คู่กับ S4 และ S2 คู่กับ S3 คู่แรกทำงาน คู่สองต้องเปิดวงจร และในทางตรงข้ามก็คือคู่สองทำงาน คู่แรกต้องเปิดวงจร
ทีนี้จะทำอย่างไรให้การเปิดปิดเป็นแบบที่ง่ายกว่านี้ คำตอบก็คือ ใช้อุปกรณ์สารกึงตัวนำเช่น MOSFET หรือ IGBT หรือ อื่นๆ แล้วแต่ความเหมาะสม เช่น ขนาดกระแส แรงดันที่ต้องการควบคุม ครับ
Schematic ขอวงจร H-Bridge ก็ตามนี้ครับ จะใช้วงจรนี้ก็ต้องเชิญไปบ้านหม้อและซื้ออุปกรณ์ตามลิงค์นี้มาต่อวงจรกันเอานะครับ แต่โชคดีที่เรามีทั้ง Motor Shield L293D Motor Shield L298P และ IC ที่มีวงจร H-Bridge ให้ครับ ที่มีขายในบ้านเรามีให้เลือก 2 แบบ หลักๆ คือ L293D และ L298P ครับ สองตัวนี้ต่างกันอย่างไรเหรอครับ ก็ที่ขนาดของกระแสที่รับได้ ซึ่งหมายถึงขนาดของมอเตอร์ที่ใช้นะครับ
ถ้ามากกว่านี้เหรอครับ คงต้องต่อกันเอาเองแล้วครับ แต่จริงๆ ก็ไม่ได้ยากอะไรขนาดนั้นครับ แค่ต่อตาม Schematic เท่านั้น แต่แหม เลือกได้คงไม่ต่อเองใช่รึเปล่าครับ
วันนี้ลองมาใช้ L293D ทีให้มาใน Arduino Stater Kit 1ของร้าน Arduitronics เพื่อทดลองคุมทิศทางการหมุนดูนะครับ
ก่อนอื่นเริ่มจากการต่อวงจรก่อนครับ ก็ต่อตามภาพด้านล่างนี้ครับ (ภาพจาก Arduino Cookbook by Michael Margolis)
ในตัวอย่างนี้ผมใช้ถ่าน 9 V เป็นแหล่งจ่ายนะครับ อย่าใช้ 5 V จาก Board เป็นแหล่งจ่ายนะครับ เพราะ Port ของ Arduino จ่ายกระแสได้แค่ 50 mA เท่านั้น อาจจะทำให้บอร์ดพังได้ครับ
Sketch ก็ตามนี้นะครับ
/** Brushed_H_Bridge_simple2 sketch* commands from serial port control motor direction* + or - set the direction, any other key stops the motors*/const int in1Pin = 5; // H-Bridge input pinsconst int in2Pin = 4;const int in3Pin = 3; // H-Bridge pins for second motorconst int in4Pin = 2;void setup(){Serial.begin(9600);pinMode(in1Pin, OUTPUT);pinMode(in2Pin, OUTPUT);pinMode(in3Pin, OUTPUT);pinMode(in4Pin, OUTPUT);Serial.println("+ - sets direction of motors, any other key stops motors");}void loop(){if ( Serial.available()) {char ch = Serial.read();if (ch == '+'){Serial.println("CW");// first motordigitalWrite(in1Pin,LOW);digitalWrite(in2Pin,HIGH);//second motordigitalWrite(in3Pin,LOW);digitalWrite(in4Pin,HIGH);}else if (ch == '-'){Serial.println("CCW");digitalWrite(in1Pin,HIGH);digitalWrite(in2Pin,LOW);digitalWrite(in3Pin,HIGH);digitalWrite(in4Pin,LOW);}else{Serial.print("Stop motors");digitalWrite(in1Pin,LOW);digitalWrite(in2Pin,LOW);digitalWrite(in3Pin,LOW);digitalWrite(in4Pin,LOW);}}} |
ถ้าทุกอย่างถูกต้องไม่มีปัญหา จะได้หน้าจอ Serial Monitor ดังนี้ครับ โดยจะเห็นมอเตอร์หมุนทิศนึงตอนกด "+" และทิศตรงข้ามถ้ากด "-" ถ้ากดอย่างอื่นจะหยุดหมุนครับ
วันนี้ขอเท่านี้ก่อนนะครับ สัปดาห์หน้ามาต่อภาค 2 เรื่องการควบคุมความเร็วครับ
โดย Mountain "A"
Tags Arduino Stater Kit 1, Motor Control, การควบคุมมอเตอร์, L293D, arduino, รีเลย์, มอเตอร์, อุปกรณ์ไฟฟ้า, อิเล็กทรอนิกส์, Relay, motor, โมดูล
Share
หน้านี้เป็นสารบัญของบทความที่ปรากฏในเว็บของ Arduitronics.com นะครับ จะขอแบ่งออกเป็นหัวข้อตามกลุ่มของสินค้าในร้านดังต่อไปนี้
บทความการติดตั้งและใช้งาน Raspberry Pi
- การลงโปรแกรม
- Raspberry Pi - Media Center (ตอนที่ 1)
- Raspberry Pi - Media Center (ตอนที่ 2)
- Raspberry Pi - How to Cook Raspbian OS
- Raspberry Pi - Connect to the real world : Part 1
- Raspberry Pi -- Connect to the real world GPIO : Part 2
- Raspberry Pi กับ Shield ของ Arduino
- Raspberry Pi - Analog Input with ADC (MCP3208)
บทความการใช้งาน Arduino และอุปกรณ์ต่อพ่วงต่างๆ
- การลงโปรแกรมและไลบรารี่
- เรื่องของบอร์ด Arduino และ การใช้งานบอร์ด
- โมดูลเพื่อวัดค่าจากสิ่งแวดล้อม
- การใช้งาน DHT11 Humitdity and Temperature Sensor กับบอร์ด Arduino
- Ultrasonic Ranging Module HC-SR04
- Inertial Sensors: หามุม Pitch และ Roll จากเซ็นเซอร์วัดความเร่ง
- Real Time Clock DS3231
- Moisture Sensor on Arduino and Android over Bluetooth
- Moisture Sensor on Arduino and Android over Bluetooth: Part 2
- I2C Communication: Case study of GY-30 (Ambient Light Sensor)
- Inertial Measurement Unit - GY-80 Module for Arduino: Part 1 ADXL345
- Inertial Measurement Unit - GY-80 Module for Arduino: Part 2 L3G4200D
- โมดูลสื่อสาร
- การใช้งาน Motor และ Relay
- การแสดงค่าต่างๆ (แสง สี เสียง จอ)
- โมดูลเพื่อการบันทึกค่าและส่งค่า
- เรื่องของสัญญาณ
- เรื่องของ GPS และการประยุกต์ใช้
- เรื่องทั่วไปเกี่ยวกับ Arduino
หมวดหมู่
Clearance ลดกระหน่ำ
Education / STEM
หนังสือ (Books)
Internet of Things (IoT)
Robot/CNC/Flight/Printer
Other Development Boards
Raspberry Pi
Arduino Official Products
Arduino Compatible Board
Arduino Learning Kits
Arduino Shields
IC / Chip
LCD/LED/OLED/Laser
LED 7 Segment
Motor / Motor Drive
Power Supply / Battery
Sensors / Modules
Relay
Accessories/Components
Scope/Meter/Network Tester
อุปกรณ์บัดกรีและแผ่น PCB
Consumer Electronics
หน้าแรก | วิธีการสั่งซื้อสินค้า | แจ้งชำระเงิน | บทความ | เว็บบอร์ด | เกี่ยวกับเรา | ติดต่อเรา | ตะกร้าสินค้า | Site Map
Copyright © 2018 www.arduitronics.com All rights reserved.
CATEGORY
SALE
รหัสสินค้า BR00072
199.00 บาท
385.00 บาท
- สั่งซื้อ
NEW PRODUCTS
รหัสสินค้า SG00248
1,350.00 บาท
- สั่งซื้อ
รหัสสินค้า AS00085
1,250.00 บาท
- สั่งซื้อ
STATISTICS
หน้าที่เข้าชม | 6,703,813 ครั้ง |
ผู้ชมทั้งหมด | 2,086,907 ครั้ง |
เปิดร้าน | 21 พ.ค. 2556 |
ร้านค้าอัพเดท | 11 มิ.ย. 2561 |
MEMBER
แชร์
บันทึก
Join
พูดคุย-สอบถาม คลิก
- รับลิงก์
- X
- อีเมล
- แอปอื่นๆ
ความคิดเห็น
แสดงความคิดเห็น