SƠ LƯỢC VỀ ARDUINO VÀ LẬP TRÌNH ARDUINO

Một phần của tài liệu Nghiên cứu, thiết kế mô hình hệ thống hỗ trợ đậu xe trên ô tô (Trang 34)

Arduino là một board mạch vi xử lý, 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 board 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 Model hiện tạ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 board mở rộng khác nhau.

Arduino ra đời tại thị trấn Ivrea, nước Ý và được đặt theo tên một vị vua vào thế kỷ thứ 9 là King Arduin.

31 Nó chính thức được đưa ra giới thiệu vào năm 2005 như là một công cụ cho sinh viên học tập của giáo sư Massimo Banzi, một trong những người phát triển Arduino tại trường Interaction Design Instistute Ivrea (IDII).

Nhắc tới dòng mạch Arduino dùng để lập trình, cái đầu tiên mà người ta thường nói tới chính là dòng Arduino UNO. Hiện dòng mạch này đã phát triển tới thế hệ thứ 3 (R3).

Hình 2.32 Một vài hình ảnh thực tế của Arduino Hình 2.31 Arduino UNO R3

32

Các loại Board mạch Arduino

a. Arduino Uno

Đây là Board cơ bản nhất cho người mới bắt đầu. Nó có 14 chân dữ liệu số, có thế cấu hình làm chân lấy tín hiệu vào hoặc xuất tín hiệu ra. 6 chân tương tự đầu vào 5V, độ phân giải 1024 mức. Tốc độ 16MHz, điện áp vào từ 7~12V, chân số có thể cấp điện áp ra 5V và 1A, nếu điều khiển chân số ra tiêu tốn quá 1A thì Board sẽ bị hỏng. Kích thước Board khoảng 5,5x7cm.

b. Arduino Micro

Board này có thiết kế nhỏ, dành cho các không gian lắp đặt nhỏ, nhẹ. kích thước khoảng 5x2cm. Board này giống với Arduino Uno. Có 20 chân số, trong đó có 7 chân có thể phát xung PWM. 12 chân tương tự.

c. Arduino Pro/Pro Micro

Nhìn chung thiết kế giúp Arduino Uno. Có 2 loại, 3.3V và 5V. Nó không được thiết kế chân sẵn nên khi sử dụng bạn có thể hàn trực tiếp nhằm tiết kiệm không gian.

d. Arduino Nano

Board này có kích thước nhỏ nhất. gồm 14 chân số (6 chân PWM) và 8 chân tương tự. Kích thước khoảng 2x4cm. Nhỏ gọn, dễ lắp đặt ở bất kỳ đâu.

e. Arduino Mega

Có thiết kế hoạt động tương tự Arduino UNO, tuy nhiên có số lượng chân vào ra lớn với 54 chân Số (14 chân PWM), 16 chân tương tự và 4 cổng truyền nối tiếp (RS232) dễ dàng giao tiếp với các board, thiết bị khác. Kích thước 5x10cm.

33

f. Arduino Leonardo

Đây là board có thiết kế giống Arduino Micro, sự khác biệt lớn nhất giữa nó và các board khác là nó không có cổng USB dành cho việc lập trình. Mọi thứ được đặt trong 1 chip điều khiển, cho phép giao tiếp thông qua cổng COM ảo và cho phép nó giao tiếp với chuột và phím máy tính dễ dàng. Không giống như các Board khác, khi cổng nối tiếp mở thì nó sẽ không bị reset, để gỡ rối cho chương trình thì bạn cần giao tiếp qua lệnh Serial.prints() trong hàm Setup().

g. Arduino Due

