(Đồ án hcmute) biên soạn các bài học cho môn thực tập lập trình điều khiển ô tô

211 4 0
(Đồ án hcmute) biên soạn các bài học cho môn thực tập lập trình điều khiển ô tô

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT Ô TÔ BIÊN SOẠN CÁC BÀI HỌC CHO MƠN THỰC TẬP LẬP TRÌNH ĐIỀU KHIỂN Ô TÔ GVHD: ThS NGUYỄN TRỌNG THỨC SVTH: MAI NGUYỄN ANH ĐỨC NGUYỄN HỮU VINH SKL008271 Tp.Hồ Chí Minh, tháng 8/2021 h TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHOA CƠ KHÍ ĐỘNG LỰC ĐỒ ÁN TỐT NGHIỆP BIÊN SOẠN CÁC BÀI HỌC CHO MƠN THỰC TẬP LẬP TRÌNH ĐIỀU KHIỂN Ơ TƠ SVTH: MAI NGUYỄN ANH ĐỨC MSSV: 17145278 SVTH: NGUYỄN HỮU VINH MSSV: 17145404 GVHD: Th.S NGUYỄN TRỌNG THỨC Tp Hồ Chí Minh, ngày 24 tháng 08 năm 2021 h TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHOA CƠ KHÍ ĐỘNG LỰC ĐỒ ÁN TỐT NGHIỆP Chuyên ngành: Công nghệ Kỹ thuật ô tô Tên đề tài BIÊN SOẠN CÁC BÀI HỌC CHO MÔN THỰC TẬP LẬP TRÌNH ĐIỀU KHIỂN Ơ TƠ SVTH: MAI NGUYỄN ANH ĐỨC MSSV: 17145278 SVTH: NGUYỄN HỮU VINH MSSV: 17145404 GVHD: Th.S NGUYỄN TRỌNG THỨC Tp Hồ Chí Minh, ngày 24 tháng 08 năm 2021 h TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA CƠ KHÍ ĐỘNG LỰC CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự – Hạnh phúc TP Hồ Chí Minh, ngày tháng năm 2021 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: 1.Mai Nguyễn Anh Đức MSSV: 17145278 Nguyễn Hữu Vinh MSSV: 17145404 Chuyên ngành: Công nghệ Kỹ thuật Ơ tơ Mã ngành đào tạo: 7510205D Hệ đào tạo: Đại học quy Mã hệ đào tạo: K145278 Khóa: K17 Lớp: 171452A, 171451A Tên đề tài Biên soạn học cho môn thực tập lập trình điều khiển tơ Nhiệm vụ đề tài - Tìm hiểu dịng vi điều khiển AVR vi điều khiển ATmega328 - Biên soạn học cho mơn thực tập lập trình điều khiển tơ - Tạo sẵn thư viện, chương trình mẫu hỗ trợ học tập phát triển - Thiết kế mơ hình chương trình Web Server hỗ trợ hiển thị liệu Sản phẩm đề tài - Tập giảng mơn thực tập lập trình điều khiển ô tô - Các chương trình mẫu ba thư viện Arduino hỗ trợ lập trình: + Thư viện Button: Lọc nhiễu xử lý kiện nút nhấn digital (bắt đầu nhấn, nhấn giữ, thả nhấn) + Thư viện AnalogButton: Sử dụng cho nút nhấn analog + Thư viện Led7: Sử dụng nhanh led đoạn - Hai mơ hình Web Server hỗ trợ hiển thị liệu phục vụ trình dạy học, thực hành sử dụng mơ hình: + Mơ hình Web Socket sử dụng mạng cục internet + Mơ hình Web Server chạy mạch NodeMCU (ESP8266) h Ngày giao nhiệm vụ đề tài: 24/05/2021 Ngày hoàn thành nhiệm vụ: 24/08/2021 TRƯỞNG BỘ MÔN CÁN BỘ HƯỚNG DẪN h TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT CỘNG HOÀ XÃ HỘI CHỦ NGHĨA TP HCM VIỆT NAM KHOA CƠ KHÍ ĐỘNG LỰC Độc lập - Tự – Hạnh phúc Bộ môn: Điện – Điện tử ô tô PHIẾU NHẬN XÉT ĐỒ ÁN TỐT NGHIỆP (Dành cho giảng viên hướng dẫn) Họ tên sinh viên: Mai Nguyễn Anh Đức MSSV: 17145278 Nguyễn Hữu Vinh MSSV: 17145404 Tên đề tài: Biên soạn học cho môn thực tập lập trình điều khiển tơ Ngành đào tạo: Cơng nghệ Kỹ thuật Ơtơ Họ tên GV hướng dẫn: ThS Nguyễn Trọng Thức Ý KIẾN NHẬN XÉT Nhận xét tinh thần, thái độ làm việc sinh viên …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… Nhận xét kết thực ĐATN 2.1 Kết cấu, cách thức trình bày ĐATN: …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… h 2.2 Nội dung đồ án: (Cơ sở lý luận, tính thực tiễn khả ứng dụng đồ án, hướng nghiên cứu tiếp tục phát triển) …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… 2.3 Kết đạt được: …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… 2.4 Những tồn (nếu có): …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… h Đánh giá Mục đánh giá TT Hình thức kết cấu ĐATN Điểm Điểm tối đa đạt 30 Đúng forrmat với đầy đủ hình thức nội dung 10 mục Mục tiêu, nhiệm vụ, tổng quan đề tài 10 Tính cấp thiết đề tài 10 Nội dung ĐATN 50 Khả ứng dụng kiến thức toán học, khoa học kỹ thuật, khoa học xã hội… Khả thực hiện/ phân tích/ tổng hợp/ đánh giá 10 Khả thiết kế, chế tạo hệ thống, thành phần, 15 quy trình đáp ứng yêu cầu đưa với ràng buộc thực tế Khả cải tiến phát triển 15 Khả sử dụng công cụ kỹ thuật, phần mềm chuyên ngành… Đánh giá khả ứng dụng đề tài 10 Sản phẩm cụ thể ĐATN 10 Tổng điểm 100 Kết luận ☐ Được phép bảo vệ ☐ Không phép bảo vệ Tp Hồ Chí Minh, ngày tháng 08 năm 2021 Giảng viên hướng dẫn h TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT CỘNG HOÀ XÃ HỘI CHỦ NGHĨA TP HCM VIỆT NAM KHOA CƠ KHÍ ĐỘNG LỰC Độc lập - Tự – Hạnh phúc Bộ môn: Điện – Điện tử ô tô PHIẾU NHẬN XÉT ĐỒ ÁN TỐT NGHIỆP (Dành cho giảng viên phản biện) Họ tên sinh viên: Mai Nguyễn Anh Đức MSSV: 17145278 Nguyễn Hữu Vinh MSSV: 17145404 Tên đề tài: Biên soạn học cho môn thực tập lập trình điều khiển tơ Ngành đào tạo: Cơng nghệ Kỹ thuật Ơtơ Họ tên GV phản biện: …………………………………………………… Ý KIẾN NHẬN XÉT Nhận xét tinh thần, thái độ làm việc sinh viên …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… Nhận xét kết thực ĐATN 2.1 Kết cấu, cách thức trình bày ĐATN: …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… h 2.2 Nội dung đồ án: (Cơ sở lý luận, tính thực tiễn khả ứng dụng đồ án, hướng nghiên cứu tiếp tục phát triển) …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… 2.3 Kết đạt được: …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… 2.4 Những tồn (nếu có): …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… h 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66 gain tuning) Đây khơng phải việc dễ dàng phụ thuộc vào nhiều yếu tố Một vài kinh nghiệm chọn hệ số cho PID sau: • Chọn Kp trước: thử điều khiển P với đối tượng thật (hoặc mô phỏng), điều chỉnh Kp cho thời gian đáp ứng đủ nhanh, chấp nhận overshot nhỏ • Thêm thành phần D để loại overshot, tăng Kd từ từ, thử nghiệm chọn giá trị thích hợp Steady state error xuất • Thêm thành phần I để giảm steady state error Nên tăng Ki từ bé đến lớn để giảm steady state error đồng thời không overshot xuất trở lại Tập lệnh sử dụng37 Ở học chương trình khơng hàm delay bạn tìm hiểu cách tạo “bộ đếm thời gian” để thực thi nhiệm vụ với hàm millis() sử dụng timer0, nhiên đếm thời gian gần đúng, để xác học tạo timer cách truyền thống lập trình với ghi avr Trên Atmega328 có timer Timer/Counter0 (T/C) (8bit), Timer/Counter1 (16 bit), Timer/Counter2 (8 bit), để không làm ảnh hưởng đến hàm delay() millis() Arduino không nên tác động đến T/C0 Có nhiều chế độ cài đặt để tạo timer nhiên học tạo timer dựa chế độ ngắt tràn T/C1 Các ghi sử dụng bao gồm: Thanh ghi TCNT1 (T/C1 Register) Là ghi 16 bit, lưu giữ giá trị Timer/Counter1, cho phép đọc-ghi trực tiếp, đó, thực phép gán thay đổi giá trị TCNT1 Thanh ghi TCCR1B (T/C1 Control Register B) Là ghi điều khiển hoạt đông Timer/Counter1 (cùng với TCCR1A, với mục đích đơn giản, cần ghi TCCR1B) Hình 8.3 Thanh ghi TCCR1B 37 http://arduino.vn/bai-viet/411-timercounter-tren-avrarduino 75 h 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66 Trong ghi TCCR1B cần sử dụng 3bit CS10, CS11, CS12 để lựa chọn xung nhịp cho T/C1 Hình 8.4 Mơ tả Clock Select Bit ghi TCCR1B Theo mặc định, chip Atmega328p Arduino chạy 16MHz, prescaler = 64 Điều có nghĩa là: theo mặc định, T/C Arduino có tần số hoạt động 16MHz/64 = 250kHz Thanh ghi TIMSK1 (Timer/Counter1 Interrupt Mask Register) Là ghi lưu giữ Interrupt Mask T/C1 Đây ghi giúp thực Timer Interrupt Trên ghi TIMSK1 cần ý bit sau: Hình 8.5 Thanh ghi TIMSK1 (T/C1) • bit - ICIE1: Input Capture Interrupt Enable - Cho phép ngắt dùng Input Capture • bit - OCIE1B: Output Compare Interrupt Enable channel B - Cho phép ngắt dùng Output Compare channel B • bit - OCIE1A: Output Compare Interrupt Enable channel A - Cho phép ngắt dùng Output Compare channel A • bit - TOIE1: Overflow Interrupt Enable - Cho phép ngắt xảy tràn T/C Vì sử dụng ngắt tràn T/C1 nên ta cần set bit0 TOIE1 lên 1: TIMSK1 = 1; 76 h 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66 Các chế độ T/C1 Hình 8.6 Waveform Generation Mode Bit (Timer/Counter1) Trong sử dụng chế độ Normal theo mặc định bit cần set WGM13, WGM12, WGM11 WGM10 ghi TCCR1A TCCR1B Chương trình mẫu tạo timer 50ms sử dụng ngắt tràn T/C1 sau: 77 h 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66 Giải thích chương trình: • #include thư viện Interrupt AVR • cli() dùng để tắt ngắt tồn cục • TCCR1B = 0b11 dùng để cài đặt prescaler = 64, nghĩa 4us giá trị ghi TCNT1 tăng lên đơn vị Bộ đếm 50ms 12500 lần đếm, đủ chứa ghi 16bit TCNT1 • Vì sử dụng ngắt tràn T/C1 nên giá trị ban đầu TCNT1 53036 (= 6553612500) • sei() dùng để bật ngắt tồn cục • ISR (Vector_name) trình phục vụ ngắt, ISR keyword, Vector_name chương trình TIMER1_OVF_vect, có nghĩa "Ngắt tràn Timer/Counter1" • Ở trình phục vụ ngắt, cần gán lại giá trị ban đầu cho TCNT1 = 53036 lúc T/C1 đếm tràn qua 65535 lại Nếu không gán lại TCNT1 = 53036, không tạo 50ms mong muốn Thiết lập phần cứng Các thiết bị sử dụng bao gồm Arduino nano, l298n, động giảm tốc GA25-370 kèm encoder giới thiệu học trước Sơ đồ kết nối: 5V 3,3~5V 12V 5V 12V Encoder + Phase A Encoder (GA25-370) Phase B Arduino nano ENA 10 IN1 11 IN2 out1 L298n Encoder - IN3 IN4 ENB out2 Motor (GA25-370) GND GND Hình 8.7 Sơ đồ kết nối Arduino nano, L298n, GA25-370 Lập trình điều khiển tốc độ động GA25-370 Lập trình điều khiển tốc độ yêu cầu thường gặp làm việc với hệ thống có sử dụng motor Kỹ thuật PWM giúp điều khiển thay đổi tốc độ động nhiên xác thay đổi cơng suất cấp cho động hoạt động thực tế tốc độ động 78 h 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66 hoạt động thay đổi phụ thuộc tải đặt lên trục động Do điều khiển chiều để giữ nguyên tốc độ động điều Một giải thuật thường sử dụng giải thuật điều khiển PID giới thiệu, dựa vào xung encoder trả ta có tốc độ động thực tế tính tốn với tốc độ mong muốn Mơ hình điều khiển sau: Tốc độ ĐC mong muốn Controller Arduino nano Actuator L298N Process Động GA25370 Tốc độ trục ĐC Encoder Hình 8.8 Mơ hình điều khiển tốc độ động GA25-370 Chương trình Chương trình tạo timer 50ms thực việc đo tốc độ động dựa vào số xung (encoder trả về) đếm thời gian trên, đồng thời thực giải thuật PID: Start IN IN Cài đặt ngắt INT Cài đặt ngắt tràn T/C1 ms Đặt chế độ chân Đặt lại timer T/C1 Tính rpm (count số xung đếm 50ms): rpm = (1000*60*count)/(50*495) OUT Đọc VR1 gán giá trị set_rpm (0~90 v/p) (tốc độ mong muốn) is_changed true? (Có ngắt tràn?) Đếm xung count++; Giải thuật PID tính độ rộng xung PWM điều khiển động (output): err = set_rpm - rpm; P = Kp*err; D = Kd*(err-last_err)/0.05; I += Ki*err*0.05; output += P+I+D; last_err = err; Sai Giới hạn độ rộng xung output (0~255) Xuất xung PWM điều khiển Đúng is_changed = false; Is_changed = true; count = 0; In giá trị: set_rpm rpm (tốc độ thực) output (độ rộng xung PWM) OUT Hình 8.9 Lưu đồ PID điều khiển tốc độ động (chương trình 1) 79 h 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66 80 h 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66 Kết chương trình: Hình 8.10 Kết PID điều khiển tốc độ động (Chương trình 1) 81 h 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66 Đường giá trị màu xanh dương tương ứng giá trị set_rpm (tốc độ rpm mong muốn) cài đặt biến trở VR1, đường màu đỏ giá trị rpm (tốc độ rpm thực tế đo được), hình ảnh kết thứ đường màu xanh giá trị output (độ rộng xung PWM điều khiển động cơ) Trục tung đồ thị đơn vị vịng/phút, trục hồnh trục thời gian chia làm 500 điểm, hai điểm giá trị liên tiếp 50ms Giải thuật PID điều chỉnh output để giá trị rpm thực tế giữ ổn định set_rpm, Giả sử tăng tải lên trục động (dùng kẹp kẹp trục động cơ) (vùng màu vàng đồ thị), tốc độ động giảm giải thuật PID tăng giá trị output để tăng công suất động bù đắp cho tải cố gắng đưa tốc độ lại giá trị mong muốn Tương tự giảm tải (khi thả kẹp trục động cơ) (vùng màu vàng đồ thị), giá trị tốc độ thực tế tăng lên PID thực giảm output để giữ ổn định tốc độ Lựa chọn giá trị Kp, Ki, Kd cần hợp lý để động hoạt động ổn định tất dải tốc độ, thêm điều kiện kiểm tra để dải tốc độ sử dụng thông số Kp, Ki, Kd khác Chu kỳ lấy mẫu thực điều khiển ảnh hưởng lớn đến kết điều khiển, thời gian lấy mẫu nhỏ số xung trả khiến cho việc tính tốn giá trị rpm khơng xác (đã đề cập encoder – nhược điểm trong), dải tốc độ 0~90 (vòng/phút) với timer 50ms số xung đếm số nguyên dương khoảng 0~38 (xung) làm giảm độ phân giải giá trị đo Tuy nhiên thời gian lấy mẫu lớn tăng số lượng xung đếm, đo giá trị rpm thực tế xác lại làm giảm độ mịn, giảm hiệu việc điều khiển Việc lựa chọn chu kỳ lấy mẫu thực điều khiển, lựa chọn thông số tùy thuộc vào loại động bạn sử dụng, yêu cầu điều khiển thực tế kết chấp nhận 82 h 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66 Chương trình Trong chương trình 1, chu kỳ lấy mẫu đo tốc độ rpm động chu điều khiển 50ms, nhiên có nhược điểm nêu Chương trình thực đo giá trị tốc độ động dựa vào chu kỳ xung encoder trả về, thời gian lấy mẫu đo tốc độ nhanh chu điều khiển ngắn Chương trình tạo ngắt tràn timer chu kỳ 5ms để thực giải thuật PID, ngắt INT0 để đo chu kỳ xung T tính tốc độ động trình bày học trước Start IN IN Cài đặt ngắt INT Cài đặt ngắt tràn T/C1 5ms Đặt chế độ chân Đặt lại timer T/C1 Giải thuật PID tính độ rộng xung PWM điều khiển động (output): err = set_rpm - rpm; P = Kp*err; D = Kd*1000*(err-last_err)/5; I += Ki*err*5/1000; output += P+I+D; last_err = err; Đọc VR1 gán giá trị set_rpm (0~90 v/p) (tốc độ mong muốn) is_changed true? (Có ngắt tràn?) Đặt tốc độ động 0: rpm = 0; OUT Sai Giới hạn độ rộng xung output (0~255) Xuất xung PWM điều khiển Đúng Đúng Tính chu kỳ xung T Tính tốc độ động cơ: rpm = (1000000*60)/(495*T); Khơng có xung 100ms? Is_changed = true; Sai is_changed = false; OUT In giá trị: set_rpm rpm output (độ rộng xung PWM) Hình 8.11 Lưu đồ PID điều khiển tốc độ động (chương trình 1) 83 h 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66 84 h 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66 Kết chương trình: Hình 8.12 Kết PID điều khiển tốc độ động (Chương trình 2) Với chương trình 2, giải thuật PID tính giá trị output tốc độ động thực tế đáp ứng với thay đổi tốc độ mong muốn (set_rpm) thay đổi tải tốt nhiều Vì chu giải thuật giảm 5ms tối ưu thời gian lấy mẫu đo giá trị tốc độ động (thay đổi theo tốc độ, tốc độ cao lấy mẫu nhanh), với dải tốc độ 8~90 (vịng/phút) chu kỳ xung (cũng thời gian lấy mẫu giá trị tốc độ mới) thay đổi khoảng 15(ms)~1,3(ms) Đơn vị trục tung vòng/phút, trục hồnh trục thời gian có 500 điểm, hai điểm giá trị liên tiếp cách 5ms 85 h 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66 Lập trình điều khiển vị trí động GA25-370 Động GA25-370 tìm hiểu, quay encoder trả hai xung lệch pha với nhau, ta dựa vào để xác định vị trí trục động cơ, góc xoay trục… Và tương tự yêu cầu điều khiển tốc độ động DC, điều khiển vị trí động yêu cầu phổ biến, phần sử dụng giải thuật PID để điều khiển vị trí trục động GA25-370 Mơ hình điều khiển sau: Vị trí trục mong muốn Controller Arduino nano Process Động GA25370 Actuator L298N Vị trí trục động (độ) Encoder Hình 8.13 Mơ hình điều khiển vị trí động GA25-370 Start IN IN Cài đặt ngắt INT Cài đặt ngắt tràn T/C1 1ms Đặt chế độ chân Đặt lại timer T/C1 Quay ngược chiều kim đồng hồ? Giải thuật PID tính độ rộng xung PWM điều khiển động (output): err = set_pos - pos; P = Kp*err; D = Kd*1000*(err-last_err); I += Ki*err/1000; output = P+I+D; last_err = err; Đặt vị trí trục (pos) ban đầu (Quy đổi giá trị VR1) Đọc VR1 gán giá trị set_pos (0~360) (vị trí mong muốn) Output >0 Đúng Sai Đúng count++; count Cài đặt ĐC quay ngược chiều kim đồng hồ Tính vị trí trục: pos = 360*count/495; Sai is_changed true? (Có ngắt tràn?) Sai Đúng is_changed = false; In giá trị: set_pos pos (vị trí trục) output Cài đặt ĐC quay chiều kim đồng hồ OUT Xuất xung PWM điều khiển với độ rộng xung |output| Is_changed = true; OUT Hình 8.14 Lưu đồ PID điều khiển vị trí động 86 h 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66 87 h 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66 Kết chương trình: Hình 8.15 Kết PID điều khiển vị trí động Đường màu xanh đồ thị giá trị set_pos (vị trí trục động mong muốn)(độ), giá trị đường màu đỏ pos (độ) (vị trí thực tế trục động cơ) Trục tung có đơn vị độ, trục hoành trục thời gian chia làm 500 điểm, thời gian hai điểm liên tiếp 1ms Khi cài đặt vị trí trục mong muốn biến trở VR1, giải thuật PID tính tốn độ rộng xung PWM chiều để điều khiển động đưa trục tới vị trí đặt Có thể lựa chọn giá trị thơng số theo cách sau: • Chọn Kp trước: điều chỉnh Kp cho thời gian đáp ứng đủ nhanh, chấp nhận overshot nhỏ • Thêm thành phần D để loại overshot, tăng Kd từ từ, thử nghiệm chọn giá trị thích hợp Sai số tĩnh xuất hiện, vị trí trục ổn định bị lệch • Thêm thành phần I để giảm sai số tĩnh Nên tăng Ki từ bé đến lớn đồng thời không overshot xuất trở lại 88 h 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66 37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99

Ngày đăng: 07/09/2023, 23:13

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan