CHƯƠNG 1: CƠ SỞ LÝ THUYẾT I. VI ĐIỀU KHIỂN STM32F0407VGT6 1. Giới thiệu chung về vi điều khiển STM32 1.1 Vi điều khiển STM32 STM32 là một dòng vi điều khiển phổ biến được sản xuất bởi công ty STMicroelectronics. STM32 nổi tiếng với sự linh hoạt và hiệu suất cao, là sự lựa chọn hàng đầu trong nhiều ứng dụng nhúng và dự án IoT (Internet of Things).2 Đặc điểm của vi điều khiển STM32 - Kiến trúc ARM Cortex-M: các dòng STM32 thường sử dụng các lõi vi xử lý ARM Cortex-M, cung cấp hiệu suất mạnh mẽ và tiêu thụ năng lượng hiệu quả.
- Dải sản phẩm đa dạng: STM32 cung cấp nhiều dòng sản phẩm với các tính năng và cấu hình khác nhau, từ dòng F0 dành cho ứng dụng giá rẻ, dòng F1 dành cho các ứng dụng đòi hỏi hiệu suất cao, đến dòng H7 với hiệu suất cao và các tính năng đặc biệt. - Bộ nhớ dữ liệu và chương trình: hầu hết các dòng STM32 có các tùy chọn bộ nhớ flash (ROM) và RAM khác nhau, cung cấp linh hoạt cho các ứng dụng khác nhau. - Tích hợp nhiều chức năng: STM32 thường được tích hợp với nhiều chức năng như GPIO, USART, SPI, I2C, CAN, ADC, DAC, PWM, timers, và các tính năng khác, giúp giảm chi phí và diện tích mạch in PCB. - Hỗ trợ phần mềm đa dạng: STMicroelectronics cung cấp nhiều công cụ phần mềm hỗ trợ như STM32CubeMX và STM32CubeIDE để giúp dễ dàng hóa quá trình phát triển.
- Thư viện chuẩn CMSIS và HAL: sử dụng thư viện CMSIS (Cortex Microcontroller Software Interface Standard) và HAL (Hardware Abstraction Layer), việc lập trình trở nên thuận tiện và chuyên nghiệp. Trang 5 - Hỗ trợ cộng đồng mạnh mẽ: cộng đồng người dùng STM32 rộng lớn, có nhiều tài nguyên trực tuyến, diễn đàn, và mã nguồn mở để hỗ trợ người dùng.3 Ứng dụng vi điều khiển STM32 - Trong lĩnh vực điện tử tiêu dùng: máy tính bảng, điện thoại thông minh, tivi, máy giặt, tủ lạnh,. - Trong công nghiệp: điều khiển động cơ, robot, hệ thống tự động hóa,. - Trong y tế: thiết bị y tế, máy đo sinh hiệu, dụng cụ chẩn đoán,.
- Trong ô tô: hệ thống phanh ABS, hệ thống treo, hệ thống giải trí,. - Trong các thiết bị IoT: cảm biến, bộ điều khiển, cổng kết nối,.4 Các dòng vi điều khiển STM32 phổ biến Trang 6 Hình 1: Các dòng vi điều khiển STM32 2. Vi điều khiển STM32F407VGT6 2. Giới thiệu về vi điều khiển STM32F407VGT6 STM32F407VGT6 là một vi điều khiển mạnh mẽ thuộc dòng sản phẩm STM32 của hãng STMicroelectronics, dựa trên lõi ARM Cortex-M4 32-bit với tần số hoạt động lên đến 168 MHz.
Được thiết kế với khả năng xử lý hiệu suất cao, STM32F407VGT6 cung cấp nhiều tính năng và giao diện phong phú, thích hợp cho các ứng dụng nhúng phức tạp. Một số đặc điểm nổi bật của STM32F407VGT6 bao gồm: Trang 7 Bộ nhớ: 1 MB Flash và 192 KB RAM, cho phép lưu trữ và xử lý dữ liệu lớn. Giao diện ngoại vi: hỗ trợ nhiều giao thức giao tiếp như UART, SPI, I2C, CAN, USB 2.0 OTG và Ethernet MAC. ADC/DAC: tích hợp 3 bộ chuyển đổi ADC 12-bit và 2 bộ DAC 12-bit, hỗ trợ các ứng dụng yêu cầu chuyển đổi tín hiệu analog/digital chính xác.
PWM và Timer: có nhiều bộ định thời và đầu ra PWM, lý tưởng cho các ứng dụng điều khiển động cơ và hệ thống nhúng thời gian thực. DSP và FPU: tích hợp bộ xử lý tín hiệu số (DSP) và đơn vị xử lý dấu chấm động (FPU) giúp nâng cao khả năng xử lý các phép toán phức tạp và tăng hiệu suất cho các ứng dụng tính toán cao. Với nhiều tính năng đa dạng và hiệu suất cao, STM32F407VGT6 là sự lựa chọn lý tưởng cho các dự án yêu cầu hiệu suất xử lý mạnh mẽ, tiết kiệm năng lượng và khả năng mở rộng giao tiếp với nhiều thiết bị ngoại vi khác nhau. Cấu tạo vi điều khiển STM32F407VGT6 Trang 8 Hình 2: Board STM32F407VGT6 thực tế Các thành phần trên board STM32F407VGT6 bao gồm: 1.
Vi điều khiển STM32F407VGT6 2. Cổng mini USB cung cấp điện và cho phép nạp code, debug chương trình 3. Embedded ST-LINK/V2-A 4. Nút nhấn cho người sử dụng 5.
Nút nhấn thực hiện chức năng Reset mạch 6. Cổng Mini-Jack để cắm tai nghe Trang 9 7. Cổng Micro-USB 8. LD1 (red/green LED) báo hiệu kết nối của USB 9.
LD2 (red LED) báo hiệu kết nối với nguồn 3. User LD3 tương ứng với orange LED 11. User LD4 tương ứng với greem LED 12. User LD5 tương ứng với red LED 13.
User LD6 tương ứng với blue LED Hình 3: Sơ đồ chân dòng vi điều khiển STM32F407xx Trang 10 Hình 4: Sơ đồ mạch của vi điều khiển STM32F407VGT6 Trang 11 2. Các thông số cơ bản của STM32F407VGT6 Đặc tính Giá trị Kích thước bộ nhớ 1MB Độ rộng dữ liệu bus 32 bit Độ phân giải ADC 12 bit Tần số hoạt động tối đa 168 MHz Số lượng chân I/O 82 Kích thước RAM 192 kB Nguồn cấp điện áp 1.6V Nhiệt độ hoạt động -40C – 85C Số lượng kênh ADC 16 kênh Bộ dao động tinh thể 4 – 26 MHz Số lượng Timer 14 ( 12 timer 16-bit và 2 timer 32-bit) Năng lượng hoạt động Thấp Loại RAM dữ liệu SRAM Loại giao diện CAN, I2C, SDIO, I2S / SPI, UART / USART, USB Bảng 1: Các thông số kĩ thuật cơ bản của STM32F407VGT6 Trang 12 II. PHẦN MỀM STM32CUBEIDE 1. Giới thiệu phần mềm SMT32cubeIDE STM32CubeIDE là một công cụ phát triển tích hợp (IDE) miễn phí và mạnh mẽ dành cho vi điều khiển STM32 của STMicroelectronics.
Nó cung cấp một môi trường toàn diện để viết mã, biên dịch, gỡ lỗi và nạp chương trình cho các dòng vi điều khiển STM32, bao gồm: Cấu hình ngoại vi: STM32CubeIDE cung cấp một trình hướng dẫn đồ họa trực quan để cấu hình các ngoại vi STM32, giúp đơn giản hóa quá trình thiết lập phần cứng và giảm thiểu lỗi. Tạo mã tự động: IDE tự động tạo mã C/C++ tối ưu hóa cho các ngoại vi được cấu hình, giúp tiết kiệm thời gian và công sức cho người lập trình. Biên dịch và liên kết: STM32CubeIDE tích hợp trình biên dịch và liên kết GCC, cho phép biên dịch và liên kết mã C/C++ thành tệp thực thi cho STM32. Gỡ lỗi: IDE cung cấp trình gỡ lỗi GDB mạnh mẽ để gỡ lỗi ứng dụng STM32, giúp xác định và sửa lỗi nhanh chóng và hiệu quả.
Hỗ trợ nhiều hệ điều hành: STM32CubeIDE hỗ trợ nhiều hệ điều hành khác nhau, bao gồm Windows, macOS và Linux. Ngoài ra, STM32CubeIDE còn có nhiều tính năng hữu ích khác như: hỗ trợ nhiều dự án thực tế, quản lý thư viện cũng như có khả năng tích hợp với các công cụ STM32 khác. Nhờ những tính năng mạnh mẽ và dễ sử dụng, STM32CubeIDE là lựa chọn lý tưởng cho các nhà phát triển nhúng muốn tạo ra các ứng dụng STM32 hiệu quả và đáng tin cậy. Trang 13 Hình 5: Các tính năng chính của phần mềm STM32CubeIDE 2.
Giao diện phần mềm STM32cubeIDE Hình 6: Giao diện thiết lập cấu hình cho vi điều khiển STM32F407VGT6 Trang 14 Hình 7: Giao diện vùng làm việc phần mềm STM32CubeIDE Hình 8: Các biểu tượng điều khiển chính để chỉnh sửa, xây dựng và quản lí dự án Trang 15 Hình 9: Các comment chỉ rõ vị trí viết code chương trình Hình 10: Cửa sổ Debug chương trình Trang 16 III. CẢM BIẾN SIÊU ÂM HC-SR04 1. Giới thiệu về cảm biến Cảm biến siêu âm là thiết bị điện tử đo khoảng cách của một đối tượng mục tiêu bằng cách phát ra sóng siêu âm, sau đó âm thanh phản xạ được chuyển đổi thành tín hiệu điện. Theo đó, bộ phát của cảm biến có khả năng tạo ra âm thanh nhờ sử dụng tinh thể áp điện.
Còn bộ thu có vai trò tiếp nhận âm thanh đến và đi từ các vị trí khác nhau. Hình 11: Cảm biến siêu âm HC-SR04 trong thực tế Số chân Tên chân Mô tả 1 Vcc Chân Vcc dùng để cấp nguồn cho cảm biến, thường là +5V 2 Trigger Chân trigger là chân đầu vào. Chân này phải được giữ ở mức cao trong 10us để khởi tạo phép đo bằng cách gửi sóng siêu âm. 3 Echo Chân Echo là chân đầu ra.
Chân này tăng cao trong một khoảng thời gian bằng với thời gian để sóng siêu âm quay trở lại cảm biến. 4 Ground Chân này được nối đất. Bảng 2: Giải thích sơ đồ chân cảm biến siêu âm HC-SR04 Trang 17 Hình 12: Mô phỏng cách nối chân cảm biến siêu âm HC-SR04 2. Các thông số kĩ thuật của cảm biến Đặc tính Giá trị Điện áp hoạt động +5VDC Dòng điện tĩnh < 2mA Dòng điện hoạt động 15mA Góc đo 300 Khoảng cách đo được 2-400cm Độ chính xác 3mm Độ rộng xung ngõ vào 10uS Kích thước 45mm x 20mm x 15mm Trọng lượng xấp xỉ 10gam Bảng 3: Các thông số kĩ thuật cơ bản của cảm biến HC-SR04 3.
Nguyên lí hoạt động của cảm biến Trang 18 Cảm biến siêu âm có nguyên lý hoạt động dựa trên quá trình cho và nhận, có nghĩa là hệ thống cảm biến sẽ liên tục phát ra các sóng âm thanh ngắn với tần số cao hơn mức mà con người có thể nghe và có tốc độ lan truyền mạnh. Khi các sóng âm này gặp phải vật cản là chất rắn hay chất lỏng thì sẽ tạo ra các bước sóng phản hồi. Sau cùng, thiết bị cảm biến sẽ tiếp nhận, phân tích và xác định chính xác khoảng cách từ cảm biến đến vật cản. Hình 13: Nguyên lí hoạt động của cảm biến siêu âm HC-SR04 Cảm biến siêu âm hoạt động với công thức đơn giản: khoảng cách = tốc độ x thời gian.
Vì chúng ta đang sử dụng sóng siêu âm nên tốc độ phổ quát của sóng siêu âm ở điều kiện phòng là 330m/s. Mạch điện tích hợp sẵn trên module sẽ tính toán thời gian cần thiết để sóng siêu âm quay trở lại và bật chân Echo ở mức cao trong cùng một khoảng thời gian cụ thể, bằng cách này ta cũng có thể biết được thời gian đã thực hiện. Bây giờ chỉ cần tính toán khoảng cách bằng vi điều khiển hoặc bộ vi xử lý. Cấp nguồn cho cảm biến bằng cách sử dụng nguồn +5V được điều chỉnh thông qua các chân nối đất và Vcc của cảm biến.
Dòng điện được tiêu thụ bởi cảm biến nhỏ hơn 15mA và do đó có thể được cấp nguồn trực tiếp bằng các chân 5V trên bo mạch (nếu có). Các chân Trigger và Echo đều là các chân I/O và do đó có thể được kết nối với các chân I/O của vi điều khiển. Để bắt đầu đo, chân trigger được đặt ở mức cao 10us và Trang 19 sau đó tắt. Hoạt động này sẽ kích hoạt một sóng siêu âm ở tần số 40Hz từ bộ phát và bộ thu sẽ đợi sóng quay trở lại.