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 2 12 CuốiCuối
Kết quả 1 đến 20 của 25

Chủ đề: [Hỏi]: làm thế nào để code STM32F4 đếm xung step và direction?

  1. #1
    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

    [Hỏi]: làm thế nào để code STM32F4 đếm xung step và direction?

    Hi all
    Em đang diy ac servo driver sử dụng STM32F4 làm vi xử lí trung tâm nhận step dir&encoder và giao tiếp với STM32F1 để phát PWM cho cầu H, hiện tại em đang dùng ngắt ngoài để nhân step dir nhưng không thành công, cứ có ngắt từ step dir là F4 và F1 không truyền dữ liệu cho nhau được
    Giờ em muốn đếm step dir bằng hardware trên F4 sử dụng timer ở chế độ encoder mode 1, mong anh em ai làm qua cái này cho em chút ý kiến tham khảo
    Thank in advance
    Lần sửa cuối bởi ghoang, ngày 02-07-2016 lúc 03:25:20 PM.
    SDT: 078.423.4424.
    Email: giangxuanhoang@gmail.com.

  2. #2
    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
    1. Protocol truyền dữ liệu giữa 2 con bác dùng là gì?
    2. Tại sao phải dùng 2 con MCU chi cho mất công vậy? Mình dùng STM32F1 cho servo driver thấy nó đã overkill rồi
    3. Bác dùng chân gì để nhận step/dir & chân gì để truyền dữ liệu?

    Sử dụng timer để nhận step/dir cũng được nhưng phí thời gian xử lý & chưa chắc chính xác
    Lần sửa cuối bởi Gamo, ngày 02-07-2016 lúc 11:21:28 AM.

  3. #3
    Thợ cả
    Ngày tham gia
    Nov 2013
    Bài viết
    5,915
    Cám ơn
    2,195
    Được cám ơn 3,264 lần
           ở 2,039 bài viết
    cho em hỏi là tại sao phải truyền dữ liệu từ F4 sang F1 nhỉ?

  4. #4
    Thợ bậc 7 duonghoang's Avatar
    Ngày tham gia
    Nov 2013
    Đang ở
    Pleiku-Gialai
    Bài viết
    660
    Cám ơn
    555
    Được cám ơn 377 lần
           ở 178 bài viết
    --- Em nghĩ step dir bác phải dùng Interrupts mới xử lý được chứ, bác update giá trị step dir vào các thanh ghi timer nó nhận giá trị nhưng ko xử lý trực tiếp luôn được nên có thể gây chậm trễ quá trình xử lý. Em có mấy cái link sử dụng encoder mode bác xem thử:

    http://www.micromouseonline.com/2013...h-the-stm32f4/
    http://aimagin.com/blog/using-timercounter/
    Email: duonghoang05@gmail.com
    Mobile: 0988467839

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


  6. #5
    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 Gamo Xem bài viết
    1. Protocol truyền dữ liệu giữa 2 con bác dùng là gì?
    2. Tại sao phải dùng 2 con MCU chi cho mất công vậy? Mình dùng STM32F1 cho servo driver thấy nó đã overkill rồi
    3. Bác dùng chân gì để nhận step/dir & chân gì để truyền dữ liệu?

    Sử dụng timer để nhận step/dir cũng được nhưng phí thời gian xử lý & chưa chắc chính xác
    1. Dùng UART ah
    2. Đếm encoder 17 bit nên cần con mạnh ah
    3. Step là PA8 còn dir là PA9, UART là PA2 va PA3
    Em muốn đếm bằng encoder mode không phải timer ah, đọc manual con STM32 thi đúng là có thể đếm step dir nhưng thực tế lại khác, có lẽ tài liệu có bug

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

