Thông báo

Collapse
No announcement yet.

Vướng mắc với ADC - PWM của PIC 18F452

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

  • Vướng mắc với ADC - PWM của PIC 18F452

    Click image for larger version

Name:	mo phong.jpg
Views:	1
Size:	119.0 KB
ID:	1408566Chào các anh, hiện nay em đang làm bộ nguồn Flyback. dùng PIC 18F452 để phát xung PWM tần số 100Khz để đóng cắt mosfet, đồng thời phản hồi dòng điện về PIC để thay đổi duty cyle nhằm ổn định dòng điện.
    Nhưng không biết code của em sai ở đâu mà khi mô phỏng chỉ phát ra xung chứ không tự động thay đổi duty ( em dùng biến trở nối với cổng analog để giả tín hiệu phản hồi).
    Khi nạp code vào PIC thì hoàn toàn không phát được ra xung.
    Rất mong các anh xem và chỉ giúp em lỗi sai. Em xin chân thành cảm ơn.
    Sau đây là code em viết và file mô phỏng.
    Code:
    #include <18F452.h>
    #device adc = 8 
    #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT 
    #use delay(clock=80000000,oscollator=20000000)
    #int_TIMER1
    long  duty, value;
    void  TIMER1_isr(void) // ngat timer1 de doc adc va thay doi duty
    {
       value = read_adc();
       if (value >200)
          {
             duty = duty +50;
          }
       else 
          {if (value < 200)
             {
                duty= duty - 50;
             }
          }
    }
    void Init_pwm(long duty) // khoi tao pwm
          {
             setup_ccp1(CCP_PWM);
             setup_timer_2(T2_DIV_BY_1,199,1);
             set_pwm1_duty(duty);
          }
    void Init_timer1(void) // thiet lap timer1
          {
             setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
          }
    void Init_ADC(void) // khoi tao adc
          {
             setup_port_a(ALL_ANALOG); 
             setup_adc(adc_clock_internal); 
             set_adc_channel(0);
             delay_us(10);
    }
    void main()
    {
       while(1)
       {
          Init_timer1();     
          Init_pwm(400);
          Init_ADC();
          enable_interrupts(INT_TIMER1);
          enable_interrupts(GLOBAL);
       }
    }

  • #2
    Mình thì không nghĩ con 18F này nó " đỡ " được HS 80M đâu. Cách lập trình cũng khác nên ko dám nói thêm.

    Comment


    • #3
      Nguyên văn bởi duong_act Xem bài viết
      Mình thì không nghĩ con 18F này nó " đỡ " được HS 80M đâu. Cách lập trình cũng khác nên ko dám nói thêm.
      Thực tế thì chưa biết 80M nhưng mô phỏng ra rồi .
      Bạn set lại chân ADC là Input đi , tớ nghĩ là nó chưa đọc đc ADC thôi .
      Chuyên cung cấp inverter dạng sin chuẩn
      Email :

      Comment

      Về tác giả

      Collapse

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

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

      Collapse

      Đang tải...
      X