การสร้างสัญญาณ พัลส์วิดท์มอดูเลชั่น (PWM) ด้วยอาดูโน


(Permpol Thanapunnamas) #1

…คอนโทรลเลอร์ส่วนใหญ่มีความยืดหยุ่นสูง สามารถเลือกใช้สัญญาณนาฬิกาที่ ความถี่ต่าง.ๆ.กันได้ ซึ่งความถี่เหล่านี้ได้มาจากวงจรปรีสเกลเลอร์วงจรปรีสเกลเลอร์อาจเป็นวงจร คูณหรือวงจรหารความถี่ก็ได้การคูณ หรือหารความถี่นี้ก็เพื่อให้ได้ความถี่สัญญาณที่ต้องการ โดยปกติจะเป็นวงจรหารความถี่ตัวอย่างเช่น ถ้าสัญญาณนาฬิกาของระบบมีปรีสเกลเลอร์ เป็น 64 ก็หมายความว่าความถี่สัญญาณที่ได้จะเป็น. Clk สามารถเลือกใช้ค่าปรีสเกลเลอร์ได้ดัง ตารางที่ 3.1

ตาราง ปรีสเกลเลอร์

image

พอร์ตที่ควบคุมรีจิสเตอร์

…ภายในพอร์ตมีรีจีสเตอร์ที่ทำหน้าที่แตกต่างกันออกไปเช่น การกำหนดโหมดของสัญญาณเปรียบเทียบ.การกำหนดสัญญาณเปรียบเทียบให้เป็น.Inverting.หรือ Non-inverting และการกำหนดค่าปรีสเกลเลอร์ เป็นต้น

image

รูป การกำหนดค่าให้กับ TCCR1A

image

รูป การกำหนดค่าให้กับ TCCR1B

การเลือกโหมดในการสร้างสัญญาณพัลส์วิดท์มอดูเลชั่น

เลือกโหมดในการสร้างสัญาณพัลส์วิดท์มอดูเลชั่น โดยใช้พัลส์วิดท์มอดูเลชั่นโหมด Phase Correct ในการชิฟเฟส ซึ่งเป็นโหมดเดียวที่สร้างรูปคลื่นได้อิสระ จากการเซ็ตค่ารีจีสเตอร์ OCRnX ได้สองครั้ง ในหนึ่งคาบเวลาใช้รีจิสเตอร์สองตัวช่วยกัน ทำให้เฟสชิฟ 180 องศา อาศัยวิธีทางคณิตศาตร์

image

รูป สัญญาณในโหมด Phase Correct

การเลือกค่าปรีสเกลเลอร์

ในการเลือกค่าปรีสเกลเลอร์จากตารางต้องคำนึงถึงค่าสูงสุด (TOP) ด้วย ให้ค่าสูงสุดนับถึงค่าที่เท่าไหร่

นับน้อย - จบเร็ว - ความถี่มาก
นับมาก - จบช้า - ความถี่น้อย

ซึ่งค่าสูงสุดจะเป็นตัวกำหนดความถี่ของสัญญาณพัลส์วิดท์มอดูเลชั่นที่ได้ มีรีจีสเตอร์ที่รับผิดชอบคือ OCRnX พิจารณาค่าสูงสุดจากตารางที่ได้จากสมการที่ 3.40

image

ตารางที่ 3.2 พิจารณาค่าสูงสุด

image
image

…จากตาราง 3.2 ในพิจารณาค่าสูงสุด จะเห็นว่าหากเลือกค่าปรีสเกลเลอร์ที่ไม่ใช่ 8 จะได้ค่าสูงสุดเป็นจุดทดนิยมทั้งสิ้นซึ่งในการเลือกนำไปใช้งานค่าสูงสุดมีค่าเป็นจำนวนนับหรือจำนวนเต็ม ดั้งนั้นเลือกค่าปรีสเกลเลอร์ที่หาค่าสูงสุดได้เป็นจำนวนเต็มคือ 8 และจะได้ค่าสูงสุดเท่ากับ 50 จากความถี่ 20 กิโลเฮิรตซ์

การรับค่าแรงดันอินพุต 0 ถึง 5 โวลต์

…ในอาดูโนสามารถรับค่าแรงดันไฟฟ้าแอนะล็อกจากภายนอก 0 ถึง 5 โวลต์ ผ่านพอร์ต (A0) โดยใช้ฟังก์ชั่น analogRead() วงจรแอนะล็อกดิจิทัล (A/D) จะแปลงแรงดันไฟแอนะล็อกเป็นดิจิทัลเพื่ออ่านค่า 0 ถึง 1024

