Thông báo

Collapse
No announcement yet.

Hỏi về đếm xung encoder dùng ngắt ngoài

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

  • Hỏi về đếm xung encoder dùng ngắt ngoài

    Em đang viết chương trình điều khiển 2 encoder dùng thuật toán PID, cho em hỏi để đo được xung 2 encoder thì mình dung 2 ngắt ngoài và 1 bộ timer để định thời phải không ạ?
    VD em có động cơ encoder độ phân giải là 24, tần số 144Hz, tốc độ 6 vòng/s thì nên code định thời cho timer như thế nào ạ? Em đọc nhiều tài liệu rồi mà vẫn chưa hiểu cách tạo định thời theo ý mình, như bài này em muốn định thời 50us thì code thế nào ạ? mn giúp e với

  • #2
    Dạ ngày trước cháu có nghe lỏm được 1 xíu của chị hàng xóm nhà cháu ạ. Cái tham mơ nó đếm từ 0 đến giá trị max của nó thì nó báo cho mcu 1 cái ạ. Thời gian nó đếm tăng thêm 1 cái là 4 lần tgian của chu kỳ thạch anh ạ ví dụ chú dùng thạch anh 4 mê thì tgian timer nó đếm là 4 x 1÷4 triệu = 1 ns. Cái timer ấy nó là 1kb thì sẽ chứa được đến 1023 là sẽ ngắt ạ. Chú đặt giá trị ban đầu cho đếm là 23 thì cái timer đếm thêm 1000 cái là nó ngắt tức là 1000ns=1us. Chú cần 50us thì chạy thêm 1 biến trung gian nữa mỗi khi ngắt cộng cho biến trung gian 1 đơn vị cứ 5 lần như thế là đủ 50us rùi ạ....

    Comment


    • #3
      Nguyên văn bởi D_Son Xem bài viết
      Em đang viết chương trình điều khiển 2 encoder dùng thuật toán PID, cho em hỏi để đo được xung 2 encoder thì mình dung 2 ngắt ngoài và 1 bộ timer để định thời phải không ạ?
      VD em có động cơ encoder độ phân giải là 24, tần số 144Hz, tốc độ 6 vòng/s thì nên code định thời cho timer như thế nào ạ? Em đọc nhiều tài liệu rồi mà vẫn chưa hiểu cách tạo định thời theo ý mình, như bài này em muốn định thời 50us thì code thế nào ạ? mn giúp e với
      Khai báo 2 timer đọc xung ngoài của 2 encode cấp(ví dụ là timer0 và timer1), 1 timer đọc xung trong và dùng ngắt(ví dụ là timer2). Tùy theo tần số thạch anh mà nạp giá trị tương ứng cho tiner2 ngắt 50us. Xóa timer0&1, khởi động ngắt timer2, cho chạy tất cả timer, chờ ngắt timer2 thì tắt đọc timer0&1 đọc xung ngoài. Tiến hành đọc giá trị timer0&1.

      Comment

      Về tác giả

      Collapse

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

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

      Collapse

      Đang tải...
      X