Thông báo

Collapse
No announcement yet.

[HELP] đo tần số dùng PIC18F4620

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

  • [HELP] đo tần số dùng PIC18F4620

    Ai giúp em giải đáp vài thắc mắc với:
    Em sử dụng PIC 18F4620 và thạch anh 4MHz để đo tần số.

    1. Vậy tối đa em có thể đo được gần chính xác tới tần số bao nhiêu?
    2. Em đang cần đo xung ngoài với tần số khoảng 2MHz trở xuống, nếu thạch anh 4MHz không thể đáp ứng được tính chính xác, thì dung thạch anh bao nhiêu thì được?
    3. Hiện tại code của em có thể dùng timer0 để đếm xung (chân nhận xung RA4) và timer1 định thời, hoặc có thể đổi sang bộ đếm xung ngoài để đếm xung (PortB) và timer1 định thời, vậy dùng cách nào để có thể đếm xung tần số dưới 2MHz được?
    4. Nếu xung 2MHz đó bị nhiễu (hình dạng không phải là xung vuông mà nó bị biến dạng gần giống xung tam giác, thì có thể đếm được xung không?

    Mong các bro giải đáp sớm giúp em, em đang làm đồ án về vấn đề này.

    à! nếu có ai cần tìm hiểu về timer và ngắt ngoài thì có thể liên hệ mình, mình sẽ giúp.
    mail: mortred.bmt@gmail.com

  • #2
    Nguyên văn bởi shybmt Xem bài viết
    Ai giúp em giải đáp vài thắc mắc với:
    Em sử dụng PIC 18F4620 và thạch anh 4MHz để đo tần số.

    1. Vậy tối đa em có thể đo được gần chính xác tới tần số bao nhiêu?
    2. Em đang cần đo xung ngoài với tần số khoảng 2MHz trở xuống, nếu thạch anh 4MHz không thể đáp ứng được tính chính xác, thì dung thạch anh bao nhiêu thì được?
    3. Hiện tại code của em có thể dùng timer0 để đếm xung (chân nhận xung RA4) và timer1 định thời, hoặc có thể đổi sang bộ đếm xung ngoài để đếm xung (PortB) và timer1 định thời, vậy dùng cách nào để có thể đếm xung tần số dưới 2MHz được?
    4. Nếu xung 2MHz đó bị nhiễu (hình dạng không phải là xung vuông mà nó bị biến dạng gần giống xung tam giác, thì có thể đếm được xung không?

    Mong các bro giải đáp sớm giúp em, em đang làm đồ án về vấn đề này.

    à! nếu có ai cần tìm hiểu về timer và ngắt ngoài thì có thể liên hệ mình, mình sẽ giúp.
    mail: mortred.bmt@gmail.com
    1. Độ chính xác phụ thuộc vào con thạch anh ( gốc thời gian ), phụ thuộc vào sự biến đổi nhiệt độ môi trường , phục thuộc chất lượng chip, chương trình trong con PIC, phụ thuộc vào mạch bổ trợ bên ngoài . Phụ thuộc vào phương thức đo đạc. Với direct counter có thể đo chính xác tới +=1Hz và với 4Mhz thạch anh + PIC có thể đo 0 - 60Mhz


    2. Có 2 phương pháp đo chính Reciprocal và direct counter . Reciprocal là cách thức đo đếm chu kỳ T trong 1 khoảng thời gian (time base) và tần số được xác định f = 1/T
    direct counter là phương pháp đếm trực tiếp số lần xung / 1 giây hoặc bội số của 1s.
    --- đo 2Mhz trở xuống ( độ chính xác là bao nhiêu ??? ) với thạch anh 4Mhz sử dụng direct counter ( cho vào timer1 đếm xung trong 1 giây ) có thể đo từ 0 - 60Mhz với sai số +- 1Hz ( 2Mhz nằm trong khoảng này ... chắc chắn là OK ).
    Thạch anh 4Mhz không đủ tính chính xác ... thì dùng con thạch anh 4Mhz nhưng là 4.000000 Mhz ... số đằng sau càng nhiều thì độ chính xác càng cao. Nhiều tiền thì mua thạch anh hoặc gốc timebase chuyên dụng ! ( chắc cái đồ án cũng không đến nối phải sài những thứ này ).


    3. Nên tính toán bù trừ cẩn thời gian ngắt timer ở các bộ định thời ... vì nó có thể gây sai gốc timebase. Bạn có thể dùng timer0, 1 , 2 là tùy thích . Thường đưa Clock ngoài cần đếm vào timer1 sẽ có khả năng tràn ít hơn ( 16 bit ) .
    Với độ chính xác cao hơn có thể điều khiển Gate tín hiệu ( để đóng cắt luồng tín hiệu ) sử dụng IC số (74HC132) chẳng hạn.
    Không nên dùng ngắt ngoài đếm vì không được cao và không chính xác với những tần số hàng MHz.


    4. trước khi đưa vào PIC thì bạn cần qua 1 tầng khuếch đại, sửa xung chẳng hạn , có thể dùng transistor khếch đại + Latch IC.
    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


    • #3
      Nguyên văn bởi queduong Xem bài viết
      1. Độ chính xác phụ thuộc vào con thạch anh ( gốc thời gian ), phụ thuộc vào sự biến đổi nhiệt độ môi trường , phục thuộc chất lượng chip, chương trình trong con PIC, phụ thuộc vào mạch bổ trợ bên ngoài . Phụ thuộc vào phương thức đo đạc. Với direct counter có thể đo chính xác tới +=1Hz và với 4Mhz thạch anh + PIC có thể đo 0 - 60Mhz


      2. Có 2 phương pháp đo chính Reciprocal và direct counter . Reciprocal là cách thức đo đếm chu kỳ T trong 1 khoảng thời gian (time base) và tần số được xác định f = 1/T
      direct counter là phương pháp đếm trực tiếp số lần xung / 1 giây hoặc bội số của 1s.
      --- đo 2Mhz trở xuống ( độ chính xác là bao nhiêu ??? ) với thạch anh 4Mhz sử dụng direct counter ( cho vào timer1 đếm xung trong 1 giây ) có thể đo từ 0 - 60Mhz với sai số +- 1Hz ( 2Mhz nằm trong khoảng này ... chắc chắn là OK ).
      Thạch anh 4Mhz không đủ tính chính xác ... thì dùng con thạch anh 4Mhz nhưng là 4.000000 Mhz ... số đằng sau càng nhiều thì độ chính xác càng cao. Nhiều tiền thì mua thạch anh hoặc gốc timebase chuyên dụng ! ( chắc cái đồ án cũng không đến nối phải sài những thứ này ).


      3. Nên tính toán bù trừ cẩn thời gian ngắt timer ở các bộ định thời ... vì nó có thể gây sai gốc timebase. Bạn có thể dùng timer0, 1 , 2 là tùy thích . Thường đưa Clock ngoài cần đếm vào timer1 sẽ có khả năng tràn ít hơn ( 16 bit ) .
      Với độ chính xác cao hơn có thể điều khiển Gate tín hiệu ( để đóng cắt luồng tín hiệu ) sử dụng IC số (74HC132) chẳng hạn.
      Không nên dùng ngắt ngoài đếm vì không được cao và không chính xác với những tần số hàng MHz.


      4. trước khi đưa vào PIC thì bạn cần qua 1 tầng khuếch đại, sửa xung chẳng hạn , có thể dùng transistor khếch đại + Latch IC.
      bạn có thể chỉ rõ hơn về mục 3 được không? bạn nói "không nên dùng ngắt ngoài để đếm vì khôn được cao và không chính xác, vậy giờ dùng gì bạn?
      bạn cho mình hướng giải quyết để mình tìm hiểu cũng được, nếu có lòng thì bày luôn mình thanks nhiều

      phần cứng thì cố định rồi bạn, chắc không thể sử dụng thêm khuếch đại nữa, dưới đây mình gửi file nguyên lý cho bạn xem để hiểu rõ hơn.

      thay đổi sw1 có thể thay đổi tần số max là 800Hz sang 1,5MHz.
      mình viết xong code để đo chính xác 800Hz kia rồi, tuy nhiên khi bật sang tần số hàng MHz thì không đo được, mặc dù đã có lệnh sử lý trong code.
      Attached Files

      Comment


      • #4
        Nguyên văn bởi shybmt Xem bài viết
        bạn có thể chỉ rõ hơn về mục 3 được không? bạn nói "không nên dùng ngắt ngoài để đếm vì khôn được cao và không chính xác, vậy giờ dùng gì bạn?
        bạn cho mình hướng giải quyết để mình tìm hiểu cũng được, nếu có lòng thì bày luôn mình thanks nhiều

        phần cứng thì cố định rồi bạn, chắc không thể sử dụng thêm khuếch đại nữa, dưới đây mình gửi file nguyên lý cho bạn xem để hiểu rõ hơn.

        thay đổi sw1 có thể thay đổi tần số max là 800Hz sang 1,5MHz.
        mình viết xong code để đo chính xác 800Hz kia rồi, tuy nhiên khi bật sang tần số hàng MHz thì không đo được, mặc dù đã có lệnh sử lý trong code.
        "Bạn" nên thương những người già mắt kém , hình như vậy thì có Thiên lý nhãn cũng chẳng nhìn nổi !

        Dùng direct counter mà đếm ... tất cả có bấy nhiêu cơ bản tôi đã trình bày rồi ( chịu khó vào google mà tìm thêm ).
        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


        • #5
          vâng ^^ thanks anh nhiều nha ^_^

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          Đang tải...
          X