Đây là Board có thiết kế lớn và xấu nhất trong tất cả các Board, nó hoạt động ở điện áp 3.3V. Các chân số có mức logic ở 3,3V nên khi giao tiếp cần phải nâng áp để có thể giao tiếp bình thường. Gồm 54 chân số ( 12 chân tương tự), 4 cổng nối tiếp tương tự Arduino Mega. Nó chạy bộ xử lý 32bit, 84MHz, nó xử lý nhanh hơn gấp 5 lần so với các Board arduino khác. Vì vậy nó đọc các chân đầu vào và đáp ứng nhanh hơn.

h. Arduino Ethernet

Như tên của nó, nó là 1 Arduino giống chức năng với UNO tuy nhiên nó được tích hợp Module Ethernet trong nó có tích hợp thẻ SD.

Ứng dụng của Arduino:

 Xoscillo: oscilloscope mã nguồn mở.

 Các thiết bị khoa học.

 OBDuino: một máy tính hành trình sử dụng giao diện chẩn đoán on-board được tìm thấy trong hầu hết các loại xe hơi hiện đại.

 Thiết bị đọc sách cho con người: thiết bị điện tử giá rẻ với đầu ra TV có thể chứa một thư viện năm ngàn cuốn sách(ví dụ như các biên soạn offline Wikipedia) trên một thẻ nhớ microSD.

 Ardupilot: software/ hardware máy bay không người lái.

 ArduinoPhone.

34 Để lập trình cho Arduino, ta sử dụng Arduino IDE( Intergrated Development Enviroment) là phần mềm được viết bằng Java. 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 canh lề, cũng như biên dịch và upload chương trình lên board.

2.4.2.1 Giao diện của Arduino IDE

Hình 2.33 Giao diện arduino IDE

Trong đó:

- Vùng lệnh bao gồm các nút lệnh menu (File, Edit, Sketch, Tools, Help) và các icon cho phép sử dụng nhanh các chức năng thường dùng của IDE. - Vùng viết chương trình: là nơi mà ta viết các đoạn mã của mình.

35

2.4.2.2 Cấu trúc chương trình Arduino

Một chương trình cơ bản của Arduino bao gồm 2 phần chính là setup() (cài đặt) và loop() (vòng lặp).

setup() là nơi khai báo các giá trị biến, khai báo thư viện, thiết đặt thông số... Nó sẽ chạy một lần duy nhất sau cấp nguồn cho arduino, cho đến khi reset lại hệ thống.

loop() sẽ khởi động sau khi khi setup() chạy xong, đây là nơi các chương trình của bạn được lặp đi lặp lại cho đến khi bạn thôi cấp nguồn cho arduino.

36

CHƯƠNG 3: THIẾT KẾ MÔ HÌNH HỆ THỐNG HỖ TRỢ ĐẬU XE

3.1 MÔ HÌNH HÓA HỆ THỐNG

Với cấu tạo của 1 hệ thống hỗ trợ đậu xe đã trình bày ở chương 2, nhóm đã lên ý tưởng và mô hình hóa các bộ phận của hệ thống như sau:

- ECU: sử dụng arduino mega 2560.

- Bộ chấp hành: sử dụng motor encoder GA25 V1. - Cảm biến: sử dụng cảm biến siêu âm HC- SR04.

3.1.1 Cấu tạo các chi tiết 3.1.1.1 Arduino mega 2560 3.1.1.1 Arduino mega 2560

Hình 3.1 Arduino mega 2560 mặt trước

Hình 3.2 Arduino mega 2560 mặt sau

37 Arduino Mega 2560 là mạch vi điều khiển 16bit dựa trên Atmega2560. Nó có 54 chân digital input/output( trong đó có 14 chân có thể được sử dụng với chức năng băm xung PWM), 16 chân analog input, 4 UARTs( cổng kết nối phần cứng), 1 thạch anh 16 MHz, 1 cổng kết nối USB, 1 cổng jack nguồn, 1 đầu ICSP và 1 nút nhấn reset.

Bảng 3.1 Tóm tắt các thông số của arduino 2560

Vi điều khiển Atmega2560

Nguồn hoạt động 5V

