การสร้างสัญญาณ pwm ที่สามารถปรับค่าความถี่ และดิวตี้ไซเคิลได้ตามต้องการ


(Permpol Thanapunnamas) #22

อันนี้เป็น วิธีการสร้างสัญญาณ PWM ออกมา

Top เป็นตัวกำหนดความถี่
Compare ก็คือสัญญาณเปรียบเทียบซึ่งจะเปรียบเทียบแล้วจ่ายเป็นค่ากิวตี้ไซต์เคิล
Bottom ก็คือค่าต่ำสุด ซึ่งตรงข้ามกับ ค่า Top นั้นเอง


(PLC) #23

คืออธิบายแบบนี้ครับ
โปรแกรมสามารถสร้างความถี่ที่เป้นจุดทศยมได้ครับ
แต่โปรแกรมไม่สามารถสร้างความถี่ที่เป้นจุดทศนิยมได้ทุกค่าครับพี่


(Permpol Thanapunnamas) #24

อันนี้คือ เอาไปใส่ใน คำสั่ง Timer1.initialize(); หรอครับ
จะใส่ Timer1.initialize(44.333); หรอ


(Permpol Thanapunnamas) #25

ลองเอา 12.3333kHz ไปคำนวณกลับยังว่าได้ค่า TOP เท่าไหร่ แล้วนำไปใส่ดู เอาค่าที่ใกล้เคียงก็ได้


(PLC) #26

ได้81.103 ครับ แต่ถ้าผมเอาค่า81.103 โปรแกรมจะค่าแค่81 ทำให้ความถี่ออกมา12.345KHzครับ จะไม่ได้12.333kHz


(Permpol Thanapunnamas) #27

ถ้าเป็น แบบชิฟเฟส กันสองสัญญาณ จะได้ตามรูปนี้

ไม่ว่าจะสร้าง PWM ในโหมดไหนๆ มันก็มีพื้นฐานมาจากหลักการเดียวกันครับ คือ กำหนดความถี่ที่เราต้องการก่อนจากนั้น
คำนวณ ในสมการ เพื่อหาค่า TOP แล้วเอาไปกำหนดค่าในโปรแกรมวิธีสร้างสัญญาณออกมาก็ตามรูปอะครับ


(PLC) #28

แต่ถ้าสมมุติว่า ผมอยากได้ค่า12.208KHz แล้วคำนวณค่าTop ออกมาได้ 81.91 แต่พอผมเอาค่า81.91ไปใส่ในโปรแกรม โปรแกรมจะอ่านค่าแค่เป็น81 ทำให้ความถี่ที่ออกมา เป็น12.345KHz


(Permpol Thanapunnamas) #29

มีผลอย่างไรครับ ทำไมถึงต้องใช้ 12.333 kHz เราใช้ 12.345 kHz ไม่ได้หรอครับ


(Permpol Thanapunnamas) #30

พี่เคยบอกไปแล้วว่า ค่า TOP ต้องเป็นจำนวนเต็มเท่านั้น เพราะงั้นเราต้องเลือกกำหนดค่าความถี่ที่เป็นจุดทศนิยม ที่สามารถนำไปคำนวณค่า TOP ได้เป็นจำนวนเต็มพอดีเท่านั้นครับ :sweat:


(PLC) #31

ถ้าเป็น12.33กลับ12.34นี้ไม่มีผลนะครับ
แต่บ้างค่ามันโดนไปมากเลยนะครับ เช่น 12.33 เป็น13.01 แบบนี้นะครับ


(Permpol Thanapunnamas) #32

น้องคงต้องลองปรับอย่างอื่นดู เพราะว่าการสร้าง PWM ตอนนี้เรามีข้อจำกัดอยู่


(PLC) #33

โอเคครับพี่ ขอบคุณมากนะครับ สำหรับคำแนะนำครับพี่


(Pittayathon Faichawna) #34

ผมขอลบกวนสอบถามหน่อยนะครับ โคตที่พี่ให้มามันใช้สร้างรู้คลื่นพลัสได้ใช่ไหมครับ


(Pittayathon Faichawna) #35

พอดีผมกำลังทำ power maximum solar อ่ะครับ


(Permpol Thanapunnamas) #36

ได้ครับผม ตามรูปเลยครับ


(Permpol Thanapunnamas) #37

จะลิมิต แรงดันแบบใช้ Feedbabk ป้อนกลับมาจาก output หรอครับ


(Pittayathon Faichawna) #38

คือผมจะอยากกำหนดช่วงดิวตี้อยู่ที่ 75 เปอร์กับ 100 เปอร์เซน ที่ความถี่ 25 khz เพื่อไปต่อกับวงจรขับเกต เพื่อเพิมแรงดันขึ้นเพื่อจะสามารถขับมอสเฟสได้อ่ะครับ แต่ก่อนผมใช้ Tl494 ได้ค่าดิวตี้แค่ 50 เปอร์เซนครับ


(Permpol Thanapunnamas) #39

ใช้แบบ เฟส เดียวหรอครับ


(Pittayathon Faichawna) #40

ใช่ครับพี่ พอดีผมจะไปต่อกับปั้มน้ำ DC 24 V 1.8 A


(Pittayathon Faichawna) #41

TCCR2A = _BV(COM2A1)|_BV(COM2B1)|_BV(WGM21)|_BV(WGM20);
TCCR2B = _BV(CS10);

TCCR2A เป็นคำสั่งความถี่หรือครับพี่