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 2 của 4 Đầu tiênĐầu tiên 1234 CuốiCuối
Kết quả 21 đến 40 của 68

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

  1. #21
    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
    em nghĩ kiểu này ko ổn ah, nên dùng timer quét sẽ ổn hơn


  2. #22
    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
    to cụ gamo, lão tiền bối của DC servo, cái này mới gọi là bậc thày, chia sẽ từ những ngày thông tin còn hạn chế, sử dụng linh kiện ở mức thấp nhất
    http://www.elm-chan.org/works/smc/report_e.html
    Lần sửa cuối bởi nhatson, ngày 22-12-2014 lúc 04:36:29 PM.

  3. #23
    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
    Oi, iu bac Nhat Son thia :x :x :x Sao em kiem nhieu ma ko ra tai lieu chi tiet the nay ;x

    CKD: bac choi ARM ko, em tang bac 1 board? Cam doan la do mat cong hon khi doc encoder )
    (Mat cong cai khac ))
    Lần sửa cuối bởi Gamo, ngày 22-12-2014 lúc 04:35:13 PM.

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


  5. #24
    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
    Lần sửa cuối bởi nhatson, ngày 22-12-2014 lúc 04:35:49 PM.

  6. #25
    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 ELM-Chan với cái UHU nó gần giống nhau.
    Rất nhiều ver đã được các bác bên tây âu thực hiện, cấu hình thấp nhất là Atmega8 chạy 16MHz.
    Theo đánh giá của tụi ấy thì.. ứng dụng khá tốt. Và có rất nhiều bác DIY xong lắp lên CNC chạy quay clip mà thấy kinh hồn.

    @nhatson
    Theo bác không ổn là thế nào?.

    Theo hiểu biết nông cạn thì có nhiều cách đọc encoder trực tiếp trên VXL.
    - Cách bèo nhèo mà ai cũng biết là đọc thông qua đường input thông thường.
    - Kế tiếp là qua ngắt ngoài như mình làm.
    - Kế nữa là qua counter.

    Ưu & nhược thì..
    với cách 1 thì dể suy nghĩ, và dùng cái pin input nào cũng Ok. Nhưng nhanh là out ngay vì phụ thuộc vào thời gian lặp của chương trình.
    với cách 2 thì không bỏ xung nào (trừ trường hợp nhanh quá). Nhưng nếu tốc độ quá nhanh thì chiếm quá nhiều thời gian để đọc encoder. Không còn thời gian để xử lý PID hoặc làm việc gì khác.
    với cách 3 nghĩ là tối ưu hơn cả. Nhưng việc count+ hay count- chưa có nhiều kinh nghiệm sử dụng nên chưa dám dùng. Thường thì với cách này nên xử lý tín hiệu A/B thành pulse/dir rồi đọc thì thuận tiện hơn. Việc xử lý này dùng ic số thông thường cũng được, dùng ic chuyên dùng cũng được.

    Do đó nếu dùng cách 2 thì với encoder số xung ít cho hiệu quả hơn, motor chạy tốc độ vừa phải là xử lý kịp.

    Theo sư cụ ELM-Chan thì.. idle time còn tới 62% cơ mà. Và với encoder 400ppr (1600cpr) thì motor có thể chạy Max tới 3900rpm.
    DT: O7837277II - CKD's Youtube Channel - Facebook - Tổng hợp chủ đề
    17 ds 3, Thạnh Mỹ Lợi, Q2, tp.HCM

  7. #26
    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 này của 1 bác châu Âu làm.. hình như là Nga thì phải.
    Click vào ảnh để xem ảnh lớn hơn. 

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

  8. #27
    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
    @Gamo
    Gì chứ vụ cho hay tặng là em đều nhận hết bác ạ. Em là em sợ phụ lòng những người quan tâm đến mình. Nên cám ơn bác trước.

    Nhưng em xin khất thời gian ạ. Em thích thử nghiệm từ những cái lỡm trước rồi mới tiến từ từ. Có thể cái lỡm nó làm khó mình hơn, nhưng như thế trải nghiệm được nhiều thứ hơn ạ. Khi nào rỗi em xin qua anh thọ giáo và nhận quà ARM sau ạ.
    DT: O7837277II - CKD's Youtube Channel - Facebook - Tổng hợp chủ đề
    17 ds 3, Thạnh Mỹ Lợi, Q2, tp.HCM

  9. #28
    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
    Cái ELM-Chan với cái UHU nó gần giống nhau.
    Rất nhiều ver đã được các bác bên tây âu thực hiện, cấu hình thấp nhất là Atmega8 chạy 16MHz.
    Theo đánh giá của tụi ấy thì.. ứng dụng khá tốt. Và có rất nhiều bác DIY xong lắp lên CNC chạy quay clip mà thấy kinh hồn.

    @nhatson
    Theo bác không ổn là thế nào?.

    Theo hiểu biết nông cạn thì có nhiều cách đọc encoder trực tiếp trên VXL.
    - Cách bèo nhèo mà ai cũng biết là đọc thông qua đường input thông thường.
    - Kế tiếp là qua ngắt ngoài như mình làm.
    - Kế nữa là qua counter.

    Ưu & nhược thì..
    với cách 1 thì dể suy nghĩ, và dùng cái pin input nào cũng Ok. Nhưng nhanh là out ngay vì phụ thuộc vào thời gian lặp của chương trình.
    với cách 2 thì không bỏ xung nào (trừ trường hợp nhanh quá). Nhưng nếu tốc độ quá nhanh thì chiếm quá nhiều thời gian để đọc encoder. Không còn thời gian để xử lý PID hoặc làm việc gì khác.
    với cách 3 nghĩ là tối ưu hơn cả. Nhưng việc count+ hay count- chưa có nhiều kinh nghiệm sử dụng nên chưa dám dùng. Thường thì với cách này nên xử lý tín hiệu A/B thành pulse/dir rồi đọc thì thuận tiện hơn. Việc xử lý này dùng ic số thông thường cũng được, dùng ic chuyên dùng cũng được.

    Do đó nếu dùng cách 2 thì với encoder số xung ít cho hiệu quả hơn, motor chạy tốc độ vừa phải là xử lý kịp.

    Theo sư cụ ELM-Chan thì.. idle time còn tới 62% cơ mà. Và với encoder 400ppr (1600cpr) thì motor có thể chạy Max tới 3900rpm.
    báo cáo cụ dùng ngắt thì bị dính vấn để jitter của encoder + khi motor hunting , MCU sẽ chạy ctrinh đọc encoder liên lục
    dùng timer quét sẽ tránh khỏi tình trạng trên,

    em cũng ủng hộ a/b > pluse/dir hoạc cw/ccw, nhưng vậy mạch sẽ phức tạp vì cần logic ngoài, hoặc dùng cpld sẽ tiện hơn


    nhưng túm lại ELM có cách đây > 15 năm lúc đó 32bit motor control đắt đỏ, giò thì có khởi đầu em nghĩ vẫn nên dúng người đúng việc

    b.r
    Lần sửa cuối bởi nhatson, ngày 22-12-2014 lúc 05:14:11 PM.

  10. #29
    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
    Hehe, nguyên nhân em dụ bác dùng ARM là vì em vốn là tín đồ STC 8051, sau khi xài ARM rồi ko bao giờ quay đầu nhìn lại )

    Con STC 8051 chạy nhanh (1 cycle, 35Mhz), có ADC, có PWM, có đủ hết, chỉ có cái tội 8-bit ) Khi em đọc encoder phải dùng long => chậm, ram ít nên phải optimize => tốn trí não. Chuyển qua xài ARM thì rất nhiều khó khăn biến mất. Chỉ có cái tội là thằng ARM cho customize nhiều quá nên mới đụng vào đa số mọi người chắc chạy hết vì thấy phức tạp quá so với 8-bit.
    Lần sửa cuối bởi Gamo, ngày 22-12-2014 lúc 05:43:45 PM.

  11. #30
    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
    Hehe, nguyên nhân em dụ bác dùng ARM là vì em vốn là tín đồ STC 8051, sau khi xài ARM rồi ko bao giờ quay đầu nhìn lại )

    Con STC 8051 chạy nhanh (1 cycle, 35Mhz), có ADC, có PWM, có đủ hết, chỉ có cái tội 8-bit ) Khi em đọc encoder phải dùng long => chậm, ram ít nên phải optimize => tốn trí não. Chuyển qua xài ARM thì rất nhiều khó khăn biến mất. Chỉ có cái tội là thằng ARM cho customize nhiều quá nên mới đụng vào đa số mọi người chắc chạy hết vì thấy phức tạp quá so với 8-bit.

    em đang đổi qua stm32, ref manual có 1200 trang thaoi
    nói chú chỉ tập trung mấy module mình cần khai thác thôi, máy cái ko dùng khi nào dùng thì đọc ah

    ít tốn trí nảo thì dùng C2000 + vissim, mô hình hoá > biên dịch > nạp code> chạyyyyy

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

  12. #31
    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
    Hehe. Đúng là thế bác ạ.

    Mình làm trên nền arduino tại vì mình có sẵn đồ, mua mấy cái shield cũng sẵn và dễ, không cần phải vẽ hay làm mạch. Và mấy cái board arduino đó cũng làm được nhiều trò. Cộng với suy nghĩ làm để vui và hiểu thêm các vấn đề khác nên không quá câu nệ việc hiệu quả sử dụng sau này. Cứ cái nào thấy có sẵn là bụp bụp

    Mà arduino nó cũng đã phát triển các board dùng 32bit rồi. Như
    - Arduino Due với atSAM3x8E ARM Cortex-M3, 32bit, 84MHz.
    Click vào ảnh để xem ảnh lớn hơn. 

