CHƢƠNG 3 MÔ PHỎNG MẠCH ĐIỀU KHIỂN
3.2. Phần mềm Arduino
Arduino là một nền tảng nguyên mẫu (mã nguồn mở) dựa trên nền phần mềm và phần cứng dễ sử dụng. Nó bao gồm một bo mạch - thứ mà có thể đƣợc lập trình (đang đề cập đến vi điều khiển) và một phần mềm hỗ trợ gọi là Ar uino IDE (Môi trƣờng phát triển tích hợp cho Ar uino), đƣợc sử dụng để viết và nạp từ mã máy tính sang bo mạch vật lý.
Những tính năng chính nhƣ:
Các bo mạch Arduino có khả năng đọc các tín hiệu tƣơng tự (analog) hoặc tín hiệu số ( igital) làm đầu vào từ các cảm biến khác nhau và chuyển nó thành đầu ra nhƣ kích hoạt mô-tơ quay, ật / tắt đèn LED, kế nối mạng Internet hoặc nhiều hoạt động khác nữa.
Bạn có thể điều khiển các chức năng của bo mạch của mình bằng cách nạp các tập lệnh đến vi điều khiển trên bo mạch. Thông qua phần mềm hỗ trợ là Arduino IDE.
Không giống nhƣ o mạch có khả năng lập trình trƣớc kia, Arduino chỉ cần bạn sử dụng cáp USB để nạp mã vào trong bo mạch.
Hơn nữa, phần mềm Arduino IDE sử dụng phiên bản giản thể của C++, làm việc học lập trình nó trở nên dễ àng hơn rất nhiều.
Hình 3. 6 Màn hình làm việc Arduino
Hiện nay trên thị trƣờng có nhiều loại mạch của Arduino tùy thuộc và các loại vi điều khiển khác nhau mà nó sử dụng. Tuy nhiên, chung quy lại tất cả các bo mạch của Ar uino đều có một điểm chung là: đều có thể lập trình thông qua Arduino IDE.
Sự khác biệt nằm ở số đầu vào (input) và số đầu ra (output) - cụ thể là số lƣợng các cảm biến, các đèn LED và các nút có thể sử dụng trên một mạch đơn, về tốc độ, òng điện vận hành, ...
Một số bo mạch đƣợc thiết kế để nhúng và không có giao diện lập trình (phần cứng) mà bạn phải mua riêng. Một số có thể chạy trực tiếp từ pin 3.7 V, một số khác cần ít nhất 5V.[9]
Dƣới đây là anh sách một số board mạch Arduino khác nhau hiện có trên thị trƣờng: Arduino Uno R3 Arduino Uno R3 SMD Red Board Arduino Pro 3.3v/8 MHz Arduino Pro 5v/16 MHz Arduino mini 05 Arduino MEGA 2560 R3 3.3.Arduino Arduino là một nền tảng mã nguồn mở phần cứng và phần mềm. Phần cứng Arduino (các bảng mạch vi xử lý) đƣợc sinh ra tại thị trấn Ivrea ở Ý, nhằm xây dựng các ứng dụng tƣơng tác với nhau hoặc với môi trƣờng đƣợc thuận lợi hơn. Phần cứng bao gồm một bảng mạch nguồn mở đƣợc thiết kế
trên nền tảng vi xử lý AVR Atmel 8bit, hoặc ARM Atmel 32-bit. Những mẫu hiện đại đƣợc trang bị gồm 1 cổng giao tiếp USB, 6 chân đầu vào analog, 14 chân I/O kỹ thuật số tƣơng thích với nhiều bảng mở rộng khác nhau.
Hình 3. 7 Arduino
Đƣợc giới thiệu vào năm 2005, Những nhà thiết kế của Arduino cố gắng mang đến một phƣơng thức dễ dàng, không tốn kém cho nhƣng ngƣời yêu thích, sinh viên và giới chuyên nghiệp để tạo ra những thiết bị có khả năng tƣơng tác với mội trƣờng thông qua các cảm biến và các cơ cấu chấp hành. Những ví dụ phổ biến cho những ngƣời yêu thích mới bắt đầu bao gồm các ro ot đơn giản, điều khiển nhiệt độ và phát hiện chuyển động. Đi cùng với với nó là một môi trƣờng phát triển tích hợp (IDE) chạy trên các máy tính cá nhân thông thƣờng và cho phép ngƣời dùng viết các chƣơng trình cho Aduino bằng ngôn ngữ C hoặc C++.
Giá của các bảng Ar uino ao động xung quanh 500.000vnđ đến gần 1.000.000vnđ, nếu đƣợc “làm giả” thì giá có thể giảm xuống thấp hơn 300.000vnđ. Các ảng Arduino có thể đƣợc đặt hàng ở dạng đƣợc lắp sẵn hoặc ƣới dạng các kit tự-làm-lấy. Thông tin thiết kế phần cứng đƣợc cung cấp công khai để những ai muốn tự làm một mạch Arduino bằng tay có thể tự mình thực hiện đƣợc (mã nguồn mở). Ngƣời ta ƣớc tính khoảng giữa năm 2011 có trên 300 ngàn mạch Arduino chính thức đã đƣợc sản xuất thƣơng mại, và vào năm 2013 có khoảng 700 ngàn mạch chính thức đã đƣợc đƣa tới tay ngƣời dùng.[6]
Lịch sử phát triển của Arduino. [5]
Ar uino đƣợc khởi động vào năm 2005 nhƣ là một dự án dành cho sinh viên tại Viện thiết kế tƣơng tác Ivrea, Italy. Vào thời điểm đó các sinh viên sử dụng một "Con tem CƠ BẢN " có giá khoảng $100, xem nhƣ giá ành cho sinh viên. Massimo Banzi, một trong những ngƣời sáng lập, giảng dạy tại Ivrea. Cái tên "Ar uino" đến từ một quán bar tại Ivrea, nơi một vài nhà sáng lập của dự án này thƣờng xuyên gặp mặt. Bản thân quán ar này có đƣợc lấy tên là Ar uino, á tƣớc của Ivrea, và là vua của Italy từ năm 1002 đến 1014.
Lý thuyết phần cứng đƣợc đóng góp bởi một sinh viên ngƣời Colombia tên là Hernando Barragan. Sau khi nền tảng Ngôn ngữ Arduino hoàn thành, các nhà nghiên cứu đã làm việc với nhau để giúp nó nhẹ hơn, rẻ hơn, và khả dụng đối với cộng đồng mã nguồn mở. Trƣờng này cuối cùng bị đóng cửa, vì vậy các nhà nghiên cứu, một trong số đó là Davi Cuarlielles, đã phổ biến ý tƣởng này.
Giá hiện tại của bảng mạch này rơi vào khoảng 750.000vnđ và đƣợc làm giả đến mức chỉ còn 250.000vnđ. Một mạch bắt chƣớc đơn giản Arduino Mini Pro có lẽ đƣợc xuất phát từ Trung Quốc có giá rẻ hơn $4, đã trả phí ƣu điện.
Phần cứng
Hình 3. 8 Sơ đồ mạch của Arduino
Một mạch Arduino bao gồm 1 vi điều khiển AVR với nhiều linh kiện bổ sung giúp dễ dàng lập trình và có thể mở rộng với các mạch khác. Một
khía cạnh quan trọng của Arduino là các kết nối tiêu chuẩn của nó, cho phép ngƣời dùng kết nối với CPU của bảng với các mô-đun thêm vào có thể dễ dàng chuyển đổi, đƣợc gọi là tấm chắn. Vài tấm chắn truyền thông với bảng Arduino trực tiếp thông qua các chân khác nhau, nhƣng nhiều tấm chắn đƣợc định địa chỉ thông qua mạch tích hợp đa ẫn, nhiều tấm chắn có thể đƣợc xếp chồng và sử dụng ƣới dạng song song. Arduino chính thức thƣờng sử dụng các òng chip megaAVR, đặc biệt là ATmega8, ATmega168, ATmega328, ATmega1280, và ATmega2560. Hầu hết các mạch gồm một bộ điều chỉnh tuyến tính 5V và một thạch anh ao động 16 MHz hoặc bộ cộng hƣởng ceramic trong một vài biến thể. Một vi điều khiển Ar uino cũng có thể đƣợc lập trình sẵn với một bộ tải chƣơng trình mồi cho phép đơn giản là nạp chƣơng trình vào ộ nhớ nhanh, so với các thiết bị khác thƣờng phải cần một bộ nạp ên ngoài. Điều này giúp cho việc sử dụng Ar uino đƣợc trực tiếp hơn bằng cách cho phép sử dụng một máy tính gốc nhƣ là một bộ nạp chƣơng trình.
Theo nguyên tắc, khi sử dụng ngăn xếp phần mềm Arduino, tất cả các bảng đƣợc lập trình thông qua một kết nối RS-232, nhƣng cách thức thực hiện lại tùy thuộc vào đời phần cứng. Các đa ảng Arduino có chứa một mạch chuyển đổi giữa RS232 sang TTL. Các bảng Arduino hiện tại đƣợc lập trình thông qua cổng USB, thực hiện thông qua chip chuyển đổi.
Có nhiều biên thể nhƣ Ar uino tƣơng thích và Arduino phân nhánh. Một vài trong số đó có chức năng tƣơng đƣơng với Arduino và có thể sử dụng để thay thế qua lại. Nhiều mở rộng cho Ar uino đƣợc thực thiện bằng cách thêm vào các bộ điều khiển đầu ra, thƣờng sử dụng trong các trƣờng học để đơn giản hóa các cấu trúc của các 'con rệp' và các robot nhỏ. Những bảng khác thƣờng tƣơng đƣơng về điện nhƣng có thay đổi về hình dạng, đôi khi còn uy trì độ tƣơng thích với các tấm chắn, đôi khi không. Vài iến thể sử dụng bộ vi xử lý hoàn toàn khác biệt, với các mức độ tƣơng thích khác nhau.
Phần cứng Arduino gốc đƣợc sản xuất bởi công ty Italy tên là Smart Projects. Một vài bảng dẫn xuất từ Ar uino cũng đƣợc thiết kế bởi công ty của Mỹ tên là SparkFun Electronics. Sáu phiên bản phần cứng của Arduino cũng đã đƣợc sản xuất thƣơng mại tính đến thời điểm hiện tại.
Tấm chắn:
Các bảng Arduino và Ar uino tƣơng thích sử dụng các tấm chắn − các bảng mạch in mở rộng đƣợc dùng bằng cách cắm vào các chân đầu của Arduino. Các tấm chắn có thể là mô-đun điều khiển cho động cơ, GPS, LCD, ... Một số lƣợng lớn các tấm chắn cũng có thể đƣợc chế tạo bởi DIY (những ngƣời thích tự làm lấy các ứng dụng cho riêng họ).
Phần mềm
Môi trƣờng phát triển tích hợp (IDE) của Arduino là một ứng dụng đa nền tảng đƣợc viết bằng Java, và từ IDE này sẽ đƣợc sử dụng cho Ngôn ngữ lập trình xử lý và ngôn ngữ Arduino. Nó đƣợc thiết kế để dành cho những ngƣời mới tập làm quen với lĩnh vực phát triển phần mềm. Nó bao gồm một chƣơng trình sửa mã với các chức năng nhƣ đánh ấu cú pháp, và tự động canh lề, cũng nhƣ iên ịch và nạp chƣơng trình lên ảng chỉ với 1 cú nhấp chuột. Một chƣơng trình hoặc mã viết cho Ar uino đƣợc gọi là một bản phác thảo.
Các chƣơng trình Ar uino đƣợc viết bằng C hoặc C++. Arduino IDE đi kèm với một thƣ viện phần mềm đƣợc gọi là "Ngôn ngữ Arduino", từ Ngôn ngữ Arduino gốc, có thể giúp các thao tác nhập/xuất đƣợc dễ àng hơn. Ngƣời dùng chỉ cần định nghĩa 2 hàm để tạo ra một chƣơng trình vòng thực thi có thể chạy đƣợc.
Một chƣơng trình điển hình cho một bộ vi điều khiển đơn giản chỉ là làm cho một óng đèn LED sáng/tắt.
Hình 3. 9 Các chân của Arduino
Một đặc điểm của hầu hết các bảng Arduino là chúng có một đèn LED và điện trở nối giữa chân 13 với đất; một đặc điểm thuận tiện cho nhiều ứng dụng đơn giản. Đoạn mã ở trên không thể đọc đƣợc bởi một chƣơng trình biên dịch C++ chuẩn nhƣ là một chƣơng trình đúng, vì vậy khi ta chọn vào nút "Nạp to I/O bảng" trong IDE này, một bản sao chép của đoạn mã này sẽ đƣợc ghi vào một file tạm với một tiêu đề bao hàm phụ ở phía trên cùng và một hàm chính () đơn giản nằm ở phía đáy, để làm cho thành một chƣơng trình C++ khả dụng.
3.4.Mô phỏng mạch
3.4.1.Sơ đồ nguyên lý mạch thiết kế
Trƣớc khi thiết kế mô hình cần đƣợc chạy mô phỏng trên phàn mềm proteus cùng với ngôn ngữ lập trình phụ hợp với hệ thống. Hệ thống mạch gồm các liên kiện sau:
- SIMULINO UNO - LM016L - PCF 5874 - RELAY - BUTTON - LED-GREEN - DIODE - RES - NPN
Hình 3. 10 Sơ đồ nguyên lý mạch mô phỏng
3.4.2.Ngôn ngữ lập trình.
Ngôn ngữ lập trình đƣợc viết trên phần mềm Ar uino để chạy chƣơng trình cho mô phỏng hệ thống đèn xi nhan nhƣ sau:
#include <Wire.h>
#include <LiquidCrysal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2);
int BT1 = 6;// khai báo chân digital 10 cho cảm biến int BT2 = 5;// khai báo chân digital 10 cho cảm biến int BT3 = 4;// khai báo chân digital 10 cho cảm biến int relay1 = 8;//kháo áo chân igital 8 cho đèn LED int relay2 = 7;
void setup () {
Serial.begin(9600); lcd.init();
lcd.backlight();
pinMode(BT1, INPUT); //pinMode nhận tín hiệu đầu vào cho cảm biến pinMode(BT2, INPUT); //pinMode nhận tín hiệu đầu vào cho cảm biến pinMode(BT3, INPUT); //pinMode nhận tín hiệu đầu vào cho cảm biến pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT); digitalWrite(2, HIGH); lcd.setCursor(5, 0); lcd.print("WELLCOME"); chaychu(); delay(1000); lcd.clear(); lcd.setCursor(0, 0); lcd.setCursor(0, 0);
lcd.print("Do an tot nghiep"); lcd.setCursor(0, 1);
lcd.print("Tran Anh Sang"); delay(4000);
lcd.clear(); }
void loop () {
int value1 = igitalRea (BT1);//lƣu giá trị cảm biến vào biến value int value2 = igitalRea (BT2);//lƣu giá trị cảm biến vào biến value int value3 = igitalRea (BT3);//lƣu giá trị cảm biến vào biến value
if (value1 == 1) { digitalWrite(relay1, LOW); } else { lcd.setCursor(0, 0); lcd.print("TRang thai:"); lcd.setCursor(0, 1); lcd.print("Re trai"); digitalWrite(relay1, HIGH); delay(500);
digitalWrite(relay1, LOW); delay(500); } if (value2 == 1) { digitalWrite(relay2, LOW); } else { lcd.setCursor(0, 0); lcd.print("TRang thai:"); lcd.setCursor(0, 1); lcd.print("Re phai"); digitalWrite(relay2, HIGH); delay(500); digitalWrite(relay2, LOW); delay(500); } if(value3 == 1) { digitalWrite(relay2, LOW); digitalWrite(relay1, LOW); } else { lcd.setCursor(0, 0); lcd.print("TRang thai:"); lcd.setCursor(0, 1); lcd.print("Canh bao"); digitalWrite(relay1, HIGH);
digitalWrite(relay2, HIGH); delay(500); digitalWrite(relay2, LOW); digitalWrite(relay1, LOW); delay(500); } } void chaychu() {
for (int positionCounter = 0; positionCounter < 13; positionCounter++) {
lcd.scrollDisplayLeft(); delay(100);
}
for (int positionCounter = 0; positionCounter < 29; positionCounter++) {
lcd.scrollDisplayRight(); delay(100);
}
for (int positionCounter = 0; positionCounter < 16; positionCounter++) {
lcd.scrollDisplayLeft(); delay(100);
} } [5]
3.5.Thiết kế mô hình và nguyên lý hệ thống
3.5.1.Thiết kế mô hình
Để thiết kế đƣợc mô hình thực tế của mạch nguyên lý hoạt động mạch xi nhan trên xe ô tô tôi dựa trên bản thiết kế của phần mềm proteus, cấp nguồn 9v cho arduino và nguồn 24v cho óng đèn. Nên tôi chọn các linh kiện sau để thực hiện:
Tên linh kiện Hình ảnh thực tế Arduino R3 Màn hình LCD I2C Nút nhấn giữ Mo ule rơ le
Bóng đèn 24v
Điện trở 10k
Nguồn
Mạch in
Hình 3. 11 Mô hình hoàn thiện
3.5.2.Nguyên lý hoạt động toàn mạch
Hình 3. 12 Trạng thái rẽ trái
- Khi nhấn nút ấn rẽ trái arduino nhận tín hiệu => rơ le đóng, mở cung cấp òng điện cho óng đèn ên trái sáng nhấp nháy, màn hình lcd hiển thị nhƣ hình 3.12.
Hình 3. 13 Trạng thái rẽ phải
- Khi nhấn nút rẽ phải thì arduino nhận tín hiệu từ nút nhấn => rơ le đóng, mở cung cấp òng điện cho óng đèn ên phải sáng nhấp nháy, màn hình lcd hiển thị nhƣ hình 3.13.
- Khi nhấp nút cảnh báo thì arduino nhận tín hiệu từ nút nhấn => lơ le đón, mở cung cấp òng điện cho 2 óng đèn trái và phải sáng nhấp nháy, màn hình lcd hiển thị nhƣ hình 3.14.
KẾT LUẬN
Sau khi hoàn thiện bài báo cáo về chủ đề : “Ứng dụng vi điều khiển mô phỏng mạch điều khiển hệ thống đèn xi nhan trên xe mitsu ishi attrage 2021.” Em đã thu đƣợc một số kết quả sau:
– Nắm chắc về tổng quan về hệ thống đèn xi nhan trên ô tô. – Kỹ năng tìm kiếm tài liệu trong nƣớc và nƣớc ngoài. – Có kỹ năng đọc dịch tài liệu tiếng anh.
– Có hiểu biết thêm về một số phần mềm nhƣ Proteus, Arduino. Chúng em hy vọng sẽ đƣợc sự đóng góp và giúp đỡ của thầy giáo để bài tập của nhóm em đƣợc hoàn thiện hơn.
TÀI LIỆU THAM KHẢO Tài liệu sách
[1] Nguyễn Thành Bắc – Chu Đức Hùng – Thân Quốc Việt – Phạm Việt Thành – Nguyễn Tiến Hán – Giáo trình Hệ thống điện điện tử cơ bản – Nhà xuất bản Khoa học và kỹ thuật – 2018.
[2] Phạm Việt Thành – Lê Hồng Quân – Phạm Văn Thoan – Nguyễn Thành Bắc – Nguyễn Tiến Hán – Giáo trình hệ thống điện thân xe.
[3] Tài liệu hãng MITSUBISHI 2020.
[4] Tom Denton – Automobile mechanicaland electrical systems – Elsevier – 2011.
[5] Huỳnh Minh Phú (2015), Tự học nhanh arduino cho người mới bắt đầu. Thành Phố Hồ Chí Minh.
[6] Luận văn tốt nghiệp “Phần mềm Proteus 6.5”, Phạm Quốc Hiệp
Tài liệu internet
[7] https://anhsangvacuocsong.vn/tim-hieu-ve-he-thong-chieu-sang-tren- o-to/ [8]https://oto-hui.com/threads/tong-quan-ve-he-thong-chieu-sang-tin- hieu.26638/ [9] http://arduino.vn/ [10] http://vimach.net/threads/proteus-co-ban.204/