Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
1 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย ARDUINO
สาระส าคญ
มอเตอรไฟฟาเปนอปกรณทนยมใชกนอยางแพรหลายในโรงงานอตสาหกรรม เปนอปกรณทใชควบคมเครองจกรกลในงานอตสาหกรรม มอเตอรมหลายแบบหลายชนดทใชใหเหมาะสมกบงาน ดงนนเราจงตองทราบถงความหมายและชนดของมอเตอรไฟฟา ตลอดถงคณสมบตการใชงานของมอเตอรแตละชนด เพอใหเกดประสทธภาพสงสดในการใชงานของมอเตอรนนๆ มอเตอรมอเตอรไฟฟา (Motor) หมายถงเครองกลไฟฟาชนดหนงทเปลยนแปลงพลงงานไฟฟามาเปนพลงงานกล
เนอหาสาระการเรยนร 8.1 ความรเบองตนเกยวกบมอเตอรไฟฟา 8.2 การควบคมดซมอเตอรดวย Arduino 8.3 การควบคมสเตปมอเตอรดวย Arduino
จดประสงคการเรยนร
จดประสงคทวไป 1. เพอใหมความรความเขาใจเกยวกบการควบคมดซมอเตอรและคมสเตปมอเตอรดวย Arduino 2. เพอใหสามารถน าความรไปประยกตใชในการเขยนโปรแกรมก าหนดการท างาน ดวย Arduino 3. เพอใหตระหนกถงความส าคญของการควบคมดซมอเตอรและคมสเตปมอเตอรดวย Arduino
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
2 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
จดประสงคเชงพฤตกรรม 1. อธบายความรเบองตนเกยวกบมอเตอรไฟฟาได 2. เชอมตอดซมอเตอรดวย Arduino ได 3. ควบคมดซมอเตอรดวย Arduino ได 4. เชอมตอสเตปมอเตอรดวย Arduino ได 5. ควบคมสเตปมอเตอรดวย Arduino ได
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
3 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
**********************************************************************************
เรอง การควบคมดซและสเตปมอเตอรดวย Arduino ใชเวลา 20 นาท วชา ไมโครคอนโทรลเลอรเบองตน รหสวชา (2127-2107) ระดบชน ประกาศนยบตรวชาชพ (ปวช.) สาขาวชา เมคคาทรอนกส ค าชแจง 1. แบบทดสอบมทงหมด 10 ขอ (10 คะแนน) 2. ใหผเรยนเลอกค าตอบทถกทสดแลวกาเครองหมายกากบาท () ลงในกระดาษค าตอบ 1. มอเตอรมอเตอรไฟฟา (Motor) หมายถง
2. มอเตอรไฟฟากระแสตรงเปนตนก าลงขบเคลอนทส าคญอยางหนงในโรงงานอตสาหกรรมเพราะ
3. กระแสไฟฟาในขดลวดสนามแมเหลก (Field Coil) จะสรางขวแมเหลกแบบใด
4. DC Motor ประกอบดวย 2 สวนหลกๆ ไดแก ก. ขวแมเหลกเหนอ / ใต ข. ทนอารมาเจอร / สเตเตอร ค. มอเตอรไฟฟากระแสสลบ / มอเตอรไฟฟากระแสตรง ง. ขดลวดอารมาเจอร / ขดลวดสนามแมเหลก
ก. เครองกลไฟฟาทเปลยนแปลงพลงงานกลเปนพลงงานไฟฟา ข. เครองกลไฟฟาทเปลยนแปลงพลงงานไฟฟาเปนพลงงานแสง
ค. เครองกลไฟฟาทเปลยนแปลงพลงงานกลเปนพลงงานแสง ง. เครองกลไฟฟาทเปลยนแปลงพลงงานไฟฟาเปนพลงงานกล
ก. ทนทาน ข. ราคาถก
ค. ปรบความเรวได ง. ประหยดไฟฟา
ก. ขวสง-ต า ข. ขวเหนอ-ใต
ค. ขวซาย-ขวา ง. ขวบน-ลาง
แบบทดสอบกอนเรยน หนวยท 8 เรอง การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
4 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
5. หลกการท างานของ DC Motor คอ ก. แรงดนสลบตดผานสนามแมเหลก เกดทอรกขนในทศทเหมาะสม ข. กระแสสลบตดผานสนามแมเหลก เกดทอรกขนในทศทเหมาะสม ค. แรงดนสลบตดผานสนามแมเหลก เกดทอรกขนในทศทเหมาะสม ง. กระแสตรงตดผานสนามแมเหลก เกดทอรกขนในทศทเหมาะสม
6. วงจร H-Bridge สามารถควบคมมอเตอรไดอยางไร ก. ควบคมความเรวรอบของมอเตอร ข. ควบคมทศทางของมอเตอร ค. ควบคมทศทาง และความเรวรอบของมอเตอร ง. ควบคมการเดนหนาและถอยหลงของมอเตอร 7. หากตองการใหหมนตามเขม (Clockwise :CW) ใหสวตซท างานอยางไร ก. S2 และ S3 ปดวงจร และ S1 และ S4 เปดวงจร ข. S1 และ S4 ปดวงจร ค. S2 และ S3 เปดวงจร ง. S1 และ S4 ปดวงจร และ S2 และ S3 เปดวงจร 8. อปกรณสารกงตวน าทนยมใชในวงจร H-Bridge คอ ก. DIODE หรอ ZENERDIODE ข. TRIAC หรอ DIAC ค. TRANSISTER ง. MOSFET หรอ IGBT 9. หลกการของการท างานของ Stepper Motor คอ ก. การมอดเลตสญญาณเฟสเซอร ข. การมอดเลตสญญาณตามแอมพลจด ค. การมอดเลตสญญาณตามความถ ง. การจายไฟเขาไปทละขดตามล าดบ
10. วงจร Darlington เปน IC ส าเรจรปมชอเรยกวา ก. L298P ข. 7812
ค. 1N4001 ง. ULN2003AN
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
5 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
8.1 ความรเบองตนเกยวกบมอเตอรไฟฟา
มอเตอรไฟฟาเปนอปกรณทนยมใชกนอยางแพรหลายในโรงงาน เปนอปกรณทใชควบคมเครองจกรกลในงานอตสาหกรรม มอเตอรมหลายแบบหลายชนดทใชใหเหมาะสมกบงาน ดงนนเราจงตองทราบถงความหมายและชนดของมอเตอรไฟฟา ตลอดถงคณสมบตการใชงานของมอเตอรแตละชนด เพอใหเกดประสทธภาพสงสดในการใชงานของมอเตอรนนๆ
มอเตอรมอเตอรไฟฟา (Motor) หมายถงเครองกลไฟฟาชนดหนงทเปลยนแปลงพลงงานไฟฟามาเปนพลงงานกล มอเตอรไฟฟาทใชพลงงานไฟฟาเปลยนเปนพลงงานกล มทงพลงงานไฟฟากระแสสลบ และพลงงานไฟฟากระแสตรง
8.1.1 มอเตอรไฟฟาแบงออกตามชนดของกระแสไฟฟา ได 2 ชนดดงน
มอเตอรไฟฟากระแสสลบ(Alternating Current Motor) 1. มอเตอรไฟฟากระแสสลบชนด 1 เฟส
- สปลทเฟสมอเตอร (Split-Phase motor) - คาปาซเตอรมอเตอร (Capacitor motor)
- รพลชชนมอเตอร (Repulsion-type motor) - ยนเวอรแซลมอเตอร (Universal motor) - เชดเดดโพลมอเตอร (Shaded-pole motor) 2. มอเตอรไฟฟากระแสสลบชนด 2 เฟส 3. มอเตอรไฟฟากระแสสลบชนด 3 เฟส
มอเตอรไฟฟากระแสตรง (Direct Current Motor) แบงออกเปน 3 ชนดไดแก 1. มอเตอรแบบอนกรมหรอเรยกวาซรสมอเตอร (Series Motor) 2. มอเตอรแบบขนานหรอเรยกวาชนทมอเตอร (Shunt Motor) 3. มอเตอรไฟฟาแบบผสมหรอเรยกวาคอมปาวดมอเตอร (Compound Motor) มอเตอรไฟฟากระแสตรงเปนตนก าลงขบเคลอนทส าคญอยางหนงในโรงงานอตสาหกรรมเพราะมคณสมบต
ทดเดนในดานการปรบความเรวได ตงแตความเรวต าสดจนถงสงสด นยมใชกนมากในโรงงานอตสาหกรรม
หนวยท 8การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
6 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
8.1.2 หลกการของมอเตอรกระแสไฟฟาตรง หลกการของมอเตอรไฟฟากระแสตรง (Motor Action) เมอมแรงดนกระแสไฟฟาตรงเขาไปในมอเตอร
สวนหนงจะเขาแปรงถานผานคอมมวเตเตอรเขาไปในขดลวดอารมาเจอร สรางสนามแมเหลกขน และกระแสไฟฟา อกสวนหนงจะไหลเขาไปในขดลวดสนามแมเหลก (Fieldcoil) สรางขวเหนอ-ใตขน เกดสนามแมเหลก 2 สนาม ในขณะเดยวกน ตามคณสมบตของเสนแรงแมเหลกจะไมตดกน ทศทางตรงขามจะหกลางกนและทศทางเดยวจะเสรมแรงกน ท าใหเกดแรงบดในตวอารมาเจอร
DC Motor ประกอบดวย 2 สวนหลกๆ ไดแก ทนอารมาเจอรและสเตเตอร ทนอารมาเจอรกคอสวนทหมน สวนสเตเตอรคอสวนทเปนขดลวดทสรางสนามแมเหลก หลกการท างานของ DC Motor คอการน ากระแสตรงมาตดผานสนามแมเหลก ท าใหเกดทอรกขนในทศทเหมาะสม และสรางใหเกดการหมนของทนอารมาเจอร
รปท 8.1 สวนประกอบของมอเตอรไฟฟากระแสตรง (ทมา www.Auto2drive.com/category/ระบบตาง-ๆ-ในรถยนต/page/18/)
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
7 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
รปท 8.2 หลกการท างานของมอเตอรไฟฟากระแสตรง (ทมา www.Walter-fendt.de/ph14e/electricmotor.htm myarduino.net)
8.1.3 การควบคมทศทาง และความเรวรอบของมอเตอร การควบคมทศทาง และความเรวรอบของมอเตอร ไมวาจะเปนการขบเคลอนสายพาน หรอลอของ
หนยนตไมใหหมนแบบอสระและสามารถควบคมได ดงนนจงมวงจรทใชในการควบคมมอเตอรขนมา แบบทนยมใชกนเรยกวาวงจร “H-Bridge”
รปท 8.3 การควบคมมอเตอร H-Bridge (ทมา www.Arduitronics.com)
วงจรนท าหนาทไดทงคมทศทางและความเรวของมอเตอร โดยเรมจากการคมทศทางการหมน โดยปกตหากตองการกลบทศการหมนของมอเตอรกระแสตรง วธนงทท าไดคอกลบทศแหลงจายวงจร H-Bridge ดานบน
หากตองการใหหมนตามเขม (Clockwise :CW) ให S1 และ S4 ปดวงจร และให S2 และ S3 เปดวงจรหากตองการใหหมนทวนเขม (Conter Clockwise :CCW) ให S2 และ S3 ปดวงจร และให S1 และ S4 เปดวงจร
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
8 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
สงเกตวาสวตชจะท างานเปนค คแรกท างาน คสองตองเปดวงจร และในทางตรงขามกคอคสองท างาน คแรกตองเปดวงจร ตอมามการท าใหการเปดปดเปนแบบทงายกวาเดม โดยใชอปกรณสารกงตวน าเชน MOSFET หรอ IGBT หรออนๆ แลวแตความเหมาะสม เชนขนาดกระแสแรงดนทตองการควบคม
รปท 8.4 Schematic ของวงจร H-Bridge (ทมา www.Arduitronics.com)
รปท 8.5 การตอบอรด Arduino ควบคม H-Bridge (ทมา www.Arduitronics.com)
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
9 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
รปท 8.6 การตอไอซ L293D ควบคมดซมอเตอร
(ทมา www.Arduitronics.com)
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
10 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
โปรแกรมท 8.1 การตอบอรด Arduino ควบคม H-Bridge const int in1Pin = 5; // H-Bridge input pins const int in2Pin = 4; const int in3Pin = 3; // H-Bridge pins for second motor const 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 motor digitalWrite(in1Pin,LOW); digitalWrite(in2Pin,HIGH); //second motor digitalWrite(in3Pin,LOW); digitalWrite(in4Pin,HIGH); else if (ch == '-') Serial.println("CCW"); digitalWrite(in1Pin,HIGH); digitalWrite(in2Pin,LOW); digitalWrite(in3Pin,HIGH);
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
11 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
digitalWrite(in4Pin,LOW); else Serial.print("Stop motors"); digitalWrite(in1Pin,LOW); digitalWrite(in2Pin,LOW); digitalWrite(in3Pin,LOW); digitalWrite(in4Pin,LOW);
เมออพโหลดโปรแกรมเสรจแลวทกอยางถกตอง หนาจอแสดงขอความ Serial Monitor โดยจะเหนมอเตอรหมนทศทางหนงตอนกด "+" และทศตรงขามตอนกด "-" การกดอยางอนจะหยดหมน
รปท 8.7 Serial Moniter (ทมา www.Arduitronics.com)
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
12 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
8.2 การควบคมดซมอเตอรดวย Arduino การควบคมความเรวรอบของ DC Motor ดวยเทคนค Pulse Width Modulation (PWM)
รปท 8.8 ออสซโลสโคปแสดงสญญาณ PWM (ทมา www.Arduitronics.com)
PWM (Pulse Width Modulation) คอ การมอดเลตสญญาณใหมความกวางตามสดสวนทก าหนด บนความถ Carrier ทตองการใชงาน ซงโดยปกตแลวจะใชประโยชนในการควบคมการเปดปดของวงจรอเลกทรอนกสก าลง เชน วงจรบก วงจรบส วงจรบกบส เปนตน
นอกจากนยงใชสามารถใชประกอบกบวงจร H - Bridge เพอควบคมความเรวรอบของมอเตอร หรอวาวงจรพนฐานเชนตองการจะหรหลอด LED กไดอกดวย พารามเตอรทใชระบรปรางหนาตาของ PWM ทส าคญม 2 คาดวยกนคอ ความถของคลนพาหะ (Carrier Frequency) และ อตราสวนหนาท (Duty Ratio)
Carrier Frequency ใน Arduino มความถประมาณ 490 Hz ในกรณทใช Library ปกตใน Arduino IDE และยงสามารถปรบใหมความถสงขนเปนคาอนๆ เชน 31.25 kHZ ไดอกดวย Duty Ratio คอสดสวนของเวลาทจายแรงดนตอคาบของ Carrier Frequency ซงกรณทเหนในรปท 8.8 คอเวลาทจายแรงดน 1.02 มลลวนาท ตอคาบ 2.04 มลลวนาท ซงจะได Duty Ratio = 50%
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
13 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
โปรแกรมท 8.3 การใหแรงดน PWM ออกทขา 3 โดยม Duty Ratio = 50%
int ledPin = 3; // LED connected to digital pin 9 int val = 0; // variable to store the read value
void setup()
pinMode(ledPin, OUTPUT); // sets the pin as output
void loop() analogWrite(3, 128);
// analogRead values go from 0 to 1023, analogWrite values from 0 to 255
รปท 8.9 แสดงใหเหนวาม Carrier Frequency เทาเดม เพราะยงใช PWM จาก LIbrary ปกต ตอไปปรบใหเวลาทเปด เปน 0.51 มลลวนาท ซงจะได Duty Ratio = 25%
รปท 8.9 สญญา PWM ความถ Carrier ท 490 Hz (ทมา www.Arduitronics.com)
พจารณารปท 8.9 ก าหนดให PWM Port 3 ในการก าเนดสญญาณน โดยใชค าสง analogWrite
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
14 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
(3, 128) ซงหมายถงการเขยนใหออก Port 3 โดยมสดสวน Duty Ratio คอ 128/256 หรอ 50% นนเอง การทใชค าสง analogWrite แตสญญาณไปออกขา Digital(PWM) กเปนเพราะ Arduino Board อยาง UNO ไมม Analog Output channel มแต PWM Output ท Pin ดาน Digital สญญา PWM ถงแมจะมความถ Carrier ท 490 Hz สามารถใชในการควบคมมอเตอรกระแสตรงโดยใชวงจร H-Bridge โดย PWM ใชไดกบ IC เบอร L298P และ L293 หรอ Motor Shield นอกจากนถาจะตอวงจรสราง H-Bridge กรณทมอเตอรมขนาดใหญกวา 2 A โดยตอเขากบขา INPUT ของ IC ทใชและตอกราวดของ Arduino กบแหลงจายแรงดนหลกของมอเตอร
รปท 8.10 วงจร H-Bridge โดย PWM ใชกบ IC เบอร L293D (ทมา www.Parduitronics.com)
อกหนงรปแบบทมการประยกตใชงานคอวงจร Switching Power Supply คอการปรบให Arduino ก าเนดสญญา PWM แบบความถสงๆ เชน 31.25 kHz การใชงาน Arduino ในสวนนตองเขาไปแกไข Register จ านวน 4 ตวใน Atmel 328 ทใชเปนตวไมโครคอนโทรลเลอรของ Arduino UNO ใชส าหรบการท างานกบวงจร Power Electronics เพราะความถ 490 Hz ไมเพยงพอส าหรบการท า Switching Power Supply แบบตางๆ กเพราะวาขนาดของ Capcitor กบ Inductor ในวงจรเพอใช Filter ความถจะตองมขนาดใหญมาก
โปรแกรมท 8.9 เปนการสราง PWM ท Carrier Frequency 31.25 kHz โดยม Duty Ratio = 50% หรอ
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
15 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
ก าหนดใหมคา 128 ในโปรแกรมท 8.4 นนเอง และใหมสญญาณออกทขา 11 โปรแกรมท 8.4 การสราง PWM ท Carrier Frequency 31.25 kHz โดยม Duty Ratio = 50%
void setup() pwmSetup();
void loop()
int Duty = 128;//type in the voltage you want. Refer to guide on limiting OCR2A = Duty;
void pwmSetup()//just run once at setup
pinMode(11, OUTPUT); //OCR2A TCCR2A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM20); //phase correct pwm 31250hz TCCR2B = _BV(CS20);
//change this as datasheet says to mainly get different pwm frequencies OCR2A = 0; OCR2B = 0;
รปท 8.11 สญญาณจากออสซลโลสโคปมความถ 31.25 kHZ (ทมา www.Arduitronics.com)
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
16 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
สงเกตไดจากรปท 8.11 สญญาณจากออสซลโลสโคปมความถ 31.25 kHZ (อานไดประมาณ 31.4 kHz) โดยจะเหนวาม Duty ratio 50% ตามทตงไวเปน 128 ตามตองการ
8.3 การควบคมสเตปมอเตอรดวย Arduino
ในหวขอท 8.1 ไดน าเสนอการควบคม DC Motor สาเหตทตองศกษา DC Motor กอนกเพราะวาการท างานของมอเตอรชนดอนๆ เชน Stepper Motor จะมพนฐานมาจาก DC Motor ในบางดานแต Stepper Motor จะมความซบซอนกวาทงหลกการท างานและการควบคม
รปท 8.12 บอรดขบสเตปมอเตอร (ทมา www.Arduitronics.com)
Stepper Motor หรอ Stepping Motor มขอดทส าคญคอการควบคมต าแหนงของการหมนไดอยางแมนย า โดยไมตองใชการควบคมแบบปอนกลบ (Feedback Control) ดวยเหตน จงเปนทนยมใชในอปกรณทตองการควบคมต าแหนงและมมอยางแมนย า เชนพรนเตอร สแกนเนอร เครองเลนแผนดสค เปนตน
8.3.1 หลกการของการท างานของ Stepper Motor หลกการของการท างานของ Stepper Motor คอการบงคบใหแมเหลกถาวรบนแกนโรเตอร หมนไปตาม
ทศการบงคบของขดลวดทตดตงบนสเตเตอร จะซบซอนกวา DC Motor ตรงทการบงคบใหหมนนนไมไดเปนแคการใสแรงดนคงทไปทขวบวกลบเทานน ตองใสแรงดนใหถกตองจากจงหวะทควรจะเปนดงรปท 8.12 ถงจะหมนได
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
17 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
รปท 8.13 การจายกระแสไฟฟาเขาไปทขดลวดทละขด (ทมา www.Pcbheaven.com/wikipages/How_Stepper_Motors_Work/)
จะเหนวามขดลวดทควบคมการหมน โดยแตละขดหางกน 90 องศา การหมนกจะท าโดยการจายกระแสเขาไปทขดลวดทละขด เพอท าใหเกดสนามแมเหลก ซงจะไปดดใหแมเหลกถาวะทอยบนโรเตอรเคลอนท โดยทศของการหมนกจะขนกบล าดบการจายกระแสเขาไปทขดลวด โดยการบงคบในลกษณะนเรยกวา Single coil excitation หรอการกระตนทละขดลวด โดยจะมการกระตนหรอการจายกระแสเขาขดลวดอย 4 จงหวะตอการหมน 1 รอบ อกรปแบบนงจะซบซอนกวาแตจะใหทอรกมากกวา คอการปอนแบบ Full Step Drive หรอการปอนแบบทละ 2 ขดลวด
รปท 8.14 การจายกระแสไฟฟาเขาไปทขดลวดทละสองขด (ทมา www.Pcbheaven.com/wikipages/How_Stepper_Motors_Work/)
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
18 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
ถาตองการควบคมใหมความละเอยดมากขนอก สามารถท าไดโดยสามารถคมใหมอเตอรหมนไดละเอยดขนจาก 90 องศา เหลอ 45 องศา โดยทไมตองปรบเปลยนตวฮารดแวรใดๆ เปนเพยงการเปลยนวธการจายกระแสเขาขดลวดเทานน
แต Stepper Motor ทใชจรงมการพฒนาตอ โดยเพมจ านวนขดลวดและปรบใหแมเหลกถาวรมซ (Teeth) ซงท าหนาทเปนจ านวนขวของแมเหลกมากขน การเพมจ านวนซโดยแตละซเปนขวเหนอและขวใตสลบกนนน สามารถท าไดโดยเอาเหลกทมสภาพความน าแมเหลกมาขนรปเปนจานทมซอยรอบๆ จากนนขนตอนการควบคมกมหลกการเดยวกบ Stepper Motor ทหมนไดทละ 90 องศา เนองจาก Stepper Motor ทใชกนจรงๆ มซและขดลวดมาก จงท าใหสามารถควบคมการหมนไดละเอยดมากๆ โดยการควบคม 1 Cycle จะท าใหมอเตอรหมนไป 0.9 - 5 องศา แลวแตเทคนคทใชในการควบคมการหมน
รปท 8.15 การเพมจ านวนขดลวดและปรบใหแมเหลกถาวรมซ (Teeth) (ทมา www.Pcbheaven.com/wikipages/How_Stepper_Motors_Work/)
สงเกตเหนวามขดลวดอย 6 ขดลวด การท างานจะตองควบคมเปนขน ใหครบ 75 ขนจงหมนไดครบ 1 รอบ หรอ 5 องศาตอขนการเรยงขดลวด 6 ขดกไมไดวางหางกน 60 องศาแบบตรงๆ ถาท าแบบนนมอเตอรจะไมหมน แตตองเรยงใหคแรกคอขดลวดบนสดและลางสดวางหางจากคทสอง และสามเปนมม 60 + 5 = 65 องศา เพอใหมนหมนทละ 5 องศา มมตางนมผลตอการควบคมและการเขยนโปรแกรม
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
19 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
รปท 8.16 ลกษณะของแกนโรเตอรแบบแมเหลกถาวรมซ (Teeth) (ทมา www.Pcbheaven.com)
อปกรณจรงอยางรปท 8.16 จะเหนวาม 2 จาน แตละจานม 50 ซ ท าใหรวมมซทสรางเปนขวเหนอและใตรวม 100 ซ
ส าหรบ Stepper Motor ทมใชกนอยจะม 2 แบบ ขนกบการตอขดลวดภายในมอเตอร ไดแกแบบ Unipolar และแบบ Bipolar แบบทนยมใชคอแบบ Unipolar เพราะวาการควบคมงายกวา เนองจากไมตองกลบทศของกระแสทปอนเขาไปทขดลวด แตถาเปนแบบ Bipolar กท าไดยาก แตสามารถประยกตใชงานไดมากกวา ใน Stepper Motor จรงๆนนขดลวดจะท างานเปน 2 ชด (ถงแมจะมขดลวดมากกวา 4 กตาม) ถาตามรปท 8.17 คอ a กบ b โดยม 1 กบ 2 เปนแหลงจายไปบวกลบ และ 1a 1b 2a 2b เปนตวก าหนดทศทางการไหลของกระแสผานขดลวดทงสอง
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
20 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
การท าให Stepper Motor หมนแบบงายทสดกคอ การจายไฟเขาไปทละขดตามล าดบ 1a 2a 1b 2b
เรยกวธการควบคมแบบนวา "Wave Drive" การท าให Stepper Motor หมนแบบ Full Step Drive ท าไดโดยใหกระแสไหลผานขดลวดทละ 2 ขด ท าใหไดทอรกออกมามากกวาแบบแรกประมาณ 2 เทา ซงเปนวธท library ของ Arduino เลอกใช
รปท 8.17 Unipola Stepper motor (ทมา www.Pcbheaven.com/wikipages/How_Stepper_Motors_Work/)
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
21 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
รปท 8.18 การปอนกระแสไฟฟาใหกบ Stepper motor แบบตางๆ (ทมา www.Pcbheaven.com/wikipages/How_Stepper_Motors_Work/)
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
22 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
รปท 8.19 การวางขวแมเหลกถาวรใน Stepper motor (ทมา www.Pcbheaven.com/wikipages/How_Stepper_Motors_Work/)
ขอมลทส าคญอกอยางทควรทราบคอการท างานของ Stepper Motor นนใชกระแสทสงมากกวาท Arduino สามารถขบได ดงนนจงตองใชวงจรขยายสญญาณเรยกวา "วงจร Darlington" เปน IC ส าเรจรปเรยกวา ULN2003AN หรอรนใกลเคยง
ตวอยางสเปกของ Stepper Motor ทจ าหนายโดยทวไปรน 28BYJ-48 – 5V Stepper Motor
Rated voltage : 5VDC
Number of Phase 4
Speed Variation Ratio 1/64
Stride Angle 5.625° /64
Frequency 100Hz
DC resistance 50Ω±7%(25)
Idle In-traction Frequency > 600Hz
Idle Out-traction Frequency > 1000Hz
In-traction Torque >34.3mN.m(120Hz)
Self-positioning Torque >34.3mN.m
Friction torque 600-1200 gf.cm
Pull in torque 300 gf.cm
Insulated resistance >10MΩ(500V)
Insulated electricity power 600VAC/1mA/1s
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
23 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
Insulation grade A
Rise in Temperature <40K(120Hz)
Noise <35dB(120Hz)
รปท 8.20 วงจร Darlington" เปน IC ส าเรจรปเบอร ULN2003AN (arduitronics.com)
การน าไปใชงาน เปนตวอยางการน า Stepper Motor ตอรวมกบ Potentiometer หรอ R ปรบคาไดมาควบคมต าแหนงการหมนของ Stepper Motor
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
24 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
รปท 8.21 การตอ Stepper motor ใชงานรวมกบ Arduino (ทมา www.Arduitronics.com)
จากนนกตอ Potentiometer เขาทชอง A2
รปท 8.22 การตอ Stepper motor ใชงานรวมกบ Arduino และ Potentiometer (ทมา www.Arduitronics.com)
จะเหนวา R ปรบคาไดหรอ Potentometer จะเปนตวก าหนดความเรวและทศทางการหมนของ Stepper Motor
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
25 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
โปรแกรมท 8.4 Full Step 1 เฟส int motorPin1 = 8;// Blue - 28BYJ48 pin 1 int motorPin2 = 9;// Pink - 28BYJ48 pin 2 int motorPin3 = 10;// Yellow - 28BYJ48 pin 3 int motorPin4 = 11;// Orange - 28BYJ48 pin 4 int motorSpeed = 4; //variable to set stepper speed char val = '0';
void setup() //declare the motor pins as outputs pinMode(motorPin1, OUTPUT); pinMode(motorPin2, OUTPUT); pinMode(motorPin3, OUTPUT); pinMode(motorPin4, OUTPUT); Serial.begin(9600);
void loop() if (Serial.available()) val = Serial.read(); Serial.println(val); if (val == '1') clockwise(); if (val == '2') counterclockwise(); if (val == '0') digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, LOW);
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
26 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
void counterclockwise () // 1 digitalWrite(motorPin1, HIGH); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, LOW); delay(motorSpeed); // 2 digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, HIGH); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, LOW); delay (motorSpeed); // 3 digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, HIGH); digitalWrite(motorPin4, LOW); delay(motorSpeed); // 4 digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, HIGH); delay(motorSpeed);
void clockwise() // 1 digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW);
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
27 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, HIGH); delay(motorSpeed); // 2 digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, HIGH); digitalWrite(motorPin4, LOW); delay (motorSpeed); // 3 digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, HIGH); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, LOW); delay(motorSpeed); // 4 digitalWrite(motorPin1, HIGH); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, LOW); delay(motorSpeed);
โปรแกรมท 8.5 Code Full Step 2เฟส int motorPin1 = 8;// Blue - 28BYJ48 pin 1 int motorPin2 = 9;// Pink - 28BYJ48 pin 2 int motorPin3 = 10;// Yellow - 28BYJ48 pin 3 int motorPin4 = 11;// Orange - 28BYJ48 pin 4 int motorSpeed = 3; //variable to set stepper speed char val = '0';
void setup() //declare the motor pins as outputs
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
28 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
pinMode(motorPin1, OUTPUT); pinMode(motorPin2, OUTPUT); pinMode(motorPin3, OUTPUT); pinMode(motorPin4, OUTPUT); Serial.begin(9600);
void loop() if (Serial.available()) val = Serial.read(); Serial.println(val); if (val == '1') clockwise(); if (val == '2') counterclockwise(); if (val == '0') digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, LOW); void counterclockwise () // 1 digitalWrite(motorPin1, HIGH); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, HIGH); delay(motorSpeed);
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
29 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
// 2 digitalWrite(motorPin1, HIGH); digitalWrite(motorPin2, HIGH); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, LOW); delay (motorSpeed); // 3 digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, HIGH); digitalWrite(motorPin3, HIGH); digitalWrite(motorPin4, LOW); delay(motorSpeed); // 4 digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, HIGH); digitalWrite(motorPin4, HIGH); delay(motorSpeed);
void clockwise() // 1 digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, HIGH); digitalWrite(motorPin4, HIGH); delay(motorSpeed); // 2 digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, HIGH); digitalWrite(motorPin3, HIGH); digitalWrite(motorPin4, LOW); delay (motorSpeed);
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
30 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
// 3 digitalWrite(motorPin1, HIGH); digitalWrite(motorPin2, HIGH); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, LOW); delay(motorSpeed); // 4 digitalWrite(motorPin1, HIGH); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, HIGH); delay(motorSpeed);
โปรแกรมท 8.6 Code Half Step int motorPin1 = 8;// Blue - 28BYJ48 pin 1 int motorPin2 = 9;// Pink - 28BYJ48 pin 2 int motorPin3 = 10;// Yellow - 28BYJ48 pin 3 int motorPin4 = 11;// Orange - 28BYJ48 pin 4 int motorSpeed = 4; //variable to set stepper speed char val = '0';
void setup() //declare the motor pins as outputs pinMode(motorPin1, OUTPUT); pinMode(motorPin2, OUTPUT); pinMode(motorPin3, OUTPUT); pinMode(motorPin4, OUTPUT); Serial.begin(9600);
void loop() if (Serial.available())
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
31 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
val = Serial.read(); Serial.println(val); if (val == '1') clockwise(); if (val == '2') counterclockwise(); if (val == '0') digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, LOW);
void counterclockwise () // 1 digitalWrite(motorPin1, HIGH); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, LOW); delay(motorSpeed); // 2 digitalWrite(motorPin1, HIGH); digitalWrite(motorPin2, HIGH); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, LOW); delay (motorSpeed); // 3 digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, HIGH);
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
32 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, LOW); delay(motorSpeed); // 4 digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, HIGH); digitalWrite(motorPin3, HIGH); digitalWrite(motorPin4, LOW); delay(motorSpeed); // 5 digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, HIGH); digitalWrite(motorPin4, LOW); delay(motorSpeed); // 6 digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, HIGH); digitalWrite(motorPin4, HIGH); delay (motorSpeed); // 7 digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, HIGH); delay(motorSpeed); // 8 digitalWrite(motorPin1, HIGH); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, HIGH);
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
33 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
delay(motorSpeed);
void clockwise() // 1 digitalWrite(motorPin4, HIGH); digitalWrite(motorPin3, LOW); digitalWrite(motorPin2, LOW); digitalWrite(motorPin1, LOW); delay(motorSpeed); // 2 digitalWrite(motorPin4, HIGH); digitalWrite(motorPin3, HIGH); digitalWrite(motorPin2, LOW); digitalWrite(motorPin1, LOW); delay (motorSpeed); // 3 digitalWrite(motorPin4, LOW); digitalWrite(motorPin3, HIGH); digitalWrite(motorPin2, LOW); digitalWrite(motorPin1, LOW); delay(motorSpeed); // 4 digitalWrite(motorPin4, LOW); digitalWrite(motorPin3, HIGH); digitalWrite(motorPin2, HIGH); digitalWrite(motorPin1, LOW); delay(motorSpeed); // 5 digitalWrite(motorPin4, LOW); digitalWrite(motorPin3, LOW); digitalWrite(motorPin2, HIGH); digitalWrite(motorPin1, LOW);
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
34 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
delay(motorSpeed); // 6 digitalWrite(motorPin4, LOW); digitalWrite(motorPin3, LOW); digitalWrite(motorPin2, HIGH); digitalWrite(motorPin1, HIGH); delay (motorSpeed); // 7 digitalWrite(motorPin4, LOW); digitalWrite(motorPin3, LOW); digitalWrite(motorPin2, LOW); digitalWrite(motorPin1, HIGH); delay(motorSpeed); // 8 digitalWrite(motorPin4, HIGH); digitalWrite(motorPin3, LOW); digitalWrite(motorPin2, LOW); digitalWrite(motorPin1, HIGH); delay(motorSpeed);
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
35 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
สรปเนอหาสาระส าคญ
หลกการของการท างานของ Stepper Motor คอการบงคบใหแมเหลกถาวรบนแกนโรเตอร หมนไปตามทศการบงคบของขดลวดทตดตงบนสเตเตอร จะซบซอนกวา DC Motor ตรงทการบงคบใหหมนนนไมไดเปนแคการใสแรงดนคงทไปทขวบวกลบเทานน ตองใสแรงดนใหถกตองจากจงหวะทควรจะเปน โดยมขดลวดทควบคมการหมนแตละขดหางกน 90 องศา การหมนกจะท าโดยการจายกระแสเขาไปทขดลวดทละขด เพอท าใหเกดสนามแมเหลก ซงจะไปดดใหแมเหลกถาวะทอยบนโรเตอรเคลอนท โดยทศของการหมนกจะขนกบล าดบการจายกระแสเขาไปทขดลวด โดยการบงคบในลกษณะน เรยกวา Single coil excitation หรอการกระตนทละขดลวด มการกระตนหรอการจายกระแสเขาขดลวดอย 4 จงหวะตอการหมน 1 รอบ อกรปแบบนงจะซบซอนกวาแตจะใหทอรกมากกวาคอการปอนแบบ Full Step Drive หรอการปอนแบบทละ 2 ขดลวด ถาตองการควบคมใหมความละเอยดมากขนอก สามารถท าไดโดยควบคมใหมอเตอรหมนไดละเอยดขนจาก 90 องศา เหลอ 45 องศา โดยทไมตองปรบเปลยนตวฮารดแวรใดๆ
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
36 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
เรอง การควบคมดซและสเตปมอเตอรดวย Arduino ใชเวลา 20 นาท ******************************************************************************************************* ค าชแจง แบบฝกหดมทงหมด 2 ตอน ประกอบดวยตอนท 1 และตอนท 2 (20 คะแนน) 1. แบบฝกหดตอนท 1 เปนค าถามแบบถก-ผด มทงหมด 10 ขอ (10 คะแนน) 2. แบบฝกหดตอนท 2 เปนค าถามแบบปรนย มทงหมด 10 ขอ (10 คะแนน)
ค าชแจง ใหผเรยนกาเครองหมายถก ในขอทคดวาถก และกาเครองหมายผด ในขอทคดวาผด 1. Stepping motor มขอดทส าคญคอการควบคมต าแหนงของการหมนไดอยางแมนย า 2. การท างานของ Stepper motor การบงคบใหแมเหลกถาวรบนแกนโรเตอร หมนไปตามทศการ บงคบของขดลวดทตดตงบนสเตเตอร 3. การบงคบให Stepping motor หมนนนไมไดเปนแคการใสแรงดนคงทไปทขวบวกลบเทานน ตองใสแรงดนใหถกตองจากจงหวะทควรจะเปน 4. ขดลวด Stepping motor ทควบคมการหมนแบบสขว แตละขดหางกน 60 องศา 5. การหมน Stepping motor ท าโดยการจายกระแสเขาไปทขดลวดทละขดเพอท าใหเกด สนามแมเหลก ซงจะไปดดใหแมเหลกถาวะทอยบนสเตเตอรเคลอนท 6. ทศของการหมน Stepping motor ขนกบล าดบการจายกระแสเขาไปทขดลวด 7. การบงคบ Stepping motor ในลกษณะนเรยกวา Single coil excitation หรอการกระตนทละขดลวด 8. การกระตน Stepping motor หรอการจายกระแสเขาขดลวดอย 4 จงหวะตอการหมน 1 รอบ 9. การปอน Stepping motor แบบ Full Step Drive หรอการปอนแบบทละ 2 ขดลวด 10. สามารถควบคมการหมน Stepping motor ไดละเอยดมาก โดยการควบคม 1 Cycle จะท าใหมอเตอรหมนไป 0.9 - 5 องศา
แบบฝกหดหนวยท 8
แบบฝกหดตอนท 1
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
37 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
ค าชแจง ใหผเรยนเลอกค าตอบทถกทสดแลวกาเครองหมายกากบาท () ใหครบทกขอ 1. มอเตอรไฟฟาแบงออกตามการใชของกระแสไฟฟาได 2 ชนด คอ
ก. มอเตอรไฟฟากระแสสง / มอเตอรไฟฟากระแสต า ข. มอเตอรไฟฟากระแสสลบ / มอเตอรไฟฟากระแสตรง ค. มอเตอรไฟฟากระแสบวก / มอเตอรไฟฟากระแสลบ ง. มอเตอรไฟฟากระแสบาน / มอเตอรไฟฟากระแสโรงงาน
2. กระแสไฟฟาทไหลเขาไปในมอเตอรไฟฟากระแสตรงจะไหลเขาไปทใด ก. คอมมวเตเตอร / ขดลวดอารมาเจอร ข. ขดลวดอารมาเจอร / ขดลวดสนามแมเหลก ค. แปรงถาน / คอมมวเตเตอร ง. แปรงถาน / ขดลวดอารมาเจอร
3. คณสมบตของเสนแรงแมเหลกเปนอยางไร ก. หกลางกนในทศทางตรงขาม ข. เสรมแรงทศทางเดยวกน ค. หกลางกนในทศทางตรงขาม และ เสรมแรงทศทางเดยวกน เกดแรงบดในตวอารมาเจอร ง. เกดสนามแมเหลก 2 สนาม ในขณะเดยวกน
4. ทนอารมาเจอรคอ ก. สวนทหมน ข. สวนอยกบท
ค. ขดลวดสนามแมเหลก ง. ขดลวด
5. การน ากระแสตรงมาตดผานสนามแมเหลก ท าใหเกดทอรกขนในทศทเหมาะสมเพอ ก. สรางใหเกดการหมนของสเตเตอร ข. สรางใหเกดการหมนของขดลวด ค. สรางใหเกดการหมนของทนอารมาเจอร ง. สรางใหเกดการหมนของขดลวดสนามแมเหลก
แบบฝกหดตอนท 2
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
38 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
6. วงจรทใชในการควบคมมอเตอรแบบทนยมใชกนเรยกวา ก. A-Bridge ข. H-Bridge
ค. R-Bridge ง. T-Bridge
7. หลกการแกไขสญญาณรบกวนท าไดหลายแบบ เชนตอกนในลกษณะวงจร ก. วงจร RL อนตเกรเตอร ข. วงจร RLC อนตเกรเตอร
ค. วงจร LC อนตเกรเตอร ง. วงจร RC อนตเกรเตอร
8. หากตองการใหหมนทวนเขม (Conter Clockwise :CCW) ให ก. S1 และ S4 ปดวงจร ข. S2 และ S3 ปดวงจร และ S1 และ S4 เปดวงจร ค. S1 และ S4 ปดวงจร และ S2 และ S3 เปดวงจร ง. S2 และ S3 เปดวงจร
9. พารามเตอรทใชระบรปรางหนาตาของ PWM ทส าคญคอ ก. วงจรบก วงจรบส ข. วงจรบกบส
ค. ความถของคลนพาหะ (Carrier Frequency) และอตราสวนหนาท (Duty Ratio) ง. ฟงกชนชะลอการท างานในหนวยนาโนวนาท
10. PWM (Pulse Width Modulation) คอ ก. การมอดเลตสญญาณตามความถ ข. การมอดเลตสญญาณตามแอมพลจด ค. การมอดเลตสญญาณเฟสเซอร ง. การมอดเลตสญญาณใหมความกวางตามสดสวนทก าหนด
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
39 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
*************************************************************************************************** ค าชแจง ใหผเรยนทกคนท าการทดลองตามปฎบตการทดลองหนวยท 8 เรอง การควบคมดซมอเตอรและสเตป มอเตอรดวย Arduino ใชเวลา 180 นาท ( 20 คะแนน) จดประสงคเชงพฤตกรรม
1. สามารถใชฟงกชนไดถกตอง 2. สามารถแกปญหาในการท างานของบอรด Arduino Uno R3 ได 3. สามารถตอใชงานและอพโหลดโปรแกรมใหกบบอรด Arduino Uno R3 ได
อปกรณการทดลอง 1. เครองคอมพวเตอรและโปรแกรม Arduino IDE 1.6.9 1 ชด 2. USB Cable Arduino Uno R3 1 เสน 3. Arduino Uno R3 Board 1 บอรด
4. Hook-up Wires 10 เสน 5. Breadboard 1 แผง 6. A Momentary Switch or Button 1 ตว 7. 9V DC Motor 1 ตว 8. 10k Ohm Potentiometer 1 ตว 9. TIP120 Transistor 1 ตว 10. 1N4001 Diode 1 ตว 11. 9V Battery 1 ตว 12. Stepper Motor 13. U2004 Darlington Array (if using a unipolar stepper) 1 ตว 14. SN754410ne H-Bridge (if using a bipolar stepper) 1 ตว 15. Power Supply Appropriate for your Particular Stepper 1 ตว
ปฏบตการทดลองหนวยท 8 เรอง การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
40 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
ขอควรระวง 1. ควรระวงไมวางบอรด Arduino Uno R3 หรอชลตางๆ บนโตะโลหะหรอทวางทเปนโลหะเพราะอาจเกดการลดวงจรของภาคจายไฟได
2. ไมควรตอสายตอวงจรในบอรด Arduino Uno R3 ทงไว ควรถอดสายตอวงจรออกใหหมด เพราะผลการทดลองอาจเกดการผดพลาดไมเปนไปตามทฤษฎได
3. ไมควรถอดสายสายโหลด USB เขาออกตลอดเวลา เพราะอาจท าใหภาคจายไฟของบอรด Arduino Uno R3 เสยหายได
การทดลองท 8.1 การควบคมมอเตอรไฟฟากระแสตรงดวย Arduino
Hardware Required
1. Arduino Board 2. A momentary switch or button 3. 10k ohm resistor 4. breadboard 5. hook-up wire 6. 9V DC motor 7. TIP120 transistor 8. 1N4001 diode 9. 9V battery
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
41 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
Circuit
รปท 8. 22 การควบคมมอเตอรไฟฟากระแสตรงดวย Arduino
Schematic
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
42 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
Code
/* by Scott Fitzgerald http://www.arduino.cc/en/Tutorial/TransistorMotorControl This example code is in the public domain. */ // give a name to digital pin 2, which has a pushbutton attached int pushButton = 2; // the transistor which controls the motor will be attached to digital pin 9 int motorControl = 9; // the setup routine runs once when you press reset: void setup() // make the pushbutton's pin an input: pinMode(pushButton, INPUT); // make the transistor's pin an output: pinMode(motorControl, OUTPUT); // the loop routine runs over and over again forever: void loop() // read the state of the button and check if it is pressed if(digitalRead(pushButton) == HIGH) // ramp up the motor speed for(int x = 0; x <= 255; x++) analogWrite(motorControl, x); delay(50); // ramp down the motor speed for(int x = 255; x >= 0; x--) analogWrite(motorControl, x); delay(50);
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
43 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
delay(1); // delay in between reads for stability ผลการทดลอง
............................................................................................................................. ..............................................
..................................................................................... ......................................................................................
............................................................................................................................. ..............................................
............................................................................................................................. ..............................................
...........................................................................................................................................................................
การทดลองท 8.2 การควบคมสเตปมอเตอรดวย Arduino
Hardware Required
1. Arduino or Genuino Board 2. 10k ohm potentiometer 3. stepper motor 4. U2004 Darlington Array (if using a unipolar stepper) 5. SN754410ne H-Bridge (if using a bipolar stepper) 6. power supply appropriate for your particular stepper 7. hook-up wires 8. breadboard
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
44 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
Circuits Bipolar Motor Circuit
รปท 8. 22 การควบคมสเตปมอเตอรดวย Arduino
Schematic
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
45 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
Code
/* Stepper Motor Control - speed control Created 30 Nov. 2009 Modified 28 Oct 2010 by Tom Igoe */ #include <Stepper.h> const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution // for your motor // initialize the stepper library on pins 8 through 11: Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); int stepCount = 0; // number of steps the motor has taken void setup() // nothing to do inside the setup void loop() // read the sensor value: int sensorReading = analogRead(A0); // map it to a range from 0 to 100: int motorSpeed = map(sensorReading, 0, 1023, 0, 100); // set the motor speed: if (motorSpeed > 0) myStepper.setSpeed(motorSpeed); // step 1/100 of a revolution: myStepper.step(stepsPerRevolution / 100); ผลการทดลอง ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
46 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
สรปผลการทดลอง ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ ปญหาอปสรรคหรอขอเสนอแนะ ...................................................................................................................................................................................................................................................................................................................................................... ตารางการประเมนผลคะแนนภาคปฏบต
หวขอการพจารณาภาคปฏบต ระดบคะแนน
การทดลองท 8.1 การควบคมมอเตอรไฟฟากระแสตรงดวย Arduino 10 คะแนน การทดลองท 8.2 การควบคมสเตปมอเตอรดวย Arduino 10 คะแนน
รวมคะแนนภาคปฏบต
…........คะแนน
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
47 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
**********************************************************************************
เรอง การควบคมดซและสเตปมอเตอรดวย Arduino ใชเวลา 20 นาท วชา ไมโครคอนโทรลเลอรเบองตน รหสวชา (2127-2107) ระดบชน ประกาศนยบตรวชาชพ (ปวช.) สาขาวชา เมคคาทรอนกส ค าชแจง 1. แบบทดสอบมทงหมด 10 ขอ (10 คะแนน) 2. ใหผเรยนเลอกค าตอบทถกทสดแลวกาเครองหมายกากบาท () ลงในกระดาษค าตอบ 1. มอเตอรมอเตอรไฟฟา (Motor) หมายถง
2. มอเตอรไฟฟากระแสตรงเปนตนก าลงขบเคลอนทส าคญอยางหนงในโรงงานอตสาหกรรมเพราะ
3. กระแสไฟฟาในขดลวดสนามแมเหลก (Field Coil) จะสรางขวแมเหลกแบบใด
4. DC Motor ประกอบดวย 2 สวนหลกๆ ไดแก ก. ทนอารมาเจอร / สเตเตอร ข. ขวแมเหลกเหนอ / ใต ค. ขดลวดอารมาเจอร / ขดลวดสนามแมเหลก ง. มอเตอรไฟฟากระแสสลบ / มอเตอรไฟฟากระแสตรง
ก. เครองกลไฟฟาทเปลยนแปลงพลงงานไฟฟาเปนพลงงานแสง ข. เครองกลไฟฟาทเปลยนแปลงพลงงานกลเปนพลงงานไฟฟา
ค. เครองกลไฟฟาทเปลยนแปลงพลงงานไฟฟาเปนพลงงานกล ง. เครองกลไฟฟาทเปลยนแปลงพลงงานกลเปนพลงงานแสง
ก. ราคาถก ข. ทนทาน
ค. ประหยดไฟฟา ง. ปรบความเรวได
ก. ขวเหนอ-ใต ข. ขวสง-ต า
ค. ขวบน-ลาง ง. ขวซาย-ขวา
แบบทดสอบหลงเรยน หนวยท 8 เรอง การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino
หนวยท 8 การควบคมดซมอเตอรและสเตปมอเตอรดวย Arduino เรยบเรยงโดยครทนพงษ ภรกษ
48 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน
5. หลกการท างานของ DC Motor คอ ก. กระแสสลบตดผานสนามแมเหลก เกดทอรกขนในทศทเหมาะสม ข. แรงดนสลบตดผานสนามแมเหลก เกดทอรกขนในทศทเหมาะสม ค. กระแสตรงตดผานสนามแมเหลก เกดทอรกขนในทศทเหมาะสม ง. แรงดนสลบตดผานสนามแมเหลก เกดทอรกขนในทศทเหมาะสม
6. วงจร H-Bridge สามารถควบคมมอเตอรไดอยางไร ก. ควบคมทศทางของมอเตอร ข. ควบคมความเรวรอบของมอเตอร ค. ควบคมการเดนหนาและถอยหลงของมอเตอร ง. ควบคมทศทาง และความเรวรอบของมอเตอร 7. หากตองการใหหมนตามเขม (Clockwise :CW) ใหสวตซท างานอยางไร ก. S1 และ S4 ปดวงจร ข. S2 และ S3 ปดวงจร และ S1 และ S4 เปดวงจร ค. S1 และ S4 ปดวงจร และ S2 และ S3 เปดวงจร ง. S2 และ S3 เปดวงจร 8. อปกรณสารกงตวน าทนยมใชในวงจร H-Bridge คอ ก. TRIAC หรอ DIAC ข. DIODE หรอ ZENERDIODE ค. MOSFET หรอ IGBT ง. TRANSISTER 9. หลกการของการท างานของ Stepper Motor คอ ก. การมอดเลตสญญาณตามแอมพลจด ข. การมอดเลตสญญาณเฟสเซอร ค. การจายไฟเขาไปทละขดตามล าดบ ง. การมอดเลตสญญาณตามความถ
10. วงจร Darlington เปน IC ส าเรจรปมชอเรยกวา ก. 7812 ข. L298P
ค. ULN2003AN ง. 1N4001