Nguồn cấp vào( đề nghị) 7- 12V

Nguồn cấp vào( giới hạn) 6- 20V

Chân I/O digital 54( 14 chân cho ra xung PWM)

Chân ngõ vào analog 16

Dòng DC trên mỗi chân I/O 40 mA

Dòng DC cho chân 3.3V 50 mA

Bộ nhớ Flash 256 KB( 8KB cho bootloader)

SRAM 8KB

EEPROM 4KB

Tốc độ xung nhịp 16 MHz

Input và Output

Mỗi 54 chân digital của Mega có thể được dùng làm chân input hoặc output, sử dụng các chức năng như pinMode(), digitalWrite(), digitalRead(). Hoạt động ở mức 5V và dòng tối đa là 40mA.

Một số chân có chức năng đặc biệt như:

+ Ngắt ngoài: chân 2( ngắt 0), 3( ngắt 1), 18( ngắt 5), 19( ngắt 4), 20( ngắt 3), và 21( ngắt 2).

+ PWM: 0 – 13 cung cấp PWM 8 bit với chức năng analogWrite().

Sở dĩ, nhóm chọn arduino làm bộ điều khiển cho mô hình vì nó nhỏ gọn, tốc độ xung nhịp tương đương với tốc độ xung nhịp của ECU parking assist, với cấu tạo gồm nhiều chân input/ output dễ dàng cho việc lắp đặt.

38

Hình 3.3 Hình ảnh thực tế cảm biến siêu âm HC- SR04

Với ưu điểm là nhỏ gọn, cấu tạo đơn giản, chi phí thấp, độ chính xác tương đối, nhóm chọn cảm biến siêu âm HC- SR04 làm cảm biến chính để lắp trên mô hình.

Cấu tạo của cảm biến: gồm 2 đầu thu phát sóng siêu âm( 1 đầu phát và 1 đầu thu).

Cảm biến có 4 chân: 1. GND 2. Echo 3. Trig 4. Vcc

Trong đó:

 Chân GND và Vcc là 2 chân nguồn. GND được nối với GND của arduino hoặc cực âm ( - ) của nguồn. Vcc được nối với cực dương (+) của nguồn 3.3V – 5V ( chuẩn 5V).

 Chân Trig và Echo là 2 chân digital: Trig( digital OUTPUT), Echo( digital INPUT). Trig là chân phát tín hiệu từ cảm biến và Echo là chân nhận tín hiệu phản xạ từ vật cản.

Nguyên lí hoạt động: Để đo khoảng cách, ta sẽ phát 1 xung rất ngắn( 5 microSeconds) từ chân trig. Sau đó, cảm biến sẽ tạo ra 1 xung HIGH ở chân echo cho đến khi nhận lại được sóng phản xạ ở pin này. Chiều rộng của xung sẽ bằng với thời gian sóng siêu âm được phát từ cảm biển và quay trở lại.

Tốc độ của âm thanh trong không khí là 340 m/s (hằng số vật lý), tương đương với 29,412 microSeconds/cm. Khi đã tính được thời gian, ta sẽ chia cho 29,412 để nhận được khoảng cách.

39 Do cách thức hoạt động của cảm biến siêu âm hoạt động dựa trên phương pháp đo thời gian truyền nên có nhiều nguyên nhân dẫn đến sai số của phép đo, làm cho số liệu thu được thiếu chính xác hoặc bị nhiễu. Một số nguyên nhân chính sau:

- Sự thay đổi của tốc độ truyền sóng âm trong không khí.

- Sự tương tác của sóng tới với bề mặt của đối tượng cần đo.

- Tầm quét của cảm biến siêu âm có góc mở lớn (khoảng 53 độ).

Cách khắc phục:

