Thông báo

Collapse
No announcement yet.

Cần mọi người giúp đỡ về PIC 16f887

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

  • Cần mọi người giúp đỡ về PIC 16f887

    Hiện tại mình đang làm về con PIC 16f887, và thầy giáo yêu cầu phát xung PWm với chu kỳ 2s trở lên. Mình cũng đã tìm hiểu nhưng mới chỉ đưa ra max là 2ms thôi. Vậy cho mình hỏi liệu con PIC nó có phát dc PWM với chu kỳ lớn như vậy dc ko. Mình đang xài MicroC for Pic để làm code cho nó. Bạn nào biết giúp mình với, mình cũng mới bắt đầu tìm hiểu về pic thôi.

  • #2
    xung PWM mà chu kì 2 sec thì đâu còn PWM nữa bạn, có nhầm lẫn gì ko

    Comment


    • #3
      ý mình là mình điều chế làm sao cho PWM lên MAX trong vòng 1 số chu kỳ đầu rồi sau đó set nó về 0 (tổng cộng trong vong 2s). ĐÂy là dk theo độ rộng xung, đầu ra V nó sẽ có hình dạng xung vuông.

      Comment


      • #4
        Nguyên văn bởi luffy_1102 Xem bài viết
        ý mình là mình điều chế làm sao cho PWM lên MAX trong vòng 1 số chu kỳ đầu rồi sau đó set nó về 0 (tổng cộng trong vong 2s). ĐÂy là dk theo độ rộng xung, đầu ra V nó sẽ có hình dạng xung vuông.
        hình như bạn chưa hiểu nguyên lý của PWM, nói đơn giản ý của bạn là, giả sử áp PWM là 12V đi nhá. Bạn nói ở #1 "PWm với chu kỳ 2s" vậy tần số là 0.5Hz, thế thì đầu ra xung sẽ ở mức 12V trong 1 giây và ở mức 0V trong 1 giây cứ thế lặp đi lặp lại phải ko ??????
        Để dễ hiểu bạn hãy phát thảo hình giản đồ xung với ghi chú thời gian up lên thử xem

        Comment


        • #5
          Sorry vì trên #1 mình nói hơi nhầm tẹo, Ý mình là muốn đưa ra đầu ra điện áp dưới dạng xung với chu kỳ 2s. Mình mình chưa quen với việc up nên chưa up dc. bạn. nếu bạn có online thì buzz nick mình. tienthanhbk1102@yahoo.com

          Comment


          • #6
            tạo delay 1s bật PWM giây tiếp theo tắt PWM để hai cái này trong vòng while(1)

            Comment


            • #7
              ok để mình thử

              Comment


              • #8
                Mình đã thử dùng hàm delay ok rồi. Nhưng bây giờ có 1 vấn đề nữa là thời gian phát xung phụ thuộc vào tín hiệu điều khiển. Tức là time delay bây giờ ko cố định nữa mà phụ thuộc vào tín hiệu đk, khi tín hiệu đk tăng thì thời gian phát xung tăng, khi tín hiệu dk giảm thì ngược lại, với chu kỳ vẫn là 2s. Hàm delay nó chỉ cho phép khai báo thông số cố định. Nên mình muốn nhờ bạn giúp thêm làm thế nào để giải quyết vấn đề này. tks

                Comment


                • #9
                  Nguyên văn bởi luffy_1102 Xem bài viết
                  Mình đã thử dùng hàm delay ok rồi. Nhưng bây giờ có 1 vấn đề nữa là thời gian phát xung phụ thuộc vào tín hiệu điều khiển. Tức là time delay bây giờ ko cố định nữa mà phụ thuộc vào tín hiệu đk, khi tín hiệu đk tăng thì thời gian phát xung tăng, khi tín hiệu dk giảm thì ngược lại, với chu kỳ vẫn là 2s. Hàm delay nó chỉ cho phép khai báo thông số cố định. Nên mình muốn nhờ bạn giúp thêm làm thế nào để giải quyết vấn đề này. tks
                  bạn phải nói cụ thể ra phần cứng bạn như thế nào, cái tín hiệu điều khiển là cái gì

                  Comment


                  • #10
                    bạn có thể làm 1 hàm delay kiểu " vô tội vạ " thế này ( nếu thích dùng thư viện Delay)

                    void key_delay(unsigned long value)
                    {
                    while(value--)
                    {
                    Delay_ms(1);
                    }
                    }

                    hoặc cũng có thể tự viết bằng 1 vòng for , while ( hay vòng lặp bất kỳ ) .

                    Còn việc tạo với chu kỳ bao nhiêu ... nếu quá dài bạn có thể tắt PWM hoặc set Pin đó lên mức 1 luôn nếu muốn !
                    Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                    Comment


                    • #11
                      Nguyên văn bởi chung1608 Xem bài viết
                      bạn phải nói cụ thể ra phần cứng bạn như thế nào, cái tín hiệu điều khiển là cái gì
                      TÍn hiệu điều khiển mình xuất ra từ matlab, mạch Pic 16f887 đóng vai trò giao tiếp. dải giá trị phát từ matlab từ 0--> 255.

                      Comment


                      • #12
                        Có bác nào có giải pháp nào không.

                        Comment


                        • #13
                          Ý ban là thế này đây phải ko:
                          Click image for larger version

Name:	dieu khien cong suat.jpg
Views:	1
Size:	35.3 KB
ID:	1370663

                          Với chu kỳ T là hằng số cố định, bạn chon T lớn (như ban nói là 2s) hình như bạn đang điều khiển đối tượng có quán tính lớn (vd như lò nhiệt). Bạn chỉ thay đổi Ton, nhằm thay đổi công suất cấp vào, (P=Pmax*Ton/T), Ton này là 1 biến số, có thể được tính ra từ thuật toán PID nếu bạn dùng đk PID. Theo mình biết (chưa chính xác lắm) thì pwm của PIC ko có chu kỳ pwm nào lớn cỡ giây đâu. Bạn nên làm 1 con PIC riêng, chỉ đảm nhận nhiệm vụ điều khiển Ton và T, các giá trị của Ton và T thì nhận từ 1 con PIC master khác, con master này sẽ làm nhiều nhiệm vụ mà ko lo về vấn đề thời gian xử lý, gây sai số cho chu kỳ T và tgian Ton.
                          |

                          Comment


                          • #14
                            887 chi tao dc cao nhat la 20kHz thui ban ak.

                            Comment

                            Về tác giả

                            Collapse

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

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

                            Collapse

                            Đang tải...
                            X