KHOA CƠ ĐIỆN TỬ Ô TÔ VÀ NĂNG LƯỢNG ---o0o---LẬP TRÌNH CĂN BẢN ĐIỆN TỬ PROJECT CUỐI KÌ Project: Điều khiển và đo tốc độ động cơ DC trong thời gian thực bằng encoder Giảng viên: Lê Minh Hu
Trang 1KHOA CƠ ĐIỆN TỬ Ô TÔ VÀ NĂNG LƯỢNG
-o0o -LẬP TRÌNH CĂN BẢN ĐIỆN TỬ
PROJECT CUỐI KÌ
Project: Điều khiển và đo tốc độ động cơ DC trong thời gian
thực bằng encoder
Giảng viên: Lê Minh Huy
Trang 2LẬP TRÌNH CĂN BẢN ĐIỆN TỬ
PHÂN CÔNG VIỆC
chú
Phạm Xuân - Lập trình mô hình điều khiển và đo tốc độ
Trung động cơ DC
- Viết báo cáo
Lò Công - Lập trình giao diện
Minh - Làm Powerpoint
- Lắp đặt phần cứng
Duy Ngọc - Lập trình khối Encoder
- Lập trình giao diện
- Edit video
2 | P a g e
Trang 3Mục Lục
Phần 1: Lời mở đầu 4
Phần 2: Tổng quan 4
Phần 3: Chi tiết đồ án 5
1 Giới thiệu tổng quan 5
1.1.Một vài link liên quan 5
1.2.Ý tưởng 5
1.3.Giao diện phần mềm 5
1.4.Phần cứng 6
2 Chi tiết về đồ án 6
2.1 Sơ đồ điều khiển vòng kín 6
2.1.1 Phần code mô hình điều khiển và đo tốc độ 7 2.1.2 Thiết kế và vận hành 11 2.2 Giao diện 13
Phần 4: Thảo luận 14
Phần 5: Tham khảo 15
Trang 4LẬP TRÌNH CĂN BẢN ĐIỆN TỬ
Phần 1: Lời mở đầu
Lời đầu tiên, chúng em xin trân thành cảm ơn Trường Đại học Phenikaa
đã đưa môn lập trình cơ bản Điện tử vào chương trình giảng dạy Môn học này cung cấp cho chúng em nhiều kiến thức về lập trình điều khiển, phần mềm cũng như phần cứng điều khiển Khóa học này còn giúp chúng em trau dồi nhiều kĩ năng mềm: kỹ năng thuyết trình, kỹ năng viết báo cáo, kỹ năng làm việc nhóm,
…Đây là những kiến thức vô cùng hữu ích cho sinh viên và công việc sau này của chúng em
Chúng em cũng xin gửi lời cảm ơn đến thầy Lê Minh Huy – Giảng viên bộ môn đã dạy và truyền đạt kiến thức cho chúng em trong suốt thời gian học tập vừa qua
Chúng em đã cố gắng để hoàn thành báo cáo này Tuy nhiên, do kiến thức chúng em còn hạn chế và khả năng tiếp thu thực tế còn lúng túng nên đồ án này của chúng em không thể tránh khỏi sai sót Bọn em mong nhận được góp ý thêm từ Thầy và Bạn đọc để cải thiện dự án của chúng em Xin chân thành cảm ơn!
Phần 2: Tổng quan
Trong đồ án này, chúng em thiết kế 1 bộ điều khiển tốc độ cho động cơ DC đơn giản Trước tiên, sử dụng bộ điều khiển PID, ứng dụng trên bo mạch vi điều khiển Arudino Uno là nhân điều khiển trung tâm, MATLAB/SIMULINK là
chương trình xử lý trung gian, phần công suất sử dụng Driver tích hợp L298 để điều chỉnh tốc độ động cơ đạt giá trị đặt (setpoint) nhập vào từ trước
Encoder sẽ đưa xung phản ánh tốc độ động cơ về vi điều khiển, sau đó vi điều khiển sẽ tính toán tốc độ hiện tại để hiển thị và thực hiện giải thuật để điều khiển PID để điều chế độ rộng xung (PWM – Pulse Width Modulation) điều khiển thông qua driver L298
4 | P a g e
Trang 5Phần 3: Chi tiết đồ án
1 Giới thiệu tổng quan
1.1 Một vài link liên quan
Trình bày:
https://drive.google.com/drive/folders/1wi2iG05VW3tXJBbwD1KN7k3P dWtcL6NA?usp=share_link
Phần cứng:
https://drive.google.com/drive/folders/1wi2iG05VW3tXJBbwD1KN7k3Pd WtcL6NA?usp=share_link
1.2 Ý tưởng
Chúng em quyết định chọn đề tài này và phát triển nó theo hướng điều khiển tốc độ động cơ Chúng em muốn chọn một đề tài có liên quan đến ngành học là Cơ điện tử ô tô để chủ động tìm hiểu kiến thức, giúp chúng em nâng cao kiến thức liên quan đến ngành và hiểu hơn về ngành của mình
1.3 Giao diện phần mềm
Pic1 Giao diện
Trang 6Pic1 Giao diện
Trang 71.4 Phần cứng
Pic2 Phần cứng
2 Chi tiết về đồ án
2.1 Sơ đồ điều khiển vòng kín
Nhánh phản hồi
Trang 8LẬP TRÌNH CĂN BẢN ĐIỆN TỬ
2.1.1 Phần code mô hình điều khiển và đo tốc độ
Dưới đây là sơ đồ khối chính mô hình điều khiển và đo tốc độ
Pic3 Sơ đồ khối chính
Chúng ta sẽ đặt một giá trị (setpoint), quy ước giá trị là rpm, tức là
vòng/phút Sau đó, bộ điều khiển PID sẽ tiến hành tính toán để có được giá trị đầu ra Gía trị đầu ra sẽ điều khiển động cơ Encoder sẽ được sử dụng để đọc
tốc độ của động cơ, trả về hệ thống để tính toán ra sai số Từ sai số này, chúng
ta sẽ tính toán ra tín hiều điều khiển để điều khiển động cơ Nó sẽ lặp đi lặp lại đến khi nào sai số nhỏ nhất để đáp ứng hệ thống hoạt động chính xác
Pic4a Thiết lập chân tín hiệu phản hồi từ Encoder
Sử dụng khối Matlab System để tạo ra khối Encoder (code Encoder ở
Pic4b) Chúng ta sẽ thiết lập kết nối kênh A với chân số 2 và kênh B với chân
số 3 Encoder này có 30 xung ở mỗi kênh A và B, đối với khối Encoder này
nó sẽ đọc xung về khi tín hiệu thay đổi, tức là từ 0 đến 1 và từ 1 về 0 nên số xung khi quay hết 1 vòng là 120 xung
7 | P a g e
Trang 9Dưới đây là phần code của encoder
Pic4b Phần code của Encoder
Pic5 Khối tính toán tốc độ động cơ
Trang 10LẬP TRÌNH CĂN BẢN ĐIỆN TỬ
Ở phần tính toán như Pic5, Sử dụng các khối như là Delay, constant,
Product, Gain Sau khi nhận tín hiệu trả về từ encoder, khối sẽ thực hiện tính
toán và đưa về tốc độ đã quy ước chung là rpm Ta thiết lập độ dài trễ là 10.
Pic6 Hàm lọc nhiễu tín hiệu
Nhiễu nguồn xung là một vấn đề thường hay xảy ra, vì vậy, để lọc nhiều, Sử
dụng một khối hàm truyền (Transfer Function) với các thông số có sẵn như
Pic6.
Pic7 Thiết lập giá trị tốc độ ban đầu
điều khiển tốc độ
Pic8 Bộ điều khiển PID
9 | P a g e
Trang 11Về bộ điều khiển PID, nó sẽ giúp sai số xảy ra sẽ được giảm đến mức tối
thiểu nhất bởi ảnh hưởng của tác động tỉ lệ, ảnh hưởng của tác động tích
phân và được làm rõ bởi một tốc độ đạt được với tác động vi phân số liệu trước
đó ta có 3 thông số: kp, Ki, Kd tương ứng là tỉ lệ, tích phân và đạo hàm.
Kp: Độ lợi tỉ lệ
Ki: Độ lợi tích phân
Kd: Độ lợi vi phân
Để chọn ra thông số này, ta áp dụng phương pháp Ziegler-Nichols thứ 2, ban đầu để kp = 2, ta tiếp tục tăng cho đến khi tín hiệu bắt đầu dao động điều hòa
thì giá trị đạt kp = 10 như Pic8a bên dưới
Pic8a
Với Kp = 10 tín hiệu bắt đầu giao động điều hòa, với Tth = 0.1s Xác
định thông số Kth = 10, Tth = 0.1(s)
Trang 12LẬP TRÌNH CĂN BẢN ĐIỆN TỬ
-PID 0.6Kth = 6 0.5Tth = 0.05 0.125Tth = 0.0125 Với: = /( ): Thời gian khâu vi phân
Td = Thời gian khâu tích phân
Áp dụng công thức tính bộ điều khiển theo:
R(s) = Kp(1 + 1 + )
2.1.2 Thiết kế và vận hành
Các thành phần để hoàn thiện phần cứng:
Động Cơ Encoder 30 Xung E130-30AB 1
11 | P a g e
Trang 13Các linh kiện điện tử được sử dụng:
Pic9 Linh kiện
Trang 14LẬP TRÌNH CĂN BẢN ĐIỆN TỬ
Hoàn thành phần cứng:
Pic10 Phần cứng
2.2 Giao diện
Giao diện giúp người dùng có thể dễ dàng điều khiển động cơ
Pic11 Giao diện
13 | P a g e
Trang 15Phần code cho giao diện:
Pic12 Code giao diện
Phần 4: Thảo Luận
Về mô hình điều khiển tốc độ động cơ này, bộ PID giúp sai số đạt đến mức thấp nhất Nhưng trên thực tế, sai số do tác động bên ngoài và nhiễu xung cũng khiến kết quả không như mong muốn Thông số của của PID và của hàm lọc xung cũng mang tính tương đối Dự án này bắt đầu từ nhũng kiến thức cơ bản về Matlab/Simulink, trong quá trình tìm hiểu kiến thức, cũng có những sai sót dẫn đến sản phẩm chưa được tốt nhất Do đó, để làm cho nó tốt hơn trong tương lai, bọn em sẽ tiếp tục nghiên cứu sâu thêm và áp dụng được trong những hoàn cảnh khác nhau khiến sản phẩm trở nên tốt nhất
Trang 16LẬP TRÌNH CĂN BẢN ĐIỆN TỬ
Phần 5: Tham khảo
[1] MATLAB_Stephen J Chapman - MATLAB programming for engineers-Thomson (2008)
[2] https://ctms.engin.umich.edu/CTMS/index.php?aux=Activities_DCmotorB
[3] https://ctms.engin.umich.edu/CTMS/index.php?aux=Activities_DCmotorA
15 | P a g e