THI CÔNG HỆ THỐNG

Một phần của tài liệu Thiết kế và thi công KIT lập trình vi điều khiển ARM kết hợp cảm biến y sinh (Trang 51)

3.3.1.Thi công board mạch

Các bước thi công phần cứng

− Mạch in được thiết kế trên phần mềm Proteus

− Thực hiện thi công mạch và tiến hành thi công board mạch.

− Sau khi thi công sẽ dùng đồng hồ để kiểm tra ngõ vào, ngõ ra, thông mạch và ngắn mạch để xem có lỗi trong lúc thực hiện hay không.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 43

Hình 3.11: Sơ đồ bố trí linh kiện của KIT

Trong Hình 3.11, sơ đồ bao gồm: ở trung tâm là nơi gắn board mạch STM32F407VE và LCD TFT, xung quanh là các khối chức năng: khối led đơn, khối led 7 đoạn quét, khối LCD, khối ma trận phím, khối nút nhấn, khối thời gian thực, khối điều khiển tốc độ động cơ, cảm biến SPO2, cảm biến nhịp tim, cảm biến nồng độ cồn, cảm biến nhiệt độ LM35, cảm biến nhiệt độ DS18B20, cảm biến siêu âm

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 44

Hình 3.13:Sơ đồ mạch in PCB mặt dưới

Hình 3.123.13 là sơ đồ mạch in dùng để làm mạch cho kit. ➢ Thống kê linh kiện sử dụng trong hệ thống

Bảng 3.1:Danh sách các linh kiện

STT Tên linh kiện Số lượng

1 Kit STM32F407 1

2 LCD TFT 1

3 Cảm biến siêu âm 1

4 Cảm biến MAX30100 1

5 Cảm biến nhịp tim Pluse sensor 1

6 Cảm biến nồng độ cồn MQ3 1

7 Cảm biến nhiệt độ LM35 2

8 Cảm biến nhiệt độ DS18B20 2

9 IC L298 1

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 45 11 Transistor A1013 8 12 IC DS3231 1 13 Transistor 2SC1815 2 14 IC LM2576-5 1 15 IC LM2576-3.3 1 16 RELAY 24V 1 17 Động cơ DC 1 18 Nút nhấn 20

19 Trở, tụ , led, diot

Trong bảng 3.1 liệt kê linh kiện để tránh những thiếu sót trong quá trình thi công board mạch nên sẽ liệt kê tất cả các linh kiện được sử dụng trong mạch để tiến hành thi công mạch như trong bảng.

3.3.2.Lắp ráp thi công mô hình

Tiến hành hàn linh kiện vào mạch khi làm mạch.

Hình 3.14:Mạch sau khi thi công

Hình 3.14 thể hiện vị trí các linh kiện trên board mạch - Vị trí số 1: Khối nguồn. 8 9 5 6 7 10 11 12 4 13 2 14 3 1

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 46 - Vị trí số 2: Khối vi xử lý.

- Vị trí số 3: Khối LED. - Vị trí số 4: Khối LCD TFT.

- Vị trí số 5: Khối cảm biến nhiệt độ LM35. - Vị trí số 6: Khối cảm biến nhiệt độ DS18B20. - Vị trí số 7: Khối động cơ DC.

- Vị trí số 8: Khối ma trận phím.

- Vị trí số 9: Khối cảm biến nhịp tim và SpO2. - Vị trí số 10: Khối cảm biến nhịp tim Pluse sensor. - Vị trí sô 11: Khối cảm biến siêu âm.

- Vị trí số 12: Khối cảm biến nồng độ cồn MQ3. - Vị trí số 13: Khối module thời gian thực DS3231. - Vị trí số 14: Khối LED đơn.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 47

Chương 4. THIẾT KẾ CÁC BÀI THỰC HÀNH

Chương này trình bày về các bài thực hành cho các module của kit thực hành như 8 led đơn, nút nhấn, màn hình LCD TFT, các cảm biến,… Bài thực hành gồm các phần mục: sơ đồ phần cứng, cấu hình chân cho vi điều khiển, các hàm cơ bản, các thư viện sử dụng, các bài tập mẫu và các bài tập ứng dụng.

4.1.PHẦN MỀM LẬP TRÌNH STM32CUBEIDE 4.1.1.Giới thiệu 4.1.1.Giới thiệu

Phần mềm lập trình cho các dòng vi điều khiển STM32 có nhiều chương trình khác nhau, trong đề tài sử dụng phần mềm STM32CubeIDE. Đây là phần mềm miễn phí do hãng ST tạo ra, hỗ trợ cho các dòng vi điều khiển STM32 bao gồm cả chip STM32F4VET6 mà kit thực hành sử dụng, trong phần mềm có tích hợp các công cụ sinh code, soạn thảo, biên dịch và nạp chương trình cho vi điều khiển, rất đơn giản và dễ sử dụng.

Biểu tượng phần mềm STM32CubeIDE sau khi cài đặt xong xuất hiện trong màn hình desktop như sau.

Hình 4.1:Biểu tượng phần mềm STM32CubeIDE

