Simple 3 Phase Induction Motor Speed Control by Using Arduino UNO

โครงงานนี้เป็นการทดลองเบื้องต้นสำหรับควบคุมความเร็วรอบ (Speed Control) มอเตอร์แบบอินดักชั่น 3 เฟส (3 Phase Induction Motor) ด้วยการใช้บอร์ดไมโครคอนโทรลเลอร์ Arduino UNO และบอร์ดขับกำลังด้วยเพาเวอร์โมดูล (Intelligent Power Module : IPM) โดยการปรับความถี่ในการทดลองช่วง 30-120Hz และใช้ไฟเลี้ยงให้กับมอเตอร์ประมาณ 80Vdc ซึ่งการควบคุมเป็นลักษณะสัญญาณพัลซ์สี่เหลี่ยมต่างเฟสกัน 120 องศาให้กับมอเตอร์

Simple 3Phase induction motor speed control
รูปที่ 1 มอเตอร์ 3 เฟสที่ใช้ในการทดลอง

รูปที่ 1 แสดงลักษณะของมอเตอร์ 3 เฟส แบบอินดักชั่น 4 โพล ขนาด 1 แรงม้า ซึ่งใช้ในการทดลองนี้ โดยตัวมอเตอร์จะยึดกับฐานแผ่นอะคิลิกใสความหนา 10 มิลลิเมตร เพื่อให้ง่ายสำหรับการทดลองและไม่เกิดการสั่นไหวขึ้น รวมทั้งสายไฟสำหรับต่อกับตัวมอเตอร์จะต่อออกมาข้างนอกโดยใช้หางปลาสำหรับเชื่อมต่อกับบอร์ดต่างๆ

3 Phase Induction Motor Speed Control by Using Arduino UNO
รูปที่ 2 บอร์ดขับกำลังเพาเวอร์โมดูลไอจีบีที (Intelligent Power Module : IPM)

รูปที่ 2 เป็นลักษณะของบอร์ดเพาเวอร์โมดูลไอจีบีที (Intelligent Power Module : IPM) ใช้เบอร์ BM64364S ซึ่งออกแบบให้สามารถต่อสายสัญญาณ จากบอร์ดควบคุมไมโครคอนโทรลเลอร์ต่างๆ ได้โดยตรงทางด้านอินพุต (สายแพด้านขวามือ) และส่วนของไฟเลี้ยงแรงดันสูงให้กับตัวมอเตอร์ เข้าที่ขา 1 และขา 2 (จากบนลงล่าง) และสามารถใช้ได้ทั้งกระแสตรง (DC Current) และกระแสสลับ (AC Current) ของคอนเน็กเตอร์ซ้ายมือ ส่วนจุดต่อของตัวมอเตอร์ 3 สาย (U, V, W) จะต่อเข้าที่ขา 4, ขา 5 และขา 6 ตามลำดับ

Datasheet : IPM Power IGBT BM64364S

Simple 3Phase induction motor speed control
รูปที่ 3 บอร์ดไมโครคอนโทรลเลอร์ Arduino UNO

ในรูปที่ 3 จะเป็นบอร์ดควบคุมการทำงานและสร้างสัญญาณขับให้กับตัวมอเตอร์ ซึ่งในการทดลองนี้จะใช้บอร์ด Arduino UNO และรับคำสั่งการปรับความเร็วรอบมอเตอร์จากตัวต้านทานปรับค่า (VR) โดยเราใช้ไฟเลี้ยงให้กับบอร์ดขนาด +15V ผ่านคอนเน็กเตอร์รับไฟเลี้ยง (DC IN) ได้ทันที ซึ่งแรงดัน +15V นี้ส่วนหนึ่งจะเป็นไฟเลี้ยงให้กับวงจรขับสัญญาณให้กับเพาเวอร์โมดูลอีกด้วย