Name:	STM32.png 
Views:	40 
Size:	22.5 KB 
ID:	22014

    Dự án này em chỉ sửa lại code thôi a
    Cho thêm cái clip, đang trong quá trình ngâm cứu nên hơi chuối

    SDT: 078.423.4424.
    Email: giangxuanhoang@gmail.com.

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


  8. #6
    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
    cho em hỏi là tại sao phải truyền dữ liệu từ F4 sang F1 nhỉ?
    Để cách lí phần điêu khiển và công suất ah
    SDT: 078.423.4424.
    Email: giangxuanhoang@gmail.com.

  9. #7
    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 duonghoang Xem bài viết
    --- Em nghĩ step dir bác phải dùng Interrupts mới xử lý được chứ, bác update giá trị step dir vào các thanh ghi timer nó nhận giá trị nhưng ko xử lý trực tiếp luôn được nên có thể gây chậm trễ quá trình xử lý. Em có mấy cái link sử dụng encoder mode bác xem thử:

    http://www.micromouseonline.com/2013...h-the-stm32f4/
    http://aimagin.com/blog/using-timercounter/
    interrupt theo em biết nếu nhịp xung trên 1M trong ứng dụng này là sai tè le rồi a
    cảm ơn bác em sẽ xem link bác gửi xem có ý tưởng mới không
    SDT: 078.423.4424.
    Email: giangxuanhoang@gmail.com.

  10. #8
    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
    Ủa, con encoder 17 bit của bác là loại gì? ABZ hay protocol riêng của hãng?

    Mình làm driver DC Servo cách đây lâu rồi, bằng STM32F1xx
    1. Về cách ly thì mình e là bạn cách ly điều khiển/công suất bằng cách dùng 2 con MCU khác nhau nối qua UART thì ko ăn thua đâu mà nó lại rối rắm cuộc đời ra. Mình thì hay dùng cách ly quang. Ko biết lão sư phọ Nhật Sơn cụ Dương Hoàng thì dùng pp gì?
    2. Step/Dir của bạn ko thể nào đạt tới 1Mhz được, do đó bạn ko phải lo việc sai tè le
    3. Bạn kiểm tra lại PA8 và PA9 có dùng chung timer với PA2 & PA3 hay ko? Nếu dùng chung timer thì đó là nguyên nhân bạn bị lỗi
    4. Ngoài ra khi có xung step/dir thì nguồn điện của MCU có ổn định ko? UART đang truyền với tốc độ bao nhiêu?
    Lần sửa cuối bởi Gamo, ngày 02-07-2016 lúc 03:34:31 PM.

  11. #9
    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 Gamo Xem bài viết
    Ủa, con encoder 17 bit của bác là loại gì? ABZ hay protocol riêng của hãng?

    Mình làm driver DC Servo cách đây lâu rồi, bằng STM32F1xx
    1. Còn về cách ly thì mình e là bạn cách ly điều khiển/công suất bằng cách dùng 2 con MCU khác nhau thì ko ăn thua đâu mà nó lại rối rắm cuộc đời ra. Mình thì hay dùng cách ly quang. Ko biết lão sư phọ Nhật Sơn cụ Dương Hoàng thì dùng pp gì?
    2. Step/Dir của bạn ko thể nào đạt tới 1Mhz được, do đó bạn ko phải lo việc sai tè le
    3. Bạn truyền UART thì cũng khó ổn định với 1Mhz được, do đó step/dir mà có 1Mhz thì truyền qua UART cũng trễ như thường

    Read more: http://forum.cncprovn.com/threads/83...#ixzz4DEq1lFhI
    Có lẽ em cần xem lại cách xử lí ngắt xem thế nào, em đã có câu trả lơi từ chuyên gia la không xài encoder mode được
    trong clip là con yaskawa sigma2 1.5kw đó ah đang chạy 100VDC nên cấp xung nhanh là error, để kiếm cái nguồn DC 200V thử lại
    UART thực tế đang là 2M và em chưa thấy vấn đề gi ah
    Lần sửa cuối bởi ghoang, ngày 02-07-2016 lúc 03:33:44 PM.
    SDT: 078.423.4424.
    Email: giangxuanhoang@gmail.com.

  12. #10
    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
    Ừa, mình quên, hôm trước test UART 5Mhz mới bị giới hạn chứ 2Mhz vẫn còn ok.

    Encoder của con Yaskawa là loại gì? ABZ hay protocol riêng của hãng?

  13. #11
    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
    Serial RS-422 bác gamo ah
    SDT: 078.423.4424.
    Email: giangxuanhoang@gmail.com.

  14. #12
    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, thế thì phải 2 con MCU là đúng ùi. Nếu ABZ thì chỉ cần STM32F1xx là đủ

    Mình tò mò chút, thế đoạn code giải mã protocol của Yaskawa ở đâu vậy bác?
    Lần sửa cuối bởi Gamo, ngày 02-07-2016 lúc 03:42:01 PM.

  15. #13
    Thợ bậc 7 duonghoang's Avatar
    Ngày tham gia
    Nov 2013
    Đang ở
    Pleiku-Gialai
    Bài viết
    660
    Cám ơn
    555
    Được cám ơn 377 lần
           ở 178 bài viết
    --- Trong phần Interrupts thường em viết ngắn nhất có thể, thời gian thực thi các dòng lệnh trong đó có thể tính toán sơ qua được xem nó có ảnh hưởng lớn đến các yếu tố khác ko.
    --- Mấy vụ này em cũng khoái lắm mà phần công suất làm chưa được tốt nên chưa thử lại, cháy nổ hoài sợ quá roài
    Email: duonghoang05@gmail.com
    Mobile: 0988467839

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


  17. #14
    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
    Hồi đó bác thường bị cháy nổ là do sao vậy?

  18. #15
    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 duonghoang Xem bài viết
    --- Trong phần Interrupts thường em viết ngắn nhất có thể, thời gian thực thi các dòng lệnh trong đó có thể tính toán sơ qua được xem nó có ảnh hưởng lớn đến các yếu tố khác ko.
    --- Mấy vụ này em cũng khoái lắm mà phần công suất làm chưa được tốt nên chưa thử lại, cháy nổ hoài sợ quá roài
    Em chỉ code đơn giản thế này mà vẫn đang có vấn đề

    void EXTI9_5_IRQHandler(void)
    {

    if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_9) == 1)
    count1 += 1;
    else
    count1 -= 1;

    EXTI_ClearITPendingBit(EXTI_Line12);
    }
    SDT: 078.423.4424.
    Email: giangxuanhoang@gmail.com.

  19. #16
    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
    À, bác đang dùng đoạn code của mcm_xyz phải ko?

  20. #17
    Thợ bậc 7 duonghoang's Avatar
    Ngày tham gia
    Nov 2013
    Đang ở
    Pleiku-Gialai
    Bài viết
    660
    Cám ơn
    555
    Được cám ơn 377 lần
           ở 178 bài viết
    Trích dẫn Gửi bởi Gamo Xem bài viết
    Hồi đó bác thường bị cháy nổ là do sao vậy?
    --- Đợt em làm ko thêm mấy con logic nên hay bị trùng dẫn cầu H, cháy fet, với lại phần đệm cho fet ko được tốt lắm có fet dẫn ko bão hòa nên nóng nhiều.
    Email: duonghoang05@gmail.com
    Mobile: 0988467839

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


  22. #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,264 lần
           ở 2,039 bài viết
    Trích dẫn Gửi bởi duonghoang Xem bài viết
    --- Đợt em làm ko thêm mấy con logic nên hay bị trùng dẫn cầu H, cháy fet, với lại phần đệm cho fet ko được tốt lắm có fet dẫn ko bão hòa nên nóng nhiều.
    pwm của stm32 cho phép deadtime mà ta?

  23. #19
    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 Gamo Xem bài viết
    À, bác đang dùng đoạn code của mcm_xyz phải ko?
    Là sao bác em cấu hình EXTI theo cái này

    http://stm32f4-discovery.net/2014/08...upts-tutorial/
    SDT: 078.423.4424.
    Email: giangxuanhoang@gmail.com.

  24. #20
    Thợ cả
    Ngày tham gia
    Nov 2013
    Bài viết
    5,915
    Cám ơn
    2,195
    Được cám ơn 3,264 lần
           ở 2,039 bài viết
    nếu đơn giản là cách ly sao ko dùng opto tốc độ cao, đo dòng dùng hall sensor hoặc linear optocloup ah?
    cập nhật thanh ghi PWM nhanh hơn truyền cái data đó xuống con slave

Trang 1 của 2 12 CuốiCuối

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

  1. làm thế nào để tiện cầu tròn ?
    Bởi CBNN trong diễn đàn Thắc mắc
    Trả lời: 10
    Bài viết cuối: 08-06-2015, 09:09:10 PM
  2. viết Chương trình dịch ra G Code như thế nào ??
    Bởi onono999 trong diễn đàn Máy phay CNC
    Trả lời: 24
    Bài viết cuối: 27-05-2015, 01:05:26 PM
  3. Trả lời: 12
    Bài viết cuối: 20-05-2015, 08:18:41 PM

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
  •