1. Chú ý: Các bạn nên tham khảo Nội quy trước khi viết bài (click vào liên kết bên dưới).
    * Nội quy và Thông báo diễn đàn CNCProVN.com
    * Nếu bạn thấy hứng thú với bài viết. Hãy dùng chức năng Share to facebook để chia sẻ bài viết lên facebook.

          
Kết quả 1 đến 20 của 68

Chủ đề: CKD - Arduino DC motor PID position controller DEMO Ver

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #31
    Thợ cả
    Ngày tham gia
    Nov 2013
    Bài viết
    5,894
    Cám ơn
    2,195
    Được cám ơn 3,269 lần
           ở 2,043 bài viết
    Trích dẫn Gửi bởi CKD Xem bài viết
    Báo cáo:
    - Một chu kỳ lệnh đếm encoder mất 6us
    - Một chu kỳ lệnh tính PID mất 90us.

    Về lý thuyết khi dùng ngắt (interrupt)
    Nếu encoder là 1000ppr thì vận tốc maximum mà vlx đếm không sai (bỏ khã năng nhiểu) là <10000rpm. Nên việc đếm encoder là không phải lo .
    Tuy nhiên.. cuộc chơi không chỉ có vậy, ngoài việc đếm encoder thì còn phải tính PID... An toàn nhất là thời gian giữa 2 lần đếm encoder phải bao gồm luôn thời gian tính PID. Khi đó tổng thời gian cần là 96us. Vẫn với encoder 1000ppr thì vận tốc max đạt được là <625rpm.

    * 1000ppr -- < 625 rpm
    * 500ppr -- < 1250 rpm
    * 250ppr -- < 2500 rpm

    Nhìn vào thấy quá chậm . Tại sao chậm.. từ đầu bác Nhất Sơn & Gamo đã chỉ rỏ.
    - Tốc độ của vxl chậm, mà phần lớn các phép toán dều tính trên fload (4byte) nên mất nhiều thời gian xử lý và tính toán.
    - Arduino dùng atmega328, không tích hợp module đếm encoder nên mất thêm thời gian xử lý đếm encoder.
    - Dùng ngắt (interrupt) nên thời gian đếm encoder được ưu tiên, do đó càng mất nhiều thời gian khi vận tốc motor lớn. Theo tính toán ở trên thì với encoder 1000ppr, nếu motor chạy >625rpm thì vxl sẽ chỉ tập trung vào xử lý đếm encoder, lơ là việc tính PID, vận tốc tiếp tục tăng nhanh sẽ bỏ qua luôn việc tính PID.

    Chuyển qua đọc encoder bằng counter thì tốc độ & độ kiểm soát có thể được cải thiện .. lại cần time, nên cứ từ từ .

    Em tối ưu được mô hình điều khiển chạy trên chip rùa.. mà Ok thì.. nâng lên ARM thì chắc phải chạy xé gió bác Gamo nhỉ

    Bác Nhất Sơn có thể góp ý giúp.. vụ đo dòng trên motor (hoặc trên cuộn dây) với ạ. Nếu dùng chính vxl và kênh AD có sẵn thì có thể đo được ko?
    encoder 1 là dùng thêm cpld hoặc ic chuyên dụng để đếm, tốc độ cụ CKD tính ra hay là dùng OSC kiểm tra, kinh nghiệm thấy là count lệnh lúc nào cũng nhanh hơn so với đo thực tế
    và có cho là thực tế đi chăng nữa thì cũng sẽ lấy giá trị 1/2 thôi ah

    còn adc em nhớ là của mega cở 100k , em là ko đủ nhanh
    bảo vệ quá dòng em nghĩ cụ có thể dùng opam/comparator để bảo vệ

    b.r
    Lần sửa cuối bởi nhatson, ngày 29-12-2014 lúc 07:45:46 PM.

Các Chủ đề tương tự

  1. DIY - Arduino LCD shield
    Bởi CKD trong diễn đàn Arduino
    Trả lời: 11
    Bài viết cuối: 28-04-2016, 04:55:31 PM
  2. Demo Step Driver DRV8711 [ Hunter_dt]
    Bởi hunter_dt trong diễn đàn Driver Step motor
    Trả lời: 24
    Bài viết cuối: 29-06-2014, 02:34:58 PM
  3. Controller 4 trục
    Bởi hadenki trong diễn đàn Break Out Board, Controller
    Trả lời: 5
    Bài viết cuối: 31-12-2013, 10:22:18 PM
  4. Step motor Controller/Driver
    Bởi hadenki trong diễn đàn Driver Step motor
    Trả lời: 0
    Bài viết cuối: 27-12-2013, 11:11:25 AM

Tag của Chủ đề này

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •