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 Điều khiển động cơ Servo sử dụng Servo Driver bằng máy tính bởi bqviet Servo cuối cùng vẫn chỉ là điều chỉnh tốc độ và đọc phản hồi vị trí Qua cổng song song LPT cổ https://www.electronicsforu.com/elec...eed-controller Qua cổng USB - xem thêm đám FT232RL
- Channel: Điện tử công nghiệp
- Điều khiển động cơ Servo sử dụng Servo Driver bằng máy tính bởi thiennam0703 Em đang tìm hiểu cách xây dựng chương trình điều khiển động cơ Servo Yaskawa bằng máy tính tuy nhiên khi tìm kiếm trên mạng các hướng dẫn thì thường là điều khiển bằng vi điều khiển hoặc điều khiển bằng PLC hay điều khiển động cơ...
- Channel: Điện tử công nghiệp
- Trả lời cho Tổng hợp các thông tin về mạch nạp cho AVR bởi bactho Mình cũng bị như vậy mà chưa biết ở đâu
- Channel: Vi điều khiển AVR
- Trả lời cho Xin hỏi về màn hình laptop bởi nhathung1101 Câu trả lời là không dùng được. Hai lớp dán mặt trước và mặt sau, gọi là film phân cực. Muốn hiểu rõ về nó thì chịu khó search nhé. Ở đây có rất nhiều chó cứ ngửi thấy phân là sủa nhặng, nên không giải thích nhiều....
- Channel: Thiết bị điện tử cá nhân
- Comment on Tổng hợp các thông tin về mạch nạp cho AVR bởi Memem
- Channel: Vi điều khiển AVR
- Trả lời cho Tổng hợp các thông tin về mạch nạp cho AVR bởi Memem Mọi người ơi cho em hỏi cái này ạ, hiện tại em đang làm btl về hiển thị giá trị nhiệt độ trên led 7 thanh sử dụng atmega16, code em chạy trên mô phỏng rất oke nhưng khi lắp qua mạch thực thì bị lỗi ở led đầu tiên bị lỗi như thế này... 1 Photo
- Channel: Vi điều khiển AVR
- Tìm datasheet linh kiện điện tử. bởi mantruongepu Nhờ cả nhà tìm giúp mình thông tin IC này với, thấy ghi 943B W58BAL mà mình tìm mấy ngày nay không được, nó được đóng gói dạng TSSOP 8. Cám ơn cả nhà....
- Channel: Điện tử dành cho người mới bắt đầu
- Trả lời cho Bàn phím tự động ... để đánh game , điều khiển ! ( Dành cho anh em thích Game ) bởi Therul Cảm ơn bạn đã chia sẻ câu chuyện và quá trình phát triển sản phẩm của mình. Trước tiên, thật may mắn khi bạn vượt qua tai nạn và vẫn giữ được niềm đam mê cũng như khả năng sáng tạo trong lĩnh vực kỹ thuật. Việc bạn tiếp tục...
- Channel: từ PIC tới dsPIC
- Trả lời cho Em muốn hỏi mọi người về nguyên lý hoạt động, tần số của mạch công suất trong máy rửa siêu âm ạ. bởi nguyendinhvan Bạn nên nghiên cứu cái chấn lưu đèn ống Compact fluorescent lamp hay đèn compact trước đã. Nó rẻ đỡ tốn kém. Sau khi hiểu rõ rồi thì chuyển sang cái mạch này. Ở cái chấn lưu, tần số của nó linh tinh lắm, tùy điện áp nguồn, tùy...
- Channel: Hỗ trợ học tập
- Xin hỏi về màn hình laptop bởi yname11 E có 1 laptop bị hỏng màn hình, e tháo ra thì thấy nó có 4 lớp , lớp ngoài cùng là 1 lớp nhựa rất mỏng màu hơi đen ( chắc là 1 loại film dán), tiếp theo là 1 lớp thủy tinh bị vỡ (màu đen) , đến 1 lớp thủy tinh trắng ( lớp này có...
- Channel: Thiết bị điện tử cá nhân
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