Name:	ArduinoDue_Front_450px.jpg 
Views:	120 
Size:	123.5 KB 
ID:	5389
    - LeafLabs Maple Rev3 với STM32F103RB ARM Cortex-M3, 32bit, 72MHz.
    Click vào ảnh để xem ảnh lớn hơn. 

Name:	maple_rev3.png 
Views:	119 
Size:	174.9 KB 
ID:	5390
    - http://en.wikipedia.org/wiki/List_of...atible_systems
    Cho nên chắc rồi cũng sẽ nâng cấp lên ARM sớm thôi ạ.

    Nhiều khi thấy mình làm vớ vẫn cũng phí time và xiền bác ạ. Nhưng bù lại khi làm được và hiểu được thì cũng vui thật. Khi đó thì lại có cái để mà chém gió với các bác nữa . Mà làm mấy cái này.. cũng do bác nào đó hay khích.. nói có sách, mách có chứng.. Mà tính mình thì hay nói và thích nói nhiều, nên mình làm được thì sau này chém gió mới có cái mà dẫn chứng đấy ạ. Mượn từ google hoài cũng không được hehe.

    Với nữa là bác Gamo làm bằng chip 32bit mà cũng từ từ.. mình làm 8bit mà chạy được thì.. bác ấy mới nể chứ ạ
    DT: O7837277II - CKD's Youtube Channel - Facebook - Tổng hợp chủ đề
    17 ds 3, Thạnh Mỹ Lợi, Q2, tp.HCM

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


  14. #32
    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, đúng là nể ông thiệt á, vẫn chưa hiểu ông xoay xở làm sao với 8-bit )

  15. #33
    Thợ bậc 6
    Ngày tham gia
    Nov 2013
    Đang ở
    TP.TDM-Bình Dương
    Bài viết
    327
    Cám ơn
    69
    Được cám ơn 88 lần
           ở 65 bài viết
    Em cũng ham món này lém, hiện tại em đã sưu tầm được vài loại Diy DC servo driver: DsPIC servo (open source trên CNCZONE), UHU (mua chip về DIY) và cái còn lại của 1 chuyên gia về DIY DC servo ở HCM, em test thì đánh giá thể này:
    DsPIC servo: Chạy tốc độ không cao, tầm 30kHz cao hơi nữa là tracking error.
    UHU controller: cái này có khá hơn theo lí thuyết là hơn 300000 khuyến cáo là 150kHz nhưng em chạy thực tế tầm 80~100khz là tracking error rồi. Khổ nỗi mấy con motor ngon của em toàn 2500 xung nên chạy tốc độ không cao được
    Cuối cùng là driver của Chuyên gia: cái này tốt nhất và em muốn cải tiến DsPIC servo theo,
    Driver của Chuyên gia: manual nói là có thể chạy tốt với enc từ 50~5000ppr và em test thấy nó OK.
    So sánh thấy có 1 cải tiến quan trọng là dùng 2 con VXL để tăng tốc độ xử lí, em đang băn khoăn là dùng cách nào để giao tiếp giữa 2 con VXL với tốc độ cao: dùng SPI, UART hay là CAN ah?
    Mong các bác đóng góp cao kiến ah

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


  17. #34
    Nam Sờ Pín
    Ngày tham gia
    Nov 2013
    Bài viết
    6,623
    Cám ơn
    1,712
    Được cám ơn 3,655 lần
           ở 2,275 bài viết
    chuyên gia nào ??? Phúc Bồ hả ?
    Nguyễn Hoàng Nam
    n_h_n2002@yahoo.com DT: 0908415648

  18. #35
    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 ghoang Xem bài viết
    Em cũng ham món này lém, hiện tại em đã sưu tầm được vài loại Diy DC servo driver: DsPIC servo (open source trên CNCZONE), UHU (mua chip về DIY) và cái còn lại của 1 chuyên gia về DIY DC servo ở HCM, em test thì đánh giá thể này:
    DsPIC servo: Chạy tốc độ không cao, tầm 30kHz cao hơi nữa là tracking error.
    UHU controller: cái này có khá hơn theo lí thuyết là hơn 300000 khuyến cáo là 150kHz nhưng em chạy thực tế tầm 80~100khz là tracking error rồi. Khổ nỗi mấy con motor ngon của em toàn 2500 xung nên chạy tốc độ không cao được
    Cuối cùng là driver của Chuyên gia: cái này tốt nhất và em muốn cải tiến DsPIC servo theo,
    Driver của Chuyên gia: manual nói là có thể chạy tốt với enc từ 50~5000ppr và em test thấy nó OK.
    So sánh thấy có 1 cải tiến quan trọng là dùng 2 con VXL để tăng tốc độ xử lí, em đang băn khoăn là dùng cách nào để giao tiếp giữa 2 con VXL với tốc độ cao: dùng SPI, UART hay là CAN ah?
    Mong các bác đóng góp cao kiến ah
    nếu là của anh phucnd thì dùng 2 con, em nghĩ la lí do là trước đây MCU ko có moudle QIE , nên đọc encoder là vấn đề , dùng 2 MCU hoặc CPLD sẽ giải quyết được
    DSPIC dòng 33 hoặc mấy con ARM7 có QIE và đủ nhanh để chạy trên 1 MCU

    giao tiếp MCU ~ MCU em nghĩ i2c tốc độ ~ 4mhz hoặc SPI >10mhz >hiệu quả hơn

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

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


  20. #36
    Thợ bậc 7
    Ngày tham gia
    Feb 2014
    Bài viết
    747
    Cám ơn
    222
    Được cám ơn 293 lần
           ở 188 bài viết
    Em không biết bác dùng mấy con PIC thì có cái gì tốc độ cao không nhưng nếu STM32 thì có FSMC tốc độ từ 30Mhz đến 60Mhz. Đặc biệt STM32F429/439 còn có FMC tốc độ 90Mhz. Mấy cái FSMC/FMC chuyên để giao tiếp RAM, LCD, FPGA nên tốc độ cao lắm

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


  22. #37
    Thợ bậc 6
    Ngày tham gia
    Nov 2013
    Đang ở
    TP.TDM-Bình Dương
    Bài viết
    327
    Cám ơn
    69
    Được cám ơn 88 lần
           ở 65 bài viết
    Trích dẫn Gửi bởi nhatson Xem bài viết
    nếu là của anh phucnd thì dùng 2 con, em nghĩ la lí do là trước đây MCU ko có moudle QIE , nên đọc encoder là vấn đề , dùng 2 MCU hoặc CPLD sẽ giải quyết được
    DSPIC dòng 33 hoặc mấy con ARM7 có QIE và đủ nhanh để chạy trên 1 MCU

    giao tiếp MCU ~ MCU em nghĩ i2c tốc độ ~ 4mhz hoặc SPI >10mhz >hiệu quả hơn

    b.r
    Đúng là driver của bác Phúc ah, module đọc enc trên DsPIC là QEI (Quadrature Encoder Interface) không phải QIE .
    Theo em tính toán với encoder là 2500 cài đặt QEI nhân xung là 4, động cơ quay 3000rpm = 50rps -> tần số encoder = 500Khz. Em đặt PID loop (bằng ngắt timer) 100us thì vẫn bảo đảm đọc tốt encoder nhưng khi chạy thì có vấn đề, tiếc là em không theo đuổi nó nữa nên đến giờ vẫn chưa có gì tiến triển (làm không được nên nản )

    UHU chip nói có enhanced PID nhưng không biết nó là cái gì? Có khác PID thường không nữa?

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


  24. #38
    Thợ bậc 6
    Ngày tham gia
    Nov 2013
    Đang ở
    TP.TDM-Bình Dương
    Bài viết
    327
    Cám ơn
    69
    Được cám ơn 88 lần
           ở 65 bài viết
    Trích dẫn Gửi bởi itanium7000 Xem bài viết
    Em không biết bác dùng mấy con PIC thì có cái gì tốc độ cao không nhưng nếu STM32 thì có FSMC tốc độ từ 30Mhz đến 60Mhz. Đặc biệt STM32F429/439 còn có FMC tốc độ 90Mhz. Mấy cái FSMC/FMC chuyên để giao tiếp RAM, LCD, FPGA nên tốc độ cao lắm
    có nhiều cái tốt hơn nhưng em thì lại theo không kip nên xài cái gì mình biết thôi ah

  25. #39
    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
    digital chán roài thì đổi bộ môn về analog + logic gate ah



    Lần sửa cuối bởi nhatson, ngày 23-12-2014 lúc 04:14:50 PM.

  26. #40
    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 ghoang Xem bài viết
    Đúng là driver của bác Phúc ah, module đọc enc trên DsPIC là QEI (Quadrature Encoder Interface) không phải QIE .
    Theo em tính toán với encoder là 2500 cài đặt QEI nhân xung là 4, động cơ quay 3000rpm = 50rps -> tần số encoder = 500Khz. Em đặt PID loop (bằng ngắt timer) 100us thì vẫn bảo đảm đọc tốt encoder nhưng khi chạy thì có vấn đề, tiếc là em không theo đuổi nó nữa nên đến giờ vẫn chưa có gì tiến triển (làm không được nên nản )

    UHU chip nói có enhanced PID nhưng không biết nó là cái gì? Có khác PID thường không nữa?
    500khz, em nghĩ là cần dùng đến chip 26ls31/ls32
    Lần sửa cuối bởi nhatson, ngày 23-12-2014 lúc 04:11:13 PM.

Trang 2 của 4 Đầu tiênĐầu tiên 1234 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
  •