Giải Thích đoạn Code điều Khiển động Cơ DC Sử Dụng PID Giúp Mình ...
Có thể bạn quan tâm
- Đăng ký hoặc đăng nhập
- Logging in... Ghi Nhớ? Ðăng Nhập Forgot password or user name? hoặc Đăng ký
- Log in with Facebook
- Nếu đây là lần đầu tiên đến với Điện Tử Việt Nam, bạn có thể đọc phần Hỏi đáp bằng cách nhấn vào liên kết. Có thể bạn cần đăng kí trước khi có thể gửi bài . Để bắt đầu xem bài viết, chọn diễn đàn bạn muốn thăm dưới đây.
- Bài viết
- Hoạt động gần đây
- Tìm kiếm
- Trang of 1
- Lọc
- Giờ All Time hôm nay Last Week Last Month
- Show All Discussions only Photos only Videos only Links only Polls only Events only
- embsys Thành viên chính thức
- Tham gia: Jun 2008
- Bài viết: 99
- Share
- Tweet
Giải thích đoạn code điều khiển động cơ DC sử dụng PID giúp mình với !
06-08-2009, 23:34 Đây là một đoạn code mình viết theo một tài liệu hướng dẫn trên mạng : PHP Code: void PID_tocdo(void) { Err_now = V_set - V_real ; Err_sum = Err_now + Err_last ; Err_del = Err_now - Err_last ; Err_last = Err_now ; Duty = Duty + Kp*Err_now + Ki*Err_sum + Kd*Err_del ; if ( Duty > 255 ) Duty = 255 ; else if ( Duty < 0 ) Duty = 0 ; } Cho mình hỏi tại sao ở đây sử dụng Duty ( chữ màu đỏ ) Duty = Duty + Kp*Err_now + Ki*Err_sum + Kd*Err_del ; Theo mình nghĩ thì nó phải là giá trị Duty_set ( được thiết đặt để có V_set mong muốn nào đó .) chứ không phải là Duty . Như vậy ở đoạn code trên thì Duty thì liên tiếp được cộng dồn có phải không ? Ai biết thì chỉ dùm mình với ! Còn đây là một hướng dẫn trên mạng : PHP Code: Các biến được sử dụng: - Speed: Tốc độ động cơ, tính bằng số xung đếm được trong một thời gian lấy mẫu Ts(đã định sẵn) - Set_Point: Giá trị cài đặt, dùng tham chiếu với Speed nên có cùng đơn vị và công thức chuyển đổi - int Error_Acc: Tích lũy sai số. - int This_Error: Sai số hiện hành - int Last_Error: Sai số lần trước (ngôn ngữ hơi phi kỹ thuật chút) - int P_Gain, I_Gain, D_Gain: Độ lợi khâu P, I, D - int P_Term, I_Term, D_Term: giá trị khâu P, I, D - int Output: giá trị ngõ ra điều khiển, tỷ lệ với giá trị set cho PWM. Các bước tính - Cập nhật sai số: This_Error = Set_Point - Speed; - Tích lũy sai số: Error_Acc = Error_Acc + This_Error; - Lưu sai số: Last_Error = This_Error; - Tính khâu tỷ lệ: P_Term = This_error * P_Gain; if (P_Term>32767) P_Term=32767; //Correct out of range if (P_Term<-32768) P_Term=-32768; //Correct out of range - Tính khâu tích phân: I_Term = Error_Acc * I_Gain; if (I_Term>32767) I_Term=32767; //Correct out of range if (I_Term<-32768) I_Term=-32768; //Correct out of range - Tính khâu vi phân: D_Term = (This_Error - Last_Error) * D_Gain; if (D_Term>32767) D_Term=32767; //Correct out of range if (D_Term<-32768) D_Term=-32768; //Correct out of range - Tính ngõ ra: Output = P_Term + I_Term + D_Term; if (Output >32767) Output =32767; //Correct out of range if (Output < 0) Output = 0; //Correct out of range - Scale Output để hợp với 10bit- PWM: PWM = Output * 1023/32767; Mình đọc đoạn này thì thấy khó hiều quá . ko biết đây là PID theo tốc độ hay theo vị trí . Nếu là PID theo tốc độ thì tại sao lại có đoạn : PHP Code: PWM = Output * 1023/32767; Nếu vậy thì khi sai lệch Output = 0 thì PWM = 0 à . Đoạn này mình không hiểu . Hàm truyền PID : PHP Code: Phương trình hành động là : Ira = Kp ( e + Ki ∫ edt + Kd de/dt ) + I0 Với : Ira : tín hiệu ra khỏi bộ điều khiển khi có một sai lệch e thay đổi với thời gian t . I0 : tín hiệu ra tại thời điểm thiết lập khi không có sai lệch . Kp : hằng số tỉ lệ Ki : hằng số tích phân Kd : hằng số đạo hàm ( vi phân ) Vậy đối với PID theo tốc độ và PID theo vị trí thì giá trị I0 khác nhau thế nào . Mình đã đọc một số bài lập trình trên mạng và có đọc qua cơ sở lý thuyết điều khiển PID nhưng không hiểu được phải viết hàm PID theo vị trí và PID theo tốc độ thế nào cả .... Các bài ví dụ trên mạng mỗi người làm một kiểu . mình càng đọc càng băn khoăn khó hiểu . Nay viết lên đây mong anh chị em cô bác nào hiểu thấu có thể chỉ giáo cho em chút ít để mở rộng tầm hiểu biết của mình được không ? Cảm ơn mọi người trước nhé .... Tags: None - embsys Thành viên chính thức
- Tham gia: Jun 2008
- Bài viết: 99
- Share
- Tweet
Comment
Gửi bài viết Huỷ bỏ - Viet Vinh Thành viên chính thức
- Tham gia: May 2009
- Bài viết: 62
- Share
- Tweet
Comment
Gửi bài viết Huỷ bỏ - Viet Vinh Thành viên chính thức
- Tham gia: May 2009
- Bài viết: 62
- Share
- Tweet
Comment
Gửi bài viết Huỷ bỏ - embsys Thành viên chính thức
- Tham gia: Jun 2008
- Bài viết: 99
- Share
- Tweet
Comment
Gửi bài viết Huỷ bỏ - embsys Thành viên chính thức
- Tham gia: Jun 2008
- Bài viết: 99
- Share
- Tweet
Comment
Gửi bài viết Huỷ bỏ - doctorthanh Thành viên mới
- Tham gia: Aug 2009
- Bài viết: 21
- Share
- Tweet
Comment
Gửi bài viết Huỷ bỏ - LamHong Thành viên mới
- Tham gia: Mar 2009
- Bài viết: 15
- Share
- Tweet
Comment
Gửi bài viết Huỷ bỏ - embsys Thành viên chính thức
- Tham gia: Jun 2008
- Bài viết: 99
- Share
- Tweet
Comment
Gửi bài viết Huỷ bỏ - Viet Vinh Thành viên chính thức
- Tham gia: May 2009
- Bài viết: 62
- Share
- Tweet
Comment
Gửi bài viết Huỷ bỏ - Viet Vinh Thành viên chính thức
- Tham gia: May 2009
- Bài viết: 62
- Share
- Tweet
Comment
Gửi bài viết Huỷ bỏ - embsys Thành viên chính thức
- Tham gia: Jun 2008
- Bài viết: 99
- Share
- Tweet
Comment
Gửi bài viết Huỷ bỏ - mitomtrung Thành viên mới
- Tham gia: Jan 2010
- Bài viết: 13
- Share
- Tweet
Comment
Gửi bài viết Huỷ bỏ - kevotinh_163 Thành viên mới
- Tham gia: Mar 2011
- Bài viết: 6
- Share
- Tweet
Comment
Gửi bài viết Huỷ bỏ
- Trả lời cho Mạch tự động bật nguồn bởi nhathung1101 Lão hôm nay uốn mấy lọ? Làm tôi đọc bài của lão toát cả mồ hôi, mãi khi nhìn sơ đồ mới hiểu.... Aiza... Lão lại đi về thời 0.4 rồi! Giờ cảm biến và trợ lý và thiết bị có đầy... Tôi về đến Pháp Vân, gọi...
- Channel: Điện tử gia dụng
- Mạch tự động bật nguồn bởi nguyendinhvan Đa số các đồ điện là cứ có điện là sẽ hoạt động. Nhưng ngày nay, nhiều thiết bị điện có điều khiển không tự hoạt động khi có điện nguồn. Máy chỉ ở chế độ stanby, tới khi người sử dụng nhấn phím power. Ví dụ...
- Channel: Điện tử gia dụng
- Trả lời cho Đặt hàng thiết kế chế tạo nghịch lưu 3 pha điều khiển động cơ bởi nhathung1101 Muốn đặt gì thì cũng phải có thông tin cơ bản. Việc nhỏ thế này mà phải dấu giếm thì người lớn không thèm làm đâu. Cho bạn 3 ngày, không là sẽ xóa.
- Channel: Đặt hàng
- Trả lời cho Hỏi cách điều chế xung bởi nhathung1101 Schmit Trigger là chuẩn với điều kiện rise > 0,8V. Bí thì dùng vi với tích gì đó, miễn đừng nói phân kẻo chó ở đây lại sủa nhặng.
- Channel: Kỹ thuật điện tử tương tự
- Đặt hàng thiết kế chế tạo nghịch lưu 3 pha điều khiển động cơ bởi trungaut Mình cần đặt hàng thiết kế chế tạo mạch nghịch lưu 3 pha để cài đặt các thuật toán điều khiển động cơ FOC, DTC, ... Xin liên hệ trungaut@gmail.com để bàn chi tiết. Xin cảm ơn diễn dàn đăng tin!
- Channel: Đặt hàng
- Trả lời cho Thắc mắc về nguồn tổ ong 12v bởi tuyennhan Cách ly dây điện vào , bộ nguồn và đèn khỏi khung xe thì có rò thật cũng không lo bị giật .
- Channel: Điện tử dành cho người mới bắt đầu
- Trả lời cho Hỏi cách điều chế xung bởi thetung Bạn cho qua cái Tờ ri gơ Sờ mít ấy ......
- Channel: Kỹ thuật điện tử tương tự
Từ khóa » Thư Viện Pid Arduino
-
Arduino PID Library - Arduino Playground
-
PID_v2 - Arduino Reference
-
P.I.D - SPEED & POSITION CONTROL | Cộng đồng Arduino Việt Nam
-
Bộ điều Khiển PID - ứng Dụng Phần 2 - Xe Dò Line Dùng Thuật Toán PID
-
Thư Viện Arduino Tinh Chỉnh Tham Số PID - Arduino PID Autotune ...
-
PID - Arduino Library List
-
Arduino-PID-Library/PID_v1.h At Master - GitHub
-
Hướng Dẫn Thêm Mới Thư Viện Trong Arduino IDE (Cập Nhật 2022)
-
ARDUINO CHO NGƯỜI MỚI BẮT ĐẦU (Quyển Không Còn Là Căn Bản)
-
Tổng Hợp Tất Cả Thư Viện Arduino
-
Code Mẫu, điều Khiển Motor Bằng PID - NgLeY
-
Tổng Hợp Các Thư Viện Cho Arduino IDE - Điện Tử Việt