ขอข้อมูลเกี่ยวกับ PWM โดยใช้ arduino หน่อยครับ


(phasid) #1

เราสามารถ สร้างPWM โดยให้ Valueค่าความถี่ได้ไหมครับ

เช่น 24v 500Hz ต้องการFix แรงดันไว้ที่ 24V เลย แล้วปรับ 0—>500Hz แทนได้ไหมครับ

จะนำไปใช้ขับ Gate drive ir2110 เพื่อdrive brushless dc motor 3phase ครับ


(Permpol Thanapunnamas) #2

ลองเอาโค้ตนี้ไปทดสอบดูครับ ถ้าผมจำไม่ผิด เราสามารถปรับความที่ได้จากคำสั่ง Timer1.initialize(20); ลองเปลี่ยนจาก 20 เป็นเลขอื่นแล้วลองคำนวณหา F ออกมาดู

   #include "TimerOne.h"
    int pot = 0; // analog value 0-5VDC : 0-255
    void setup()
    {
      OCR2A = pot;
      pinMode(9, 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
    }

(phasid) #3

อันนี้ลองแล้วครับ คือผมอยากได้ประมานว่า เราหมุน VR แล้วความถี่ Valueตามเลยอะครับ สามารถทำได้ไหมครับ

เช่น ผมตั้งไว้ 1kHz สามารถปรับ VR ให้ความถี่ value ตามได้ไหมครับ


(Permpol Thanapunnamas) #4

ก็แทน 20 เป็นตัวแปร สมมติ

int vr = 0;

vr = analogRead(Pin); // รับค่าจาก vr ปรับค่าได้

Timer1.initialize(vr);

ประมาณนี้อะครับลองดู