Simple 3Phase induction motor speed control
รูปที่ 4 การเชื่อมต่อระหว่างบอร์ดควบคุม Arduino UNO และบอร์ดขับกำลังมอเตอร์ IPM

รูปที่ 4 แสดงลักษณะการต่อร่วมกับระหว่างบอร์ดควบคุม Arduino UNO และบอร์ดขับกำลังมอเตอร์ โดยใช้สายแพชุดเดียวเพื่อให้ง่ายในการทดลอง รวมทั้งตำแหน่งการวัดสัญญาณพัลซ์ที่บอร์ดเพื่อสังเกตการทำงาน

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

/*
Basic for Program test speed control 3 phase Induction Motor
Intelligent Power Module (IPM) : BM64364S
MCU : Arduino UNO
Voltage for motor : 80Vdc
Voltage for MCU : 15Vdc
Dev : www.electronicsdna.com
Date : 9-1-64  (V.0)
*/

 int PIN_D10 = 10;  // Hi  U   for IGBT
 int PIN_D9 = 9;    // Lo  U   for IGBT
 int PIN_D8 = 8;    // Hi  V   for IGBT
 int PIN_D7 = 7;    // Lo  V   for IGBT
 int PIN_D6 = 6;    // Hi  W   for IGBT
 int PIN_D5 = 5;    // Lo  W   for IGBT

 int between = 60;  // SET dead time
 int on_time = 1200;
 int val = 0;   
                   
 void setup() 
 {
 Serial.begin(9600); 
 pinMode(PIN_D10, OUTPUT);    // Set pin for output 6 signal driver
 pinMode(PIN_D9, OUTPUT);
 pinMode(PIN_D8, OUTPUT);
 pinMode(PIN_D7, OUTPUT);
 pinMode(PIN_D6, OUTPUT);
 pinMode(PIN_D5, OUTPUT);

 digitalWrite(PIN_D10, LOW);  // set Output 6 pin All Logic LOW  
 digitalWrite(PIN_D9, LOW);
 digitalWrite(PIN_D8, LOW);
 digitalWrite(PIN_D7, LOW);
 digitalWrite(PIN_D6, LOW);
 digitalWrite(PIN_D5, LOW);
 delay(100);
 }

 void loop()  
 {
    on_time = 1200;
    val = analogRead(A0);         // Read ADC0 for value data
    val = (1024-val);             // Inv Val for Adj Time Driver  
    on_time = on_time+(val*4);
    Serial.println(on_time);      // Send data for observe time 

    digitalWrite(PIN_D7, HIGH);    
    delayMicroseconds(on_time);
    digitalWrite(PIN_D5, LOW);     
    delayMicroseconds(between);  
    digitalWrite(PIN_D6, HIGH);    
    delayMicroseconds(on_time);
    digitalWrite(PIN_D10, LOW);     
    delayMicroseconds(between);  
    digitalWrite(PIN_D9, HIGH);    
    delayMicroseconds(on_time);
    digitalWrite(PIN_D7, LOW);     
    delayMicroseconds(between);  
    digitalWrite(PIN_D8, HIGH);    
    delayMicroseconds(on_time);
    digitalWrite(PIN_D6, LOW);     
    delayMicroseconds(between);  
    digitalWrite(PIN_D5, HIGH);    
    delayMicroseconds(on_time);    
    digitalWrite(PIN_D9, LOW);     
    delayMicroseconds(between);  
    digitalWrite(PIN_D10, HIGH);    
    delayMicroseconds(on_time);
    digitalWrite(PIN_D8, LOW);     
    delayMicroseconds(between);     
 }

ในส่่วนของโปรแกรมนี้แนะนำให้ศึกษาร่วมกับขาต่อของบอร์ด Arduino UNO เพื่อให้เข้าใจความสัมพันธ์ของการต่อใช้งานและช่วงเวลาการส่งสัญญาณต่างๆ ที่จะเกิดขึ้น

