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ỏ
Bài viết mới nhất Collapse -
Tài liệu biến tần Delta VFD007M43B bởi torasung Chào anh em, Mình đang tìm hiểu và cấu hình một con biến tần Delta model VFD037E43A dùng cho động cơ công suất nhỏ, ứng dụng băng tải và quạt. Trước đây mình chủ yếu làm với vài dòng khác của Delta nhưng chưa dùng nhiều model này, nên muốn...
- Channel: Điện tử công nghiệp
-
Trả lời cho Vấn đề về tốc độ quay bởi nguyendinhvan Sử dụng động cơ servor, hoặc lắp thêm một cái encoder vào động cơ bước. Encoder sẽ kiểm soát động cơ có quay hoặc đứng im.
- Channel: Điện tử truyền hình
-
Vấn đề về tốc độ quay bởi Andrea14 Chào mọi người, Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
- Channel: Điện tử truyền hình
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