+ Khắc phục sự thay đổi tốc độ truyền sóng âm trong không khí: vận tốc truyền sóng âm trong không khí phụ thuộc vào nhiệt độ môi trường, khi nhiệt độ môi trường thay đổi thì vận tốc truyền sóng âm cũng thay đổi dẫn đến kết quả đo khoảng cách sẽ khác nhau khi thực hiện ở những nơi có nhiệt độ khác nhau. Vì vậy, ta sử dụng thêm cảm biến nhiệt độ LM35DZ để đo nhiệt độ.

+ Khắc phục sự tương tác của sóng với bề mặt của đối tượng cần đo.

+ Khắc phục góc mở của cảm biến.

3.1.1.3 Động cơ DC giảm tốc encoder GA25V1

40 Nhóm thiết kế hệ thống phanh và hệ thống lái thay bằng 2 motor encoder thông qua việc điều khiển tốc độ của 2 motor

Bảng 3.2 Các thông số của động cơ GA25 V1:

Điện áp cấp cho động cơ hoạt động 3V -12V

Điện áp cấp cho encoder hoạt động 3.3V

Tỷ số truyền khi qua hộp giảm tốc 1:34

Số xung khi qua hộp giảm tốc 374 xung

Đường kính động cơ 25 mm Đường kính trục 4 mm Tốc độ ko tải 320 rpm Dòng không tải 80 mA Tốc độ có tải: 284 rpm Dòng khi có tải 600 mA Moment: 188 kgf.cm Công suất định mức 13.2 W

Dòng khi động cơ bị giữ 2.29 A

Moment khi bị giữ 7.96 kgf.cm

Đĩa encoder 11 xung, hai kênh A_B

41

Hình 3.5 Sơ đồ chân motor encoder GA25 V1

3.1.1.4 Mạch cầu H L298

Do quá trình điều khiển 2 motor encoder cần tốc độ khác nhau nên nhóm sử dụng thêm module L298.

IC L298 là một IC tích hợp nguyên khối gồm 2 mạch cầu H bên trong. Với điện áp làm tăng công suất đầu ra từ 5V – 47V, dòng lên đến 4A, L298 rất thích hợp trong những ứng dụng công suất nhỏ như động cơ DC loại vừa.

42

Cấu tạo chi tiết L298

Hình 3.7 Sơ đồ mạch điện module L298

Tóm tắt qua chức năng các chân của L298:

- 4 chân INPUT: IN1, IN2, IN3, IN4 được nối lần lượt với các chân 5, 7, 10, 12 của L298. Đây là các chân nhận tín hiệu điều khiển.

- 4 chân OUTPUT: OUT1, OUT2, OUT3, OUT4( tương ứng với các chân INPUT) được nối với các chân 2, 3, 13, 14 của L298. Các chân này sẽ được nối với động cơ.

- Hai chân ENA và ENB dùng để điều khiển các mạch cầu H trong L298. Nếu ở mức logic “1” (nối với nguồn 5V) thì cho phép mạch cầu H hoạt động, nếu ở mức logic “0” thì mạch cầu H không hoạt động.

Điều khiển chiều quay với L298:

43 - Khi ENA = 1:

+ INT1 = 1; INT2 = 0: động cơ quay thuận. + INT1 = 0; INT2 = 1: động cơ quay nghịch. + INT1 = INT2: động cơ dừng ngay tức thì. (tương tự với các chân ENB, INT3, INT4).

- Khi ENB = 0: Động cơ không quay với mọi đầu vào . - Khi ENB = 1:

+ INT3 = 1; INT4 = 0: động cơ quay thuân. + INT3 = 0; INT4 = 1: động cơ quay nghịch. + INT3 = INT4: động cơ dừng ngay tức thì.

3.1.2 Lắp ráp các chi tiết thành mô hình

Ngoài các chi tiết đã nêu ở trên, để tăng sử ổn định cho hệ thống và tránh hư hỏng cho arduino nhóm sử dụng thêm các bộ giảm áp để cấp nguồn cho cảm biến và arduino.