Simple 3Phase induction motor speed control
รูปที่ 5 ทดลองปรับความเร็วรอบมอเตอร์และสังเกตสัญญาณขับพัลซ์

รูปที่ 5 เป็นลักษณะการทดลองปรับความเร็วรอบให้กับมอเตอร์ แล้วสังเกตสัญญาณพัลซ์วิดธ์มอดูเลตที่เกิดขึ้น โดยสัญญาณพัลซ์วิดธ์นี้ จะเป็นการวัดสัญญาณสุ่มมาเพียง 1 ช่องเท่านั้น (ซึ่งปกติจะมี 3 ช่อง ที่ต่างเฟสกัน 120 องศา ของเอาต์พุตทั้ง 3 ช่องคือ U, V, W) ทั้งนี้เพื่อเป็นการสังเกตความสัมพันธ์ระหว่างความเร็วรอบต่อความถี่ (Variable Frequency Drive : VFD) ของสัญญาณขับที่เกิดขึ้น

Simple 3Phase induction motor speed control
รูปที่ 6 ทดลองปรับความเร็วรอบมอเตอร์และสังเกตแรงดันอินพุตที่เปลี่ยนแปลง

ในรูปที่ 6 เป็นลักษณะคล้ายกับรูปที่ 5 คือการทดลองปรับความเร็วรอบให้กับมอเตอร์ แล้วสังเกตค่าแรงดันอินพุตกำลังไฟฟ้าของตัวมอเตอร์ว่าเกิดการเปลี่ยนแปลงมากน้อยแค่ไหนอย่างไร และการเกิดค่าแรงดันย้อนกลับ (back EMF) จากการปรับความเร็วของตัวมอเตอร์ในช่วงเวลาต่างๆ

Simple 3Phase induction motor speed control
รูปที่ 7 วงจรที่ใช้ในการทดลองมอเตอร์ 3 เฟส
รูปที่ 8 วงจรอ้างอิงสำหรับ Power Drive Board [Datasheet : IPM BM64364S]

สำหรับโครงงานและการทดลองนี้เป็นพื้นฐานเบื้องต้น ในการควบคุมความเร็วให้กับมอเตอร์แบบอินดักชั่น 3 เฟส ที่ใช้อุปกรณ์ในการทดลองแบบง่ายที่เราสามารถหาซื้อเองได้ทั่วไป โดยตัวมอเตอร์อาจจะใช้แบบของมือก่อน 2 ก็จะช่วยลดงบประมาณในการซื้ออุปกรณ์ได้มากพอควรครับ

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

กับโครงงานนี้คงจะเป็นแนวทางและแนวความคิด (Concept) เบื้องต้น ให้ท่านได้นำไปทดลองและพัฒนาในรูปแบบต่างๆ ตามความเหมาะสม ซึ่งข้างล่างบทความนี้จะมีลิ้งค์เว็บไซต์ข้อมูลต่างๆ สำหรับให้ท่านได้ศึกษาเพิ่มเติมซึ่งเกี่ยวข้องกับการควบคุมเร็วมอเตอร์ในลักษณะนี้กันครับ.

Reference

  1. https://www.esf.edu/nekda/documents/variablespeeddrivesjaybradford-2perpage.pdf
  2. https://www.gov.nl.ca/eccm/files/waterres-training-adww-2018-03-davidgalbraith.pdf
  3. https://www.yaskawa.com/delegate/getAttachment?documentId=WP.AFD.13&cmd=documents&documentName=WP.AFD.13.pdf
  4. https://www.shareddocs.com/hvac/docs/1001/Public/0B/WP_VARFREQDRIVE.pdf
  5. https://www.nidec.com/en/technology/motor/academic/008/
  6. https://www.nxp.com/docs/en/application-note/AN1958.pdf
  7. https://www.yorkland.net/downloads/vfd_apguide.pdf
  8. https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf
  9. https://www.rohm.com/products/ipm/igbt-ipm