.12 Các thành phần trong mạch điều khiển

Một phần của tài liệu Thiết kế chế tạo mô hình tập lái xe 3D (Trang 52 - 62)

38

suất, điều khiển động cơ để mô phỏng lại trạng thái tay lái trong xe. Động cơ một chiều được ghép nối với cảm biến, cảm biến gửi tín hiệu phản hồi vị trí hiện tại của động cơ về mạch điều khiển để mạch điều khiển điều chỉnh tín hiệu xung, điều khiển động cơ đến vị trí yêu cầu.

3.10.1 Tay lái Momo.

- Hình 3.13 là hình ảnh tay lái Momo được sử dụng trong mơ hình. Sản phẩm tay lái Momo là một trong số rất nhiều những mẫu sản phẩm chế được thiết kế để tương thích với một loạt các ứng dụng đua xe nhỏ Live for speed, Need for speed, Dirt 3....

- Một số các thơng số kỹ thuật của sản phẩm: đường kính d = 33 cm, khối lượng 3.2 kg, sản phẩm này có thể kết nối với máy tính, góc quay tối đa 900. Sản phẩm này có thể kết nối với máy tính thơng qua cổng USB, tín hiệu truyền xuống máy tính từ tay lái là tín hiệu điện (tín hiệu analog) và tín hiệu điều khiển ứng dụng lái xe được đồng bộ hóa qua phần mềm driver của sản phẩm.

39

3.10.2 Bộ nút nhấn.

- Bộ nút nhấn gồm 12 nút bấm có thể cài đặt chức năng tùy theo ý muốn của người dùng. Sản phẩm này có thể kết nối với máy tính thơng qua cổng USB, tín hiệu truyền xuống máy tính từ tay lái là tín hiệu điện (tín hiệu analog) và tín hiệu điều khiển ứng dụng lái xe được đồng bộ hóa qua phần mềm driver của sản phẩm

3.10.3 Mạch điều khiển Arduino Leonardo.

3.10.3.1 Tổng quan về Arduino Leonardo.

- Hình 3.14 là mạch Arduino Leonardo được sử dụng trong bộ điều khiển. Arduino Leonardo là 1 bo mạch vi điều khiển được phát triển bởi Arduino.cc. Nó dựa trên Atmega32U4 và đi kèm với 23 chân đầu vào/ra kỹ thuật số đủ để kết nối với các thiết bị bên ngoài.

- Bộ vi điều khiển trên bo mạch kết hợp giao tiếp USB tích hợp, giúp bạn khơng phải sử dụng bộ xử lý thứ cấp. Giao tiếp USB giúp Leonardo ngụy trang dưới hình thức chuột hoặc bàn phím khi nó được kết nối với máy tính.

- Module này hỗ trợ bộ dao động tinh thể với tần số lên đến 16 MHz, đủ để tạo ra các xung clock với tốc độ phù hợp cần thiết để đồng bộ hóa tất cả các hoạt động bên trong.

40

- Header lập trình trong mạch được thêm vào thiết bị giúp bạn linh hoạt trong việc tinh chỉnh mã đã được viết sau khi cài đặt trong project liên quan.

- Bo mạch này hỗ trợ giao thức giao tiếp phổ biến như UART, SPI và I2C. UART là một giao thức giao tiếp nối tiếp chủ yếu được sử dụng để truyền và nhận dữ liệu nối tiếp bằng cách sử dụng hai chân gọi là TX và RX.

- Trong khi I2C là giao diện hai dây bao gồm hai đường được gọi là SDA và SCL, cái đầu tiên là đường dữ liệu nối tiếp mạng dữ liệu và cái thứ hai là đường clock nối tiếp được sử dụng để đồng bộ hóa tất cả các q trình truyền dữ liệu qua bus I2C. - Giao diện ngoại vi nối tiếp (SPI) là giao thức giao tiếp thứ ba được thêm vào bo mạch, thường được sử dụng để gửi dữ liệu giữa bộ vi điều khiển và các thiết bị ngoại vi nhỏ như cảm biến, thanh ghi dịch chuyển và thẻ SD sử dụng clock và đường dữ liệu riêng biệt, được xếp lớp với một đường chọn để chọn thiết bị cho giao tiếp.

41

Bảng 3. 1 Bảng thông số kỹ thuật của Arduino Leonardo

Vi điều khiển Atmega32U4

CPU 8 bit

Điện áp đầu vào 7 – 12 V

Điện áp hoạt động 5 V

Chân I/O kỹ thuật số 23

Đầu vào Analog (Input ) 12

Đầu ra PWM 7

Phần mềm sử dụng Phần mềm Arduino (IDE)

Flash Memory 32KB (4KB được bộ nạp sử dụng)

SRAM 2,5 KB

EEPROM 1 KB

Nút Reset Có

ICSP Header Có

Cồng USB 1

UART (Giao tiếp nối tiếp) Có

42

