1. Cáp USB Đây là dây cáp thường được bán kèm theo bo, dây cáp dùng để cắm vào máy tính để nạp chương trình cho bo và dây đồng thời cũng lấy nguồn từ nguồn usb của máy tính để cho bo hoạt động. Ngồi ra cáp USB còn được dùng để truyền dữ liệu từ bo Arduino lên máy tính. Dây cáp có 2 đầu, đầu 1a được dùng để cắm vào cổng USB trên board Arduino, đầu 1b dùng để cắm vào cổng USB trên máy tính.
2. IC Atmega 16U2 IC này được lập trình như một bộ chuyển đổi USB –to-Serial dùng để giao tiếp với máy tính thơng qua giao thức Serial (dùng cổng COM).
3. Cổng nguồn ngoài Cổng nguồn ngoài nhằm sử dụng nguồn điện bên ngồi như pin, bình acquy hay các adapter cho board Arduino hoạt động. Nguồn điện cấp vào cổng này
là nguồn DC có hiệu điện thế từ 6V đến 20V, tuy nhiên hiệu điện thế tốt nhất mà nhà sản xuất khuyên dùng là từ 7 đến 12V.
4. Cổng USB Cổng USB trên bo Arduino dùng để kết nối với cáp USB
5. Nút reset Nút reset được sử dụng để reset lại chương trình đang chạy. Đơi khi chương trình chạy gặp lỗi, người dùng có thể reset lại chương trình..
6. ICSP của ATmega 16U2 ICSP là chữ viết tắt của In-Circuit Serial Programming. Đây là các chân giao tiếp SPI của chip Atmega 16U2. Các chân này thường ít được sử trong các dự án về Arduino.
7. Chân xuất tín hiệu ra Có tất cả 14 chân xuất tín hiệu ra trong Arduino Uno, những chân có dấu ~ là những chân có thể băm xung (PWM), tức có thể điều khiển tốc độ động cơ hoặc độ sáng của đèn. Hình 2 thể hiện rất rõ những chân để băm xung này.
8. IC ATmega 328 IC Atmega 328 là linh hồn của bo mạch Arduino Uno, IC này được sử dụng trong việc thu thập dữ liệu từ cảm biến, xử lý dữ liệu, xuất tín hiệu ra, …
9. Chân ICSP của ATmega 328 Các chân ICSP của ATmega 328 được sử dụng cho các giao tiếp SPI (Serial Peripheral Interface), một số ứng dụng của Arduino có sử dụng chân này, ví dụ như sử dụng module RFID RC522 với Arduino hay Ethernet Shield với Arduino.
10. Chân lấy tín hiệu Analog Các chân này lấy tín hiệu Analog (tín hiệu tương tự) từ cảm biến để IC Atmega 328 xử lý. Có tất cả 6 chân lấy tín hiệu Analog, từ A0 đến A5.
11. Chân cấp nguồn cho cảm biến Các chân này dùng để cấp nguồn cho các thiết bị bên ngoài như role, cảm biến, RC servo,…trên khu vực này có sẵn các chân GND (chân nối đất, chân âm), chân 5V, chân 3.3V như được thể hiện ở hình 2. Nhờ những chân này mà người sử dụng không cần thiết bị biến đổi điện khi cấp nguồn cho cảm biến, role, rc servo,… Ngoài ra trên khu vực này cịn có chân Vin và chân reset, chân IOREF. Tuy nhiên các chân này thường ít được sử dụng nên trong tài liệu này xin không đi sâu về nó. 12. Các linh kiện khác trên board Arduino Uno Ngoài các linh kiện đã liệt kê bên trên, Arduino Uno còn 1 số linh kiện đáng chú ý khác. Trên bo có tất cả 4 đèn led, bao gồm 1
led nguồn (led ON nhằm cho biết boa đã được cấp nguồn), 2 led Tx và Rx, 1 led L. Các led Tx và Rx sẽ nhấp nháy khi có dữ liệu truyền từ board lên máy tính hoặc ngược lại thông qua cổng USB. Led L được được kết nối với chân số 13. Led này được gọi là led on board (tức led trên board), led này giúp người dùng có thể thực hành các bài đơn giản mà khơng cần dùng thêm led ngồi.
Trong 14 chân ra của board cịn có 2 chân 0 và 1 có thể truyền nhận dữ liệu nối tiếp TTL. Có một số ứng dụng cần dùng đến tính năng này, ví dụ như ứng dụng điều khiển mạch Arduino Uno qua điện thoại sử dụng bluetooth HC05. Thêm vào đó, chân 2 và chân 3 cũng được sử dụng cho lập trình ngắt (interrupt), đồng thời cịn 1 vài chân khác có thể được sử dụng cho các chức năng khác, như được thể hiện ở hình 3.5.
Thơng số kỹ thuật:
Bảng 4.1: Thông số kỹ thuật của mạch Arduino Uno R3
Vi điều khiển ATmega328P
Điện áp hoạt động 5V
Điện áp vào khuyên dùng 7-12V
Điện áp vào giới hạn 6-20V
Digital I/O pin 14 (trong đó 6 pin có khả năng băm xung)
PWM Digital I/O Pins 6
Analog Input Pins 6
Cường độ dòng điện trên mỗi I/O pin 20 mA Cường độ dòng điện trên mỗi 3.3V pin 50 mA
Flash Memory 32 KB (ATmega328P)
0.5 KB được sử dụng bởi bootloader
EEPROM 1KB (ATmega328P)
Tốc độ 16 MHz
Chiều dài 68.6 mm
Chiều rộng 53.4 mm
Trọng lượng 25 g
Một số lưu ý khi làm việc với Arduino Uno R3:
Mặc dù Arduino có cầu chi tự phục hồi (resettable fuse) bảo về mạch khi xảy ra quá tải, tuy nhiên cầu chì này chỉ được mắc cho cổng USB nhằm tự động ngắt điện khi nguồn vào USB lớn hơn 5V.
Vì vậy, khi thao tác với Arduino, ta cần tính toán cẩn thận để tránh gây hư tổn đến board. Các thao tác sau đây có thể gây hỏng một phần hoặc tồn bộ board Arduino.
- Nối trực tiếp dòng 5V vào GND
Khi nối trực tiếp dịng 5V vào GND mà khơng qua bất kì một điện trở kháng nào sẽ gây ra hiện tượng đoản mạch và phá hỏng Arduino.
- Cấp nguồn lớn hơn 5V cho bất kì pin I/O nào
Theo tài liệu của nhà sản xuất, với vi điều khiển ATmega328P thì 5V là ngưỡng lớn nhất mà vi điều khiển này có thể chịu được. Nếu bất kì pin nào bị cấp điện áp vượt quá 5V sẽ gây ra hỏng vi điều khiển này.
- Tổng cường độ dòng điện trên các I/O pin vượt quá ngưỡng chịu được
Dựa theo datasheet của vi điều khiển ATmega328P, tổng cường độ dòng điện cấp cho các I/O pin tối đa là 200mA. Vì vậy, ví dụ như trong trường hợp ta ép Arduino cấp nguồn cho hơn 10 đèn LED (mỗi đèn thông thường sẽ cần 20mA) hay dùng trực tiếp các chân I/O cấp nguồn cho động cơ sẽ có thể gây tổn hại đến vi điều khiển.
- Thay đổi các kết nối trong lúc đang vận hành
Khi Arduino đang vận hành, việc thanh đổi các kết nối có thể gây ra sự không ổn định của điện áp dẫn đến hư hỏng Arduino. Vì vậy, trong thực tế làm việc ta nên ngắt nguồn Arduino trước khi thực hiện bất kì các thay đổi nào.
Phần mềm lập trình Arduino IDE
Giới thiệu về phần mềm
Mơi trường lập trình Arduino IDE có thể chạy trên ba nền tảng phổ biến nhất hiện nay là Windows, Macintosh OSX và Linux. Do có tính chất nguồn mở nên mơi trường lập trình này hồn tồn miễn phí và có thể mở rộng thêm bởi người dùng có kinh nghiệm. Ngơn ngữ lập trình có thể được mở rộng thơng qua các thư viện C++. Và do ngơn ngữ lập trình này dựa trên nền tảng ngôn ngữ C của AVR nên người dùng hồn tồn có thể nhúng thêm code viết bằng AVR C vào chương trình nếu muốn.
Mơi trường phát triển tích hợp (IDE) của Arduino là một ứng dụng cross-platform (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ý (Processing programming language) và project wiring. 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 code editor với các chức năng như đánh dấu cú pháp, tự động brace matching, và tự động canh lề, cũng như compile (biên dịch) và upload chương trình lên board chỉ với 1 cú nhấp chuột. Một chương trình hoặc code viết cho Arduino được gọi là một sketch.
Arduino IDE đi kèm với một thư viện phần mềm được gọi là "Wiring", từ project wiring gốc, có thể giúp các thao tác input/output được dễ dàng hơn. Chỉ cần định nghĩa 2 hàm để tạo ra một chương trình vịng thực thi (cyclic executive) có thể chạy được:
setup(): hàm này chạy mỗi khi khởi động một chương trình, dùng để thiết lập các cài đặt. loop(): hàm này được gọi lặp lại cho đến khi tắt nguồn board mạch.
Hình 4.9: Giao diện phần mềm lập trình Arduino IDE
Vào menu Tools → Board → chọn Arduino/GenuinoUNO. Vào menu Tools → Port → chọn cổng Arduino đang kết nối với máy tính. Xác nhận cổng COM của Arduino IDE ở góc dưới cùng bên phải cửa sổ làm việc. Vào menu Tools → Programmer → chọn AVRISP mkII. Bấm tổ hợp phím Ctrl + U để tải chương trình lên mạch Arduino UNO, như ở trên.
Thông số kỹ thuật:
Bảng 4.2: Thông sô kỹ thuật của modul cảm biến quang
Điện áp hoạt động 3,3V – 5V
Một biến trở 10K ohm dùng để điều chỉnh độ nhạy sáng
Tích hợp sẵn bộ so sánh opamp LM393
4 chân tín hiệu - VCC: nguồn +5V
- GND: mass
- A0: tín hiệu ra analog - D0: tín hiệu ra digital
Cách kết nối module cảm biến quang trở với Arduino UNO R3:
Cảm biến này có thể sử dụng kết hợp với Arduino để lập trình bật tắt thay vì mạch Rơ-le.
Chân tín hiệu D0 có thể chọn từ chân số 2 đến 13 trên mạch arduino.
Chân tín hiệu A0 có thể chọn từ chân A0 đến A5 trên arduino.
2 chân nguồn dc lấy từ nguồn 5V.
Ưu điểm:
- Thiết kế đơn giản, nhỏ gọn. - Độ chính xác cao.
- Sử dụng điện áp 5V tương thích với nền tảng lập trình arduino. - Có thể thay đổi được độ nhạy thơng qua biến trở trên module.
4.2.3.4 Mạch giảm áp LM2596
Hình 4.11: Mạch giảm áp LM2596
Điện áp ra có thể điều chỉnh được bằng biến trở. IC LM2596S là IC nguồn xung có chu kì đóng, ngắt lên đến 125 KHz cho hiệu suất làm việc cao.
Mạch giảm áp có một số ưu điểm:
+ Dòng ra đỉnh 3A (có thể gắn tản nhiệt cho IC để tăng dịng đầu ra cực đại) + Điện áp đầu vào dao động từ 3V - 40V
+ Điện áp đầu ra từ 1.23V - 37V
Mạch giảm áp có chức năng tạo ra điện áp nhỏ hơn điện áp đầu vào và ln duy trì mức áp này mặc dù áp đầu vào tăng, giảm. Ví du: điện áp ra 5V trong khi áp đầu vào là 1 acquy có điện áp từ 10.8V → 13V.
Mạch giảm áp LM2596 sử dụng các tụ thể rắn do Sanyo cung cấp có khả năng lọc nhiễu cao và trữ điện tốt.
Trong đề tài này chúng tôi dùng mạch LM2596 để giảm áp nguồn 12V của acquy xuống 5V để cấp cho Arduino UNO và các relay hoạt động.
4.2.3.5 Module Relay 1 kênh và 2 kênh
Module relay 1 kênh dùng để điều chỉnh khiển mở tail và đèn led chạy ngày. Module relay 2 kênh dùng để điều khiển mở đèn pha, cốt.
Hình 4.12: Modul relay 1 kênh
Đây là module được thiết kế dựa trên relay SRD để đóng cắt các thiết bị điện áp cao (có thể lên tới 250V) như đèn, quạt... Nó có thể sử dụng trực tiếp tín hiệu điều khiển từ vi điều khiển. Module được thiết kế với cách li quang nhằm đảm bảo an toàn cho mạch điều khiển và giảm nhiễu trong q trình đóng cắt mạch.
Thơng số kỹ thuật:
Bảng 4.3: Thông số modul relay 1 kênh
Kích cỡ module 17mmx43mm
Gồm có 2 Led báo
Led xanh(sáng khi cấp nguồn cho relay)
Led đỏ(sáng khi kích relay)
Gồm có 3 chân tín hiệu vào
- IN: Chân điều khiển module relay. Khi chân này ở mức cao (HIGH) relay ở trạng thái đóng và ngược lại. - GND: nối với cực GND của nguồn cấp.
- VCC: nối với VCC (5VDC) của nguồn cấp (nguồn 5v được.
Có 2 tiếp điểm
-Tiếp điểm thường đóng (hai đầu là NC và COMMON) .
-Tiếp điểm thường mở chân (NO và COMMON) của relay.
Hình 4.13: Module relay 2 kênh
Relay 2 Kênh gồm 2 rơ le hoạt động tại điện áp 5VDC, chịu được hiệu điện thế
lên đến 250VAC 10A. Relay 2 kênh được thiết kế chắc chắn, khả năng cách điện tốt. Trên module đã có sẵn mạch kích relay sử dụng transistor và IC cách ly quang giúp cách ly hoàn toàn mạch điều khiển (vi điều khiển) với rơ le bảo đảm vi điều khiển hoạt động ổn định. Có sẵn header rất tiện dụng khi kết nối với vi điều khiển.
Mạch relay 2 kênh sử dụng chân kịch mức Thấp (0V), khi có tín hiệu 0V vào
chân IN thì relay sẽ nhảy qua thường Hở của Relay. ứng dụng với relay module khá nhiều bao gồm cả điện DC hay AC.
Thông số kỹ thuật
Bảng 4.4: Thông số modul relay 2 kênh
Điện áp hoạt động 5V DC
Dịng tiêu thụ 200mA/1Relay
Tín hiệu kích 5V
Nguồn ni 5V DC
Tiếp điểm đóng ngắt max 250VAC-10A hoặc 30VDC-10A
4.2.3.6 Servo Motor
Điều khiển choá đèn cũng tức là điều khiển động cơ Servo. Ta xét cấu tạo và nguyên lý điều khiển của một motor Servo.
Trên mơ hình sử dụng Servo loại RC Servo là loại sử dụng vôn kế để xác định vị trí góc quay. Về cấu tạo, động cơ RC Servo chỉ có 3 dây, bao gồm: một dây dương, một dây nối mass, một dây điều khiển.RC Servo cũng là loại điều khiển hồi tiếp vịng kín nhưng nó khơng sử dụng encoder để xác định vị trí vịng quay như động cơ Servo thường gặp, động cơ RC Servo có cấu tạo cơ bản như sau. Bao gồm:
+ 1. Động cơ DC.
+ 2. Mạch điều khiển. + 3. Biến trở.
+ 4. Bánh răng hộp số.
Hình 4.14: Cấu tạo động cơ RC Servo
Vai trò của biển trở trong động cơ RC Servo có vai trị như một cầu phân áp, khi trục động cơ RC Servo quay làm xoay biển trở, qua đó làm thay đổi giá trị tín hiệu điện áp mà biến trở đưa ra.
Hình 4.15: Khi biến trở xoay làm cho tín hiệu điện áp thay đổi thừ 0v- 5v
Về nguyên lý điều khiển, động cơ RC Servo xác định vị trí cần quay tới nhờ độ rộng xung mà ta đưa tới dây điều khiển của động cơ.
Mạch điều khiển của RC Servo có chức năng so sánh độ rộng xung điều khiển với tín hiệu điện áp mà biến trở đưa về, Nếu có sự khác biệt (có sai số), nó sẽ tự động điều chỉnh vị trí của động cơ lại cho đúng, quá trình tự động điều chỉnh này được diễn ra khép kín đến khi vị trí của động cơ được xác định chính xác (khi sai số giữa độ rộng xung mà vi điều khiển đưa tới với tín hiệu điện áp của biến trở đưa về bằng 0). Vì vậy được gọi là điều khiển hồi tiếp khép kín.
4.3 CÁC BƯỚC THIẾT KẾ
4.3.1 Thiết kế hệ thống chiếu sáng- tín hiệu trên mơ hình
Hệ thống chiếu sáng - tín hiệu được thiết kế với đầy đủ chức năng:
- Chức năng đèn chiếu sáng với hệ thống đèn chiếu xa, hệ thống đèn chiếu gần. Trong đó hệ thống đèn chiếu gần được trang bị đèn xenon.
- Chức năng đèn tín hiệu.
Phần này chủ yếu xét các nguyên lý và hoạt động của:
- Sơ đồ mạch điện hệ thống chiếu sáng (pha - cốt – đuôi - DRL) trên mơ hình. - Sơ đồ mạch điện đèn báo rẽ.
4.3.1.1 Sơ đồ và hoạt động của mạch điện hệ thống chiếu sáng trên mơ hình
Sơ đồ mạch điện
Hình 4.16: Mạch điện hệ thống đèn trên mơ hình
Hoạt động của sơ đồ hệ thống đèn đầu, đèn đuôi
Bật công tắc máy IG Switch.
Khi công tắc Ligh Control Switch ở vị trí OFF, tất cả các đèn của hệ thống chiếu sáng đều tắt.
Khi cơng tắc chuyển sang vị trí Tail, chân GND của TAIL Relay được nối mát, đồng thời chân IN của TAIL Relay có tín hiệu kích ở mức cao (High) làm cho Relay này đóng nên đèn TAIL sáng.
Khi cơng tắc chuyển sang vị trí Head và cơng tắc Dimmer Switch ở vị trí LOW, chân GND của Tail Relay vẫn nối mát nên đèn Tail vẫn sáng, đồng thời chân H nối cũng nối mát và gửi tín hiệu về Arduino thơng qua chân 7, Arduino điểu khiển chân 11 nối mát
làm chân IN của HEAD LO RELAY có tín hiệu kích ở mức thấp (Low) làm cho Relay này đóng nên đèn LOW sáng. Vì được nối chung với đèn LOW nên đèn hậu sẽ được sáng lên theo.
Khi cơng tắc chuyển sang vị trí Head và cơng tắc Dimmer Switch ở vị trí HIGH,