PIC Lesson: PWM To Analog

August 12th, 2010  Posted at   Lesson PIC

PWM boleh menghasilkan analog voltage. PWM to Analog juga adalah merupakan DAC. Jika menggunakan R-2R Ladder, lapan output daripada microcontroller diperlukan untuk menghasilkan satu analog output. Menggunakan PWM, hanya satu output diperlukan bagi satu analog output dengan mengubah duty cycle nya sahaja. Litar PWM kepada voltan adalah seperti berikut.

Litar di atas sebenarnya adalah litar low pass filter di mana litar yang hanya menyalurkan frekuensi rendah dan menyekat frekuensi tinggi. Dalam isyarat PWM terdapat voltan DC dan AC yang dikenali harmonic. Apabila PWM melalui low pass filter, litar akan mengurangkan voltan AC yang berfrekuensi dan hanya menyalurkan voltan DC yang tidak berfrekuensi.

Dalam maksud lain, PWM adalah signal ‘ON’ dan ‘OFF’. Apabila melalui litar RC, capacitor akan charging ketika input 5V dan discharging ketika input 0V. Proses ini berlaku dengan sangat cepat dalam frekuensi PWM yang tinggi. Oleh itu, dengan mengubah duty cycle PWM tersebut, boleh mengubah voltan keluaran.

Vout1 adalah hasil voltan daripada nilai RC yang lebih tinggi berbanding Vout2. Dalam program ini saya juga mengubah frekuensi PWM bagi menunjukkan perubahan frekuensi tidak menunjukkan perubahan output yang ketara.

Berikut adalah videonya.

PIC Source Code

10 Responses to “PIC Lesson: PWM To Analog”

  1. eason says:

    Mr shahrul
    1.What is void convert(int no, char base);??

    2.For the CCP2CON=(CCP2CON&0b11001111)|((a%4)<<4);
    what is the |((a%4)<<4)??

  2. eason says:

    Hi..Mr shahrul
    My name is eason…
    I have a question about this programming code.
    I watch the video that you upload, inside the video show that your duty cycle or frequency can be varying.
    How did you do that?
    Can u teach me?
    I hope get ur reply soon..
    Thank you very much

    • Shahrul says:

      You see my function pwm_set(int freq, int duty),
      I have insert formula to setting PR2, CCPR2L and CCP2CON.

      • eason says:

        Oh…ok
        But i see u got turning the Potential meter issit?
        is it tat meter cause the duty cycle and frequency varying?
        thanks for reply me..:)

        • Shahrul says:

          Yes, you see this 3 lines
          freq=(int)(18.3285*read_a2d(0)+1250);
          duty=(int)(0.09776*read_a2d(1));
          pwm_set(freq,duty);

          That’s why the freq comes from analog input RA0 and duty cycle comes from analog input RA1.

  3. kama says:

    salam.
    file pic.h n htc.h kna amik kat ner?

    • Shahrul says:

      X perlu cari kat mana2. Install compiler Hi-Tech saja, dah ada file tu. Kalau nak cari boleh juga, klik Start >> Search >> [nama file.h]

  4. Shahrul says:

    madi, mppt charge controller ada function spt DC to DC converter, untuk mengeluarkan output DC dgn PWM, jd program ni boleh digunakan.

  5. madi says:

    kalau guna mppt charge controler mcm mana?lebih kurang sama tak commond program pic

Leave a Reply

What is 6 + 14 ?
Please leave these two fields as-is:
IMPORTANT! To be able to proceed, you need to solve the following simple math (so we know that you are a human) :-)