3.10.3.2 Sơ đồ bố trí chân của Arduino Leonardo.

 Hình 3.15 là sơ đồ bố trí các chân của mạch Arduino Leonardo được nếu rõ tên và chức năng của chân như sau:

43

- Nguồn điện:

+ Các nguồn điện khác nhau cho nhiều mục đích khác nhau. Chủ yếu, bo mạch

hoạt động ở 5V. Trong khi đó 3.3V là điện áp hoạt động của mỗi chân. Vin là điện áp đầu vào nằm trong khoảng từ 7 - 12 V. Điện áp này đến từ nguồn điện bên ngồi. Có hai chân nối đất trên bo. AREF là điện áp tham chiếu analog, chủ yếu được sử dụng cho các chân analog. IOREF hữu ích để cấp nguồn và phát triển khả năng tương thích giữa bo mạch này và Arduino Shield. Khi Shield được kết nối với chân này, nó làm mịn điện áp I / O do Bo mạch cung cấp. Shield sử dụng chân IOREF sẽ tương thích với cả 3V3 và 5V.

- Đầu ra PWM:

+ Có bảy chân PWM có trên bo. Nếu bạn đặt bo với jack cắm nguồn hướng lên

trên, các chân này sẽ xuất hiện ở phía bên phải của bo. PWM là một q trình để thu được các kết quả analog bằng các phương tiện kỹ thuật số.

- Giao thức giao tiếp:

+ Ba giao thức giao tiếp bao gồm SPI, UART và I2C được tích hợp trên bo mạch. Điều quan trọng cần lưu ý là giao tiếp SPI khơng có sẵn trên các chân I / O kỹ thuật số như các bo mạch khác, thay vào đó, nó nằm trong header ICSP.

- ICSP Header.

+ ICPS là viết tắt của In-Circuit Serial Programming - Một tính năng được sử dụng để lập trình Arduino với một Arduino khác. ICSP Header được thêm vào giúp kết nối bo mạch với máy tính để tải sketch lên trong trường hợp khơng có cổng USB.

- Các chân nguồn trên Arduino Leonardo:

+ Chân GND (Ground): cực âm của nguồn điện cấp cho Arduino Leonardo. + Khi dùng các thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải được nối với nhau.

44 + Chân 5V: cấp điện áp 5V đầu ra. + Chân 3.3V: cấp điện áp 3.3V đầu ra.

+ Chân Vin (Voltage Input): để cấp nguồn ngoài cho Arduino Leonardo, bạn nối cực dương của nguồn với chân này và cực âm của nguồn với chân GND.

+ Chân IOREF: điện áp hoạt động của vi điều khiển trên Arduino Leonardo có thể được đo ở chân này. Và dĩ nhiên nó ln là 5V. Mặc dù vậy bạn không được lấy nguồn 5V từ chân này để sử dụng bởi chức năng của nó khơng phải là cấp nguồn.

+ 2 chân Serial: 0 (RX) và 1 (TX) dùng để gửi (TX) và nhận (RX) dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2 chân này. Kết nối bluetooth thường thấy nói nơm na chính là kết nối Serial khơng dây. Nếu không cần giao tiếp Serial, không nên sử dụng 2 chân này nếu không cần thiết.

+ Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép xuất ra xung PWM với độ phân giải 8bit (giá trị từ 0 → 28 -1 tương ứng với 0V → 5V) bằng hàm analogWrite(). Nói một cách đơn giản, có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác.

+ Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoài các chức năng thơng thường, 4 chân này cịn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác.

+ LED 13: trên Arduino có 1 đèn led màu cam (kí hiệu chữ L). Khi bấm nút Reset, sẽ thấy đèn này nhấp nháy để báo hiệu. Nó được nối với chân số 13. Khi chân này được người dùng sử dụng, LED sẽ sáng. Arduino có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0→ 210 -1) để đọc giá trị điện áp trong khoảng 0V → 5V. Với chân AREF trên board, có thể để đƣa vào điện áp tham chiếu khi sử dụng các chân analog. Tức là nếu cấp điện áp 2.5V vào chân này thì có thể dùng các chân analog để đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit.

45

Đặc biệt, Arduino có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác.

+ Chân RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương với việc chân RESET đƣợc nối với GND qua 1 điện trở 10KΩ.

- Lập trình: [5]

+ Arduino.cc đã giới thiệu phần mềm chính thức được gọi là Arduino IDE, để lập trình module Arduino. Phần mềm này hỗ trợ các hệ điều hành phổ biến như Windows, Linux hoặc MAC. Trước khi bạn tải xuống phần mềm này, hãy đảm bảo phiên bản phần mềm được yêu cầu tương thích với hệ thống của bạn, tức là nếu bạn muốn tải xuống phiên bản App, bạn phải cài đặt Windows 10 trong hệ thống của mình vì phiên bản App khơng tương thích với Windows 7 hoặc 8.1.