Trong đó: 1 bộ giảm áp 12V- 3.5V cấp nguồn cho encoder, giảm áp 12V – 5V cấp nguồn cho cảm biến siêu âm, giảm áp 12V- 9V cấp nguồn cho Arduino. Ngõ vào của các giảm áp này lấy từ pin Lipo 2200 mAh, điện áp 12V DC.

Cách mắc chân trong mô hình:

 Các chân M1, M2 của motor 1 được mắc vào chân OUT1, OUT2 của mạch cầu H.

 Các chân M1, M2 của motor 2 được mắc vào chân OUT3, OUT4 của mạch cầu H.

 Nguồn cảm biến encoder:

- 2 chân GND của 2 cảm biến encoder 2 motor được nối chung với nhau và cắm vào chân GND trên arduino.

- 2 chân 3.3V của 2 cảm biến 2 motor được nối với nhau và nối với ngõ ra (+) của bộ giảm áp từ 12V - 3.5V.

 Các chân tín hiệu C1, C2 của motor 1 được nối với chân 2 và 4 của Arduino; C1, C2 của motor 2 được nối với chân 3 và 5 của Arduino

44

 Các chân ENA và INT1, INT2 của mạch cầu H lần lượt được nối với chân 8, 9, 10 trên arduino; các chân ENB, INT3, INT4 nối với chân 11, 12, 13 trên arduino.

 Nguồn của mạch cầu H:

- Chân 12V của mạch cầu H nối với cực (+) của nguồn 12V

- Chân (-) của L298 nối với cực (-) của nguồn và chân GND của arduino.

Nguồn của cảm biến siêu âm

- Chân Vcc được nối chung với nhau và nối với cực OUT( +) của LM2596 12V- 5V.

- Chân GND của các cảm biến siêu âm được nối với nhau và được nối với cực OUT( - ) của LM2596 12V- 5V.

Các chân thu phát sóng siêu âm được mắc như bảng sau:

Vị trí cảm biến Chân thu phát sóng siêu âm Chân trên arduino

FRONT Trig 26 Echo 27 REAR Trig 38 Echo 39 RIGHT Trig 48 Echo 49 LEFT Trig 28 Echo 29

45

46 Một số hình ảnh thực tế của mô hình sau khi hoàn thiện:

Hình 3.10 Mô hình nhìn từ trên xuống

47

Hình 3.12 Mô hình nhìn từ phía trước

3.2 LẬP TRÌNH ĐIỀU KHIỂN CHO MÔ HÌNH

Để xe đậu được vào đúng vị trí, ta cần xác định được vị trí đậu xe. Với mô hình có kích thước 20x30 cm thì nhóm chọn không gian đậu xe rộng 40cm và sâu 25cm( đậu xe song song).

Thuật toán xác định vị trí đậu xe:

Để xác định vị trí đậu xe, trong quá trình tìm hiểu lý thuyết và thực nghiệm, nhóm em tìm được 2 phương pháp.

Cách thứ nhất: đo tốc độ bánh xe thông qua việc đếm xung của encoder( do trục encoder gắn với trục bánh xe nên số vòng quay được của encoder cũng bằng số vòng quay của bánh xe) trong một đơn vị thời gian. Sau đó, lấy vận tốc đo được nhân với thời gian xe đi qua không gian đỗ xe( thời gian xe đi qua không gian đỗ xe được tính bằng việc đếm thời gian cảm biến siêu âm đo được khoảng cách có sự thay đổi trong khoảng 25 – 30cm, con số này được rút ra từ thực nghiệm) ta sẽ được chiều rộng của không gian đỗ xe. Kết hợp chiều sâu và chiều rộng đo được ta có được không gian đỗ xe cần tìm.

Một phần của tài liệu Nghiên cứu, thiết kế mô hình hệ thống hỗ trợ đậu xe trên ô tô (Trang 34)

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

(68 trang)