Lập trình thuật toán

Một phần của tài liệu Thiết kế, lắp đặt mô hình điều khiển ghế điện sử dụng điều khiển lập trình để nhớ ghế đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 68)

3.2.4.1. Khai báo

Hình 3.12. Thuật toán khai báo và gán lệnh

• Khai báo thư viện I2C và đặt địa chỉ LCD là 0x27 (dòng 1-4).

• Khai báo các chân led, công tắc pan, pan test, chân kích relay, biến trạng thái (dòng 6-13).

• Gán tên cho trạng thái “HIGH – LOW” của các chân kích relay (dòng 15-25).

3.2.4.2. Thiết lập chương trình con

56

Hình 3.14. Thiết lập hiển thị LCD, các chân INPUT, OUTPUT

3.2.4.3. Thuật toán chương trình chính

57

Hình 3.16. Thiết lập trường hợp hệ thống có lỗi và không có lỗi.

Hình 3.17. Thiết lập trường hợp đánh pan test đúng và sai cho cặp pan và pan test thứ nhất

Trường hợp đánh pan test đúng và sai cho các cặp pan và pan test thứ 2,3,4,5 tương tự như cặp pan và pan test thứ nhất ở trên.

58

3.2.5. Mô phỏng hệ thống đánh pan bằng Proteus 8 3.2.5.1. Sơ đồ tổng quan mạch mô phỏng

Hình 3.18. Sơ đồ cơ bản hệ thống đánh pan

Hệ thống mô phỏng điều khiển đánh pan ghế của nhóm chúng em gồm: • Arduino

• 5 công tắc đánh pan • 5 công tắc test đúng

• 10 công tắc test gây nhiễu cho sinh viên (không nối điện với công tắc) • 3 đèn led hiển thị:

+ Đèn xanh: ghế hiện không có lỗi

+ Đèn đỏ: ghế đang còn lỗi

+ Đèn vàng: có lỗi vừa được sửa đúng

+ 1 màn hình LCD 20x4

59

3.2.5.2. Trình tự hoạt động của thuật toán trên mô phỏng

1. Khi ghế bình thường, tắt công tắc:

Lúc này chưa có dòng điện để cấp nguồn cho Arduino nên hệ thống đánh pan chưa hoạt động: đèn led tắt, LCD tắt.

Hình 3.19. Khi ghế bình thường, tắt công tắc 2. Khi ghế bình thường, đã nối dây:

60 Khi nối dây thì sẽ có dòng điện cấp tới Arduino: LCD bật, hiển thị “Welcome!”

Hình 3.21. LCD hiển thị “Welcome!”

Lúc này ghế chưa có lỗi, Arduino nhận tín hiệu tất cả mạch điện trên chiếc ghế điện đều kín, phát tín hiệu LCD sẽ tiếp tục hiển thị “SEAT HAS NO FAULT” và đồng thời đèn led màu xanh cũng sẽ sáng để báo hiệu ghế không có lỗi (hình 3.21).

Hình 3.22. Ghế không có lỗi 3. Khi đánh 1 pan bất kỳ

61 Lúc này Arduino nhận được tín hiệu từ sau công tắc pan, nhận thấy mạch điện sau công tắc pan hở, xuất tín hiệu đến LCD hiển thị “SEAT HAS FAULT”, đồng thời đèn đỏ cũng sẽ sáng báo hiệu ghế đang có lỗi.

Sau khi gạt đúng pan test:

Hình 3.24. Gạt đúng pan test

Sau khi gạt đúng pan test, LCD hiện “SEAT HAS FAULT”, đèn vàng sáng lên 3s rồi tắt báo cho sinh viên biết là mình đã đánh đúng pan, đèn xanh sáng lên tức là không còn lỗi nào nữa. Kèm theo đó Arduino cũng sẽ kích relay ở các chân tương ứng với cặp pan và pan test đúng để nối mạch đang hở, hệ thống ghế sẽ hoạt động bình thường.

4. Khi đánh nhiều pan cùng một lúc:

Hình 3.25. Đánh nhiều pan cùng một lúc

Trường hợp này giống như cũng giống như lúc đánh 1 pan bất kỳ, Arduino nhận tín hiệu từ 1 chân tín hiệu của pan đó nhận thấy mạch điện hở, xuất tín hiệu đến LCD hiển thị “SEAT HAS FAULT, đồng thời đèn đỏ cũng sẽ sáng báo hiệu ghế đã có lỗi, đèn vàng tắt.

62 Sau khi gạt đúng 1 pan test:

Hình 3.26. Gạt lại không hết các pan

Sau khi gạt LCD hiển thị “SEAT HAS FAULT”, đồng thời đèn đỏ cũng vẫn sẽ sáng như thường bởi vì còn có lỗi, chỉ có đèn vàng sáng lên 3 giây để cho sinh viên biết được mình vừa gạt đúng pan test sau khi đo kiểm. Arduino cũng sẽ kích relay tương ứng với cặp pan và pan test vừa sửa đúng.

Sau khi gạt hết các pan test:

Nếu gạt lại hết các pan thì ghế mới hiểu là đã hết lỗi: LCD hiển thị “SEAT HAS NO FAULT” và đồng thời đèn led màu xanh cũng sẽ sáng báo lỗi đã hết.

Hình 3.27. Gạt lại hết các pan

Nếu đánh đúng hết các pan test: Arduino nhận tín hiệu từ từng pan test được đánh đúng, lập tức tín hiệu 5V của các pan lỗi đó, kích relay đóng lại và mạch điện sẽ được nối kín, đồng thời phát tín hiệu cho đèn vàng sáng 3 giây mỗi khi đánh đúng được 1 pan test. Khi đã đánh đúng hết các pan, LCD hiển thị “SEAT HAS NO FAULT” và đồng thời đèn led màu xanh cũng sẽ sáng.

63

Hình 3.28. Mạch điện kích relay.

Mạch điện kích relay (hình 3.28) sử dụng mô phỏng cơ bản theo module relay thực tế. Dòng vào kích 5V từ Arduino, sử dụng transitor khuếch đại dòng từ Arduino là loại NPN, các thông số điện trở như hình.

3.3. Lập trình và mô phỏng hệ thống nhớ vị trí ghế 3.3.1. Sơ đồ khối hệ thống

64

3.3.2. Sơ đồ nguyên lí hệ thống

Nhìn vào sơ đồ hệ thống (hình 3.28) và sơ đồ nguyên lí (hình 3.29), ta có thể thấy được: • Nguồn chính là ắc quy 12V.

• Ngoài việc cấp nguồn cho hệ thống đánh pan từ ắc quy, ắc quy còn cấp cho hệ thống điều khiển nhớ ghế.

• Nguồn 12V qua mạch nguồn hạ áp 5V cấp vào cho Arduino,

• Sau khi Arduino nhận tín hiệu vị trí ghế thông qua cảm biến Hall được đặt trên trục quay của mô tơ, đọc tín hiệu xung vuông gửi vào Arduino. Sau đó, Arduino nhận tín hiệu vị trí ghế và tín hiệu công tắc nhớ ghế để nhớ vị trí hiện tại.

• Sau khi thay đổi vị trí hiện tại để điều chỉnh ghế tới vị trí mới. Việc nhận biết vị trí ghế và nhớ vị trí mới được lặp đi lặp lại nếu người dùng nhấn nút nhớ vị trí 2 hoặc nhớ đè lên vị trí 1 ở lần đầu tiên

• Mỗi lần ghế di chuyển và nhớ, thông tin vị trí ghế và hiển thị vị trí được lưu đều được thể hiện lên màn hình LCD.

65

3.3.3. Lưu đồ thuật toán

Hình 3.31. Lưu đồ thuật toán hệ thống nhớ vị trí ghế

