Thông báo

Collapse
No announcement yet.

Tốc độ ngắt của uC Atmega 32l là bao nhiêu???

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

  • Tốc độ ngắt của uC Atmega 32l là bao nhiêu???

    em có 1 encoder 1000 xung/vòng, gắn vào trục động cơ để đo tốc độ của động cơ, em dùng chương trình ngắt để đọc xung, động cơ dc 43 vòng / phút.
    em dùng int0 để nhận xung và lấy cạnh xuống(falling), chương trình ngắt em tăng biến lên mỗi khi có tín hiệu ngắt.sau 10ms em lấy kết quả 1 lần.nhưng em không đọc được giá trị chính xác như ước lượng.
    Và có phải là tốc độ ngắt của Atmega 32 L không đủ nhanh để đáp ứng không?? .
    em quay thử encoder thật chậm thì 1 vòng đạt được khoảng 980-985 xung.
    các anh có thể tư vấn cho em được không??. Em có đọc phần interrupt trong datasheet của nó, nhưng hổng thấy đề cập đến tốc độ hay tần số ngắt gì hết híc híc.
    |

  • #2
    Người ta thường dùng bộ counter. Khi dùng ngắt, tốc độ nhanh hay chậm còn phụ thuộc vào bạn viết chương trình thế nào trong ngắt.

    Comment


    • #3
      cảm ơn cường đã quan tâm, trong chương trình ngắt mình chỉ đặt lệnh tăng giá trị biến count hoặc giảm giá trị biến count tùy vào chiều quay của encoder.
      mình đặt timer sau 10 ms lấy giá trị biến, để tính được số xung nhận được và mình có thể tính được vận tốc của động cơ. v=count/10.
      mình dùng thạch anh 8mHz cho uC của mình, sau đó mình thay bằng thạch anh 12MHz nhưng hình như cũng chẳng thay đổi gì. híc híc
      |

      Comment


      • #4
        Nguyên văn bởi skeleton Xem bài viết
        em có 1 encoder 1000 xung/vòng, gắn vào trục động cơ để đo tốc độ của động cơ, em dùng chương trình ngắt để đọc xung, động cơ dc 43 vòng / phút.
        em dùng int0 để nhận xung và lấy cạnh xuống(falling), chương trình ngắt em tăng biến lên mỗi khi có tín hiệu ngắt.sau 10ms em lấy kết quả 1 lần.nhưng em không đọc được giá trị chính xác như ước lượng.
        Và có phải là tốc độ ngắt của Atmega 32 L không đủ nhanh để đáp ứng không?? .
        em quay thử encoder thật chậm thì 1 vòng đạt được khoảng 980-985 xung.
        các anh có thể tư vấn cho em được không??. Em có đọc phần interrupt trong datasheet của nó, nhưng hổng thấy đề cập đến tốc độ hay tần số ngắt gì hết híc híc.
        Tôi dùng ngắt capture đếm vài k ko chệch phát nào với 32 thường và TA 10M.
        AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
        Xem thêm tại Online Store ---> Click here
        Mob: 0982.083.106

        Comment


        • #5
          Nguyên văn bởi skeleton Xem bài viết
          cảm ơn cường đã quan tâm, trong chương trình ngắt mình chỉ đặt lệnh tăng giá trị biến count hoặc giảm giá trị biến count tùy vào chiều quay của encoder.
          mình đặt timer sau 10 ms lấy giá trị biến, để tính được số xung nhận được và mình có thể tính được vận tốc của động cơ. v=count/10.
          mình dùng thạch anh 8mHz cho uC của mình, sau đó mình thay bằng thạch anh 12MHz nhưng hình như cũng chẳng thay đổi gì. híc híc
          Mỗi Timer cũng đồng thời là 1 bộ counter nên theo mình, dùng 1 timer (timer0 chẳng hạn) để tạo thời gian chuẩn 10ms, dùng 1 bộ counter ( counter1 chẳng hạn) để đếm xung bên ngoài được đưa trực tiếp vào chân T1, như vậy thì bạn chẳng cần quan tâm đến AVR có đủ nhanh hay không (). Trước mình có hỏi các cao thủ trên diễn đàn, các bác ấy có thể dùng AVR để đếm tần số tới...vài chục Mhz lận.
          Mình cũng làm việc với encoder,động cơ quay với tốc độ cỡ 3100v/p và xung encoder 1024 xung/vòng, tính ra tần số cỡ 53khz. Với tốc độ này, mình nghĩ dùng counter là ổn, đã làm và thấy oke.
          Last edited by mrcuongcon; 15-06-2009, 01:31.

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          Đang tải...
          X