4.1.2.Hướng dẫn sử dụng phần mềm

Phần mềm lập trình cho các dòng vi điều khiển STM32 có nhiều chương trình khác nhau, trong đề tài sử dụng phần mềm STM32CubeIDE. Đây là phần mềm miễn phí do hãng ST tạo ra, trong phần mềm có tích hợp các công cụ sinh code, soạn thảo code và nạp code cho vi điều khiển, rất đơn giản và dễ sử dụng.

Biểu tượng phần mềm STM32CubeIDE sau khi cài đặt xong xuất hiện trong màn hình desktop như sau.

Bước 1: Khởi động phần mềm, giao diện xuất hiện như Hình 4.2. Chọn mục Start New STM32 project.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 48

Hình 4.2:Giao diện khi khởi động phần mềm

Hình 4.3:Chọn họ vi điều khiển

Bước 2: Giao diện phần chọn Target như hình 4.3. Tìm vi điều khiển STM32F407VET6 bằng cách gõ vào ô tìm kiếm được đánh dấu số 1. Phần đánh dấu số 2 là họ vi điều khiển STM32F4VETx. Chọn “Next” (số 2).

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 49 Bước 3: Hình 4.4 là cửa sổ gõ tên Project, gõ tên và chọn “Finish” theo thứ tự 1, 2 trong hình.

Bước 4: Hình 4.5 là giao diện của file.ioc tức là file cấu hình các chân của vi điều khiển. Ở đây ta để cấu hình mặc định và không chỉnh sửa gì thêm. Tiến hành sinh code bằng cách nhấn Ctr+S và chọn “yes” khi cửa sổ Question hiện lên như Hình 4.6.

Hình 4.4:Gõ tên của Project

Bước 5: Biên dịch cho chương trình như hình 4.7 minh họa. Chọn file main.c theo đường dẫn Core>Src (số 2) thuộc project “cau_hinh” (số 1). Nhấn biểu tượng cây búa (số 3) hình 4.7. Kết quả biên dịch thành công và dung lượng bộ nhớ vi điều khiển sử dụng sẽ hiển thị lần lượt 1,2 trong Hình 4.8.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 50

Hình 4.5: Giao diện file.ioc cấu hình chân cho vi điều khiển

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 51

Hình 4.7:Cửa sổ soạn thảo chương trình của STM32CubeIDE

Hình 4.8:Cửa sổ hiển thị khi biên dịch xong

Bước 6: Nạp code cho vào bộ nhớ Flash của vi điều khiển bằng công cụ Debugger tích hợp sẵn trong phần mềm STM32CubeIDE, nhấn vào biểu tượng đánh dấu số 3 trong hình 4.8. Sau đó, xuất hiện cửa sổ cấu hình Debugger như hình 4. 9 và chọn “OK”.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 52

Hình 4.9:Cửa sổ cấu hình Debugger

Hình 4.10:Cửa sổ hiển thị nạp code thành công

4.1.3.Cấu trúc chương trình main.c

Khi sử dụng phần mềm sinh code ta sẽ được phần code như bên dưới. Khi viết chương trình ứng dụng ta sẽ viết các phần vào đúng vị trí comment dành riêng cho nó để khi chinh sửa file cấu hình port.ioc và sinh code lại thì những phần code đó sẽ không bị xóa mất. Sau đây là các mục comment tương ứng với các phần code.

Phần khai báo thư viện /* USER CODE BEGIN Includes */

Phần khai báo define và macro /* USER CODE BEGIN PM */

Phần khai báo biến /* USER CODE BEGIN PV */

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 53 Phần chương trình trước vòng lặp while (1) /* USER CODE BEGIN 2 */

Phần trương trình trong vòng lặp while (1) /* USER CODE BEGIN 3 */

Trong các bài thực hành sẽ chỉ nêu nhưng đoạn code chính để phần trình bày được ngắn gọn và tránh lặp lại, chúng ta phải viết lại bằng cách thêm những đoạn code chính này vào đúng các mục comment dành cho nó.

/* USER CODE BEGIN Header */ /**

************************************************************** * @file : main.c

* @brief : Main program body

************************************************************* * @attention

*

* <h2><center>&copy; Copyright (c) 2020 STMicroelectronics. * All rights reserved.</center></h2>

*

* This software component is licensed by ST under BSD 3-Clause license,

* the "License"; You may not use this file except in compliance with the

* License. You may obtain a copy of the License at:

* opensource.org/licenses/BSD-3-Clause *

******************************************* */

/* USER CODE END Header */

/* Includes ---*/

#include "main.h"

/* Private includes ---*/ /* USER CODE BEGIN Includes */

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 54

/* USER CODE END Includes */

/* Private typedef ---*/ /* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ---*/ /* USER CODE BEGIN PD */

/* USER CODE END PD */

/* Private macro ---*/ /* USER CODE BEGIN PM */

/* USER CODE END PM */

/* Private variables ---*/

/* USER CODE BEGIN PV */

/* USER CODE END PV */

/* Private function prototypes ---*/

void SystemClock_Config(void);

static void MX_GPIO_Init(void);

