วงจรกำเนิดสัญญาณ Arduino PWM

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





ในโพสต์นี้เราได้ศึกษาวิธีการสร้างวงจรกำเนิดสัญญาณ 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