ในโพสต์นี้เราได้ศึกษาวิธีการสร้างวงจรกำเนิดสัญญาณ PWM โดยใช้ Arduino อย่างละเอียดซึ่งสามารถตั้งค่าหรือปรับได้ด้วยโพเทนชิออมิเตอร์หรือหม้อตามอัตราส่วนรอบการทำงานที่ต้องการ
โดยAnkit Negi
PWM คืออะไร?
pwm หรือการมอดูเลตความกว้างของพัลส์ตามชื่อที่แนะนำคือการมอดูเลตความกว้างของพัลส์นั่นคือระยะเวลาที่พัลส์สูงหรือต่ำในช่วงเวลาที่กำหนด สิ่งนี้จะเปลี่ยนรอบการทำงานของพัลส์ซึ่งในที่สุดจะกำหนดค่าเฉลี่ยของพัลส์เนื่องจากรอบการทำงานตรงเวลาหารด้วยช่วงเวลาทั้งหมด
และความถี่มีบทบาทสำคัญมากใน pwm ซึ่งต้องสูงพอที่จะสร้างเอาต์พุตที่มีเสถียรภาพ
Pwm ทำขึ้นเพื่อวัตถุประสงค์ต่างๆเช่นการขับอุปกรณ์ที่ทำงานด้วยแรงดันไฟฟ้าต่ำหรือเพื่อการเปลี่ยนเช่นใน SMPS
PWM โดยใช้ ARDUINO UNO
Pwm ยังเป็นปัจจัยหนึ่งที่ทำให้ arduino เป็นบอร์ดพัฒนาที่ง่ายที่สุดเนื่องจาก pwm สามารถทำได้โดยการเพิ่มโค้ดเพียงบรรทัดเดียวในโปรแกรมของคุณ โปรดทราบว่ามีพินดิจิทัลแยกต่างหากใน arduino UNO สำหรับ pwm ซึ่งหมายความว่าพินเหล่านี้สามารถให้เอาต์พุต pwm ได้
มีพิน 6 pwm ทั้งหมดบน arduino UNO ซึ่งเป็น 3, 5, 6,9,10 และ 11 จาก 14 พินดิจิทัล โปรดทราบว่าจำนวนพิน pwm นั้นแตกต่างกันไปในบอร์ด arduino ประเภทหนึ่งไปยังอีกประเภทหนึ่ง
ตอนนี้มีสองวิธีที่ arduino สามารถทำได้:
1. โดยการกำหนดค่าอนาล็อกโดยตรงให้กับพิน pwm ระหว่าง 0 ถึง 255
เนื่องจากพินดิจิทัลใน arduino สามารถให้ได้สูงสุด 5v นั่นหมายความว่าค่าอะนาล็อก 0 เท่ากับ 0 โวลต์และ 255 เท่ากับ 5 โวลต์
และในการดำเนินการนี้คุณต้องเพิ่มรหัสนี้ในโปรแกรมของคุณ:
analogWrite (หมายเลขพิน PWM ค่าระหว่าง 0 ถึง 255)
ตัวอย่างเช่น analogWrite (10,64) // เขียนค่าอะนาล็อก 64 ไปยัง pwm pin no 10
ตอนนี้หมายถึง :: (5/255) * 64 โวลต์ = 1.25 โวลต์เช่นรอบการทำงาน 25%
2. โดยกำหนดค่าตามอินพุตที่ได้รับจากขาอนาล็อกของ arduino
อินพุตสามารถนำมาจากส่วนประกอบต่างๆเช่นเซ็นเซอร์ IR หรือโพเทนชิออมิเตอร์
โปรดทราบว่า arduino รับอินพุตแบบอะนาล็อกในรูปของค่าระหว่าง 0 ถึง 1023 ซึ่งเทียบเท่ากับ 0 ถึง 5 โวลต์ ดังนั้นในการดำเนินการ pwm บนพินคุณต้องแปลงค่าอินพุตนี้ให้เทียบเท่ากับตัวเลขระหว่าง 0 ถึง 255 และเรียกว่าการแมปในภาษาของ arduino
มีรหัสง่ายๆสำหรับสิ่งนี้:
y = map (x, 0,1023: 0,255) // โดยที่ x เป็นตัวแปรอินพุต
หลังจากนี้คุณสามารถดำเนินการ pwm บนพินโดยใช้:
analogWrite (หมายเลขพิน PWM, y) // เขียนค่าที่แมปที่ได้รับไปยังพิน 10
ตัวอย่าง PWM:
เราจะเรียนรู้ทั้งสองเทคนิคด้วยตัวอย่างนี้ สำหรับสิ่งนี้คุณต้องการ:
1. โพเทนชิออมิเตอร์
2. ไฟ LED สองดวง
3. ตัวต้านทาน 100 โอห์มสองตัว
ทำการเชื่อมต่อตามที่แสดงในแผนภาพวงจร:
แผนภูมิวงจรรวม:
รหัส:
int x// initialise variables
int y
void setup() {
pinMode(10,OUTPUT)//initialise pin 10 as output
pinMode(9,OUTPUT)//initialise pin 9 as output
pinMode(A0,INPUT)//initialise pin A0 as input from pot.
// put your setup code here, to run once:
}
void loop() {
analogWrite(9,125)// directly assigning value to pin 9 i.e. case1
x=analogRead(A0)// read values from potentiometer in terms of voltage
y= map(x,0,1023,0,255)// map those values from 0 to 255 // put your main code here, to run repeatedly:
analogWrite(10,y)// assigning value based on input from pot at pin A0 i.e. case 2
}
มันทำงานอย่างไร
การทำงานพื้นฐานของโครงการกำเนิดสัญญาณ Arduino PWM ที่นำเสนอสามารถศึกษาได้จากย่อหน้าต่อไปนี้
Pin no 9 สามารถกำหนดค่า pwm โดยพลการในขณะที่พินหมายเลข 10 ให้ค่า pwm ตามตำแหน่งของโพเทนชิออมิเตอร์เทียบกับกราวด์ เปลี่ยนค่าตามอำเภอใจนี้สำหรับพิน 9 ตลอดจนหมุนโพเทนชิออมิเตอร์เพื่อดูเอาต์พุต pwm ที่แตกต่างกันบนพินทั้งสอง
คู่ของ: วงจรควบคุมมอเตอร์กระแสสูงโดยใช้ Arduino ถัดไป: สวิตช์ควบคุมระยะไกล 10 ช่อง 2.4 GHz