Thông báo

Collapse
No announcement yet.

Đo khoảng di chuyển sử dụng thước di chuyển với động cơ điện một chiều

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

  • Đo khoảng di chuyển sử dụng thước di chuyển với động cơ điện một chiều

    Các bạn cho mình hỏi:
    Mình muốn đo di chuyển theo hai trục (sử dụng hai động cơ DC), mình sử dụng Atmega 8535(tương tự như Atmega 16), vậy theo các bạn chân cẳng (ngắt ngoài, timer...) của con vi điều khiển này có đủ để mình thực hiện. Nếu không đủ, theo các bạn mình nên giải quyết vấn đề này như thế nào.
    Cám ơn!

  • #2
    2 trục có di chuyển đồng thời ko ah? thước là thước dì ah?

    b/r

    Comment


    • #3
      đO DI CHUYỂN MINH SỬ DUNG MOTTJ CAI THƯỚNG NHƯ KIỂU ENCODER. Đầu ra cũng là hai tín hiệu, lệch nhau 90 độ, mình định dùng ngắt ngoài của timer/counter để đếm số lần ngắt trong một đơn vị thời gian, rồi suy ra khoảng cách...nhưng mình phải đo di chuyển của 2 động cơ, mà con 8535 này lại chỉ có 3 bộ timer, 2 bộ mình dùng cho 2 động cơ này thì hết mất, vì mình còn dùng 1 bộ timer để tạo thời gian đếm, hơn nữa mình còn phải dùng 1 bộ nữa để làm việc khác. Liệu sử lí thế nào nhỉ? các bạn cho hỏi: dùng lệnh delay để tạo thời gian đếm có được ko?
      có chính xác bằng sử dụng timer hay không nhỉ?
      Cám ơn!

      Comment


      • #4
        cái của bác có cần xác định chiều ko nhi? có 1pp là chuyển tử xung AB sang xung step dir, như vậy sẽ đỡ tốn timer hơn.

        còn nếu mình làm thì mình sẽ dùng mỗi trục 1 con MCU thì okies ah. làm 1 truc thôi được cả 2 vì 2 cái giống nhau mà , dỡ băn khoăn

        b/r

        Comment


        • #5
          Nguyên văn bởi kok_kok_kok Xem bài viết
          đO DI CHUYỂN MINH SỬ DUNG MOTTJ CAI THƯỚNG NHƯ KIỂU ENCODER. Đầu ra cũng là hai tín hiệu, lệch nhau 90 độ, mình định dùng ngắt ngoài của timer/counter để đếm số lần ngắt trong một đơn vị thời gian, rồi suy ra khoảng cách...nhưng mình phải đo di chuyển của 2 động cơ, mà con 8535 này lại chỉ có 3 bộ timer, 2 bộ mình dùng cho 2 động cơ này thì hết mất, vì mình còn dùng 1 bộ timer để tạo thời gian đếm, hơn nữa mình còn phải dùng 1 bộ nữa để làm việc khác. Liệu sử lí thế nào nhỉ? các bạn cho hỏi: dùng lệnh delay để tạo thời gian đếm có được ko?
          có chính xác bằng sử dụng timer hay không nhỉ?
          Cám ơn!
          Bạn đã chắc phương án chưa? Nếu cần 4 timer thì chỉ việc đổi qua con mega162.
          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


          • #6
            Cảm ơn bạn NHATSON.ELEC, nếu mình dùng 2 con MCU thì mình dùng 8051 cung đcj, nhưng cái chính là mình muốn tất cả cùng xử lí trên một con.
            Bạn VNarmy ơi cho minh hỏi con mega126 có gì khác nhiều hơn so với mega16 không? (số timer nhiều hơn, tất nhiên rối, nhưng : cách nạp, giá thành khoảng bao nhiêu nhỉ, mua dễ hay khó nhỉ, ... )
            Minh đã đọc qua datasheet thấy con này có 4 bộ timer nhưng vì đây là con vdk mình chưa làm bao giờ nên cũng hơi "lạnh gáy" chỉ sợ nó khác nhiều so với mega16, mình quen dùng con này mà

            Comment


            • #7
              Các bạn cho mình hỏi thuật toán đo di chuyển sử dụng encoder, mình sử dụng ngắt ngoài, mỗi lần ngắt tương đương với động cơ quay đcj x độ, sau đó đọc số lần ngắt -> khoảng di chuyển. PP này có ổn không nhỉ?

              Comment


              • #8
                nếu như bạn cần 2 couter để đếm encode và 2 timer thì chỉ cần 3 cái timer cũng đủ để xài rồi (tuy nhiên thời gian đặt của 2 timer này sẽ không được mịn như là sử dụng timer của phần cứng).
                bạn dung 2 timer để đếm xung từ encode là ok rồi chứ.
                dùng timer còn lại, cho chạy tràn và ngắt, giá trị của timer này sẽ là độ phân giải của 2 cái timer bạn cần xài (hay nó là một đơn vị thời gian cho 2 cái timer này).
                bạn cần 2 biến để đếm, mỗi biến cho một timer. cứ ngắt là tăng hai biến này lên.
                như vậy là bạn đã có được 2 timer soft từ 1 timer hard rồi nhé.
                và nếu cần thêm thì bạn chỉ việc tăng thêm số biến này. muốn mở rộng đến vài chục cũng được.

                Comment


                • #9
                  Nguyên văn bởi kok_kok_kok Xem bài viết
                  Các bạn cho mình hỏi thuật toán đo di chuyển sử dụng encoder, mình sử dụng ngắt ngoài, mỗi lần ngắt tương đương với động cơ quay đcj x độ, sau đó đọc số lần ngắt -> khoảng di chuyển. PP này có ổn không nhỉ?
                  bạn đưa 2 chân xung của encode vào 2 chân đếm của 2 timer/counter, set cho nó chạy ở chế độ counter xung ngoài. như vậy là nó tự đếm rồi. bạn chỉ việc đọc giá trị về rồi so sánh thôi. còn không thì đặt giá trị cho mấy cái thanh ghi compare rồi set interrupt, đếm đủ là nó ngắt...

                  thân!

                  Comment

                  Về tác giả

                  Collapse

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

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

                  Collapse

                  Đang tải...
                  X