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.

          
Trang 1 của 4 123 ... CuốiCuối
Kết quả 1 đến 20 của 68

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

  1. #1
    Thợ bậc 6 CKD's Avatar
    Ngày tham gia
    Nov 2013
    Bài viết
    6,680
    Cám ơn
    1,733
    Được cám ơn 5,321 lần
           ở 2,595 bài viết

    Cool CKD - Arduino DC motor PID position controller DEMO Ver

    Mô hình thử nghiệm Arduino DC motor PID position controller

    Cảm ơn quà tặng của bác Gamo, phục vụ tinh thần ngâm rồi cứu.. í lộn nghiên cứu.
    Em sẽ cố.. để nó không phải cứu bác ạ.

    Click vào ảnh để xem ảnh lớn hơn. 

Name:	20141208-DSC_3115.jpg 
Views:	1 
Size:	661.2 KB 
ID:	5401
    DT: O7837277II - CKD's Youtube Channel - Facebook - Tổng hợp chủ đề
    17 ds 3, Thạnh Mỹ Lợi, Q2, tp.HCM

  2. #2
    Thợ bậc 6 CKD's Avatar
    Ngày tham gia
    Nov 2013
    Bài viết
    6,680
    Cám ơn
    1,733
    Được cám ơn 5,321 lần
           ở 2,595 bài viết
    Hôm nay test test thì thấy cái encoder nó không chuẩn lắm.. tháo ra thì thấy hơi bẩn. Lôi dụng cụ ra vệ sinh cái đĩa rồi chộp lại, quên mất là phải làm thêm 1 cái ảnh lúc chưa vệ sinh để so sánh

    Click vào ảnh để xem ảnh lớn hơn. 

Name:	20141215-DSC_9778.jpg 
Views:	1 
Size:	532.6 KB 
ID:	5402

    Vệ sinh bằng bộ dụng cụ này.
    Click vào ảnh để xem ảnh lớn hơn. 