Dựa trên lưu đồ thuật toán ở trên, chúng ta có thể thấy sau khi khởi động, khai báo và khởi tạo chương trình con, cảm biến sẽ tiến hành đọc vị trí ghế. Sau đó chúng ta sẽ điều chỉnh ghế đến vị trí phù hợp thông qua công tắc điều khiển ghế và tiến hành lưu lại vị trí ghế đó hay còn gọi là nhớ vị trí ghế. Tiếp theo chúng ta điều chỉnh ghế đến một vị trí mới và tiến hành bấm công tắc gọi lại vị trí ghế đã lưu. Lúc này chúng ta sẽ xét theo 3 trường hợp:

• Nếu vị trí mới < vị trí đã nhớ: ghế tiến đến vị trí đã nhớ -> chương trình kết thúc. • Nếu vị trí mới > vị trí đã nhớ: ghế lùi lại vị trí đã nhớ -> chương trình kết thúc. • Nếu vị trí mới = vị trí đã nhớ: ghế không di chuyển -> chương trình kết thúc.

66

3.3.4. Lập trình thuật toán 3.3.4.1. Khai báo 3.3.4.1. Khai báo

Hình 3.32. Thuật toán khai báo và gán lệnh

67

3.3.4.2. Thiết lập chương trình con

Hình 3.34. Thuật toán hiển thị vị trí hiện tại

68

Hình 3.36. Thuật toán gọi vị trí ghế tiến hoặc lùi

3.3.4.3. Thuật toán chương trình chính

69

Hình 3.38. Thuật toán nhớ vị trí ghế

70

3.3.5. Mô phỏng hệ thống bằng Proteus 8

3.3.5.1. Sơ đồ tổng quan mạch mô phỏng hệ thống

Hình 3.40. Sơ đồ tổng quan mạch mô phỏng hệ thống

Hệ thống mô phỏng nhớ vị trí ghế của nhóm chúng em gồm: • Board Arduino Mega 2560

• 2 công tắc TIEN – LUI mô phỏng lại công tắc tiến lùi của ghế • 2 công tắc nhớ 2 nhớ vị trí ghế

• 2 công tắc gọi lại 2 vị trí ghế đã nhớ

• 1 mô tơ mô phỏng lại mô tơ tiến lùi của ghế • LCD 20x4 và I2C

• Bộ phận tạo xung mô phỏng cho cảm biến Hall

3.3.5.2. Trình tự hoạt động của thuật toán trên mô phỏng

1. Khi chưa bật công tắc ghế

71

Hình 3.41. Chưa bật công tắc ghế 2. Khi vừa bật công tắc ghế

Lúc này có điện cấp đến Arduino, LCD nhận tín hiệu từ Arduino và hiển thị “Vi tri hien tai: 0”, mô tơ ghế vẫn chưa hoạt động.

Hình 3.42. Vừa bật công tắc ghế 3. Khi bấm công tắc tiến hoặc lùi

*Trường hợp bấm công tắc tiến*

Lúc này cảm biến Hall sẽ nhận được tín hiệu quay từ mô tơ, relay cảm biến đóng và gửi tín hiệu vị trí về Arduino, Arduino nhận tín hiệu và xuất lên màn hình LCD hiển thị “Vi tri hien tai: xxx” (xxx là vị trí hiện tại của mô tơ tiến lùi).

Trường hợp bấm công tắc lùi tương tự bấm công tắc tiến, chỉ đổi chiều quay mô tơ.

72

4. Khi bấm công tắc nhớ vị trí ghế

Lúc này Arduino sẽ nhận tín hiệu từ công tắc nhớ vị trí ghế, xuất tín hiệu lên LCD hiển thị vị trí nhớ ghế bằng vị trí hiện tại, cụ thể là “Vi tri 1 = xxx” (xxx là vị trí nhớ ghế), đồng thời vị trí hiện tại và trạng thái mô tơ không thay đổi.

Hình 3.44. Khi bấm công tắc nhớ vị trí ghế 5. Khi bấm công tắc gọi nhớ vị trí ghế

