Các phần mềm hỗ trợ viết 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 54)

2.5.1. Arduino IDE

Nhóm sử dụng phần mềm Arduino IDE để viết chương trình thuật toán và xuất file hex để nạp vào phần mềm mô phỏng mạch Proteus 7. Sau đây là một số thông tin cơ bản nhóm chúng em tìm hiểu về Arduino IDE.

2.5.1.1. Sơ lược về Arduino IDE

Arduino IDE là một phần mềm mã nguồn mở chủ yếu được sử dụng để viết và biên dịch mã vào module Arduino. Nó có các phiên bản cho các hệ điều hành như MAC, Windows, Linux và chạy trên nền tảng Java đi kèm với các chức năng và lệnh có sẵn đóng vai trò quan trọng để gỡ lỗi, chỉnh sửa và biên dịch mã trong môi trường.

Có rất nhiều các module Arduino như Arduino Mega 2560, Arduino Mega, Arduino Leonardo, Arduino Micro và nhiều module khác. Mỗi module chứa một bộ vi điều khiển trên board mạch được lập trình và chấp nhận thông tin dưới dạng mã. Mã chính, còn được gọi là sketch, được tạo trên nền tảng IDE sẽ tạo ra một file Hex, sau đó được chuyển và tải lên trong bộ điều khiển trên bo.

Môi trường IDE chủ yếu chứa hai phần cơ bản: trình chỉnh sửa và trình biên dịch, phần đầu sử dụng để viết mã được yêu cầu và phần sau được sử dụng để biên dịch và tải mã lên module Arduino.

42

Hình 2.47. Giao diện Arduino IDE

2.5.1.2. Cách Arduino IDE hoạt động

Khi chúng ta viết mã và biên dịch, IDE sẽ tạo file Hex cho mã. File Hex là các file thập phân Hexa được Arduino hiểu và sau đó được gửi đến board mạch bằng cáp USB. Mỗi bo Arduino đều được tích hợp một bộ vi điều khiển, bộ vi điều khiển sẽ nhận file hex và chạy theo mã được viết.

2.5.1.3. Thư viện

Các thư viện rất hữu ích để thêm chức năng bổ sung vào module Arduino. Có một danh sách các thư viện chúng ta có thể thêm bằng cách nhấp vào nút Sketch trong thanh menu và đi tới Include Library.

Khi nhấp vào Include Library và thêm thư viện tương ứng, nó sẽ xuất hiện trên đầu sketch với ký hiệu #include. Hầu hết các thư viện đều được cài đặt sẵn và đi kèm với phần mềm Arduino. Tuy nhiên, chúng ta cũng có thể tải xuống từ các nguồn bên ngoài.

43

Hình 2.48. Thư viện

2.5.1.4. Chọn board

Để tải sketch lên, chúng ta cần chọn board mạch phù hợp mà chúng ta đang sử dụng và các cổng cho hệ điều hành đó. Chỉ cần nhấp vào Tool trên Menu, đi tới phần Board và chọn bo chúng ta muốn làm việc. Tương tự, COM1, COM2, COM4, COM5, COM7 hoặc cao hơn được dành riêng cho board Serial và board USB. Chúng ta có thể tìm thiết bị serial USB trong phần cổng của Windows Device Manager.

Sau khi lựa chọn chính xác cả Board mạch và Cổng Serial, nhấp vào nút Verify và sau đó là nút Upload xuất hiện ở góc trên bên trái của phần sáu nút hoặc chúng ta có thể chuyển đến phần Sketch và nhấn verify/compile rồi tải lên.

Sketch được viết trong trình soạn thảo văn bản và sau đó được lưu với phần mở rộng tệp .ino.

2.5.1.5. Bootloader

Khi chúng ta đi đến phần Tool, sẽ tìm thấy Bootloader ở cuối. Việc ghi mã trực tiếp vào bộ điều khiển sẽ rất hữu ích, không cần phải mua ổ ghi bên ngoài để ghi mã. Khi mua module Arduino mới, bootloader đã được cài đặt bên trong bộ điều khiển. Tuy nhiên, nếu chúng ta định mua một bộ điều khiển và đặt vào module Arduino, thì cần ghi lại Bootloader bên trong bộ điều khiển bằng cách chuyển đến phần Tools và chọn Burn Bootloader.

