Thông báo

Collapse
No announcement yet.

có ai giúp em cách lập trình điều khiển dc dùng encoder ko?

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

  • #16
    Các bạn ơi cho mình hỏi tí được ko ? mình đang làm đồ án về robocon nhưng mình chưa hiểu lắm về encoder ở những vấn đề sau:

    + Nối dây tín hiệu của encoder vào P3.4 hay P3.5 đúng ko vậy các bạn?

    + Nếu encoder 1m đi được 5vòng tương ứng với 500xung(encoder 1 vòng 100 xung) vậy ta phải đưa giá trị của nó vào bộ Timer như thế nào? Mình đưa như thế này có đúng ko vậy ?
    mov TH0,# high(254)
    mov TL0,#low(11)
    cách làm:
    mình làm thế này 500xung la số Decimal mình đổi ra số Hexa 01F4H sau đó lấy FFFF-01F4 = FE0B . lúc này FE được đổi thành số decimal rồi đưa vào TH0, còn 0B thì được đưa vào TL0 .Làm như thế có đúng ko vậy các bạn hay là ta đưa trực tiêp 500xung vao TH0 và TL0 luon

    + Mình chưa hiểu về lập trinh ngắt cho encoder mình muốn đang thực hiện chương trình này mình muốn nhảy sang chương trình khác để làm rồi sau đó trở về chương trình chính làm tiêp .

    + MÌnh chưa hiểu về phương pháp để robốt dếm vạch khi qua vạch ngang

    Nếu anh em nào có bài lập trình cho robot tự động bằng ngôn ngữ assembly thì gửi cho mình tham khảo với nha. Hi Hi nhớ giải thích dùm mấy chỗ mình chưa hiểu với nha. Thanks các bạn nhiều nha

    Comment


    • #17
      Các bạn ơi mình đang cần gấp lắm . Nếu ai biết thì trả lời cho mình liền nha. Thanks anh em nhiều

      Comment


      • #18
        Các bác thạo về encoder có thể giúp bọn em được không ?Các bác có thể tạo một tutorrial hướng dẫn lập trình encoder cả bằng code C và asem ứng dụng cho Robocon chẳng hạn được không ?
        Em chân thành cảm ơn các bác

        Comment


        • #19
          mình củng dùnh phương pháp đếm xung theo cạnh. dùng avr có thể đếm cạnh lên hoặc cạnh xuống hoạc cả hai.Nhưng khi lập 1 gốc và cho động cơ đảo chiều liên tục thì vẩn bị lệch gốc. các bạn có cách nào giúp mình.

          Comment


          • #20
            Nguyên văn bởi tanvuong Xem bài viết
            Các bạn ơi cho mình hỏi tí được ko ? mình đang làm đồ án về robocon nhưng mình chưa hiểu lắm về encoder ở những vấn đề sau:

            + Nối dây tín hiệu của encoder vào P3.4 hay P3.5 đúng ko vậy các bạn?

            + Nếu encoder 1m đi được 5vòng tương ứng với 500xung(encoder 1 vòng 100 xung) vậy ta phải đưa giá trị của nó vào bộ Timer như thế nào? Mình đưa như thế này có đúng ko vậy ?
            mov TH0,# high(254)
            mov TL0,#low(11)
            cách làm:
            mình làm thế này 500xung la số Decimal mình đổi ra số Hexa 01F4H sau đó lấy FFFF-01F4 = FE0B . lúc này FE được đổi thành số decimal rồi đưa vào TH0, còn 0B thì được đưa vào TL0 .Làm như thế có đúng ko vậy các bạn hay là ta đưa trực tiêp 500xung vao TH0 và TL0 luon

            + Mình chưa hiểu về lập trinh ngắt cho encoder mình muốn đang thực hiện chương trình này mình muốn nhảy sang chương trình khác để làm rồi sau đó trở về chương trình chính làm tiêp .

            + MÌnh chưa hiểu về phương pháp để robốt dếm vạch khi qua vạch ngang

            Nếu anh em nào có bài lập trình cho robot tự động bằng ngôn ngữ assembly thì gửi cho mình tham khảo với nha. Hi Hi nhớ giải thích dùm mấy chỗ mình chưa hiểu với nha. Thanks các bạn nhiều nha
            ui má ơi , những điều căn bản về RBC ko nắm rõ thì sao dám gọi là " làm ĐA về RBC " đc u ?

            t ko biết u mún thắc mắc những j , nhưng điều căn bản khi đọc encoder là
            + Dùng bộ timer (vd timer0), khai báo ở chế độ counter , đưa tín hiệu encoder vào bộ counter này . Ở 89 thì counter 0 là chân T0(P3.4), counter 1 là T1(P3.5) ...
            + dùng bộ timer khác (vd timer1), khai báo chế độ timer (mode 8bit reload hay 16 bit j thì tùy) . Dùng để định thời gian đọc giá trị thanh ghi counter .

            vd : 200us , timer 1 tràn --> sinh ngắt , vào chưong trình ngắt lưu giá trị counter , thoát ngắt .

            - Vì sao phải dùng chân T0 làm counter mà ko dùng INT0 ?
            - Vì sao phải dùng thêm 1 bộ timer nữa để định thời gian đọc encoder ?

            Xin trả lời :
            - nếu dùng chân INT0 , thì liên tục xảy ra ngắt --> VDk còn làm đc chi nữa (dò đường , nâng trụ , bẻ góc .... ) ngoài việc vào ngắt rồi thoát , rồi lại vào ... ; chính dùng chân T0 đã giảm bớt thời gian cho VDK . có xung thì thanh ghi TH0 , TL0 cứ tăng , tăng khi nào đến 256 thì với báo ngắt , lúc đó VDK mới vào lưu giá trị .
            - Vậy thì có ng ngố ngố hỏi ,
            "cứ có ngắt tràn T0 là VDK vào lưu giá trị , đúng ko ?" . xin trả lời là sai . Nếu RB chạy chậm thì xung encoder có từ từ --> ngắt xảy ra ít . Nhưng nếu nó chạy 3m/s thì xin hỏi thời gian đâu nữa để VDK hoạt động , chưa kể encoder <100 xung đó nghe . --> ko nên cứ có ngắt là vào lưu giá trị TH0 , TL0 . Ta phải định thời gian lưu giá trị, dù có ngắt hay ko ngắt T0 .

            ai còn chưa theo kịp nữa ko ?

            Comment


            • #21
              Cảm ơn bác, bác có thể đưa ra một bài lập trình mẫu đơn giản về encoder từ khai báo đến xử lý tín hiệu không ? Thanks 4 all

              Comment


              • #22
                cách kết nối encoder với VDK thì e bít oy.
                nhưng bác nào có đoạn code về encoder thì cho e xin để tham khảo với nha.
                e ở trên núi nên ít có điều kiện tiếp xúc với nó lắm!!
                cảm ơn các bác nhìu
                email của e là: thaychuatimnico_155@yahoo.com.vn
                (]-[@]\[(-, |3i]< ]\[(-,@¥` ]v[@i Pv@ $@o ]\[µ@...
                |)µ` (o' Pv@ $@o (µ]\[(-, (]-[@]\[(-, $@o

                MỌI NGƯỜI CÙNG CHIA SẺ NÀO!!!!!!!!!

                Comment


                • #23
                  Hay thế ! Thank tất cả. Em đang nghiên cứu cái này

                  Comment


                  • #24
                    a co the gui cho e dc ko.
                    mail: vovantai89@gmail.com

                    Comment


                    • #25
                      Nguyên văn bởi Zz_Bi_zZ Xem bài viết
                      ui má ơi , những điều căn bản về RBC ko nắm rõ thì sao dám gọi là " làm ĐA về RBC " đc u ?

                      t ko biết u mún thắc mắc những j , nhưng điều căn bản khi đọc encoder là
                      + Dùng bộ timer (vd timer0), khai báo ở chế độ counter , đưa tín hiệu encoder vào bộ counter này . Ở 89 thì counter 0 là chân T0(P3.4), counter 1 là T1(P3.5) ...
                      + dùng bộ timer khác (vd timer1), khai báo chế độ timer (mode 8bit reload hay 16 bit j thì tùy) . Dùng để định thời gian đọc giá trị thanh ghi counter .

                      vd : 200us , timer 1 tràn --> sinh ngắt , vào chưong trình ngắt lưu giá trị counter , thoát ngắt .

                      - Vì sao phải dùng chân T0 làm counter mà ko dùng INT0 ?
                      - Vì sao phải dùng thêm 1 bộ timer nữa để định thời gian đọc encoder ?

                      Xin trả lời :
                      - nếu dùng chân INT0 , thì liên tục xảy ra ngắt --> VDk còn làm đc chi nữa (dò đường , nâng trụ , bẻ góc .... ) ngoài việc vào ngắt rồi thoát , rồi lại vào ... ; chính dùng chân T0 đã giảm bớt thời gian cho VDK . có xung thì thanh ghi TH0 , TL0 cứ tăng , tăng khi nào đến 256 thì với báo ngắt , lúc đó VDK mới vào lưu giá trị .
                      - Vậy thì có ng ngố ngố hỏi ,
                      "cứ có ngắt tràn T0 là VDK vào lưu giá trị , đúng ko ?" . xin trả lời là sai . Nếu RB chạy chậm thì xung encoder có từ từ --> ngắt xảy ra ít . Nhưng nếu nó chạy 3m/s thì xin hỏi thời gian đâu nữa để VDK hoạt động , chưa kể encoder <100 xung đó nghe . --> ko nên cứ có ngắt là vào lưu giá trị TH0 , TL0 . Ta phải định thời gian lưu giá trị, dù có ngắt hay ko ngắt T0 .

                      ai còn chưa theo kịp nữa ko ?
                      v


                      anh ơi em cũng đang mắc đoạn này, yêu cầu của em là đo tốc độ hiển thị 4 led 7 thanh nên phải dùng bộ đếm 16 bit nhưng em chưa biết viết chương trình kiểu gì để chia tín hiệu từ encoder vào chân p3.5 ra 8 bit cao và 8 bit thấp để xử lí tín hiệu
                      em đếm sau 1 khoảng thời gian đo thì lưu lại giá trị số xung vào TL và TH nhưng làm thế nào để lấy ra rồi thực hiện tính toán
                      khoảng thời gian đếm đó là lấy luôn chu kì ngắt của timer ko a? có cần thêm 1 timer nào nữa để định khoảng thời gian đo ko a?
                      tks a nhiều!

                      Comment


                      • #26
                        cho mình xin đề tài này với các bạn .hj

                        Comment

                        Về tác giả

                        Collapse

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

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

                        Collapse

                        Đang tải...
                        X