Giúp mình vấn đề Điều chế PWM

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • jimmylin1986
    Nhập môn đệ tử
    • Mar 2010
    • 2

    #1

    Giúp mình vấn đề Điều chế PWM

    Mình đang gặp vấn đề trong việc điều chế PWM cua Pic6f877a. Mình muốn dùng 2 chân điều chế PWM của Pic để điều khiển động cơ DC.mình viết code bằng CCS,nhưng khi mô phỏng trong Protus thì 2 chân CCP cua Pic không xuất ra xung gì cả.Nó luôn xuất ra mức 0.Mạch mô phỏng đơn giản lắm,chỉ là kiểm tra xem nó có xuất xung hay không thôi.Các bác Pro giúp mình với. Mình đang cần gấp lắm
  • haruoi
    Đệ tử 2 túi
    • Apr 2010
    • 29

    #2
    Có pro nào biết thì giúp bạn cái nhỉ! E cũng đang muốn tìm hiểu cái này.

    Comment

    • baquyen
      Đệ tử 2 túi
      • May 2007
      • 31

      #3
      16f877a à, trên picvietnam nhiều lắm mà,
      CT của mình với 16f887 tương tự 16f877a.
      Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC
      Last edited by baquyen; 07-06-2010, 09:36 AM.
      Biển học mênh mông -- Quay đầu là bờ!
      My blog

      Comment

      • manhhung_cdt08
        Đệ tử 1 túi
        • Aug 2009
        • 11

        #4
        #include<16f877a.h>
        #fuses hs,NOWDT,PUT
        #use delay(clock=20000000)

        main()
        {
        setup_timer_2(T2_DIV_BY_16,239,1);
        setup_ccp1(CCP_PWM);
        setup_ccp2(CCP_PWM);
        set_pwm1_duty(64);
        set_pwm2_duty(900);
        while(1) {}
        }

        Comment

        • tranchung000
          Nhập môn đệ tử
          • Feb 2010
          • 1

          #5
          có nguồn ở đây nè bạn. Bạn tìm đến file dktocdodc.rar .Hi vọng giúp được bạn.

          Comment

          • HAI1817
            Đệ tử 5 túi
            • Feb 2010
            • 94

            #6
            điều khiển động cơ dc bằng pwm có encoder tìm ở đâu

            các anh chị chỉ em với

            Comment

            • HAI1817
              Đệ tử 5 túi
              • Feb 2010
              • 94

              #7
              có encoder hồi về phải làm sao

              code đây sửa lại như thế nào
              Attached Files

              Comment

              • baquyen
                Đệ tử 2 túi
                • May 2007
                • 31

                #8
                Thì dùng ngắt ngoài bình thường, ý bạn là sao nhỉ, ko hiểu
                Biển học mênh mông -- Quay đầu là bờ!
                My blog

                Comment

                • HAI1817
                  Đệ tử 5 túi
                  • Feb 2010
                  • 94

                  #9
                  em chư rành mấy mong anh chỉ dùm
                  có nghĩa là dùng một encoder khoảng 200 xung để phản hồi tốc độ.nếu em dùng ngắt thì nó ngắt liên tục.ngắt đó mình đưa vào đâu để ổn định được tốc độ

                  Comment

                  • baquyen
                    Đệ tử 2 túi
                    • May 2007
                    • 31

                    #10
                    Dù ngắt liên tục thì nó cũng chỉ mất thời gian rất ngắn, bạn dùng ngắt đó + ngắt timer để tính tốc độ (cái này có cả đống bài trên picvietnam viết và code sẵn rồi), vấn đề là bạn đưa vào một tốc độ cần đạt được (tốc độ đặt), code của bạn sẽ so sánh với tốc độ bạn đọc được từ encoder để điều chỉnh. Mình đang làm điều khiển góc quay , giờ viểt báo cáo gấp để nộp cho khoa, sắp hết hạn rồi, mấy bài về cái này nhiều lắm, bạn tự tìm trong diễn đàn có hết

                    Đọc encoder nè: http://www.picvietnam.com/forum/showthread.php?t=1646
                    Cái này nữa nè: http://www.picvietnam.com/forum/show...?t=2296&page=7
                    Cái này thì hơi mệt chút: http://www.picvietnam.com/forum/show...?t=485&page=25
                    Last edited by baquyen; 11-06-2010, 05:28 PM.
                    Biển học mênh mông -- Quay đầu là bờ!
                    My blog

                    Comment

                    • HAI1817
                      Đệ tử 5 túi
                      • Feb 2010
                      • 94

                      #11
                      cảm ơn anh nhiều

                      Comment

                      • manhdktd
                        Đệ tử 3 túi
                        • Jun 2010
                        • 57

                        #12
                        Nguyên văn bởi manhhung_cdt08 View Post
                        #include<16f877a.h>
                        #fuses hs,NOWDT,PUT
                        #use delay(clock=20000000)

                        main()
                        {
                        setup_timer_2(T2_DIV_BY_16,239,1);
                        setup_ccp1(CCP_PWM);
                        setup_ccp2(CCP_PWM);
                        set_pwm1_duty(64);
                        set_pwm2_duty(900);
                        while(1) {}
                        }
                        bác xem lại cái giá trị đặt trong pwm2 nhé.giá trị mình đặt phải nhỏ hơn giá trị trong thanh ghi PR2

                        Comment

                        • trangkutehd
                          Nhập môn đệ tử
                          • May 2010
                          • 7

                          #13
                          Nguyên văn bởi manhdktd View Post
                          bác xem lại cái giá trị đặt trong pwm2 nhé.giá trị mình đặt phải nhỏ hơn giá trị trong thanh ghi PR2
                          sao mình thử mãi không được nhỉ (



                          ___________________________________
                          Cập nhật liên tục Lich thi dau world cup 2010 , Tin tuc, Tin tuc trong ngay ,Thoi trang & HOT Game , Nhac.Click ngay để Nghe nhac.

                          Comment

                          • manhdktd
                            Đệ tử 3 túi
                            • Jun 2010
                            • 57

                            #14
                            Nguyên văn bởi trangkutehd View Post
                            sao mình thử mãi không được nhỉ (



                            ___________________________________
                            Cập nhật liên tục Lich thi dau world cup 2010 , Tin tuc, Tin tuc trong ngay ,Thoi trang & HOT Game , Nhac.Click ngay để Nghe nhac.
                            cậu không được chỗ nào?có thể nói cụ thể được không?

                            Comment

                            • robotpic
                              Đệ tử 4 túi
                              • Jun 2010
                              • 79

                              #15
                              bạn cùng thach anh 20000000 hz bạn phải sửa setup_timer2 lại đi; bạn chọn bộ chia 16 thi gia trị nhận được là 124
                              cach tinh nè bạn
                              //setup_timer_2(mode,period,postscale)

                              // * PWM Register Values
                              // * Oscillator Frequency Fosc = 20000000
                              // * Clock Frequency Fclk = 5000000
                              // TOSC=1/20000000=5000000
                              // * PWM Freq = 10000 HZ
                              // * Prescaler Value = 4
                              // * PR2 = 124
                              //10000=[(PR2+1).4.TOSC.(TMR2 PRESCALE)]

                              // * Maximum duty value = 500

                              Comment

                              Working...