+ Bạn có thể sẵn sàng để sử dụng phần mềm sau khi cài đặt. Một số chương trình

LED đơn giản đã có sẵn trên phần mềm, cho phép bạn bắt đầu làm việc trên bo mạch một cách linh hoạt.

+ Khơng cần ổ ghi bên ngồi để ghi mã bên trong module vì nó đi kèm với bộ nạp khởi động tích hợp. Nếu bạn định chèn một bộ điều khiển mới trên module, bạn cần phải cài đặt lại bộ nạp khởi động bằng phần mềm IDE.

+ Trình theo dõi nối tiếp được thêm vào phần mềm Arduino, giúp bạn thấy mã hoạt động trong thời gian thực khi bạn xác minh và tải mã lên.

+ Arduino IDE đi kèm với một tùy chọn biên dịch cho phép bạn xem quá trình biên dịch mã ở cuối màn hình khi bạn tải mã lên. Nó tạo ra tệp hex của mã sau đó được chuyển vào bo.

- Chip Atmega32U4:

+ Atmega32U4 là 1 bộ vi xử lý AVR 8 bit với hiệu suất cao, cơng suất tiêu thụ thấp, có cấu tạo RISC nâng cao. ATMEL ATmega32U4 là một vi điều khiển mạnh

46

mẽ cung cấp giải pháp hiệu quả cao và linh hoạt cho nhiều ứng dụng điều khiển nhúng.

+ Lõi AVR kết hợp một tập lệnh phong phú với 32 thanh ghi làm việc cho mục đích chung. Tất cả 32 thanh ghi được kết nối trực tiếp với bộ logic số học (ALU), cho phép hai thanh ghi độc lập các thanh ghi được truy cập trong một lệnh duy nhất được thực hiện trong một chu kỳ đồng hồ. Hiệu quả hơn khi đạt được thông lượng nhanh hơn đến mười lần so với các bộ vi điều khiển CISC thông thường.

+ ATmega32U4 cung cấp các tính năng sau: 32K byte trong hệ thống.

+ Flash có thể lập trình với khả năng Read/While/Write, EEPROM 512 Bytes / 1K, 1,25 / 2,5K byte SRAM, 26 dịng I / O mục đích chung (đầu ra CMOS và đầu vào LVTTL.

+ 12 kênh ADC 10 bit đầu vào tùy chọn với mức tăng có thể lập trình, trên chip cảm biến nhiệt độ hiệu chuẩn.

+ Giao diện kiểm tra JTAG tuân thủ 1149.1, cũng được sử dụng để truy cập On - chip.

+ Hệ thống gỡ lỗi và lập trình và 6 chế độ tiết kiệm năng lượng có thể lựa chọn. Chế độ dừng CPU trong khi cho phép SRAM, Timer / Counters, cổng SPI và hệ thống ngắt. Lưu lại nội dung khi ngắt khỏi nguồn điện.

+ Bộ tạo dao động, vơ hiệu hóa tất cả các chức năng chip khác cho đến khi ngắt tiếp theo hoặc khởi động lại phần cứng. Ở chế độ chờ, bộ tạo dao động / bộ cộng hưởng chạy trong khi phần còn lại của thiết bị đang nghỉ, điều này cho phép khởi động rất nhanh với việc công suất tiêu thụ thấp.

+ Bộ dao động hiệu chuẩn 8 MHz bên trong.

+ Bộ đếm trước đồng hồ bên trong & Chuyển đổi đồng hồ đang hoạt động (Int RC / Ext Oscar).

47 + Nguồn ngắt bên ngoài và bên trong. + Sáu chế độ ngủ:

 Không hoạt động.  Giảm nhiễu ADC.  Tiết kiệm năng lượng.  Giảm điện.

 Chờ.

 Mở rộng ở chế độ chờ.

3.10.3.3 Chương trình Arduino IDE.

- Các thiết bị dựa trên nền tảng Arduino được lập trình bằng ngơn riêng. Ngơn ngữ này dựa trên ngôn ngữ Wiring được viết cho phần cứng nói chung. Và Wiring lại là một biến thể của C/C++. Một số người gọi nó là Wiring, một số khác thì gọi là C hay C/C++. Riêng mình thì gọi nó là “ngơn ngữ Arduino”, và đội ngũ phát triển

Arduino cũng gọi như vậy. Ngôn ngữ Arduino bắt nguồn từ C/C++ phổ biến hiện nay do đó rất dễ học, dễ hiểu.

- Giao diện lập trình Arduino IDE:

- Hình 3.16 là giao diện Arduino IDE. Để lập trình cũng như gửi lệnh và nhận tín hiệu từ mạch Arduino, nhóm phát triển dự án này đã cung cấp đến cho người dùng một mơi trường lập trình Arduino được gọi là Arduino IDE.

Một phần của tài liệu Thiết kế chế tạo mô hình tập lái xe 3D (Trang 52 - 62)

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

(136 trang)