Trước khi bấm công tắc gọi nhớ vị trí ghế, chúng ta sẽ dùng công tắc TIEN – LUI của ghế để di chuyển ghế tới vị trí mới sao cho khác vị trí ban đầu. Tương tự phần bấm công tắc tiến lùi, LCD sẽ hiển thị vị trí mới được di chuyển tới, lúc này vị trí mới này chính là vị trí hiện tại, cụ thể LCD sẽ hiển thị “Vi tri hien tai: xxx” (xxx là vị trí hiện tại).

Hình 3.45. LCD hiển thị vị trí hiện tại và vị trí đã lưu

Khi bấm công tắc gọi vị trí nhớ ghế, Arduino sẽ nhận được tín hiệu gọi vị trí và xuất tín hiệu kích relay điều khiển mô tơ quay tới vị trí ghế đã được nhớ, đồng thời cũng xuất tín hiệu đến LCD để hiển thị vị trí hiện tại (“Vi tri hien tai: xxx), vị trí hiện tại sẽ tăng dần hoặc giảm dần phụ thuộc vào vị trí hiện tại và và vị trí đã nhớ trước đó.

73

Hình 3.46. Mô tô đang quay tới vị trí đã nhớ khi bấm công tắc gọi vị trí nhớ

Sau đó mô tơ sẽ tiếp tục quay cho tới khi vị trí hiện tại bằng vị trí đã nhớ, lúc này LCD sẽ hiển thị vị trí hiện tại và vị trí nhớ bằng nhau, relay kích mô tơ tiến lùi quay cũng được mở trở lại, mô tơ dừng quay.

Hình 3.47. Mô tơ quay lại đúng vị trí ghế đã nhớ

74 Sau khi mô phỏng xong riêng 2 hệ thống đánh pan và hệ thống nhớ vị trí ghế, nhóm chúng em đã kết hợp 2 hệ thống vào một mạch điện mô phỏng chung dùng chung board Arduino và màn hình LCD. Đây cũng chính là mạch điện nhóm sẽ thực hiện thi công trên mô hình hệ thống ghế.

75

3.3.6. So sánh hệ thống nhớ vị trí ghế trên xe Toyota Camry với hệ thống nhớ vị trí ghế qua lập trình Arduino và mô phỏng Proteus ghế qua lập trình Arduino và mô phỏng Proteus

3.3.6.1. Hệ thống nhớ vị trí ghế trên xe Toyota Camry

Hình 3.49. Sơ đồ hệ thống điều khiển ghế và nhớ ghế trên xe Toyota Camry

3.3.6.2. So sánh hệ thống nhớ vị trí ghế

Nhìn vào sơ đồ hệ thống điều khiển ghế và nhớ ghế trên xe Camry, ta có bảng đánh giá sơ bộ hệ thống mô phỏng nhớ ghế của nhóm so với hệ thống nhớ ghế trên xe như sau:

76 Bảng 3.1. So sánh hệ thống nhớ vị trí ghế

Hệ thống nhớ vị trí ghế trên xe Toyota Camry

Hệ thống nhớ vị trí mô phỏng bằng Arduino và Proteus

Bộ xử lí trung tâm

- Hệ thống sử dụng ECU điều khiển gương chiếu hậu trái để xử lí giao tiếp tín hiệu với khả năng xử lí nhanh và tức thời nhờ việc được sản xuất để sử dụng điều khiển riêng cho ô tô.

- Hệ thống sử dụng board Aduino với vi điều khiển ATmega 2560 đơn giản hơn nhiều so với bộ xử lí ECU trên xe. Tốc độ phản hồi lệnh và xử lí điều khiển cũng chậm hơn nhiều.

Tín hiệu chấp hành - Cả 2 hệ thống đều sử dụng tín hiệu đầu vào là công tắc nhớ

vị trí ghế để gửi tín hiệu vào bộ điều khiển

Tín hiệu cảm biến

- Hệ thống sử dụng cảm biến có sẵn trên mô tơ ghế, sử dụng cảm biến góc quay mô tơ để thu thập thông tin vị trí mô tơ.

