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 องศาให้กับมอเตอร์
รูปที่ 1 แสดงลักษณะของมอเตอร์ 3 เฟส แบบอินดักชั่น 4 โพล ขนาด 1 แรงม้า ซึ่งใช้ในการทดลองนี้ โดยตัวมอเตอร์จะยึดกับฐานแผ่นอะคิลิกใสความหนา 10 มิลลิเมตร เพื่อให้ง่ายสำหรับการทดลองและไม่เกิดการสั่นไหวขึ้น รวมทั้งสายไฟสำหรับต่อกับตัวมอเตอร์จะต่อออกมาข้างนอกโดยใช้หางปลาสำหรับเชื่อมต่อกับบอร์ดต่างๆ
รูปที่ 2 เป็นลักษณะของบอร์ดเพาเวอร์โมดูลไอจีบีที (Intelligent Power Module : IPM) ใช้เบอร์ BM64364S ซึ่งออกแบบให้สามารถต่อสายสัญญาณ จากบอร์ดควบคุมไมโครคอนโทรลเลอร์ต่างๆ ได้โดยตรงทางด้านอินพุต (สายแพด้านขวามือ) และส่วนของไฟเลี้ยงแรงดันสูงให้กับตัวมอเตอร์ เข้าที่ขา 1 และขา 2 (จากบนลงล่าง) และสามารถใช้ได้ทั้งกระแสตรง (DC Current) และกระแสสลับ (AC Current) ของคอนเน็กเตอร์ซ้ายมือ ส่วนจุดต่อของตัวมอเตอร์ 3 สาย (U, V, W) จะต่อเข้าที่ขา 4, ขา 5 และขา 6 ตามลำดับ
Datasheet : IPM Power IGBT BM64364S
ในรูปที่ 3 จะเป็นบอร์ดควบคุมการทำงานและสร้างสัญญาณขับให้กับตัวมอเตอร์ ซึ่งในการทดลองนี้จะใช้บอร์ด Arduino UNO และรับคำสั่งการปรับความเร็วรอบมอเตอร์จากตัวต้านทานปรับค่า (VR) โดยเราใช้ไฟเลี้ยงให้กับบอร์ดขนาด +15V ผ่านคอนเน็กเตอร์รับไฟเลี้ยง (DC IN) ได้ทันที ซึ่งแรงดัน +15V นี้ส่วนหนึ่งจะเป็นไฟเลี้ยงให้กับวงจรขับสัญญาณให้กับเพาเวอร์โมดูลอีกด้วย
รูปที่ 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 เพื่อให้เข้าใจความสัมพันธ์ของการต่อใช้งานและช่วงเวลาการส่งสัญญาณต่างๆ ที่จะเกิดขึ้น
รูปที่ 5 เป็นลักษณะการทดลองปรับความเร็วรอบให้กับมอเตอร์ แล้วสังเกตสัญญาณพัลซ์วิดธ์มอดูเลตที่เกิดขึ้น โดยสัญญาณพัลซ์วิดธ์นี้ จะเป็นการวัดสัญญาณสุ่มมาเพียง 1 ช่องเท่านั้น (ซึ่งปกติจะมี 3 ช่อง ที่ต่างเฟสกัน 120 องศา ของเอาต์พุตทั้ง 3 ช่องคือ U, V, W) ทั้งนี้เพื่อเป็นการสังเกตความสัมพันธ์ระหว่างความเร็วรอบต่อความถี่ (Variable Frequency Drive : VFD) ของสัญญาณขับที่เกิดขึ้น
ในรูปที่ 6 เป็นลักษณะคล้ายกับรูปที่ 5 คือการทดลองปรับความเร็วรอบให้กับมอเตอร์ แล้วสังเกตค่าแรงดันอินพุตกำลังไฟฟ้าของตัวมอเตอร์ว่าเกิดการเปลี่ยนแปลงมากน้อยแค่ไหนอย่างไร และการเกิดค่าแรงดันย้อนกลับ (back EMF) จากการปรับความเร็วของตัวมอเตอร์ในช่วงเวลาต่างๆ
สำหรับโครงงานและการทดลองนี้เป็นพื้นฐานเบื้องต้น ในการควบคุมความเร็วให้กับมอเตอร์แบบอินดักชั่น 3 เฟส ที่ใช้อุปกรณ์ในการทดลองแบบง่ายที่เราสามารถหาซื้อเองได้ทั่วไป โดยตัวมอเตอร์อาจจะใช้แบบของมือก่อน 2 ก็จะช่วยลดงบประมาณในการซื้ออุปกรณ์ได้มากพอควรครับ
*** อีกอย่างหนึ่งที่ขอแนะนำคือ การทดลองควบคุมความเร็วมอเตอร์นี้ เราต้องระวังในเรื่องแหล่งจ่ายไฟเลี้ยงให้กับตัวมอเตอร์ที่แรงดันสูงซึ่งจะเป็นอันตรายกับเราได้ รวมทั้งการทดลองจะต้องป้องกันการกระเด็นของตัวอุปกรณ์ (ในกรณีเกิดการระเบิด) ซึ่งจะทำให้เราได้รับบาดเจ็บจากการทดลองได้ครับ
กับโครงงานนี้คงจะเป็นแนวทางและแนวความคิด (Concept) เบื้องต้น ให้ท่านได้นำไปทดลองและพัฒนาในรูปแบบต่างๆ ตามความเหมาะสม ซึ่งข้างล่างบทความนี้จะมีลิ้งค์เว็บไซต์ข้อมูลต่างๆ สำหรับให้ท่านได้ศึกษาเพิ่มเติมซึ่งเกี่ยวข้องกับการควบคุมเร็วมอเตอร์ในลักษณะนี้กันครับ.
Reference
- https://www.esf.edu/nekda/documents/variablespeeddrivesjaybradford-2perpage.pdf
- https://www.gov.nl.ca/eccm/files/waterres-training-adww-2018-03-davidgalbraith.pdf
- https://www.yaskawa.com/delegate/getAttachment?documentId=WP.AFD.13&cmd=documents&documentName=WP.AFD.13.pdf
- https://www.shareddocs.com/hvac/docs/1001/Public/0B/WP_VARFREQDRIVE.pdf
- https://www.nidec.com/en/technology/motor/academic/008/
- https://www.nxp.com/docs/en/application-note/AN1958.pdf
- https://www.yorkland.net/downloads/vfd_apguide.pdf
- https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf
- https://www.rohm.com/products/ipm/igbt-ipm