Thông báo

Collapse
No announcement yet.

Hỏi về PWM

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Hỏi về PWM

    Các bác cho em hỏi;
    + Mình có thể dùng chân ccp1 để tạo xung PWM cho động cơ 1 chạy, và dùng chân ccp1 này để tạo xung PWM cho động cơ 2 chạy không. Với điều kiện khi tạo động cơ 1 chạy thì động cơ 2 không chạy và ngược lại. Em tính dùng chân CCP1 tạo xung + ngắt cạnh lên H_TO_L cho động cơ 1, và tạo xung + ngắt cạnh xuống L_TO_H cho động cơ 2 được không.
    Xin các bác nào có kinh nghiệm trả lời.

    Web:[url]www.ledviet.info/url]
    Email:
    DĐ:0949299699

  • #2
    Em có thể dùng như thế này không?
    void dongco1(int8 speed1)
    {
    setup_ccp1(CCP_PWM_H_L); // Configure CCP1 as a PWM
    setup_timer_2(T2_DIV_BY_16, 255,1);
    set_pwm1_duty (speed1); tốc độ động cơ 1
    }
    void dongco2(int8 speed2)
    {
    setup_ccp1(CCP_PWM_L_H); // Configure CCP1 as a PWM
    setup_timer_2(T2_DIV_BY_16, 255,1);
    set_pwm1_duty (speed2); tốc độ động cơ 2
    }
    Khi dùng cho động cơ nào em gọi hàm động cơ đó. Không biết như thế này có được không?

    Web:[url]www.ledviet.info/url]
    Email:
    DĐ:0949299699

    Comment


    • #3
      Cả hai bài này bạn đã post ở picvietnam, và đã được trả lời.

      Thân,
      Biển học mênh mông, sức người có hạn

      Comment


      • #4
        anh namqn giải thích cho em cái PWM của con 16F877A với, em đọc mãi mà chưa hiểu được ,em nói rõ hơn nhé :
        có 2 côg thức để tính
        +chu kỳ(period):
        PWM Period = [(PR2) + 1] .4 . TOSC .(TMR2 Prescale Value)
        +duty:
        PWM Duty Cycle =(CCPR1L:CCP1CON<5:4>) .TOSC. (TMR2 Prescale Value).

        em ko hiểu tại sao bên dưới lại ko nhân với 4 (em hiểu ở đây 4 để tính ra chu kỳ của PIC từ chu kỳ của thạch anh)
        và tác dụng của 2 bit CCP1CON<5:4> là j ??? TMR2 sẽ tăng đến đâu thì PIC clear chân CCPx ???(theo em hiểu thì nó tăng đến giá trị ghi vào CCPR1L)
        nếu như vậy với tần số chia prescaler la 1:4 thì cứ 4 chu kỳ của PIC TMR2 sẽ tăng lên 1 ,???nhưng còn 2 bit đầu thì nó thay đổi thế nào ???
        hic em đang loạn cả lên

        như vạy chỉ có thể giải thích được là 10 bit đếm sẽ tăng theo chu kỳ thạch anh chứ ko fải chu kỳ PIC ??? ko biết có đung ko???

        đoạn chương trình sau ko hiểu có đúng ko :
        Chẳng hạn ta hãy xác định các thông số để tạo ra 1 sóng vuông có tần số
        40Khz,duty=50%,thạch anh sử dụng 4Mhz,prescle=1
        + Chu kỳ T = 1/40e3 = 2.5e-5 sec
        + XTAL Tosc = 1/4e6 = 2.5e-7 sec
        + PR= (2.5e-5 / (4*2.5e-7 * 1)) - 1 = 24
        + Dpwm = (50* 2.5e-5) / 100 = 1.25e-5 sec
        + CCPR1= (1.25e-5) / (2.5e-7 * 1) = 50--> 00001100 10
        Vậy có:
        void InitPWM(void)
        {
        PR2 = 24; //Set TIMER2 frequency
        CCPR1L = 0B00001100; //Set TIMER2 duty cycle
        CCP1CON = 0B00101111; //Set x,y CCP1CON<5:4> any CCP1CON<3:0> = 11xx = PWM mode
        TMR2 = 0; //Clear TMR2 first
        T2CON = 0B01111000; //T2CON<0:1>Set prescaler ,T2CON<2>=0 stop Timer2
        }

        thanks
        Last edited by kinhaxac; 06-08-2008, 17:23.

        Comment


        • #5
          PIC 8-bit sử dụng một bộ đếm 2-bit (cho Q clock) để tạo ra một chu kỳ máy sau mỗi 4 xung clock. Để nâng độ phân giải của duty cycle, người ta tận dụng bộ đếm 2-bit đó để đếm số chu kỳ clock chứ không đếm số chu kỳ máy.

          Các bit CCP1CON<5:4> được dùng để thiết lập giá trị ngưỡng cho 2-bit thấp nhất trong giá trị mô tả duty cycle. Như vậy, chân CCP1 sẽ bị xóa về 0 khi số đếm trong TMR2 bằng CCPR1L và số đếm của bộ đếm 2 bit tạo Q clock bằng các bit CCP1CON<5:4>, tạo ra độ phân giải 10-bit cho duty cycle. Ở đây không dùng prescaler cho TMR2.

          Khi bạn có dùng prescaler cho TMR2, các bit của prescaler sẽ nằm giữa TMR2 và bộ đếm tạo Q clock, do đó 2 bit thấp nhất của duty cycle sẽ được xét một cách phối hợp với bộ prescaler và bộ đếm tạo Q clock. Nếu bạn dùng prescale 1:2, prescaler chỉ dùng 1 bit, do đó bit cao hơn của bộ đếm tạo Q clock sẽ được dùng để có 2 bit thấp nhất dùng so sánh với CCP1CON<5:4>. Nếu bạn dùng prescale 1:4 hay 1:16, prescaler sẽ dùng ít nhất 2 bit, và 2 bit cao nhất của prescaler sẽ được dùng để so sánh với CCP1CON<5:4>, còn bộ đếm Q clock không bao giờ cần xét đến trong những trường hợp này.

          Thân,
          Biển học mênh mông, sức người có hạn

          Comment


          • #6
            cảm ơn bác rất nhiều , bây giờ thì em đã hiểu ^^

            Comment

            Về tác giả

            Collapse

            manhha2799 Tìm hiểu thêm về manhha2799

            Bài viết mới nhất

            Collapse

            Đang tải...
            X