
- ง่ายสุดก็ DC motor หรือ มอเตอร์กระแสตรง ซัก 2 ตอน โดยว่ากันถึงการควบคุมทิศการหมุน และ การควบคุมความเร็วรอบ
- ต่อมาก็ Servo motor ซัก 2 ตอน
- และปิดท้ายด้วย Stepping Motor 2 ตอน ครับ
DC motor ประกอบด้วย 2 ส่วนหลักๆ ได้แก่ โรเตอร์ และสเตเตอร์ นะครับ โรเตอร์ก็คือส่วนที่หมุน ส่วนสเตเตอร์คือส่วนที่เป็นขดลวดที่สร้างสนามแม่เหล็ก
หลักการทำงานของ DC motor คร่าวๆ ก็คือการนำกระแสตรงมาตัดผ่านสนามแม่เหล็ก ทำให้เกิดทอร์กขึ้นในทิศที่เหมาะสม และสร้างให้เกิดการหมุนของแกนโรเตอร์ ถ้าอยากดู Animation เท่ห์ๆ ของ Professor ใจดีที่ทำเพื่ออธิบายหลักการทำงานของ DC motor ก็ไปที่นี่เลยครับ
http://www.walter-fendt.de/ph14e/electricmotor.htm

ทีนี้ในงานส่วนมาก เราต้องการควบคุมทิศทาง และ ความเร็วรอบของมอเตอร์ ไม่ว่าจะเป็นการขับเคลื่อนสายพาน หรือ ล้อของหุ่นยนต์ เพราะเราคงไม่ต้องการให้หมุนแบบอิสระควบคุมไม่ได้ ดังนั้นก็เลยมีคนคิดวงจรที่ใช้ในการควบคุมมอเตอร์ขึ้นมา แบบที่นิยมใช้กันเรียกว่าวงจร "H-Bridge"

โดยปกติหากต้องการกลับ ทิศการหมุนของมอเตอร์กระแสตรง วิธีนึงที่ทำได้คือ กลับทิศแหล่งจ่าย ทีนี้ลองดูที่รูปวงจร H-Bridge ด้านบนนะครับ
- หากต้องการให้หมุนตามเข็ม (Clockwise :CW) ก็ให้ S1 และ S4 ปิดวงจร และให้ S2 และ S3 เปืดวงจร
- หากต้องการให้หมุนทวนเข็ม (Conter Clockwise :CCW) ก็ให้ S2และ S3 ปิดวงจร และให้ S1 และ S4 เปืดวงจร
ทีนี้จะทำอย่างไรให้การ เปิดปิดเป็นแบบที่ง่ายกว่านี้ คำตอบก็คือ ใช้อุปกรณ์สารกึงตัวนำเช่น MOSFET หรือ IGBT หรือ อื่นๆ แล้วแต่ความเหมาะสม เช่น ขนาดกระแส แรงดันที่ต้องการควบคุม ครับ

ถ้า มากกว่านี้เหรอครับ คงต้องต่อกันเอาเองแล้วครับ แต่จริงๆ ก็ไม่ได้ยากอะไรขนาดนั้นครับ แค่ต่อตาม Schematic เท่านั้น แต่แหม เลือกได้คงไม่ต่อเองใช่รึเปล่าครับ
วันนี้ลองมาใช้ L293D ทีให้มาใน Arduino Stater Kit 1 ของร้าน Arduitronics เพื่อทดลองคุมทิศทางการหมุนดูนะครับ
ก่อนอื่นเริ่มจากการต่อวงจรก่อนครับ ก็ต่อตามภาพด้านล่างนี้ครับ (ภาพจาก Arduino Cookbook by Michael Margolis)




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);}}} |

ไม่มีความคิดเห็น:
แสดงความคิดเห็น