2.5.1.6. Mô phỏng Arduino trên Proteus

Để mô phỏng Arduino thông qua Proteus, chúng ta cần có các bước cơ bản như sau: • Đầu tiên là cài đặt thư viện Arduino cho Proteus

44 • Xuất file hex từ phần mềm Arduino IDE

• Click đúp chuột vào board Arduino trong Proteus để chọn file hex vừa xuất • Chạy Proteus và kiểm tra kết quả

2.5.2. Microsoft Visual Studio Code (MVSC)

Hình 2.49. Giao diện gõ thuật toán của MVSC

Visual Studio Code (VS Code hay VSC) là một trong những trình soạn thảo mã nguồn phổ biến nhất được sử dụng bởi các lập trình viên. Nhanh, nhẹ, hỗ trợ đa nền tảng, nhiều tính năng và là mã nguồn mở chính là những ưu điểm vượt trội khiến VS Code ngày càng được ứng dụng rộng rãi.

• Visual Studio Code hỗ trợ nhiều ngôn ngữ lập trình như C/C++, C#, F#, Visual Basic, HTML, CSS, JavaScript, … Vì vậy, nó dễ dàng phát hiện và đưa ra thông báo nếu chương chương trình có lỗi.

• Visual Studio Code có thể hoạt động tốt trên cả ba nền tảng Windows hoặc Linux hoặc Mac Systems.

45 • Đi kèm với sự phát triển của lập trình là nhu cầu về lưu trữ an toàn. Với Visual Studio Code, người dùng có thể hoàn toàn yên tâm vì nó dễ dàng kết nối với Git hoặc bất kỳ kho lưu trữ hiện có nào.

• Visual Studio Code hỗ trợ nhiều ứng dụng web. Ngoài ra, nó cũng có một trình soạn thảo và thiết kế website.

• Một số đoạn code có thể thay đổi chút ít để thuận tiện cho người dùng. Visual Studio Code sẽ đề xuất cho lập trình viên các tùy chọn thay thế nếu có.

• Visual Studio Code: nó có thể phát hiện nếu bất kỳ đoạn mã nào không đầy đủ. Thậm chí, khi chúng ta quên không khai báo biến, Intellisense sẽ tự động giúp chúng ta bổ sung các cú pháp còn thiếu.

Nhóm chúng em sử dụng thêm VSC để viết thuật toán bởi sự thuật tiện của nó, ngoài những tính năng cơ bản như trên thì VSC còn có thể liên kết với Arduino IDE để nhóm có thể viết thuật toán với giao diện dễ nhìn hơn, dễ dàng kiểm soát lỗi với sự hỗ trợ từ phần mềm. Do có thể liên kết với Arduino IDE nên khi lưu thuật toán trong quá trình viết nó sẽ đồng bộ sang Arduino IDE, từ đó chỉ cần Verify để xuất file hex sang board Arduino mô phỏng bằng Proteus.

2.6. Yêu cầu về mô hình giảng dạy

Về thiết kế, mô hình giảng dạy ghế điện cần đáp ứng những yêu cầu cơ bản sau: • Mô hình đạt yêu cầu về mặt thiết kế trên bản vẽ và độ chính xác cao.

• Tính tiện dụng trong quá trình sử dụng, dễ dàng vận chuyển vào lớp học. • Đủ chắc chắn về kết cấu nhưng vẫn đảm bảo tính thẩm mĩ.

• Thiết kế phù hợp với nhu cầu học trực tiếp trên bàn của sinh viên.

• Thiết kế bố trí các giắc cắm, công tắc, relay, cầu chì và các chi tiết trên bảng điều khiển đảm bảo tính thuận tiện trong quá trình học và sử dụng.

46

Chương 3. THIẾT KẾ, THI CÔNG MÔ HÌNH VÀ THỰC NGHIỆM 3.1. Thiết kế mô hình giảng dạy ghế điện

3.1.1. Ý tưởng về mô hình

Mô hình ghế điện có lẽ đã xuất hiện nhiều từ những đề tài dưới với sự hướng dẫn của thầy Lê Quang Vũ, thầy Vũ Đình Huấn. Nhưng nhận ra vấn đề về sự di chuyển khá bất tiện, thêm vào đó là những mô hình ghế trước đều chưa có nhớ vị trí ghế, hoặc nếu có thì cũng không phải là mô hình giảng dạy hoàn chỉnh. Từ đó nhóm chúng em đã nảy ra ý tưởng làm một mô hình giảng dạy với thiết kế phù hợp với sự di chuyển vào lớp và bảo quản dễ dàng hơn về sau.