/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---*/ /* USER CODE BEGIN 0 */

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 55

/**

* @brief The application entry point. * @retval int

*/

int main(void)

{

/* USER CODE BEGIN 1 */

/* USER CODE END 1 */

/* MCU Configuration---*/

/* Reset of all peripherals, Initializes the Flash interface and

the Systick. */

HAL_Init();

/* USER CODE BEGIN Init */

/* USER CODE END Init */

/* Configure the system clock */

SystemClock_Config();

/* USER CODE BEGIN SysInit */

/* USER CODE END SysInit */

/* Initialize all configured peripherals */

MX_GPIO_Init();

/* USER CODE BEGIN 2 */

/* USER CODE END 2 */

/* Infinite loop */

/* USER CODE BEGIN WHILE */

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 56 {

/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */

}

/* USER CODE END 3 */

}

/**

* @brief System Clock Configuration * @retval None

*/

void SystemClock_Config(void) {

RCC_OscInitTypeDef RCC_OscInitStruct = {0};

RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

/** Configure the main internal regulator output voltage

*/

__HAL_RCC_PWR_CLK_ENABLE();

__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);

/** Initializes the CPU, AHB and APB busses clocks

*/

RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;

RCC_OscInitStruct.HSEState = RCC_HSE_ON;

RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;

RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;

RCC_OscInitStruct.PLL.PLLM = 8; RCC_OscInitStruct.PLL.PLLN = 336; RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; RCC_OscInitStruct.PLL.PLLQ = 4; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 57 Error_Handler();

}

/** Initializes the CPU, AHB and APB busses clocks

*/

RCC_ClkInitStruct.ClockType =

RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK

|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;

RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;

RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;

RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;

RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV4;

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) { Error_Handler(); } } /**

* @brief GPIO Initialization Function * @param None

* @retval None */

static void MX_GPIO_Init(void) {

/* GPIO Ports Clock Enable */

__HAL_RCC_GPIOH_CLK_ENABLE();

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 58

/* USER CODE BEGIN 4 */

/* USER CODE END 4 */

/**

* @brief This function is executed in case of error occurrence. * @retval None

*/

void Error_Handler(void) {

/* USER CODE BEGIN Error_Handler_Debug */

/* User can add his own implementation to report the HAL error

return state */

/* USER CODE END Error_Handler_Debug */

}

#ifdef USE_FULL_ASSERT

/**

* @brief Reports the name of the source file and the source line number

* where the assert_param error has occurred. * @param file: pointer to the source file name

* @param line: assert_param error line source number * @retval None

*/

void assert_failed(uint8_t *file, uint32_t line)

{

/* USER CODE BEGIN 6 */

/* User can add his own implementation to report the file name

and line number,

tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 59

/* USER CODE END 6 */

}

#endif /* USE_FULL_ASSERT */

/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

4.2.HÌNH XUNG CLOCK CHO VI ĐIỀU KHIỂN

Trong các nguồn dao động cung cấp cho STM32 hoạt động bao gồm có : High Speed Internal (HSI : Xung nội tốc độ cao) và High Speed External (HSE : Xung ngoại tốc độ cao).Có nhiều lý do ta sẽ sử dung xung ngoại thay cho xung nội như khi thạch anh ngoài có thể cung cấp dao động cao hơn nguồn xung nội, giúp thu được số lieu chính xác hơn khi giao tiếp với ngoại vi đo nhiệt độ cao hơn rất nhiều so với 25 độ C. Hay như trong một vài trường hợp phải giao tiếp với ngoại vi chỉ có thể hoạt động ở một tần số xác định.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 60 Bên cạnh nguồn xung tốc độ cao ta còn có Low Speed External (LSE: xung ngoại tốc độ thấp) và Low Speed Internal (LSI: xung nội tốc độ thấp) để điều khiển ngoại vi Real Time Clock (RTC) và Independent Watchdog (IWDT).

Một mạng lưới phức tạp chịu trách nhiệm truyền tín hiệu dao động bên trong STM32 được gọi là Clock Tree. Clock tree sử dung nhiều bộ Phase-Locked Loops (PLL) và Prescalers để tăng / giảm tần số nguồn khi cần thiết.

Lý do chúng ta cần nhiều bộ chia tần số nguồn là để đảm bảo khả năng hoạt động cũng như giảm thiểu năng lượng tiêu thụ ở những chức năng không cần thiết [1].

Cấu hình ClockTree sẽ được thực hiện qua một thiết bị ngoại vi có tên là Reset and Clock Control (RCC) số 2 Hình 4. 11, và nó sẽ đựợc thực hiện qua các bước:

Bước 1: Cấu hình chân dao động cho vi điều khiển.

Trong cửa sổ Pinout & Configuration hình 4. 11, chọn System Core (số 1). Chọn mục RCC (số 2). Trong mục High Speed Clock (HSE), chọn Crystal/Ceramic Resonator

Một phần của tài liệu Thiết kế và thi công KIT lập trình vi điều khiển ARM kết hợp cảm biến y sinh (Trang 51)

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

(118 trang)