Name:	20141215-DSC_9782.jpg 
Views:	2 
Size:	606.2 KB 
ID:	5403

    Xong vẫn chưa có time test lại xem thế nào.. vì bận lo spam diễn đàn
    DT: O7837277II - CKD's Youtube Channel - Facebook - Tổng hợp chủ đề
    17 ds 3, Thạnh Mỹ Lợi, Q2, tp.HCM

  3. #3
    Thợ bậc 6 CKD's Avatar
    Ngày tham gia
    Nov 2013
    Bài viết
    6,680
    Cám ơn
    1,733
    Được cám ơn 5,321 lần
           ở 2,595 bài viết
    Sau gần 4h hì hục đọc & code liên tục thì nhìn lại thấy sáng rồi (3h sáng), chốt lại thì motor đã quay. Rị mọ thử turnning hoài mà không mấy khã quan. Chán đi ngủ, sáng ra gần 9h thì ku em alo đánh thức, xong đi mãi tới chiều. Có sự động viên và thúc giục của bác Gamo cố quay cái clip, tới lui một hồi, cuối cùng nó cũng chiệu chạy thế này.
    Còn tồn động mấy vấn đề..
    - Xử lý chậm, nên chạy nhanh là out.
    - Dùng 12V để điều khiển motor áp danh định bao nhiêu V không biết (của bác Gamo tặng) nên điều khiển PWM nó không chạy như ý.
    - PID thì tạm tạm, xử lý như ý. Nhưng kết quả tệ vì phần công suất đánh giá không phù hợp, nên turning chạy lúc vầy lúc khác.

    Kết luận: phần nào hiểu được PID mà vài thứ linh tinh khác , nên có thể tạm gọi là nghiên cứu chứ không phải ngâm cứu .



    Có thời gian sẽ tiếp tục cải tiến & test tiếp.
    DT: O7837277II - CKD's Youtube Channel - Facebook - Tổng hợp chủ đề
    17 ds 3, Thạnh Mỹ Lợi, Q2, tp.HCM

  4. Có 7 thành viên đã cám ơn CKD cho bài viết hữu ích này:


  5. #4
    Spam killer Gamo's Avatar
    Ngày tham gia
    Apr 2014
    Bài viết
    7,149
    Cám ơn
    3,898
    Được cám ơn 1,518 lần
           ở 1,162 bài viết
    Hoho, 8 bit mà bác làm PID được thì quá dữ

  6. #5
    Thợ bậc 6
    Ngày tham gia
    Nov 2013
    Bài viết
    532
    Cám ơn
    63
    Được cám ơn 222 lần
           ở 151 bài viết
    Nhìn tay bác mà muốn cười, sờ cái motor mà cứ như sờ con gái, sợ bị ăn đòn hay sao mà cứ lưỡng lự thế.

  7. #6
    Spam killer Gamo's Avatar
    Ngày tham gia
    Apr 2014
    Bài viết
    7,149
    Cám ơn
    3,898
    Được cám ơn 1,518 lần
           ở 1,162 bài viết
    Em cũng thấy là hình như bác ấy quen tay, vân vân vê vê

  8. #7
    Thợ bậc 6 CKD's Avatar
    Ngày tham gia
    Nov 2013
    Bài viết
    6,680
    Cám ơn
    1,733
    Được cám ơn 5,321 lần
           ở 2,595 bài viết

    Cool CKD - Arduino DC PID position controller

    CKD - Arduino DC PID position controller
    - Arduino UNO (atmega328 - 16mHz).
    - L298 H bridge (2A, 36V).
    - encoder buffer 74HC14 (schmitt trigger inverter).
    - encoder 1000p/r
    - DC motor



    Dự là tìm thêm con DC điện áp thấp với cái encoder 200-500 p/r thôi
    DT: O7837277II - CKD's Youtube Channel - Facebook - Tổng hợp chủ đề
    17 ds 3, Thạnh Mỹ Lợi, Q2, tp.HCM

  9. Thành viên đã cám ơn CKD cho bài viết hữu ích này:


  10. #8
    Thợ bậc 6 CKD's Avatar
    Ngày tham gia
    Nov 2013
    Bài viết
    6,680
    Cám ơn
    1,733
    Được cám ơn 5,321 lần
           ở 2,595 bài viết
    Trích dẫn Gửi bởi lekimhung Xem bài viết
    Nhìn tay bác mà muốn cười, sờ cái motor mà cứ như sờ con gái, sợ bị ăn đòn hay sao mà cứ lưỡng lự thế.
    Trích dẫn Gửi bởi Gamo Xem bài viết
    Em cũng thấy là hình như bác ấy quen tay, vân vân vê vê
    Mấy bác thấy em thí nghiệm với cái motor mà lòng thì cứ nghĩ về cái chi chi. Buồn
    DT: O7837277II - CKD's Youtube Channel - Facebook - Tổng hợp chủ đề
    17 ds 3, Thạnh Mỹ Lợi, Q2, tp.HCM

  11. Thành viên đã cám ơn CKD cho bài viết hữu ích này:


  12. #9
    Spam killer Gamo's Avatar
    Ngày tham gia
    Apr 2014
    Bài viết
    7,149
    Cám ơn
    3,898
    Được cám ơn 1,518 lần
           ở 1,162 bài viết
    Trích dẫn Gửi bởi CKD Xem bài viết
    CKD - Arduino DC PID position controller
    - Arduino UNO (atmega328 - 16mHz).
    - L298 H bridge (2A, 36V).
    - encoder buffer 74HC14 (schmitt trigger inverter).
    - encoder 1000p/r
    - DC motor

    Dự là tìm thêm con DC điện áp thấp với cái encoder 200-500 p/r thôi
    Em có mấy con DC 200p/r, điện áp <5v, nhưng mà là step
    Lần sửa cuối bởi Gamo, ngày 18-12-2014 lúc 12:06:01 PM.

  13. #10
    Thợ bậc 3
    Ngày tham gia
    Nov 2013
    Bài viết
    49
    Cám ơn
    13
    Được cám ơn 23 lần
           ở 19 bài viết
    Thấy bác CKD hứng thú, và chịu khó update kiến thức quá . Mình tặng bác 1 em DC Servo . encoder 500 xung , điện áp 24 hoặc 36 tùy ý bác .
    Industry Research & Application Center.
    leduc_cktd@yahoo.com.vn
    CP:0909300332
    http://www.letech.vn

  14. #11
    Thợ bậc 6 CKD's Avatar
    Ngày tham gia
    Nov 2013
    Bài viết
    6,680
    Cám ơn
    1,733
    Được cám ơn 5,321 lần
           ở 2,595 bài viết
    Trích dẫn Gửi bởi LEDUC Xem bài viết
    Thấy bác CKD hứng thú, và chịu khó update kiến thức quá . Mình tặng bác 1 em DC Servo . encoder 500 xung , điện áp 24 hoặc 36 tùy ý bác .
    Ok. Thanks bác LEDUC.
    Mình sẽ liên hệ sau để nhận.
    DT: O7837277II - CKD's Youtube Channel - Facebook - Tổng hợp chủ đề
    17 ds 3, Thạnh Mỹ Lợi, Q2, tp.HCM

  15. #12
    Thợ bậc 6 CKD's Avatar
    Ngày tham gia
    Nov 2013
    Bài viết
    6,680
    Cám ơn
    1,733
    Được cám ơn 5,321 lần
           ở 2,595 bài viết
    Mới phát hiện ra ở VN có thể mua được con LM629...

    Features
    • 32-bit position, velocity, and acceleration registers
    • Programmable digital PID filter with 16-bit coefficients
    • Programmable derivative sampling interval
    • 8- or 12-bit DAC output data (LM628)
    • 8-bit sign-magnitude PWM output data (LM629)
    • Internal trapezoidal velocity profile generator
    • Velocity, target position, and filter parameters may be changed during motion
    • Position and velocity modes of operation
    • Real-time programmable host interrupts
    • 8-bit parallel asynchronous host interface
    • Quadrature incremental encoder interface with index pulse input
    • Available in a 28-pin dual in-line package or a 24-pin surface mount package (LM629 only)


    Giá tại TME cũng không chát lắm 95K/pcs
    DT: O7837277II - CKD's Youtube Channel - Facebook - Tổng hợp chủ đề
    17 ds 3, Thạnh Mỹ Lợi, Q2, tp.HCM

  16. Thành viên đã cám ơn CKD cho bài viết hữu ích này:


  17. #13
    Spam killer Gamo's Avatar
    Ngày tham gia
    Apr 2014
    Bài viết
    7,149
    Cám ơn
    3,898
    Được cám ơn 1,518 lần
           ở 1,162 bài viết
    Hix... bác mà phát hiện sớm hơn thì đỡ ghia )


    Em góp tí cho xôm tụ, vụ vân vân vê vê :x :x, DC servo 24v chạy 9v mà cũng "cứng" phết

    Lần sửa cuối bởi Gamo, ngày 22-12-2014 lúc 11:27:07 AM.

  18. Thành viên đã cám ơn Gamo cho bài viết hữu ích này:


  19. #14
    Thợ bậc 6 CKD's Avatar
    Ngày tham gia
    Nov 2013
    Bài viết
    6,680
    Cám ơn
    1,733
    Được cám ơn 5,321 lần
           ở 2,595 bài viết
    Cái mô hình hôm rồi em nóng vội. Chỉ quăng cái PID vào điều khiển position luôn nên nó có nhiều cái kém và khó kiểm soát .

    Có time em sẽ làm lại step by step xem có cải thiện được ko. Nếu không thì chắc em chán.. mà em chán thì em cho nó ngâm luôn quá .
    - PWM control (chỉnh lại tần số cho nó phù hợp với motor). Có thể phát triển thành analog control.
    - Torque control (hay nói cách khác là điều khiển dòng -> constant current - ổn dòng).
    - Speed hay velocity control (điều khiển tốc độ).
    Sau đó mới ghép lại thành chuổi thế này - position -> speed -> torque -> PWM không biết có đúng chưa nhỉ.

    Mà nếu ở khâu Torque và Speed đều có P, hoặc PI, hoặc PID thì khi lồng ghép lại thành chuổi thì có phải chỉnh P/I/D cho các khâu này không nhỉ?. Nó sẽ ảnh hưởng cả hệ thống như thế nào?. Bác Gamo có bí mật nào không, bật mí cho em với
    DT: O7837277II - CKD's Youtube Channel - Facebook - Tổng hợp chủ đề
    17 ds 3, Thạnh Mỹ Lợi, Q2, tp.HCM

  20. #15
    Spam killer Gamo's Avatar
    Ngày tham gia
    Apr 2014
    Bài viết
    7,149
    Cám ơn
    3,898
    Được cám ơn 1,518 lần
           ở 1,162 bài viết
    Hoho, mô hình của bác hôm trước có bị gì hả? Hình như bác chưa tune nó nên hội tụ lâu thôi hoặc do con Arduino của bác quá rùa ). Cũng có thể là do chú L298 phản ứng chậm nữa.

    Em cũng tính chơi analog control, trùm Nhật Sơn nhảy vào can => giờ quay lại PWM.
    Theo tai lieu em doc thi moi inner loop phai set thong so rieng cua no.
    Hôm trước em quẳng một lố tính năng vào: motion profile, PIV. Sau thấy tuning oải quá => dẹp hết, quay lại PID cơ bản. Đang tính vụ kiểm soát torque nữa mà con lười trong em đang thức dậy :X

    Em dự kiến là dùng Mach3 thì để nó kiểm soát tốc độ qua pulse, nhưng lý thuyết là dzậy, thực tế có ổn ko ta?
    Lần sửa cuối bởi Gamo, ngày 22-12-2014 lúc 12:11:26 PM.

  21. #16
    Thợ bậc 6 CKD's Avatar
    Ngày tham gia
    Nov 2013
    Bài viết
    6,680
    Cám ơn
    1,733
    Được cám ơn 5,321 lần
           ở 2,595 bài viết
    motion profile có phải là giản đồ vận tốc không bác Gamo?
    Thấy cái servo xịn nào nó cũng có tham số gia tốc hết. Mà muốn gắn vào cái PID thì phải làm thế nào.. cái này mới nghĩ tới nhưng chưa hiện thực được, nên cụ thể không biết.
    - analog control vẫn là PWM đó bác. Ý em là analog -> ADC -> PWM -> motor. Là mô hình kiểm tra. Khi dùng thì cứ PWM - Motor thôi.

    Cái mô hình của em thì chưa xác định rỏ nguyên nhân. Em có test trên 2 con motor.
    - con của anh có vẻ moment khá tốt, encoder sau khi vệ sinh cũng good, nhưng lực từ nó mạnh nên khi dừng.. lực từ tự quay motor về vị trí cân bằng từ.. nên nó không ổn định. Tự bản thân nó.. khi error = 0, PWM = 0.. thì motor tự quay theo từ trường stator . Vậy là PID lại nhảy vào sửa .. rồi lố nên nó cứ hunting.
    - con của em thì nó chạy chậm rất smooth, chạy và dừng đúng, ít hunting, turning Ok. Nhưng mỗi tội khi chạy nhanh thì PID nó khùng luôn. Chắc do encoder nó khùng vì xuất hiện lỗi khi đếm. Con Arduino UNO thì em đánh giá nó vẫn đủ tốc độ làm việc vì nó liên tục report thông tin về máy tính qua dường UART, nhưng pid thì nó liệt vụ này cũng chưa có time để kiểm tra.
    DT: O7837277II - CKD's Youtube Channel - Facebook - Tổng hợp chủ đề
    17 ds 3, Thạnh Mỹ Lợi, Q2, tp.HCM

  22. #17
    Spam killer Gamo's Avatar
    Ngày tham gia
    Apr 2014
    Bài viết
    7,149
    Cám ơn
    3,898
    Được cám ơn 1,518 lần
           ở 1,162 bài viết
    Éc... em hận motion profile )
    Vụ đó kinh nghiệm em test là mình phải có tuning riêng cho thằng V & A. Oải lắm. Chạy 1000 step thì mới thấy có tác dụng chứ chạy 1 step/pulse thì nó làm cho hunting. Muốn ko bị hunt thì phải tính velocity band => giá chót cũng 10 thông số nữa ) Còn ko thì dùng PID cho cả Velocity & Acceleration cũng được.

    Vụ encoder bị nhiễu cũng lằng nhằng ghê, ko biết loại encoder có bộ đệm thì có bị nhiễu ko bác?

  23. #18
    Thợ cả
    Ngày tham gia
    Nov 2013
    Bài viết
    5,915
    Cám ơn
    2,195
    Được cám ơn 3,263 lần
           ở 2,038 bài viết
    Trích dẫn Gửi bởi CKD Xem bài viết
    motion profile có phải là giản đồ vận tốc không bác Gamo?
    Thấy cái servo xịn nào nó cũng có tham số gia tốc hết. Mà muốn gắn vào cái PID thì phải làm thế nào.. cái này mới nghĩ tới nhưng chưa hiện thực được, nên cụ thể không biết.
    - analog control vẫn là PWM đó bác. Ý em là analog -> ADC -> PWM -> motor. Là mô hình kiểm tra. Khi dùng thì cứ PWM - Motor thôi.

    Cái mô hình của em thì chưa xác định rỏ nguyên nhân. Em có test trên 2 con motor.
    - con của anh có vẻ moment khá tốt, encoder sau khi vệ sinh cũng good, nhưng lực từ nó mạnh nên khi dừng.. lực từ tự quay motor về vị trí cân bằng từ.. nên nó không ổn định. Tự bản thân nó.. khi error = 0, PWM = 0.. thì motor tự quay theo từ trường stator . Vậy là PID lại nhảy vào sửa .. rồi lố nên nó cứ hunting.
    - con của em thì nó chạy chậm rất smooth, chạy và dừng đúng, ít hunting, turning Ok. Nhưng mỗi tội khi chạy nhanh thì PID nó khùng luôn. Chắc do encoder nó khùng vì xuất hiện lỗi khi đếm. Con Arduino UNO thì em đánh giá nó vẫn đủ tốc độ làm việc vì nó liên tục report thông tin về máy tính qua dường UART, nhưng pid thì nó liệt vụ này cũng chưa có time để kiểm tra.
    Uno xài atmeg328, con này ko có module đọc encoder AB, cụ đọc encoder theo pp nào ah?

    b.r

  24. #19
    Thợ cả
    Ngày tham gia
    Nov 2013
    Bài viết
    5,915
    Cám ơn
    2,195
    Được cám ơn 3,263 lần
           ở 2,038 bài viết
    Trích dẫn Gửi bởi Gamo Xem bài viết
    Éc... em hận motion profile )
    Vụ đó kinh nghiệm em test là mình phải có tuning riêng cho thằng V & A. Oải lắm. Chạy 1000 step thì mới thấy có tác dụng chứ chạy 1 step/pulse thì nó làm cho hunting. Muốn ko bị hunt thì phải tính velocity band => giá chót cũng 10 thông số nữa ) Còn ko thì dùng PID cho cả Velocity & Acceleration cũng được.

    Vụ encoder bị nhiễu cũng lằng nhằng ghê, ko biết loại encoder có bộ đệm thì có bị nhiễu ko bác?
    encoder tiêu chuẩn em thấy dùng 26ls31/32, dùng trực tiếp 3.3V thì 26lsv31/32

  25. Thành viên đã cám ơn nhatson cho bài viết hữu ích này:


  26. #20
    Thợ bậc 6 CKD's Avatar
    Ngày tham gia
    Nov 2013
    Bài viết
    6,680
    Cám ơn
    1,733
    Được cám ơn 5,321 lần
           ở 2,595 bài viết
    Trích dẫn Gửi bởi nhatson Xem bài viết
    Uno xài atmeg328, con này ko có module đọc encoder AB, cụ đọc encoder theo pp nào ah?
    Dùng ngắt ngoài bác ạ. Để hạn chế số lần đọc nên chỉ dùng ngắt cho kênh A, xử lý khi tín hiệu chuyển từ 0->1.

    Dùng ngắt để đọc cạnh lên kênh A, gọi hàm doEncoder.
    Hàm so sánh trạng thái kênh A & B để so sánh chiều quay, tính ra vị trí.
    A <> B -> count + 1; (CW)
    A == B -> count - 1; (CCW)

    Code trên arduino.
    Mã:
    ..
    void doEncoder()
    {
      if (digitalRead(encoderPinA) != digitalRead(encoderPinB))
      {
        Input ++;
      }
      else
      {
        Input --;
      }
    }
    DT: O7837277II - CKD's Youtube Channel - Facebook - Tổng hợp chủ đề
    17 ds 3, Thạnh Mỹ Lợi, Q2, tp.HCM

Trang 1 của 4 123 ... CuốiCuối

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
  •