BÁO CÁO BÀI TẬP LỚN MÔN KỸ THUẬT VI XỬ LÝ Đề tài: Xe dò line BÁO CÁO BÀI TẬP LỚN MÔN KỸ THUẬT VI XỬ LÝ Đề tài: Xe dò line Tính toán PID Lời nói đầu Ngày nay với sự phát triển mạnh mẽ của khoa học đời sống, cuộc sống con người đã thay đổi ngày một tốt hơn, với những trang thiết bị hiện đại phục vụ trong công cuộc công nghiệp hóa, hiện đại hóa. Những thiết bị điện, điện tử được phát triển và ứng dụng rộng dãi trong cuộc sống hằng ngày. Từ những thời gian đầu phát triển vi xử lý đã cho thấy được sự ưu việt của nó và cho đến ngày nay tính ưu việt đó ngày càng được khẳng định thêm. Những thành tựu đó đã có thể biến được những cái tưởng chừng như không thể thành những cái có thể, góp phần nâng cao đời sống vật chất và tinh thần cho con người. Nhóm chúng em đã rất cố gắng để có thể hoàn thành tốt nhất đề tài của mình. Tuy nhiên, do vốn kiến thức còn chưa nhiều, cũng như có nhiều yếu tố khách quan khác mà sản phẩm của nhóm còn nhiều thiếu sót. Chúng em rất mong thầy và các anh chị trợ giảng đóng góp ý kiến, phê bình và hướng dẫn thêm để các sản phẩm sau được hoàn thiện hơn. Cuối cùng chúng em xin chân thành cảm ơn thầy Hàn Huy Dũng và các anh chị trợ giảng đã hướng dẫn tận tình giúp chúng em có thể hoàn thành bài tập lớn này. Qua đây, chúng em không chỉ có thêm nhiều kiến thức về chuyên môn mà còn nâng cao hơn được kỹ năng làm việc nhóm, trau dồi thêm ngoại ngữ, biết cách phân tích và tư duy, cùng nhiều kỹ năng mềm khác. Chúng em xin chân thành cảm ơn
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ - VIỂN THÔNG
Trang 2Lời nói đầu
Ngày nay với sự phát triển mạnh mẽ của khoa học đời sống, cuộc sống con người đã thay đổi ngày một tốt hơn, với những trang thiết bị hiện đại phục vụ trongcông cuộc công nghiệp hóa, hiện đại hóa Những thiết bị điện, điện tử được phát triển và ứng dụng rộng dãi trong cuộc sống hằng ngày Từ những thời gian đầu phát triển vi xử lý đã cho thấy được sự ưu việt của nó và cho đến ngày nay tính ưu việt đó ngày càng được khẳng định thêm Những thành tựu đó đã có thể biến được những cái tưởng chừng như không thể thành những cái có thể, góp phần nâng cao đời sống vật chất và tinh thần cho con người
Nhóm chúng em đã rất cố gắng để có thể hoàn thành tốt nhất đề tài của mình Tuy nhiên, do vốn kiến thức còn chưa nhiều, cũng như có nhiều yếu tố khách quan khác mà sản phẩm của nhóm còn nhiều thiếu sót Chúng em rất mong thầy và các anh chị trợ giảng đóng góp ý kiến, phê bình và hướng dẫn thêm để các sản phẩm sau được hoàn thiện hơn
Cuối cùng chúng em xin chân thành cảm ơn thầy Hàn Huy Dũng và các anh chị trợ giảng đã hướng dẫn tận tình giúp chúng em có thể hoàn thành bài tập lớn này Qua đây, chúng em không chỉ có thêm nhiều kiến thức về chuyên môn mà cònnâng cao hơn được kỹ năng làm việc nhóm, trau dồi thêm ngoại ngữ, biết cách phân tích và tư duy, cùng nhiều kỹ năng mềm khác
Chúng em xin chân thành cảm ơn!
Trang 3Mục lục
Lời nói đầu 2
Mục lục 3
Danh mục hình ảnh 5
Danh mục bảng 5
Tóm tắt báo cáo 6
Chương I Thiết kế 7
1.1 Giới thiệu đề tài 7
1.2 Xác định yêu cầu 8
1.2.1 Yêu cầu chức năng 8
1.2.2 Yêu cầu phi chức năng 8
1.3 Bảng kế hoạch thực hiện 8
1.4 Sơ đồ khối 10
1.4 Chi tiết từng khối 10
1.4.1 Khối vi điều khiển 10
1.4.2 Khối cảm biến 12
1.4.3 Khối động cơ 14
1.4.4 Khối nguồn 16
1.5 Sơ đồ nguyên lý 17
1.6 Thuật toán PID 18
Chương II Lập trình và mô phỏng 20
2.1 Sơ đồ mô phỏng 20
2.2 Lập trình 21
2.2.1 GPIO 21
2.2.2 Đọc giá trị các cảm biến 22
2.2.3 Tính toán PID 22
2.2.4 Điều khiển động cơ 22
Chương III Kết luận 24
Chương IV Hướng phát triển 25
Trang 4Chương V Phụ lục 26 Chương VI Tài liệu tham khảo 29
Trang 5Danh mục hình ảnh
Hình 1 Sa bàn 7
Hình 2 Sơ đồ khối 10
Hình 3 Pinmap Esp32 11
Hình 4 Nguyên lý hoạt động của cảm biến hồng ngoại 12
Hình 5 Sơ đồ cấu tạo của IR Infrared Obstacle Avoidance Sensor Module 13
Hình 6 Nguyên lý của IR Infrared Obstacle Avoidance Sensor Module 14
Hình 7 Nguyên lý hoạt động của IR sensor 14
Hình 8 Sơ đồ nguyên lý của L298 15
Hình 9 Mạch hạ áp 17
Hình 10 Sơ đồ nguyên lý 18
Hình 11 Mô hình PID 19
Hình 12 Sơ đồ mô phỏng Proteus 20
Hình 13 Sơ đồ khối chương trình 21
Danh mục bảng Bảng 1 Kế hoạch thực hiên 9
Bảng 2 Vị trí của xe tương ứng giá trị cảm biến 22
Bảng 3 Thử nghiệm PID 22
Trang 7Chương I Thiết kế
1.1 Giới thiệu đề tài
Trong xã hội 4.0 ngày nay, sự phục vụ của máy móc để để thay thế sức lao động của con người là rất cần thiết, đặc biệt là những robot tự hành, không cần người điều khiển
Xe dò line là 1 trong những robot tự hành, tự động di chuyển theo các đường kẻ tối màu (thường là màu đen) đã được vạch sẵn trên nền trắng Ứngdụng phổ biến nhất của nó là luân chuyển hàng hóa, đồ dùng trong các nhà máy, công xưởng, v.v [1] Trong bài tập lớn này, nhóm chúng em sẽ thực hiện đề tài này với quy mô nhỏ hơn, để hiểu được ứng dụng của xe dò line
và phát triển tiếp cho các ứng dụng sau này
Hình 1 Sa bàn
Hình 1 là sa bàn để thực hiện quá trình chạy thử nghiệm của xe, xe sẽ phải đibám theo đường màu đen đã có sẵn trên nền trắng
Trang 81.2 Xác định yêu cầu
1.2.1 Yêu cầu chức năng
Xe dò line cần được thiết kế sao cho khi di chuyển phải bám sát được đường kẻ sẵn Khi di chuyển đến các đoạn vòng cua, gấp khúc, xe phải tự động điều chỉnh tốc độ hợp lý để không bị văng ra ngoài đường kẻ Ngoài
ra, xe có thể mang trên mình 1 khối hình hộp chữ nhật trọng lượng từ 1kg, khối hình hộp này để tượng trưng cho hàng hóa được vận chuyển trong các nhà máy
0.5-1.2.2 Yêu cầu phi chức năng
Mục tiêu của môn học là nắm được ngôn ngữ ASM và ngôn ngữ C, chính vì thế trong bài tập lớn này, yêu cầu phi chức năng của sản phẩm là phải được phát triển dựa trên ngôn ngữ C, và bên cạnh đó sử dụng vi điều khiển ESP32
Mô tả sản phẩm
- Yêu cầu chức năng
- Yêu cầu phi chức
Nắm được chứng năng
mà sản phẩm cần có
Quang, Vũ, Trang, Hoàng, Cường
Thiết lập sơ đồ khối 05/04/2021 Hoàn thành được thiết kế sơ đồ khối
Quang, Vũ
Mô tả chi tiết từng khối
- Khối đầu vào
- Khối xử lý
- Khối hiển thị 13/4/2021 Sơ đồ chi tiết từng khối
Trang, Hoàng
Trang 9Lựa chọn phương án tối ưu
Hoàn thiện và kiểm thử
- Mua linh kiện và lắp
Viết báo cáo và bản trình
Bảng 1 Kế hoạch thực hiên
Trang 101.4 Sơ đồ khối
Hình 2 Sơ đồ khối
Thiết bị gồm 5 khối chính Khối cảm biến sẽ sử dụng 5 IR sensor để dò tín hiệu đường line, sau đó phản hồi tín hiệu về MCU MCU sẽ phát tín hiệu điều khiển cho mạch L298 để điều khiển 2 động cơ DC 2 động cơ này sẽ điều khiển 2 bánh xe đã được gắn sẵn
1.4 Chi tiết từng khối
1.4.1 Khối vi điều khiển
- Đây là khối điều khiển chức năng của toàn mạch
- Pinmap của Esp32 Devkit V1 được thể hiện dưới hình sau:
Trang 11Hình 3 Pinmap Esp32
Chức năng các chân:
Esp32 Devkit V1 có 30 chân, trong đó:
- Có tổng cộng 25 chân GPIO
- 17 GPIO có thể sử dụng ở chế độ output và input
- 4 GPIO chỉ sử dụng được ở chế độ input
- 1 chân EN (chân kích họa của bộ điều chỉnh 3.3V)
- 1 chân Vin (cấp nguồn vào cho Devkit)
- 2 chân GND
- 1 chân 3.3V
Tham số cơ bản:
Trang 12Nguyên lí của cảm biến hồng ngoại
Khối cảm biến của sản phẩm sử dụng cảm biến hồng ngoại để thực hiện các nhiệm vụ nhận biết các tín hiệu và gửi dữ liệu cho bộ xử lí trung tâm
Cảm biến hồng ngoại hay còn được gọi là IR Sensor, chúng là một thiết bị điện tử có khả năng đo và phát hiện bức xạ hồng ngoại trong môi trường xung quanh
Cảm biến hồng ngoại sẽ hoạt động bằng cách sử dụng một cảm biến ánh sáng cụ thể để phát hiện bước sóng ánh sáng chọn trong phổ hồng ngoại (IR) Bằngcách sử dụng đèn LED tạo ra ánh sáng có cùng bước sóng với cảm biến đang tìm kiếm, bạn có thể xem cường độ của ánh sáng nhận được. Khi một vật ở gần cảm biến, ánh sáng từ đèn LED bật ra khỏi vật thể và đi vào cảm biến ánh sáng. Điều này dẫn đến một bước nhảy lớn về cường độ, mà chúng ta đã biết có thể được phát hiện bằng cách sử dụng một ngưỡng
Hình 4 Nguyên lý hoạt động của cảm biến hồng ngoại
Module cảm biến IR Infrared Obsracle Avoidance Sensor
Trong bài tập lớm này nhóm sử dụng cảm biến IR Infrared Obstacle
Avoidance Sensor có sơ đồ cấu tạo như hình dưới đây:
Trang 13Hình 5 Sơ đồ cấu tạo của IR Infrared Obstacle Avoidance Sensor Module
Cảm biến hồng ngoại có khả năng thích nghi với môi trường, có một cặp truyền và nhận tia hồng ngoại. Tia hồng ngoại phát ra một tần số nhất định, khi phát hiện hướng truyền có vật cản (mặt phản xạ), phản xạ vào đèn thu hồng ngoại, sau khi sosánh, đèn “Obstacle LED” sẽ sáng lên, đồng thời đầu cho tín hiệu số đầu ra (một tín hiệu mức thấp); và ngược lại, nếu không có phản xạ (đi vào vùng có màu đen – đường line) thì tín hiệu số đầu ra sẽ là 1 tín hiểu mức cao
- Mức cao – 5V: khi không có vật cản
Chân giao tiếp:
- VCC: điện áp chuyển đổi từ 3.5-5V
- GND: GND ngoài
- OUT: Đầu ra kĩ thuật số (0 hoặc 1)
Sơ đồ nguyên lí của module IR Sensor:
Trang 14Hình 6 Nguyên lý của IR Infrared Obstacle Avoidance Sensor Module
Nguyên lý làm việc: Bộ phát IR gửi tín hiệu hồng ngoại, trong trường hợp có
bề mặt phản xạ (ví dụ mày trắng), phát ra theo một số hướng bao gồm cả hương của bộ thu IR thu tín hiệu phát hiện vật thể
Hình 7 Nguyên lý hoạt động của IR sensor
Khi bộ bề mặt bị hấp thụ (ví dụ màu đen), tín hiệu IR không được phải xạ và cảm biến không thể phát hiện đối tượng Kết quả này sẽ xảy ra cả khi đối tượng vắng mặt
1.4.3 Khối động cơ
Trang 15- Có hai mạch cầu H để điều khiển 2 động cơ
- Giá cả hợp lý
Module Điều Khiển Động Cơ DC L298
Mạch điều khiển động cơ DC L298 có khả năng điều khiển 2 động cơ DC, dòng tối đa 2A mỗi động cơ, mạch tích hợp diode bảo vệ và IC nguồn 7805 giúp cấp nguồn 5VDC cho các module khác (chỉ sử dụng 5V này nếu nguồn cấp
- Driver: L298N tích hợp hai mạch cầu H
- Điện áp điều khiển: +5 V ~ +12 V
- Dòng tối đa cho mỗi cầu H là: 2A (=>2A cho mỗi motor)
- Điện áp của tín hiệu điều khiển: +5 V ~ +7 V
Trang 16- Dòng của tín hiệu điều khiển: 0 ~ 36mA (Arduino có thể chơi đến 40mA nên khỏe re nhé các bạn)
- Công suất hao phí: 20W (khi nhiệt độ T = 75 )℃
Để vi điều khiển và cảm biến hoạt động ổn định, cần 1 nguồn cấp 3.3 – 5V
Vì thế, nhóm chúng em sẽ sử dụng 1 mạch hạ áp DC-DC với đầu vào là nguồn 12V từ 3 pin 4.2V, đầu ra 5V, để cấp cho vi điều khiển và cảm biến
Thông số kỹ thuật
- Điện áp đầu vào: 4V-35V
- Điện áp đầu ra: 1.23V-30V
- Dòng đầu ra: 3A (max)
- Hiệu suất chuyển đổi: 92% (tối đa)
- Tần số hoạt động module hạ áp: 150kHz
- Nhiệt độ hoạt động: -40 đến + 85 ℃ ℃
Trang 17Hình 9 Mạch hạ áp
1.5 Sơ đồ nguyên lý
- Nguồn 12V sẽ được cấp cho mạch L298, và làm đầu vào cho mạch hạ
áp DC-DC, đầu ra 5V cấp cho vi điều khiển và cảm biến
- Sản phẩm sử dụng 5 module IR Sensor, để áp dụng thuật toán PID 1 cách tốt nhất
- Mạch cầu L298 nhận tín hiểu từ Esp32 và điều khiển 2 động cơ DC
Trang 18Hình 10 Sơ đồ nguyên lý
1.6 Thuật toán PID
PID là thuật toán được sử dụng phổ biến trong lĩnh vực điện, điển tử, để tự động điều chỉnh, điều khiển động cơ và giúp đạt được giá trị chuẩn mong muốn, có
độ lỗi nhỏ nhất
1.6.1 Ý tưởng thuật toán
Để hiểu được ý tưởng của thuật toán PID, chúng ta sẽ cùng đi đến 1 ví dụ Giả sử có 1 chiếc xe 3 bánh tự động (trong đó 2 bánh xe được điều khiển bởi động
cơ DC, 1 bánh xe đa hướng) được vận hành bởi 1 vi điều khiển, bài toán đặt ra là cần xe chạy theo 1 đường thẳng, tức là 2 bánh xe được điều khiển bởi động cơ cần quay với tốc độ bằng nhau Nhưng trong trường hợp bánh xe bên phải đi vào vùng
có ma sát (ví dụ đi vào cát, sỏi) thì chắc chắn bánh xe bên phải xe quay với tốc độ chậm hơn bánh xe bên trái Lúc này, đề xe tiếp tục đi thẳng thì động cơ bên phải cần quay nhanh hơn động cơ bên trái Để thực hiện điều này, chúng ta cần xác địnhgiá trị lỗi của số vòng quay, quy ra PWM và băm xung PWM cho động cơ bên
Trang 19 Thuật toán PID là 1 thuật toán lý tưởng để giải quyết vấn đề này.
1.6.2 Mô hình thuật toán
- de(t) dt : đạo hàm độ lỗi trong 1 khoảng thời gian trước đó, giá trị này có nghĩa là giá trị điều chỉnh sẽ phần nào đoán được xu hướng của động
cơ mà điều chỉnh cho hợp lý
Dựa vào công thức và ý nghĩa của các tham số, chúng ta sẽ triển khai thực hiện thuật toán với code C để áp dụng vào điều khiển động cơ thực tế
Chi tiết hơn về thuật toán PID và cách áp dụng vào lập trình được trình bày trong báo cáo cá nhân của thành viên Nguyễn Hồng Quang của nhóm
Trang 20Chương II Lập trình và mô phỏng
Do hoàn cảnh khách quan, nên nhóm không thể offline làm việc với nhau, cũng như việc thay thế linh kiện trong quá trình thực hiện bài tập lớn rất khó khăn, chính vì thế nhóm xin phép được trình bày bài tập lớn này với phần mềm mô phỏng Proteus 8.7, thay thế ESP32 bằng Arduino UNO R3
2.1 Sơ đồ mô phỏng
Hình 12 Sơ đồ mô phỏng Proteus
Trang 21Sơ đồ mô phỏng được sắp xếp với nguyên lý như đã nêu ở phần 1.5, thay thếESP32 bởi Arduino UNO R3 Các logic state được kết nối với các cảm biến tương ứng với đường line, khi logic state ở mức 1 tức là cảm biến đó đang chiếu xuống đường line Các đèn led được kết nối với các chân OUT của các cảm biến, khi cảmbiến chiếu xuống line thì chân OUT xuất ra mức High, đèn led sẽ sáng Hai động
cơ DC được kết nối với L298 biểu trưng cho 2 động cơ DC trái và phải của xe
2.2 Lập trình
Trong phần lập trình, chúng em sử dụng 1 file c duy nhất, code trên nền tảng Arduino IDE platform Chương trình được viết gồm có 4 chức năng chính: cấu hình các GPIO được sử dụng, đọc giá trị các cảm biến trả về, tính toán PID và cuối cùng là điều khiển động cơ
Hình 13 Sơ đồ khối chương trình
2.2.1 GPIO
Các chân IN1 – IN4 của L298 sẽ được kết nối với các chân 4, 5, 6, 7 của
Arduino, đây là các GPIO thông thường Chân ENA và ENB của L298 của L298
Trang 22cầm được băm xung PWM, vì thế chúng được kết nối với chân 3 và 11 của
Arduino (2 GPIO này có thể xuất xung PWM)
Các chân này đều được cấu hình ở chế độ output
Các chân A5 – A1 của Arduino lần lượt được kết nối với các chân OUT (chân
trả về tín hiệu) của casci IR sensor S0 – S4 lần lượt là chân OUT của các IR
sensor từ trái sang phải
Các chân này đều được cấu hình ở chế độ input
2.2.2 Đọc giá trị các cảm biến
Sử dụng 1 mảng sensorValue gồm 5 phần tử để đọc giá trị trả về từ các chân
S0-S4 Từ đó có thể xác định được xem vị trí của xe đang nằm ở đâu so với đường
line và gán giá trị tương ứng cho biến “error” Dưới đây là bảng đánh giá vị trí của
xe so với đường line dựa trên các kết quả trả về của cảm biến
Giá trị các cảm biến Vị trí của xe so với đường line
Các biến Kp, Ki, Kd, P, I, D, pid_value, pre_error là các biến kiểu dữ liệu
float tương ứng với các tham số trong công thức thuật toán PID Bên cạnh đó, các
biến Kp, Ki, Kd được khởi tạo giá trị cố định ở phần khai báo, các giá trị này cần
thực nghiệm và kiểm thử để thay đổi sao cho xe chạy ổn định và chính xác nhất
Bảng 3 Thử nghiệm PID
Trang 23Trên đây là bảng thử nghiệm các thông số cho thuật toán PID và các mức xung PWM mà vi điều khiển xuất ra cho động cơ.
2.2.4 Điều khiển động cơ
Các biến init_value, pid_right, pid_left là các biến kiểu dữ liệu int Biến init_value là giá trị pivot lý tưởng mà ta đã nhắc đến ở phần 1.6.2 Các biến
pid_right, pid_left là các giá trị để xuất ra mức PWM cho các chân ENA, ENB Hàm constrain() có tác dụng giới hạn giá trị của 2 biến pid_right, pid_left trong khoảng mong muốn (khoảng giới hạn xung được thử nghiệm cho kết quả như trongbảng 3)
Link full code: NHQuang58/BTL_VXL_20202 (github.com)
Trang 24Chương III Kết luận
Do chưa thể thực nghiệm nhiều trên sản phẩm thật, nên nhóm chưa có
những kết luận chính xác và đầy đủ nhất Nhưng qua quá trình thực hiện sản phẩm này và quá trình mô phỏng, chúng em có 1 số kết luận như sau:
- Để hệ thống hoạt động chính xác, nguồn cung cấp cần được giữ ở mức ổn định
- Cảm biến IR cần điều chỉnh biến trở sao cho thu được tín hiệu đầu ra chính xác nhất, khi điện áp đầu vào thay đổi thì độ chính xác của cảm biến cũng thay đổi theo nên cần điều chỉnh lại biến trở
- Mạch điều khiển L298 nên cấp nguồn riêng nếu được, không nên chung nguồn cấp với vi điều khiển và cảm biến
- Thuật toán PID độ chính xác cao, tuy nhiên cần điều chỉnh giá trị Kp,
Ki, Kd cho phù hợp với từng hệ thống
Trang 25Chương IV Hướng phát triển
Xe dò line là 1 loại xe tự hành đã và đang được phát triển rộng rãi Ứng dụng này được sử dụng trong nhiều nhà máy với mục đích là vận chuyển hàng hóa,tiết kiệm thời gian và sức lao động của con người Chính vì vậy, trong tương lai, chúng em muốn phát triển ứng dụng này và thêm phần phát hiện vật cản đa hướng,
để có thể dừng xe lại kịp thời trước khi xảy ra va chạm Ngoài ra, nhóm dự định sẽ phát triển và thử nghiệm xe ở ngoài đường phố, là bước đà để nghiên cứu các loại
xe không người lái trong giao thông
Trên đây là những hướng phát triển của nhóm chúng em, rất mong thầy có những đánh giá và lời khuyên để chúng em có thể thực hiện các ý tưởng này!