[Down về xài] Thiết kế Driver điều khiển động cơ DC Servo

Discussion in 'Power Electronics' started by 2death, Sep 17, 2013.

  1. 2death

    2death Cố Vấn CLB Staff Member

    Bài viết này mang ý nghĩa chia sẻ, một số khái niệm và thuật ngữ chỉ được nêu chung chung đại khái, không đặt nặng tính hàn lâm và học thuật, do đó sự chính xác về ngữ nghĩa chỉ có tính tương đối.

    I/ Ghi chú
    1 - H-Bridge, hay cầu H là gì? Cấu hình? Hoạt động? Xài như thế nào?
    ---> Đầy ra trên mạng. Nên tập cách hỏi google.

    2 - Nếu nói về MosFET, cách kích dẫn nó như lào: cũng đầy ra trên mạng. Google cái gì cũng biết, cứ hỏi bác ý.

    3 - Rất nhiều bài viết hay về Điện tử công suất, từ cơ bản (chẳng hạn như làm sao để kích FET, ý nghĩa các thông số, giá trị...) đến phức tạp hơn đều có thể tìm được ở Diễn đàn điện tử Việt Nam:
    http://www.dientuvietnam.net/forums/dien-tu-cong-suat-62/

    4 - Mạch kích "bootstrap" là gì, tại sao phải dùng nó?
    ---> nên đọc bài này trước sau đó tiếp tục google: [Các kiến thức cơ bản về Cầu H]\

    5 - PID là gì, tại sao lại cứ phải nhắc đến PID khi điều khiển động cơ: xem các môn đã học, hoặc sẽ học và học thêm ở giáo sư Gu gồ.


    II/ Nội dung
    Trong bài viết này, 1 giải pháp thực hiện DC Servo Driver được giới thiệu. Có rất nhiều phương án khác, đây chỉ đưa ra 1 ví dụ.

    1 - Hardware: được tách làm 2 phần tạm gọi là
    + Phần công suất: H-Bridge, bao gồm 4 MosFET IRF540, driver IR2184S; phần nguồn từ 24V --> 12V dùng MC34063.
    + Phần điều khiển: Control Board, sử dụng MCU TIVA M4 TM4C123... (không nhớ khúc sau là chữ gì :D), con này có module QEI, PWM.
    Board điều khiển tách rời với mạch công suất, bạn có thể dùng bất kì mạch MCU nào khác phù hợp với mình.

    2 - Firmware:
    Source code cho Driver (tất nhiên là điều khiển vòng kín, vì như tít, đã được gọi là DC Servo Driver), source này đương nhiên là xây dựng trên con M4 đã nói lúc nãy.

    3 - Software:
    GUI để quan sát kết quả điều khiển và có thể nhập thông số cần thiết.

    III/ Hàn huyên
    + Cái gì được shared ở đây: All
    + Tại sao lại shared, như thế sẽ khiến sinh viên copy-paste cho đồ án của mình?
    ---> Vì những điều trên này là quá cơ bản đi, nó chưa thể hiện được trí tuệ gì cả. Những gì chúng ta có thể module hoá thành công cụ để giới trẻ (trâu) cùng xài thì càng tốt, rút ngắn được công đoạn mò mẫm những thứ cơ bản, dành thời gian để phát triển những cái "trí tuệ hơn" :6cool_boss:.

    Pay it forward, cộng đồng sẽ xây dựng cho nó thành những thứ hữu ích hơn.

    ------------
    Hết chương 1, đợi tiếp hồi sau.
     
  2. 2death

    2death Cố Vấn CLB Staff Member

    Phần 2: Hardware

    Lưu ý: Mỗi cách thiết kế có ưu, nhược điểm riêng, các bạn có thể tuỳ ý chỉnh sửa cho phù hợp với mình.

    I/ Schematic
    1 - Power Stage (H-Bridge)
    Linh kiện chính:
    • Driver IR2184 (Half-Bridge, 1 con IR2184 cấp xung kích cho 1 nhánh FET; mỗi nhánh FET (1 half-bridge, hay 1 LEG, hay 1 ARM) gồm 2 FET, con nối với nguồn được gọi là con High-side, con nối với GND được gọi là Low-side.
    • Để kích được con High-side phải dùng mạch kích kiểu bootstrap. Mà khi dùng mạch kích kiểu bootstrap thì duty không thể đạt tới 100%. Tại sao?
    • Cần 4 con FET để mạch hoạt động. Ở đây dùng IRF540; tuỳ ứng dụng (công suất mong muốn?, package to nhỏ?,...) bạn có thể tuỳ chọn Switches phù hợp.
    • 1 mạch giảm áp từ 24V xuống 12V dùng MC34063.
    • 1 con điện trở shunt 0.1 Ohm dùng để đo dòng; bạn có thể thêm OpAmp để tăng độ khuếch đại và hạn chế nhiễu đo lường.
    Schematic như dưới đây, source (file orcad .DSN, PDF) có thể download ở cuối bài.
    [​IMG]
    [​IMG]
    [​IMG]

    2 - Controller (TIVA M4 TM4C123...)
    Linh kiện chính:
    • MCU: TM4C123GH6PM
    • Nguồn 3v3: TLV1117-3v3.
    • Đệm tín hiệu từ MCU: 74HC245 (xem post #3, luồng này)
    • Các port giao tiếp như (uart, spi, i2c, CAN) là optional, nếu không có nhu cầu xài các bạn có thể bỏ đi.
    • Phần ADC expansion: có 2 kênh để dành sau này muốn đo gì thì đo, 1 kênh dùng để đo dòng feedback từ mạch công suất (current feedback)
    • Testpoints: là các điểm để đo tín hiện.
    • Các nút chọn mode và Led hiển thị: cũng là optional.
    • Phần feedback từ encoder: lấy kênh A, B, còn Z là optional.
    • Các chân STEP, F/R là các tín hiệu điều khiển từ 1 nguồn khác (ví dụ 1 bo điều khiển khác) cấp cho MCU để set các thông số. Nếu cần thì dùng :6cool_boss:
    • CAN bus là optional, IC CAN transceiver là SN65HVD1050 của TI, có thể thay bằng MCP2551 của Microchip (dễ mua hơn), 2 con hoàn toàn giống nhau. Mỗi tội mấy con CAN này xài nguồn 5V thế là phải phát sinh thêm cái nguồn 5V nữa.
    Schematic tách thành từng phần post trong các hình sau, source (file orcad *.DSN cho ở cuối bài viết)
    [​IMG]

    [​IMG]

    [​IMG]

    [​IMG]

    II/ Layout

    Layout cho mạch công suất cần 1 chút kinh nghiệm để hạn chế nhiễu, cũng như đảm bảo các yếu tố khác (chẳng hạn khả năng chịu dòng của các đường mạch, cần add thêm các via tại các chân công suất,...), có thể xem 1 số hướng dẫn khi thiết kế PCB tại:
    http://www.payitforward.edu.vn/forum/forums/78/
    và rất nhiều tài liệu đề cập đến PCB Design khác có trên mạng.

    Còn nếu ít kinh nghiệm hơn, hoặc không chắc lắm, bạn có thể sử dụng source (download cuối bài)

    [​IMG]

    III/ Real board
    Mạch được gia công ở Kha Thành, được cái làm nhanh nhưng nhan sắc hơi tệ :D
    (up sau)
    (cập nhật: Mạch xấu quá khỏi up, các bạn xem hình REV2 ở post tiếp theo, board Sao Kim nhìn cho lộng lẫy :4cool_beauty:

    IV/ Download

    Tất cả hình ảnh, schematic (.DSN và PDF), PCB source (.MAX), BOM list (excel):

    (Đây là version 1, có update Version 2 ở bài sau).
    (không nên dùng version này).
    DC_Servo_Motor_DRV_Hardware_V1.rar

    Mới:
    Update Version 3 ở post #14 -->
    Nên dùng version 3.
    Ver3 được sửa thêm từ ver2, nên các bạn đọc kỹ những điểm thay đổi của ver2 ở post #3.
     
    Last edited: Oct 6, 2017
  3. 2death

    2death Cố Vấn CLB Staff Member

    Cập nhật Version 2

    Về cơ bản Rev2 cũng tương tự như Rev1.

    + Phần board Tiva Control: Không thay đổi so với Rev1.

    + Phần HBridge có 1 số thay đổi nhỏ như sau:

    1 - Có thêm options cho motor 12V (Thêm 1 jumper JP0 ở phần nguồn). Khi nào dùng motor 24V thì không nối nó. IC nguồn MC34063 làm nhiệm vụ chuyển 24V thành 12V cho Driver.

    Khi dùng nguồn 12V cấp cho ngõ vào (VBUS) và Motor, nối tắt JP0 lại, khi đó bỏ qua MC34063 bằng cách tháo SW1 ra.

    Túm lại là có 2 cái Jumper tên là JP0 (12V) và SW1 (24V), xài cái này thì tháo cái kia ra nhá.

    2 - Thêm OpAmp để đo dòng.

    3 - Thay Connector từ board control xuống board HBridge từ 10-pin lên 12-pin.

    4 - Thay 3 con tụ hóa nhỏ thành 1 con bự hơn (xem hình).

    Mạch HBridge muốn chạy tốt thì tất cả các linh kiện (kể cả tụ, trở, L, ...) đều phải là linh kiện tốt, bạn có thể mua ở vijasemi.vn hoặc tme.vn (nếu mua chỗ khác giá có mềm hơn mà hem chạy thì đừng hỏi tại sao :gach)

    [​IMG]

    Chỉ nhìn board HBridge:
    [​IMG]


    Khi gắn tản nhiệt, chú ý lót giấy cách điện và dùng ốc nhựa (hoặc vòng đệm nhựa) để tránh chạm chập (các miếng Tab của FET nối với cực D của chúng, các phần này chạm nhau làm ngắn mạch nguồn) - xem hình dưới, để ý giấy lót và vòng đệm nhé.

    [​IMG]


    Download Version 2:
    Code:
    http://www.mediafire.com/download/sz0f8iucchf9r2l/DC_Servo_Motor_DRV_Hardware_Rev2.rar
    Đã cập nhật Version 3 ở post #14.
     
    Last edited: Oct 6, 2017
    nguyenhongduc_nc and Keon2991 like this.
  4. 2death

    2death Cố Vấn CLB Staff Member

    Phần 1 is done.
    Phần 2 chú honghiep sẽ cung cấp 1 firmware cho em M4 tiva, có đầy đủ các đồ chơi cần thiết, đọc encoder dùng module QEI, điều khiển PID động cơ, xài cả CAN :6cool_boss:.
    Anh em hóng hớt bài viết nhé.
     
    Lê Thành Nhân, BKID and tungbk like this.
  5. honghiep

    honghiep Cố Vấn CLB Staff Member

    Phần 3: Firmware
    Xí chỗ lâu rồi, tới hôm nay mới post bài!

    Đây là Firmware sử dụng ARM-M4 của TI để điều khiển mạch cầu H trên: Link

    Mirror:
    Code:
    https://drive.google.com/file/d/0B_BrEC4MNTvwV25rX2RDSnJUcTA/view?usp=sharing
    
    Project trên được build = CCS cho TM4C123GH6PM. Trong code có các hàm config:

    - ConfigEncoder(): Config module QEI của Tiva M4, chân PD6, PD7
    - ConfigPWM(): Config module PWM, chân PB6, PB7. Vì mạch phần cứng dùng IR2184 để lái FET nên mình chỉ xuất 2 xung để điều khiển 2 nửa cầu, phần deadtime, bootstrap, đảo xung kích 2 con FET do IR2184 làm.
    - SetPWM(): Chỉnh độ rộng xung ra, với hàm này đối số đưa vào trong tầm -90 đến 90 tương ứng với duty cycle từ -90% đến 90%. Ở đây mình điều khiển xung theo dạng Bipolar PWM, tức áp ngõ ra trong 1 chu kì có cả áp dương và áp âm. Nếu bạn điều khiển theo dạng Unipolar thì sửa lại phần xuất xung lại là được.

    Hôm nọ tìm được cái presentation của TI khá hay về điều khiển các loại động cơ, các bạn tham khảo thêm tại Link này

    - Trong source này có cả phần CAN, bạn nào quan tâm thì xem thêm thôi vì mạch điều khiển với cầu H trên được thiết kế để bỏ vào Network (ở đây dùng CAN).
     
    Last edited by a moderator: Apr 23, 2017
  6. PhamxuanHung

    PhamxuanHung Trứng gà

    a ơi link firmware bị hư rồi ạ a có thể fix đc ko .. e đang học cái này nên thích lắm ah. :)
     
  7. honghiep

    honghiep Cố Vấn CLB Staff Member

    Da Update lai link firmware
     
    2death likes this.
  8. huyphuc92

    huyphuc92 Trứng gà

    Em chưa thấy software. Với có cái video hướng dẫn thì hay quá. :D
     
  9. huyphuc92

    huyphuc92 Trứng gà

    Em có load PCB v2 về, máy không cài layout plus nên em chuyển sang allegro, nhưng phát hiện 1 đường mạch chưa đi???
    Anh check lại cho em xem nha. :)
    Có đặt mạch 2 lần mà bên Kim sơn, Sao Kim thấy phần đặt hàng rối quá @.@

    Hình PCB ở dưới, em đánh dấu mũi tên đỏ to đùng ấy

    [​IMG]
     
  10. Nam Hải

    Nam Hải Ban Chủ Nhiệm

    ^
    Cảm ơn bạn, đó là đường GND, và khu vực màu xanh trên đó là được phủ copper pour nên mặc nhiên net đó đã được nối với nhau :D
     
  11. huyphuc92

    huyphuc92 Trứng gà

    Tình hình là Sao Kim báo 8 mạch H bridge 620k, mà em cần thử 2 mạch thui. Có bạn nào làm nữa không share đi.
     
  12. huyphuc92

    huyphuc92 Trứng gà

    Driver này chạy cho servo nào được vậy anh ơi? Em đang tìm mua động cơ mà chưa biết chọn động cơ như thế nào.

    Với cho em hàm truyền của bộ PID được không ạ? Môn cơ sở tự động đang học, vẫn còn mơ hồ quá.
     
  13. 2death

    2death Cố Vấn CLB Staff Member


    Các loại động cơ DC Servo (động cơ DC và có encoder) hầu như loại nào cũng được, dòng tải tối đa khoảng 10A.
     
  14. Nam Hải

    Nam Hải Ban Chủ Nhiệm

    Cập nhật version 3:

    + Phần board Tiva Control: Thêm mạch Schmitt Trigger vào module Encoder để giảm nhiễu khi đọc xung

    + Phần HBridge : Sửa lại layout phần nguồn 1 chút, dịch domino ra phía ngoài, dịch diode bảo vệ ngược nguồn vào trong

    Link download Version 3:
    Code:
    http://www.mediafire.com/file/ozrjqw10t0i20zy/DC_Servo_Motor_DRV_Hardware_Rev3.rar
    Mirror:
    Code:
    https://drive.google.com/open?id=0B_BrEC4MNTvweEFuVG5rV205Tzg
     
    Last edited by a moderator: Apr 23, 2017
    Duc_concobeobeo, Rum and 2death like this.
Loading...

Share This Page