image

รูปที่ 3.19 โปรแกรมรับค่าแรงดัน 0 ถึง 5 โวลต์ ปรับดิวตี้ไซเคิล

…จากรูปที่ 3.19 แสดง โปรแกรมรับค่าแรงดัน 0 ถึง 5 โวลต์ ปรับดิวตี้ไซเคิล เป็นช่วงการทำงานของโปรแกรมทำหน้าที่รับค่าแรงดันป้อนกลับเข้ามาที่พอร์ต A0 แล้วหารด้วย 2.5 เป็นการหารเพื่อทดค่าให้ดิวตี้ไซเคิลมีการตอบสนองไวขึ้น นำค่าที่หารได้มาหาพิกัดความถี่ในช่วง.20 กิโลเฮิรตซ์ โดยการคูณกับค่าสูงสุดแล้วหารด้วยความละเอียดของพอร์ต ADC นำค่าที่ได้มาเข้าสมการทางคณิตศาตร์เพื่อหาสัญญาณเปรียบเทียบเพื่อสร้างสัญญาณพัลส์วิดท์มอดูเลชั่น

การเลือกโหมดในการสร้างสัญญาณพัลส์วิดท์มอดูเลชั่น

เลือกอาดูโน่พัลส์วิดท์มอดูเลชั่น โหมด Phase Correct ในการชิฟเฟส เป็นโหมดเดียวที่สร้างรูปคลื่นได้อิสระ จากการเซ็ตค่า OCRnX ได้สองครั้ง ใน 1 คาบเวลา ใช้รีจิสเตอร์สองตัวช่วยกัน ทำให้ เฟสชิฟ 180˚ ซึ่งการกำหนดโหมดนั้นจะมีการเซตค่ารีจิสเตอร์ 4 ตัว ในโหมด Phase Correct ตามตารางที่ 3.3 พิจารณาโหมดสร้างสัญญาณพัลส์วิดท์มอดูเลชั่น ได้แก่ WGM13 เท่ากับ 1 คือต้องกำหนดในโปรแกรม WGM12 เท่ากับ 0 คือไม่ต้องกำหนดเข้าไปในโปรแกรมก็ได้ WGM11 หรือจะเขียนเป็น CS11 ก็ได้ เท่ากับ 1 คือต้องกำหนดในโปรแกรม และ WGM10 เท่ากับ 0 คือไม่ต้องกำหนดในโปรแกรมก็ได้ ดังรูปที่ 3.20 แสดงการกำหนดโหมด Phase Correct PWM

ตารางที่ 3.3 พิจารณาโหมดสร้างสัญญาณพัลส์วิดท์มอดูเลชั่น

image

image

รูปที่ 3.20 กำหนดโหมด Phase Correct PWM

…พอร์ต 1 หน่วย สามารถออกเอาท์พุตได้ 2 ช่อง (2 ขา) คือ OCRnA และ OCRnB ทำหน้าที่เป็นสัญญาณอ้างอิงนำไปเปรียบเทียบกับสัญญาณเปรียบเทียบว่ามีค่ามากกว่าหรือน้อยกว่า เป็น High หรือ Low เช่น สัญญาณ OCRnA มีค่ามากกว่าสัญญาณเปรียบเทียบให้เป็น Low น้อยกว่าเป็น High และสัญญาณ OCRnB มีค่ามากกว่าสัญญาณเปรียบเทียบให้เป็น High น้อยกว่าเป็น Low จะได้สัญญาณพัลส์วิดท์มอดูเลชั่น รูปที่ 3 21 แสดงการเปรียบเทียบสัญญาณที่เกิดจาก Phase Correct PWM Mode

pwm

รูปที่ 3.21 เปรียบเทียบสัญญาณที่เกิดจาก Phase Correct PWM Mode

การตั้งค่าโปรแกรมโดยใช้ Inverting Mode

image

ยังไม่จบเดียวมาต่อครับ…


การสร้างสัญญาณ pwm ที่สามารถปรับค่าความถี่ และดิวตี้ไซเคิลได้ตามต้องการ
ช่วยแนะนำเกี่ยวกับวงจรบูสต์ แบบค่า duty cycle ปรับค่าเองอัตโนมัติหน่อยครับ
Arduino สร้าง pwm ในการทำหม้อแปลงเทสลา