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

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

    help me em sáp nộp đồ an rùi but chua bit cach làm có anh nào bit chi em cách lập trình đi .khi lấy signal tu encoder rồi xủ lí nó nhu thế nào đây có ai bit giúp dùm đi

  • #2
    Hiện tôi có cả schematic, PCB lẫn mã nguồn (asm) để chạy con AT89S52.
    Mạch gồm 3 cái SW: Chạy tới, dừng và chạy lui; 3 số LED 7 đoạn hiển thị
    xung trong 1 giây. Đão chiều motor bằng relay, điều chỉnh tốc độ motor
    theo cách điều rộng khổ xung (PWM). Mạch đơn giản không có hồi tiếp
    để ổn định tốc độ và không có giải mã cho bộ encoder (quadrature clock
    converter).
    Nếu cần thì cho biết.

    Comment


    • #3
      bạn haidien oi! có thể gửi cho mình ct điều chỉnh tốc độ motor theo cách điều rộng khổ xung đc ko? tks nhiều lắm đang cần gấp lắm... có gì send cho tui nhé ( ms.cuong@gmail.com)

      Comment


      • #4
        Nguyên văn bởi zhiliang Xem bài viết
        help me em sáp nộp đồ an rùi but chua bit cach làm có anh nào bit chi em cách lập trình đi .khi lấy signal tu encoder rồi xủ lí nó nhu thế nào đây có ai bit giúp dùm đi
        Bài toán xử lý encoder là bài toán chung cho mọi vi điều khiển thôi. Cách mà tôi làm như sau:
        1. Thứ nhất bạn đưa chân tin hiệu vào chân ngắt ngoài của vi điều khiển (thường được kí hiệu là INT0, INT1, ...)
        2. Enable ngắt, có một biến đếm là biến toàn cục, tăng giá trị biến đếm trong chương trình ngắt.
        3. Sử dụng một timer, mỗi lần timer ngắt tràn thực hiện xử lý giá trị xung đếm được, gán biến đếm bằng 0 để bắt đầu chu ký mới.

        Chúc bạn thành công
        http://techpal.vn
        Chia sẻ công nghệ, cùng thành công

        Comment


        • #5
          Xử lý tín hiệu encoder? Nếu chỉ làm 1 nhiệm vụ giải mã thì không cần bất cứ ngắt nào
          cả. Vấn đề quan trọng ở đây là phase của 2 xung clock từ bộ encoder mà theo lý thuyết
          là lệch nhau 90 độ. Người ta phân biệt được chiều chuyển động cũng dựa vào yếu tố
          lệch phase này. Thí dụ nếu clk A sớm phase hơn clk B thì chuyển động theo chiều kim
          đồng hồ và ngược lại. Mà đã nói đến sớm trễ phase thì phải nói đến thời gian, thời gian
          ở đây bao gồm cả quá khứ, hiện tại và tương lai. Phải thỏa đủ 3 điều kiện về thời gian
          như trên mới giải mã 1 cách chính xác.

          Chương trình điều rộng khổ xung (PWM):
          Ta chia chu kỳ của tín hiệu điều rộng xung ra làm 2 phần: Có xung và không có xung.
          Ta bắt đầu với độ rộng xung nhỏ nhất là 1/255 (8 bit), phần không có xung là 254/255.
          Giờ ta tăng độ rộng xung thêm 1 là 2/255 thì phần khong có xung là 253/255. Cứ thế
          mà tiếp tục. Hai phần của một chu kỳ ta nạp vào TH0 hoặc TH1 (tùy theo sử dụng timer
          nào). Thí dụ ta đang xử lý ngắt timer_x trong phần có xung của chu kỳ thì ta nạp giá trị
          của phần không có xung vào THx (lưu ý là timer phải chạy mode 8 bit auto reload) để
          timer chạy đến giá trị nạp trong THx thì nó tạo ra 1 interrupt. Ngược lại thì giá trị có xung
          vào THx. Sau đây là đoạn chương trình viết bằng hợp ngữ (nhớ khai báo các
          biến, ...):

          IsrTimer0:
          PUSH ACC
          PUSH PSW
          JNB RunFlag, MotorOff
          MotorOn:
          JB MotorFlag, MotorOff ; Nếu motor đang on thì off
          CLR PWM ; Ngược lại thì on
          MOV TH0, DutyCycleComp ; Giá trị nạp lại cho thời gian ngừng
          SETB MotorFlag ; kích hoạt motor (tắt)
          POP PSW
          POP ACC
          RETI

          MotorOff:
          SETB PWM ;
          MOV TH0, DutyCycle ; Giá trị nạp lại cho thời gian kích
          CLR MotorFlag ; hoạt motor (chu trình tác động)
          POP PSW
          POP ACC
          RETI

          Nếu bạn nào có gì hay hơn thì góp vào cho vui

          Comment


          • #6
            các anh các chị giúp em với

            anh chi nào có sơ đồ khối TV đen trăng cho em với
            em đang cần lắm
            cảm ơn nhiều nha!

            Comment


            • #7
              Cho em xin phan mem voi

              Em cung đang làm đồ án như vậy đó
              Bác cho em xin giải thuật nhé
              mail của em là thanh_ffx@yahoo.com

              Comment


              • #8
                Theo tôi biết thì chỉ cần nối 2 dây tín hiệu của Encoder vào 2 chân bất kỳ của VDK rồi dùng timer để đếm số xung và tính tốc độ động cơ mà không cần đưa vào ngắt .
                Bây giờ nếu muốn biết chiều của động cơ ta phải làm j???
                Tôi đưa ra thuật toán thế này các bạn xem có được ko nhé :
                - trong Timer ta sẽ đếm số xung (khỏang 1ms chẳng hạn thì kiểm tra các chân tín hiệu một lần)
                - trong Timer ta cũng kiểm tra xem xung A , B xung nào có trước rồi set một cái cờ để nhớ kết quả (gọi là cờ chiều quay)
                Ai đã làm rồi thì cho ý kiến nhé và nhớ post chương trình lên cho anh em tham khảo

                Comment


                • #9
                  Tôi cũng đang quan tâm về phần điều độ rộng xung để đk motor 1 chiều, bạn haidien có thể send cho tôi cả code asm và schematic được kô? Thank nhiều nhiều !!!!!

                  Comment


                  • #10
                    Tôi cũng đang quan tâm về phần điều độ rộng xung để đk motor 1 chiều, bạn haidien có thể send cho tôi cả code asm và schematic được kô? Thank nhiều nhiều !!!!!
                    Mai: npgiang@gmail.com

                    Comment


                    • #11
                      Điều khiển tốc độ động cơ DC

                      Nguyên văn bởi gpsvn Xem bài viết
                      Tôi cũng đang quan tâm về phần điều độ rộng xung để đk motor 1 chiều, bạn haidien có thể send cho tôi cả code asm và schematic được kô? Thank nhiều nhiều !!!!!
                      Mai: npgiang@gmail.com
                      Đây là schematic, PCB, code:
                      Attached Files

                      Comment


                      • #12
                        Tôi đã từng làm qua mạch đếm xung encoder bằng cách đếm mức cao thấp của xung A và B, kết quả là chạy một chiều thì được nhưng khi đảo chiều nhiều lần (nhất là cần giữ vị trí của servo) thì đếm bị sai.
                        Tôi đã làm mạch khác đếm theo cạnh xung A, B. Kết quả có thể nói đúng tuyệt đối. Tôi đã ứng dụng để làm bo điều khiển cữ NC cho máy cắt tôn, máy chấn tôn, máy đột dập CNC. Bo có thể điều khiển DC servo hay AC dùng Inverter đều được. Ai quan tâm thì mail cho tôi thi221096@yahoo.com
                        Cái gì không mua được bằng tiền thì có thể mua được bằng ... nhiều tiền

                        Comment


                        • #13
                          Mình cũng đang tìm hiểu cách lập trình điều khiển dc dùng encoder, bạn haidien hoặc ai có bài này có thể gửi cho mình được ko? cám ơn nhiều.
                          mail: phutuanhd@gmail.com

                          Comment


                          • #14
                            Không biết là bạn quan tâm cụ thể khâu nào. Khâu điều khiển tốc độ (servo driver) hay là khâu điều khiển vị trí?
                            Bộ driver mình chỉ sử dụng hàng có sẵn thôi chứ chưa tự làm bộ nào. Nếu bạn thích hãy tham khảo sơ đồ nguyên lý DC Servo driver của Fanuc.
                            Trong sơ đồ này, bộ F-V converter có thể thay bằng tachometer gắn ở đuôi motor.
                            Mình chỉ làm được bộ điều khiển vị trí thôi, sử dụng lại DC servo motor và DC servo driver cũ.
                            Attached Files
                            Cái gì không mua được bằng tiền thì có thể mua được bằng ... nhiều tiền

                            Comment


                            • #15
                              Nguyên văn bởi haidien Xem bài viết
                              Hiện tôi có cả schematic, PCB lẫn mã nguồn (asm) để chạy con AT89S52.
                              Mạch gồm 3 cái SW: Chạy tới, dừng và chạy lui; 3 số LED 7 đoạn hiển thị
                              xung trong 1 giây. Đão chiều motor bằng relay, điều chỉnh tốc độ motor
                              theo cách điều rộng khổ xung (PWM). Mạch đơn giản không có hồi tiếp
                              để ổn định tốc độ và không có giải mã cho bộ encoder (quadrature clock
                              converter).
                              Nếu cần thì cho biết.
                              chao!minh dang rat can tai lieu do ban gui cho minh duoc ko.dia chi mail:duc_diep85@yahoo.com

                              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