Thông báo

Collapse
No announcement yet.

Reset encoder trong PIC18f4431

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

  • Reset encoder trong PIC18f4431

    Tôi dọc datasheet của con pic18f4431 ở phần encoder thấy hình như ta không thể dùng phần mềm để reset encoder về 0, mà giá trị của nó là ngẫu nhiên khi mới mở nguồn lên. Điều này thật bất tiện khi tôi muốn ban đầu phải đếm encoder từ giá trị 0. Có bạn nào đã làm về encoder cho hỏi có cách nào để cho module encoder của pic18f4431 đếm bắt đầu từ 0 không?

    Encoder của tôi nó ghi Resolution 100 P/R giá trị này có phải là khi encoder quay hết 1 vòng là 100 xung không ?

  • #2
    Nguyên văn bởi bluechip Xem bài viết
    Tôi dọc datasheet của con pic18f4431 ở phần encoder thấy hình như ta không thể dùng phần mềm để reset encoder về 0, mà giá trị của nó là ngẫu nhiên khi mới mở nguồn lên. Điều này thật bất tiện khi tôi muốn ban đầu phải đếm encoder từ giá trị 0. Có bạn nào đã làm về encoder cho hỏi có cách nào để cho module encoder của pic18f4431 đếm bắt đầu từ 0 không?

    Encoder của tôi nó ghi Resolution 100 P/R giá trị này có phải là khi encoder quay hết 1 vòng là 100 xung không ?
    Tôi không tìm thấy chỗ nào viết rằng không thể ghi vào các thanh ghi POSCNTH và POSCNTL, do đó tôi giả thiết rằng bạn vẫn có thể ghi vào các thanh ghi này bất kỳ lúc nào bạn muốn. Bạn hãy viết code và thử nghiệm.

    Encoder của bạn đúng là sẽ tạo ra 100 xung sau mỗi vòng quay.

    Thân,
    Biển học mênh mông, sức người có hạn

    Comment


    • #3
      Thank Namqn! đọc tài liệu thấy nó ghi là khi reset thì giá trị trong nó là không xác định, mà tôi lại hiểu là không thể ghi vào được thật là ngớ ngẩn quá........ Tôi đã thử rồi quả thật là ghi vào được. nhưng lại phát sinh thêm 1 chuyện này nữa:
      -Tôi cho POSCNTL=0,POSCNTH=0;đặt giá trị reset vào thanh ghi MAXCNTL,MAXCNTH là 2000 xung sẽ reset thì khi mở nguồn lên nó lại hiển thị giá trị khoảng dao động quanh số 0 là 1 hoặc 1999 hoặc 2000, vậy có cách nào để khi mở nguồn lên thì nó phải hiện đúng giá trị mình đặt ban đầu là 0000 không? tôi đoán nguyên nhân gây ra chuyện này là do sự lệch pha A với pha B gây ra.

      tiện đây anh cho hỏi về module encoder của pic tại sao lại có 2 chế độ x2 và x4 so với giá trị thực, mục đích để làm gì?

      nếu như tôi có 2 encoder thì có thể sử dụng module này để đếm xung của nhiều encoder không?

      Hình như module encoder có chế độ đo tốc độ nữa phải không, nguyên tắc hoạt động của nó như thế nào anh có thể cho tôi mô tả sơ sơ không tôi đọc rồi mà chưa hiểu phần này lắm.

      Comment


      • #4
        muốn nó về 0000 thì bác nạp giá trị này vào khi pic khởi động là được

        mode x2 x4 để tăng độ phân giải encoder, mà ko cần tăng về cơ khí. >>> về nguyên lí càng nhiều xung trên vòng cáng tốt ah

        néu đo dồng thời1 QIE chỉ dùng cho 1 encoder thôi ah, muốn dùng 2 cái kiếm con có 2 moudle QEI ah. nếu đo gián đoạn thi okies, nhưng em nghĩ cần thêm phần cứng bên ngoài

        do tốc độ bằng 2 cách,

        nếu quay nhanh thì theo công thức số xung/ thời gian >> tốc độ

        nếu quay chậm cần 1 xung phụ chuẩn khi dó sẽ do được time di hết 1 xung encoder>> tốc dộ
        Last edited by nhatson.elec; 30-03-2009, 14:17.

        Comment


        • #5
          Nguyên văn bởi bluechip Xem bài viết
          Thank Namqn! đọc tài liệu thấy nó ghi là khi reset thì giá trị trong nó là không xác định, mà tôi lại hiểu là không thể ghi vào được thật là ngớ ngẩn quá........ Tôi đã thử rồi quả thật là ghi vào được. nhưng lại phát sinh thêm 1 chuyện này nữa:
          -Tôi cho POSCNTL=0,POSCNTH=0;đặt giá trị reset vào thanh ghi MAXCNTL,MAXCNTH là 2000 xung sẽ reset thì khi mở nguồn lên nó lại hiển thị giá trị khoảng dao động quanh số 0 là 1 hoặc 1999 hoặc 2000, vậy có cách nào để khi mở nguồn lên thì nó phải hiện đúng giá trị mình đặt ban đầu là 0000 không? tôi đoán nguyên nhân gây ra chuyện này là do sự lệch pha A với pha B gây ra.

          tiện đây anh cho hỏi về module encoder của pic tại sao lại có 2 chế độ x2 và x4 so với giá trị thực, mục đích để làm gì?

          nếu như tôi có 2 encoder thì có thể sử dụng module này để đếm xung của nhiều encoder không?

          Hình như module encoder có chế độ đo tốc độ nữa phải không, nguyên tắc hoạt động của nó như thế nào anh có thể cho tôi mô tả sơ sơ không tôi đọc rồi mà chưa hiểu phần này lắm.
          Tôi cho là bạn nên dùng thêm các bộ lọc nhiễu cho các ngõ vào của module QEI (thiết lập giá trị thích hợp cho thanh ghi DFLTCON). Nếu động cơ của bạn không chạy thì bạn cũng có thể ngầm hiểu là POSCNT = 0, và không đọc giá trị của thanh ghi POSCNT.

          Các ý khác thì tôi đồng ý với bạn nhatson.elec.

          Phần chế độ đo tốc độ, chẳng qua đó là một mạch phần cứng hiện thực thao tác đọc giá trị timer sau mỗi sự kiện đo tốc độ (và reset timer về 0). Bạn có thể chọn chế độ x2 (có 1 sự kiện đo tốc độ ở mỗi cạnh của QEA) hay chế độ x4 (có 1 sự kiện đo tốc độ ở mỗi cạnh của QEA hay QEB). Cách làm này cho phép đo tốc độ chính xác ở dải tốc độ thấp, vì thời gian giữa các sự kiện đo tốc độ là tương đối dài, nên sẽ tính tốc độ = số vòng tương ứng với một sự kiện đo tốc độ / thời gian giữa hai sự kiện tốc độ liên tiếp.

          Ở dải tốc độ cao, số sự kiện đo tốc độ sẽ rất nhiều, do đó PIC18F4x31 hỗ trợ giảm số sự kiện đo tốc độ bằng bộ chia trước. Tốc độ vẫn sẽ được tính như trên, nhưng giá trị "số vòng tương ứng với một sự kiện đo tốc độ" sẽ lớn hơn so với trường hợp trên (chẳng hạn, nếu dùng prescale 1:64 thì sau 64 cạnh của QEA, ở chế độ x2, mới có một sự kiện đo tốc độ).

          Thân,
          Biển học mênh mông, sức người có hạn

          Comment


          • #6
            xin các pro giúp đỡ. thank nhiều!

            Em đang làm đồ án. Dùng con pic 18f4431 điều khiển tốc độ của 2 con DC12v. dùng encoder phản hồi. em đang mắc ở vấn đề điều chế đuty cycle. đại hiệp nào biết thì chỉ em với. chi tiết vào nhé. tốt nhất là có 1 doạn code mẫu. xin cám ơn các đại hiệp nhiều.( cách điều chế duty cycle)

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            Đang tải...
            X