Ngay từ những ngày đầu, với việc xem xét những phiên bản mô hình ghế điện đã có từ trước và tham khảo những nguồn trên internet, nhóm chúng em đã có ý định sẽ làm mô hình ghế điện dạng đứng và có thể đặt ở trên bàn để phù hợp với việc giảng dạy của giảng viên.

Hình 3.1. Những mẫu mô hình tham khảo ở xưởng điện và từ internet

Nhóm đã lên ý tưởng thiết kế mô hình kiểu đứng với bố trí bảng điều khiển chính dạng dọc theo bên hông ghế điện và bảng điều khiển phụ phía trước ghế (phần 1 và 2 hình 3.2).

Mục đích thiết kế dọc bên hông ghế thay vì ở phía trước để đảm bảo khi sử dụng sinh viên hoặc giảng viên đều có thể đứng gần ghế điện và bảng điều khiển nhất có thể, tránh

47 việc quan sát các bộ phận của ghế bị khó khăn và vướng. Vấn đề thứ 2 và cũng có lẽ là vấn đề nhóm em mong muốn đó là việc làm một mô hình mang một thiết kế có tính sáng tạo hơn, khác những mô hình trước đó những vẫn đảm bảo sự phù hợp về thiết kế và bố trí, thuận tiện cho giảng viên và sinh viên.

Hình 3.2. Vị trí các phần trên khung mô hình ghế theo thiết kế

Sau khi tham vấn nhu cầu của giảng viên hướng dẫn là mong muốn đặt được mô hình lên bàn để giảng dạy và cũng như sinh viên có thể làm các bài tập thực hành ở trên bàn thì nhóm em đã bàn bạc lại và quyết định rút ngắn chiều cao của mô hình đã thiết kế ban đầu để phù hợp với nhu cầu thực tế đó hơn. Bên dưới là bản thiết kế hoàn chỉnh phần khung mô hình 3D bằng SOLIDWORKS với các thông số như hình 3.4.

48

Hình 3.4. Bản thiết kế khung 3D của mô hình

3.1.2. Thiết kế các bảng điều khiển và bảng ghi chú.

Sau khi lên ý tưởng thiết kế, nhóm đã đo đạc các thông số linh kiện cần thiết để thiết kế bảng điều khiển với các bố trí gọn gàng, tiện lợi trong quá trình sử dụng cho giảng viên cũng như sinh viên trong quá trình giảng dạy và học tập.

Bảng điều khiển phía trước ghế, tương ứng với phần 1 (hình 3.2), bao gồm: • Tên mô hình

• Bảng tên

• 3 đèn tín hiệu, 1 LCD và 5 công tắc đánh pan

49

Hình 3.6. Bảng điều khiển chính phía bên hông ghế

Bảng điều khiển chính phía bên hông ghế, bao gồm: • Các công tắc pan test

• Công tắc nhớ vị trí ghế, công tắc khoá K

50

Hình 3.7. Bảng ghi chú

Bảng ghi chú bao gồm:

• Các lưu ý quan trọng bên trái • Tên các pan test phía bên phải

Sau khi thiết kế mô hình khung ghế và các bảng điều khiển ghế xong, chúng ta được mô hình hệ thống ghế hoàn thiện như hình dưới.

51

3.1.3. Tổng quan về mô hình hệ thống

Sau khi tham khảo ý kiến của GVHD, cùng với ý tưởng của nhóm, nhóm chúng em đã lên phương án xây dựng mô hình hệ thống bao gồm những phần chính sau:

1. Vi điều khiển trung tâm (Arduino).

2. Bộ phận điều khiển và cơ cấu chấp hành (Công tắc chỉnh ghế và mô tơ). 3. Bộ phận gửi tín hiệu (Pan, test Pan, cảm biến Hall).

4. Bộ phận xuất tín hiệu (Màn hình LCD, led tín hiệu).

Hệ thống mô hình giảng dạy ghế điện của nhóm sẽ cung cấp các ứng dụng vào bài thực hành cho sinh viên và giảng viên như:

• Đèn led đỏ sáng và hiển thị thông báo lên màn LCD nếu có lỗi đánh pan. • Đèn led vàng sáng lên 3 giây với mỗi pan được sửa đúng.

• Đèn led xanh sáng và điển thị thông báo lên màn LCD nếu lỗi được sửa đúng hết bằng pan test.

• Đánh nhiều pan cùng lúc đều được.

• Mỗi lần sửa sai lỗi bằng pan test, đèn vàng sẽ không sáng.

• Kết hợp các pan test gây nhiễu khác để tăng độ khó cho sinh viên lúc thực hành. • Hỗ trợ nhớ được 2 vị trí ghế.

52

3.2. Lập trình và mô phỏng hệ thống đánh pan 3.2.1. Sơ đồ khối hệ thống

Hình 3.9. Sơ đồ khối hệ thống đánh pan

3.2.2. Sơ đồ nguyên lí của hệ thống

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

• Nguồn được đi tách biệt qua 2 công tắc để cấp nguồn riêng cho Arduino và công tắc ghế điện.

• Nguồn 12V được hạ áp xuống 5V thông qua mạch nguồn LM2596 để cấp vào Arduino, khoá K để cấp riêng cho công tắc. Mục đích có khóa K để khi đo kiểm các mô tơ ghế thì chỉ cần đóng khóa K để ngắt nguồn vô hệ thống ghế, mặt khác nguồn vẫn được cấp cho Arduino hoạt động để kích hoặc nhả các relay lúc đánh pan hoặc pan test. Để khi đo kiểm các chân bộ phận bên không bị ảnh hưởng tới nguồn điện cấp vào chìa khoá cũng như các bộ phận khác trên ghế điện.

• Đèn L1 để báo tín hiệu có điện qua chìa khoá ở chế độ ST. • Arduino đóng vai trò là mạch xử lí trung tâm.

53 • Các pan và pan test là các công tắc gạt 2 chân, sử dụng Arduino để đọc tín hiệu 5V ở

2 công tắc.

• Tín hiệu từ pan và pan test được gửi về Arduino qua các chân từ 1 tới 10, trong đó các chân 1/3/5/7/9 là các pan và 2/4/6/8/10 là các pan test.

• Arduino nhận tín hiệu và xuất tín hiệu mức cao ra các chân A4 và A5 vào LCD thông qua I2C, xuất tín hiệu mức cao ra các led xanh (L3), led đỏ (L3) và led vàng (L4) lần lượt thông qua các chân 12/13/0.

• Khi có lệch xuất tín hiệu relay 5V từ tín hiệu pan hoặc pan test, Arduino sẽ xuất tín hiệu mức cao để kích module relay 5V thông qua chân A0/A1/A2/A3/A4/11.

• Các module relay sẽ đóng vai đó đóng nhả relay để nối kín hoặc làm hở các đoạn dây khi đánh pan hoặc pan test tương ứng.

54

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

Hình 3.11. Lưu đồ thuật toán sử dụng cho hệ thống đánh pan

Hình trên là lưu đồ thuật toán của hệ thống điều khiển đánh pan và sửa pan (pan test) của nhóm chúng em được sử dụng trên mô hình ghế điện ô tô. Nhìn vào sơ đồ ta có thể thấy được ban đầu thuật toán khai báo các biến đầu vào (IN) và đầu ra (OUT) tín hiệu từ các chân Arduino và thực hiện gán các giá trị cần thiết. Tiếp đến ta khởi tạo các chương trình con. Ở “void setup”, Arduino đọc tín hiệu từ các chân digital và thiết lập xuất tín hiệu ra màn hình LCD.

Ở vòng lặp “void loop”, chương trình thực hiện kiểm tra mạch điện hệ thống có lỗi hay không. Nếu không có lỗi thì chương trình cho hiển thị LCD và đèn báo, kết thúc vòng lặp. Ngược lại, nếu chương trình có lỗi, Arduino sẽ thực hiện xuất tín hiệu hiển thị LCD và đèn báo. Lúc này người dùng sẽ tiến hành sửa lỗi cho đến khi hệ thống không còn lỗi thì chương trình kết thúc.

55

3.2.4. Lập trình thuật toán 3.2.4.1. Khai báo 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

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 54)

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

(116 trang)