- Hệ thống sử dụng cảm biến hall trên trục quay mô tơ để thu thập xung thông qua 1 nam châm gắn trên trục quay mô tơ, đếm số xung để ghi nhớ vị trí.

Nguồn

- Đều sử dụng nguồn vào cho bộ điều khiển ECU là 12V - Đều được hạ áp xuống 5V để xử lí tín hiệu

Cơ cấu chấp hành - Tất cả các mô tơ đều có thể

nhớ vị trí

- Chỉ sử dụng nhớ 2 vị trí cho mô tơ tiến lùi

Hiển thị

- Sử dụng đèn tín hiệu trên bảng taplo để hiển thị thông tin cho người sử dụng

77

3.4. Kế hoạch thi công mô hình

3.4.1. Tháo dỡ các bộ phận không sử dụng

Ban đầu, ghế được nhóm em đưa về xưởng với tình trạng khá cũ, đệm ghế không còn nguyên vẹn vì đã cũ. Nhóm tiến thành tháo dỡ các bộ phận như đệm ghế, da bọc ghế và các đai kẹp cố định bộ đệm ghế và da ghế.

Hình 3.50. Khung ghế bằng sắt sau khi được dỡ bỏ các bộ phận khác

3.4.2. Tháo dỡ các bộ phận quan trọng.

Với mục đích kiểm tra, đo đạc và nghiên cứu đường dây của hệ thống ghế. Nhóm đã quyết định tháo dỡ các bộ phận quan trọng như tấm sưởi ghế, bộ túi khí bên hông ghế và hệ thống dây điện gồm các dây đi vào mô tơ ghế, công tắc và đi vào các bộ phận khác như bộ phận sưởi, bộ phận túi khí và OCS.

78

Hình 3.51. Tấm sưởi ghế

79

Hình 3.53. Hệ thống dây điện của ghế

80

3.4.3. Những công việc hoàn thiện thi công mô hình

• Vệ sinh ghế: để loại bỏ các vết hoen gỉ trên khung ghế, nhóm chúng em sử dụng giấy nhám để đánh bỏ lớp gỉ sắt.

Hình 3.55. Vệ sinh lớp hoen gỉ trên ghế

• Sơn mới khung ghế bằng máy phun sơn của xưởng sơn. • Hàn khung mô hình theo thiết kế 3D (hình 3.3).

• Sơn toàn bộ khung mô hình ghế. • Lắp ghế vào khung mô hình.

• Thi công các bảng điều khiển bằng nhựa mica trắng theo các bảng thiết kế 2D (hình 3.5, hình 3.6 và hình 3.7).

• Thực nghiệm lắp láp các bộ phận trên bảng điều khiển.

• Thực hiện đấu nối dây điện, đo kiểm, thực nghiệm mô phỏng trên mô hình thực tế. • Cuối cùng, sắp xếp hợp lí các dây cho gọn gàng, đánh giá kết quả sau khi hoàn thành.

81

Chương 4. ỨNG DỤNG MÔ HÌNH GHẾ ĐIỆN VÀO GIẢNG DẠY THỰC TẾ 4.1. Đề cương chi tiết môn học chính TT Hệ thống điện thân xe

Tên học phần: TT Hệ thống Điện thân xe Mã học phần : PABE331233

Tên Tiếng Anh: Practice of Automotive Automatic Control

Số tín chỉ: 3 tín chỉ (0/3/6) (0 tín chỉ lý thuyết, 3 tín chỉ thực hành/thí nghiệm)

Phân bố thời gian: 15 ngày (5 ngày lý thuyết xưởng + 10 ngày thực hành + 6 tiết tự học/ ngày)

Các giảng viên phụ trách học phần

1/ GV phụ trách chính: GVC. ThS. Lê Quang Vũ

Một phần của tài liệu Thiết kế, lắp đặt mô hình điều khiển ghế điện sử dụng điều khiển lập trình để nhớ ghế đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 68)

Tải bản đầy đủ (PDF)

(116 trang)