www.semi-shop.com/knowledge/knowledge_detail.php?sk_id=104

Arduino กับพื้นฐานการควบคุมความเร็วมอเตอร์เบื้องต้น

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


การลกละดับแรงดันให้มอเตอร์


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


วงจรปรับความเร็วรอบมอเตอร์


การปรับความเร็วรอบด้วยความถี่ 
ในการทดลองนี้จะใช้สร้างสัญญาณความถี่แบบง่ายๆในการปรับความเร็ว เพราะ เมื่อความถี่เปลี่ยนไป แรงดันที่ตกคร่อมที่มอเตอร์จะลดลงทำให้มอเตอร์หมุนช้าลงไปด้วย ซึ่งค่า % จะเรียกว่า ค่า Duty cycle และ การสร้างความถี่แบบนี้ เราจะเรียกว่า PWM ( Pulse Width Modulation)


การเปลี่ยน ค่า% ความถี่


Duty cycle 100 % มอเตอร์จะหมุนด้วยความเร็วเต็มที่ ( ความเร็วปกติ)
Duty cycle 75 % มอเตอร์จะหมุนด้วยความเร็ว ลดลงมา
Duty cycle 50 % มอเตอร์จะหมุนด้วยความเร็ว ลดลงมา
Duty cycle 30 % มอเตอร์จะหมุนด้วยความเร็วช้ามาก หรือ อาจจะหยุดหมุนได้


วงจรในการทดสอบ 
ในการทดสอบวงจรนั้นจะใช้วงจรเดียวกันกับวงจรการขับมอเตอร์ทั่วไป


วงจรที่ใช้ในการทดลอง





รูปการทดลอง


ในการทดสอบจะทดลองตั้งที่ความถี่ใช้งาน 50Hz ซึ่งจะได้ค่าเวลา 20 mS โดยจะกำหนดค่า Duty cycle 3 ค่าดังนี้ Duty cycle ประมาณ 5% มอเตอร์จะหมุนช้า
digitalWrite(led1,HIGH);
delay(4);
digitalWrite(led1,LOW);
delay(16);

++++++++++++++++
Duty cycle ประมาณ 50% มอเตอร์จะหมุนเร็วขึ้น
digitalWrite(led1,HIGH);
delay(10);
digitalWrite(led1,LOW);
delay(10);

++++++++++++++++++++
Duty cycle ประมาณ 90% มอเตอร์จะหมุนเร็ว
digitalWrite(led1,HIGH);
delay(19);
digitalWrite(led1,LOW);
delay(1);
++++++++++++++++

ตัวอย่าง code ที่ใช้ในการทดสอบ 

int led1 = 13;

void setup()
{
pinMode(led1,OUTPUT);

}
void loop()
{
for (int i=0; i <= 200; i++)
{
digitalWrite(led1,HIGH);
delay(4);
digitalWrite(led1,LOW);
delay(16);
}
for (int i=0; i <= 200; i++)
{
digitalWrite(led1,HIGH);
delay(10);
digitalWrite(led1,LOW);
delay(10);
}

for (int i=0; i <= 200; i++)
{
digitalWrite(led1,HIGH);
delay(19);
digitalWrite(led1,LOW);
delay(1);
}
}




ในการออกแบบความถี่จะต้องเลือกค่าที่เหมาะสมกับตัวมอเตอร์นั้นๆ ด้วยครับ หรืออาจจะออกแบบไว้ที่ 100Hz – 1000Hz ก็ได้ ครับ ลองทำดูนะครับ สำหรับการใช้งาน mode PWM จริงๆนั้นจะได้กล่าวถึงในบทความตอนต่อๆไปครับ ขอให้สนุกกับการทดลองครับ

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

https://www.9arduino.com/article/71/โปรเจคเครื่องรดน้ำต้นไม้อัตโนมัติ-ด้วย-arduino-ราคาถูก-พร้อม-code-ตัวอย่าง

https://www.arduitronics.com/article/22/arduino-and-motor-control-part-1

http://www.myarduino.net/article/6/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%80%E0%B8%82%E0%B8%B5%E0%B8%A2%E0%B8%99%E0%B9%82%E0%B8%9B%E0%B8%A3%E0%B9%81%E0%B8%81%E0%B8%A3%E0%B8%A1%E0%B9%80%E0%B8%9A%E0%B8%B7%E0%B9%89%E0%B8%AD%E0%B8%87%E0%B8%95%E0%B9%89%E0%B8%99%E0%B8%81%E0%B8%B1%E0%B8%9A-arduino-c-%E0%B9%84%E0%B8%9F%E0%B8%A7%E0%B8%B4%E0%B9%88%E0%B8%87