Arduino สร้าง pwm ในการทำหม้อแปลงเทสลา

ขอรูปพัล ที่ต้องการหน่อยครับวาดมาก็ได้จะได้เข้าใจตรงกัน

ผมต้องการให้เอ้าพุตออก 2 ขา หลักการทำงานคล้ายๆวงจรนี้แต่ผมใช้ arduino มาทำแทน

1 Likes

ตามโค้ตนี้ output ก็ออกสองขานิครับ ออกที่ขา 9 และ 10

ผมเห็นพี่เขียนโค้ดประกาศ pinmode(9,outtput); แล้วผมลองซิมในโปรแกรมโพทีอุส แล้วใช้สโคปวัด มันออกแค่ขาเดียว คือขา9 ที่ประกาศ output อ่ะครับ แล้วก็ ถ้าผมต้องการ ให้ได้กราฟตามรูปที่ผมส่ง ที่ทำให้เฟสต่างอ่ะครับ ผมต้องปรับDuty cycle และมุมเฟสยังไงให้ได้ตามรูปที่ผมส่งไปอ่ะครับพี่

1 Likes
   #include "TimerOne.h"
    int pot = 0; // analog value 0-5VDC : 0-255
    void setup()
    {
      OCR2A = pot;
      pinMode(9, OUTPUT);
      pinMode(10, OUTPUT);
      Timer1.initialize(20);         // initialize timer1, and set at 50kHz
      Timer1.pwm(9, pot);         // setup pwm on pin 9, 25% duty cycle
      Timer1.pwm(10, pot);       // setup pwm on pin 10, 25% duty cycle

    TCCR2A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM21) | _BV(WGM20);
    TCCR2B = _BV(CS20); // prescaler à 1.
    OCR2A = pot;
    }

    void loop()
    {
     pot = analogRead(A0)/4; // Value between 0 and 255
     Timer1.pwm(9, pot);         // setup pwm on pin 9, 25% duty cycle
      Timer1.pwm(10, pot);       // setup pwm on pin 10, 25% duty cycle
    }

ขอแก้ไขเบื้องต้นเรื่องที่ซิมแล้ว ออกแค่พินเดียวก่อนนะครับ โดยการเพิ่ม

pinMode(10, OUTPUT);

เข้าไปครับเพราะว่าเราไม่ได้ประกาศให้มันเป็น output มันเลยไม่มี PWM ออกมาที่ pin 10 ครับ

ส่วนเรื่องต้องการชิฟเฟสกันติดตามได้จากกระทู้นนี้ครับ

พี่ครับถ้าผมต้องการที่จะใช้ตัว R ปรับค่าได้ในการปรับความถี่ต้องเพิ่มโค้ดจากส่วนตรงไหนบ้างครับ

เคยทำแต่ R ปรับ Duty ครับ ปรับความถี่ ลองหาโค้ต ใน google มาคุยกันดูครับ

ขอดูโค้ดที่ปรับdutyหน่อยได้ไหมครับ

แบบไหนหรอครับ

ที่ใช้ R ปรับค่าได้ในการปรับอ่ะครับ

ตอบให้ไปแล้วในโค้ตล่าสุดครับ

pot = analogRead(A0)/4; // Value between 0 and 255

บรรทัดนี้จะเป็นการอ่านค่าแรงดัน 0 - 5 V เพื่อเอามาปรับค่าดิวตี้ไซเคิ้ล เราสามารถทำได้สองวิธีคือ

จ่ายแรงดัน 0 - 5 V ที่สามารถปรับค่าได้เข้าไปเลย สองคือ คำนวณ โวลท์เตจ ดีไวเดอร์ แต่ละช่วง 0 1 2 3 4 และ 5 V ตามลำดับ เพื่อให้ได้ ตัวต้านทางมาต่อเป็นวงจรปรับได้ เพื่อปรับแรงดันครับ

พี่ครับโค้ดของผมความถี่มันลดลงตามคลิปอ่ะครับ จะมีวิธีแก้ไขอย่างไรบ้างเพื่อให้ความถี่คงที่อ่ะครับ ผมใช้อาปรับค่าได้ในการปรับความถี่อ่ะครับ

%E0%B8%81%E0%B8%A3%E0%B8%B0%E0%B8%94%E0%B8%B8%E0%B9%8A%E0%B8%81

เท่าที่ดู f มันแกว่งรึป่าวครับ มันไม่ได้ลดสะทีเดียว

ใช่ครับ พอจะมีแนวทางแก้ไขมั้ยคับ หรือพอจะแนะนำให้หน่อยได้มั้ยครับ

ลองเปลี่ยน 1023 เป็น 1024 ดูครับ

ได้ผลยังไง อัพเดทด้วยครับ

1 Likes