Thông báo

Collapse
No announcement yet.

Mạch đo tần số điện lưới dùng MCU

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

  • phucthinhel
    replied
    Lúc trước bạn nói bạn làm được mà ! thì mình cho bạn làm đó ! Mình rất thoải mái mà .Nói cho bạn rõ !
    Nếu dùng LCD thì thời gian update dử liệu sẽ tốn ít thời gian hơn là dùng Led đễ hiển thị ( nếu dùng phương pháp quét ) .
    Nếu dùng phương pháp đếm xung và dùng một bộ định thời với thời 1s thì cái đếm xung thì nó không được mức ưu tiên cao nhất vì sao ? Vì nếu dùng như thế thì lở cái xung vào nhanh wá thì vdk xử lý nó và sẽ không thể nào xử lý được các phần khác . Còn nếu dùng LCD thì sau 1s nó được cập nhật data một lần ( sai số ít hơn ) . Nếu dùng Led thì dùng timer để quát led cũng nên thận trọng trong wá trình xử lý ( nên khi quét led phải tính toán thật kỹ , nhiều khi ta còn phải offset cáo giá trị nữa ) .
    Nếu dùng mode counter thì không chính xác vì giá trị counter lúc này phụ thộc nhiều vào tần số thạch anh .
    Nên như mất you thấy bọn nước ngoài chúng không bao giờ đếm tần số cao đưa trực tiếp vào vdk cả mà phải wa một tầng nào đấy thì mới tới chân vào vdk .

    Leave a comment:


  • thaithutrang
    replied
    Nguyên văn bởi phucthinhel
    nếu không dùng ngắt thì nếu tần số nhập vào wá cao xem như Led tắt đèn , tối thui , cúp điện ! hi hi . Đã nói là nên dùng LCD rồi mà ! hi hi
    Hihi....bạn tính ra thời gian đi. Bạn nên xem lại tư duy lập trình của bạn. Và nên nói cụ thể hơn, chứ nói màko dẫn chứng được thì ko giá trị

    Leave a comment:


  • phucthinhel
    replied
    nếu không dùng ngắt thì nếu tần số nhập vào wá cao xem như Led tắt đèn , tối thui , cúp điện ! hi hi . Đã nói là nên dùng LCD rồi mà ! hi hi

    Leave a comment:


  • thaithutrang
    replied
    Nguyên văn bởi MicroDuyphi
    Lưu ý: Dùng ngắt đó nha, nên chuyện quyét LED xem như ko có và do đó mục đích chính của 8051 trong chuyện này vẫn là đo tần số.
    Việc quét led thì dùng giải pháp này sẽ ko bị chiếm dụng ảnh hưởng đến thời gian hay ngắt.
    Trong hàm main()
    {
    if(T2IF)
    {
    nạp giá trị phù hợp;
    quét led;
    T2IF=0;
    }
    ....
    }

    T2 là một timer nào đó, và ko dùng ngắt cho timer này. Tất nhiên nếu dùng ngắt T2 này cho 8951 cũng vẫn có thể được, bởi còn có giải pháp ưu tiên ngắt trong ngắt nữa đó.

    Leave a comment:


  • phucthinhel
    replied
    tùy bạn thôi ! Đối với mình thì điều đó không quan trọng .Vì mình là thế ! Sống bất cần đời mà ! hi hi

    Leave a comment:


  • MicroDuyphi
    replied
    Cách của TRANG như đã nói ở đầu đề là khá hay và mình cũng đã làm qua.
    Nhưng dùng đến 2 ngắt và điều cần quan tâm nữa là thời gian LATENCY của vi điều khiển nếu bạn quan tâm đến sai số và tần số cao!
    Một mạch thí nghiệm đơn giản để làm một máy đo tần số điện lưới là:
    Dùng một tranisistor C1815 + 8051
    C1815 có nhiệm vụ đổi dạng sóng sine ra vuông, rồi đưa vào ngắt ngoài INT0 hoặc INT1
    8051 dùng 2 ngắt: TIMER mode 8bit autoreload, tạo ra 1s.
    Và một ngắt ngoài INT0 hoặc INT1 để đếm xung, số xung này lưu trong 1 thanh ghi 8 bit-->Max 256 xung trong 1s. Như vậy cái Máy đo của chúng ta sẽ đo được một tần số lớn nhất là: Max_f=256Hz( tần số là số xung nhận được trong 1s).
    Latency của 8051 hình như 7-->9chu kỳ lệnh nên ko quan tâm đến sai số nữa, tạm bỏ qua ở giải đo này( chưa cần).
    Sau đó cho hiển thị lên 3 con LED 7 đoạn.
    Lưu ý: Dùng ngắt đó nha, nên chuyện quyét LED xem như ko có và do đó mục đích chính của 8051 trong chuyện này vẫn là đo tần số.

    Leave a comment:


  • thaithutrang
    replied
    http://dientuvietnam.net/forums/show...2909#post12909
    Bạn phucthinhel post bài tại luồng mình mới tạo nhé, các bài trên mình sẽ xóa vì ko hợp chủ đề

    Leave a comment:


  • phucthinhel
    replied
    Đừng tư tin như thế ! Mình không phải là wá bình thường !

    Leave a comment:


  • thaithutrang
    replied
    Vậy đề nghị bạn mở 1 luồng khác đi.Nó khó với bạn nhưng dễ với mình

    Leave a comment:


  • phucthinhel
    replied
    Vậy là bạn không hiểu rõ ý mình rồi ! Bây giờ bạy lấy tay quay cái encoder đó ! mà những cái encoder thì ma sát rất là thấp . Nên bây giờ mình dùng nó như là đếm tầng số như bạn đã nói thôi . Thì mình tính đơn giản thế này nhé một cái encoder quay có 300 xung vòng mà cho nó là 1s quay 10 vòng đi ( 3000 xung tương đương 3Khz thôi ) cho dễ nha . Mà U phai quay liên tục không được dừng nha , để đảm bảo thôi . Cách đo tầng số chủ yếu là đo số lần dao động trong 1s thôi mà ! .

    3T gì gì đó ! bạn nên làm thử một cái mạch đo tầng đi . Hiển thị bằng LCD , hay LED gì đó cũng được ( nhưng nên dùng LCD sai số thấp hơn ). Rồi bạn cũng sẽ gặp vấn đề nhưn mình đã từng gặp thôi . Mọi chuyện sẽ không hoàn toàn như lý thuyết đâu !

    Leave a comment:


  • thaithutrang
    replied
    Nguyên văn bởi phucthinhel
    Mình biết là như thế ! nhưng để vdk hoạt động thì cần đến bộ xử lý của nó ! bạn có thể làm thí nghiện như sau . Lấy một encoder nhé ! cở chừng 300 xung một vòng thôi ! bạn quay nó và hiển thị ra led . Cứ làm như thế nếu không làm thì suy nghĩ qua cũng không sao . Rồi bàn luận sau .
    Bạn nên tạo một luồng mới,mình sẽ hướng dẫn bạn cách làm tốt việt trên, bởi luồng này bàn về vấn đề khác. Bạn mở luồng và nói rõ yêu cầu của bạn, encoder có những lối ra nào(thường A,B, và Z), hiển thị ra vị trí hay tốc độ...Việc giải quyết tốt một bài toán phụ thuộc vào thiết kế phần cứng và phần mềm

    Leave a comment:


  • phucthinhel
    replied
    Mình biết là như thế ! nhưng để vdk hoạt động thì cần đến bộ xử lý của nó ! bạn có thể làm thí nghiện như sau . Lấy một encoder nhé ! cở chừng 300 xung một vòng thôi ! bạn quay nó và hiển thị ra led . Cứ làm như thế nếu không làm thì suy nghĩ qua cũng không sao . Rồi bàn luận sau .

    Leave a comment:


  • thaithutrang
    replied
    Nguyên văn bởi phucthinhel
    Mình nói câu này ! Cứ suy nghỉ nhé ! Trong một thời điểm thì vdk pic chỉ có thể chạy được một ứng dụng duy nhất thôi ! nên vì thế muốn dùng counter hay gì gì khác thì chĩ dùng nó để đảm bảo độ chính xác . còn nếu xen lẫn thì tính chính xác không còn cao nữa . Nếu bạn dùng LCD text để hiển thị thì sẽ cao hơn là dùng Led vì phải mất thời gian quét led trong khi quét led thì chúng ta đã mất đi một khoảng thời gian rồi ( tính chính xác còn đâu ? ) . Nên bọn nước ngoài nó thường dùng bộ đếm ngoài là vậy . còn nếu hiển thị thì nó dùng luôn LCD hay gì đó mà tốn ít thời gian cập nhật nhất .
    Vậy bạn chưa hiểu hoạt động của uC rồi.
    uC noi chung đều có những module hoạt động gần như độc lập với uC. Các lệnh trong bộ nhớ chương trình cứ thực thi,nhưng những module khác vẫn chạy song hành. uC chỉ can thiệp khi cần thiết.

    Leave a comment:


  • phucthinhel
    replied
    Mình nói câu này ! Cứ suy nghỉ nhé ! Trong một thời điểm thì vdk pic chỉ có thể chạy được một ứng dụng duy nhất thôi ! nên vì thế muốn dùng counter hay gì gì khác thì chĩ dùng nó để đảm bảo độ chính xác . còn nếu xen lẫn thì tính chính xác không còn cao nữa . Nếu bạn dùng LCD text để hiển thị thì sẽ cao hơn là dùng Led vì phải mất thời gian quét led trong khi quét led thì chúng ta đã mất đi một khoảng thời gian rồi ( tính chính xác còn đâu ? ) . Nên bọn nước ngoài nó thường dùng bộ đếm ngoài là vậy . còn nếu hiển thị thì nó dùng luôn LCD hay gì đó mà tốn ít thời gian cập nhật nhất .

    Leave a comment:


  • thaithutrang
    replied
    À, đó là chia tần chứ anh nhỉ?

    Leave a comment:

Về tác giả

Collapse

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

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

Collapse

Đang tải...
X