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.arduitronics.com/article/22/arduino-and-motor-control-part-1

https://medium.com/sathittham/arduino-lcd-16x2-hello-world-dca09fd904f8

อธิบายโปรแกรมHow To Make Arduino Based Home Automation Project via Bluetooth