อันนี้เป็น วิธีการสร้างสัญญาณ PWM ออกมา
Top เป็นตัวกำหนดความถี่
Compare ก็คือสัญญาณเปรียบเทียบซึ่งจะเปรียบเทียบแล้วจ่ายเป็นค่ากิวตี้ไซต์เคิล
Bottom ก็คือค่าต่ำสุด ซึ่งตรงข้ามกับ ค่า Top นั้นเอง
อันนี้เป็น วิธีการสร้างสัญญาณ PWM ออกมา
Top เป็นตัวกำหนดความถี่
Compare ก็คือสัญญาณเปรียบเทียบซึ่งจะเปรียบเทียบแล้วจ่ายเป็นค่ากิวตี้ไซต์เคิล
Bottom ก็คือค่าต่ำสุด ซึ่งตรงข้ามกับ ค่า Top นั้นเอง
คืออธิบายแบบนี้ครับ
โปรแกรมสามารถสร้างความถี่ที่เป้นจุดทศยมได้ครับ
แต่โปรแกรมไม่สามารถสร้างความถี่ที่เป้นจุดทศนิยมได้ทุกค่าครับพี่
อันนี้คือ เอาไปใส่ใน คำสั่ง Timer1.initialize(); หรอครับ
จะใส่ Timer1.initialize(44.333); หรอ
ลองเอา 12.3333kHz ไปคำนวณกลับยังว่าได้ค่า TOP เท่าไหร่ แล้วนำไปใส่ดู เอาค่าที่ใกล้เคียงก็ได้
ได้81.103 ครับ แต่ถ้าผมเอาค่า81.103 โปรแกรมจะค่าแค่81 ทำให้ความถี่ออกมา12.345KHzครับ จะไม่ได้12.333kHz
ถ้าเป็น แบบชิฟเฟส กันสองสัญญาณ จะได้ตามรูปนี้
ไม่ว่าจะสร้าง PWM ในโหมดไหนๆ มันก็มีพื้นฐานมาจากหลักการเดียวกันครับ คือ กำหนดความถี่ที่เราต้องการก่อนจากนั้น
คำนวณ ในสมการ เพื่อหาค่า TOP แล้วเอาไปกำหนดค่าในโปรแกรมวิธีสร้างสัญญาณออกมาก็ตามรูปอะครับ
แต่ถ้าสมมุติว่า ผมอยากได้ค่า12.208KHz แล้วคำนวณค่าTop ออกมาได้ 81.91 แต่พอผมเอาค่า81.91ไปใส่ในโปรแกรม โปรแกรมจะอ่านค่าแค่เป็น81 ทำให้ความถี่ที่ออกมา เป็น12.345KHz
มีผลอย่างไรครับ ทำไมถึงต้องใช้ 12.333 kHz เราใช้ 12.345 kHz ไม่ได้หรอครับ
พี่เคยบอกไปแล้วว่า ค่า TOP ต้องเป็นจำนวนเต็มเท่านั้น เพราะงั้นเราต้องเลือกกำหนดค่าความถี่ที่เป็นจุดทศนิยม ที่สามารถนำไปคำนวณค่า TOP ได้เป็นจำนวนเต็มพอดีเท่านั้นครับ
ถ้าเป็น12.33กลับ12.34นี้ไม่มีผลนะครับ
แต่บ้างค่ามันโดนไปมากเลยนะครับ เช่น 12.33 เป็น13.01 แบบนี้นะครับ
น้องคงต้องลองปรับอย่างอื่นดู เพราะว่าการสร้าง PWM ตอนนี้เรามีข้อจำกัดอยู่
โอเคครับพี่ ขอบคุณมากนะครับ สำหรับคำแนะนำครับพี่
ผมขอลบกวนสอบถามหน่อยนะครับ โคตที่พี่ให้มามันใช้สร้างรู้คลื่นพลัสได้ใช่ไหมครับ
พอดีผมกำลังทำ power maximum solar อ่ะครับ
ได้ครับผม ตามรูปเลยครับ
จะลิมิต แรงดันแบบใช้ Feedbabk ป้อนกลับมาจาก output หรอครับ
คือผมจะอยากกำหนดช่วงดิวตี้อยู่ที่ 75 เปอร์กับ 100 เปอร์เซน ที่ความถี่ 25 khz เพื่อไปต่อกับวงจรขับเกต เพื่อเพิมแรงดันขึ้นเพื่อจะสามารถขับมอสเฟสได้อ่ะครับ แต่ก่อนผมใช้ Tl494 ได้ค่าดิวตี้แค่ 50 เปอร์เซนครับ
ใช้แบบ เฟส เดียวหรอครับ
ใช่ครับพี่ พอดีผมจะไปต่อกับปั้มน้ำ DC 24 V 1.8 A
TCCR2A = _BV(COM2A1)|_BV(COM2B1)|_BV(WGM21)|_BV(WGM20);
TCCR2B = _BV(CS10);
TCCR2A เป็นคำสั่งความถี่หรือครับพี่