1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài tập lớn Sử dụng vi điều khiển STM32F103C8T6 thiết kế đồng hồ đo điện áp, hiển thị giá trị lên led 7 thanh dải đo từ 1 12V, sử dụng 1 nút nhấn chuyển thang đo giữa V và mV

22 28 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 402,15 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong đó STM32F1x là một loại rất phổbiến được sử dụng trong nhiều loại thiết bị, nó cũng cung cấp các phương tiện đểliên kết với nhiều loại vi điều khiển khác.. Trên cơ sở kiến thức đã

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

BÁO CÁO BÀI TẬP LỚN MÔN HỆ THỐNG NHÚNG

Thiều Quang Trường -B18DCDT259 Nguyễn Việt Anh – B18DCDT011

Trang 2

MỤC LỤC

DANH MỤC HÌNH VẼ 3

DANH MỤC BẢNG 3

PHẦN 1 5

I) Giới thiệu chung về board ARM STM32F103C8T6 V2 5

II) Giới thiệu về Led 7 thanh anode chung 5

PHẦN 2 8

I) Sơ đồ nguyên lý 8

1) Sơ đồ khối 8

2) Chức năng các khối 8

3) Sơ đồ kết nối phần cứng 8

II) Viết chương trình C cho mạch 11

1) Cấu hình RCC 11

2) Cấu hình GPIO 12

3) Cấu hình ADC 13

4) Cấu hình ngắt ngoài 14

5) Đọc dữ liệu ADC 16

6) Hàm quét Led 17

7) Chương trình chính 18

8) Chương trình ngắt ngoài 18

III) Mô phỏng hoạt động của mạch 19

PHẦN 3 21

1) Những điều đề tài làm được 21

2) Những khó khăn gặp phải 21

TÀI LIỆU THAM KHẢO 22

Trang 3

DANH MỤC HÌNH VẼ

Hình 1 1: Board ARM STM32F103C8T6 5

Hình 1 2: Hình ảnh Led 7 thanh anode chung 6

Hình 1 3: Cấu tạo Led 7 thanh Anode chung 6

Hình 2 1: Sơ đồ khối mạch phân áp 9

Hình 2 2: Nút nhấn chuyển trạng thái 10

Hình 2 3: Sơ đồ kết nối chung 10

Hình 2 4: Clock tree 11

Hình 2 5: Các kênh ngắt ngoài 15

Hình 2 6: Mạch trước khi nhấn nút 19

Hình 2 7: Mạch sau khi nhấn nút 20

DANH MỤC BẢNG Bảng 1: Bảng trạng thái của led 7 thanh anode chung 7

Bảng 2: Bảng kết nối chân của Led 7 đoạn với board ARM 9

Bảng 3: Các kênh ADC1 13

Trang 4

LỜI NÓI ĐẦU

Hiện nay, khoa học công nghệ ngày càng phát triển, vi điều khiển ARM đangngày càng thông dụng và phát triển hơn Trong đó STM32F1x là một loại rất phổbiến được sử dụng trong nhiều loại thiết bị, nó cũng cung cấp các phương tiện đểliên kết với nhiều loại vi điều khiển khác Dòng MCU STM32f1x doSTMicroelectronics tạo ra bao gồm lõi xử lí ARM Cortex-M3 32 bit và hỗ trợ cácngoại vi thông dụng như I2C, SPI, RTC,… Ngôn ngữ lập trình vô cùng dễ

sử dụng tương thích với ngôn ngữ C và thư viện rất phong phú vàđược chia sẻ miễn phí Chính vì những lý do như vậy nên ARMhiện đang dần phổ biến và được phát triển ngày càng mạnh mẽtrên toàn thế giới

Trên cơ sở kiến thức đã học trong môn học: Kỹ thuật vi xử lý, hệ thống nhúng,

… Cùng với những hiểu biết của mình về các thiết bị điện tử, nhóm em đã quyết

định thực hiện đề tài: Sử dụng vi điều khiển STM32F103C8T6 thiết kế đồng hồ

đo điện áp, hiển thị giá trị lên led 7 thanh dải đo từ 1 - 12V, sử dụng 1 nút nhấn chuyển thang đo giữa V và mV với mục đích để tìm hiểu thêm về ARM,

làm quen với các thiết bị điện tử,cách lập trình và nâng cao hiểu biết cho bản thân.Trong quá trình thực hiện có lẽ khó có thể tránh khỏi những thiếu sót, hạn chế vìthế nhóm em rất mong có được sự góp ý và nhắc nhở từ thầy giáo để có thể hoànthiện đề tài của mình

Em xin trân thành cảm ơn!

Trang 5

PHẦN 1 TỔNG QUAN

I) Giới thiệu chung về board ARM STM32F103C8T6 V2

Board ARM STM32F103C8T6 là một trong những Kit cơ bản giành cho: kỹ sư,

học sinh, sinh viên, người mới bắt đầu nghiên cứu về lập trình nhúng, Board mạch sửdụng vi điều khiển STM32F103C8T6 Arm Cortex-M3, Flash: 64 KB, SRAM: 20KB, hỗtrợ hầu hết các kết nối: SPI, USART, I2C, I2S, CAN… Là trợ thủ đắc lực trong việc lậptrình và gỡ lỗi

 Chip SPI Flash, W25X6, dung lượng 2Mb

 Kết nối: SPI, UART, I2C, CAN,…

 RTC độ chính xác cao

 USB: 2.0, DMA

II) Giới thiệu về Led 7 thanh anode chung

Trang 6

Led 7 thanh hay còn được gọi là Led 7 đoạn, bao gồm 7 đoạn đèn Led được xếp lạivới nhau thành hình chữ nhật Khi các đoạn lập trình để chiếu sang thì sẽ hiển thị chữ sốcủa hệ thập phân Đôi khi có nhiều Led 7 thanh được nối với nhau để có thể hiển thị đượccác số lớn hơn 2 chữ số.

Hình 1 2: Hình ảnh Led 7 thanh anode chung

Với các đoạn Led trong màn hình đều được nối với các chân kết nối để đưa ra ngoài.Các chân này được gán các kí tự từ a đến g, chúng đại diện cho từng Led riêng lẻ Cácchân được kết nối với nhau để tạo thành 1 chân chung

Chân pin chung hiển thị thường được sử dụng để xác định lạo màn hình Led 7 thanh

đó là loại nào Có 2 loại Led 7 thanh được sử dụng đó là Cathode chung và Anode chung

Hình 1 3: Cấu tạo Led 7 thanh Anode chung

Bảng trang thái của Led 7 thanh Anode chung:

Trang 7

Decimal Digit Individual Segments Illuminated

Bảng 1: Bảng trạng thái của led 7 thanh anode chung

Các phương pháp điều khiển Led 7 đoạn:

1 Kết nối các chân điều khiển của Led trực tiếp với port của vi điều khiển

2 Dùng quét Led

3 Vẫn sử dụng quét Led nhưng dùng IC chốt dữ liệu để tiết kiệm các chân của vi điều khiển

Trang 8

 Khối phân áp: Đo dải đo của vdk STM32F103C8T6 chỉ đo được trong khoảng

0 – 3.6V nên để mở rộng dải đo, ta phải qua một mạch phân áp

 Khối nút nhấn: Có chức năng chuyển đổi hiển thị giữa V và mV

 Khối hiển thị: Dùng Led 7 đoạn để hiển thị giá trị điện áp

3) Sơ đồ kết nối phần cứng

a) Khối mạch phân áp

BOARD ARM V2 (Khối MCU)

Khối mạch

phân áp

Nút nhấn chuyển trạng thái

Khối hiển thị Led 7 đoạn

Trang 9

Hình 2 1: Sơ đồ khối mạch phân áp

Điện áp cần đo được nối vào chân PA0 của vi điều khiển, do dải đo của ADC chỉnằm trong khoảng 0 – 3.6V nên để đo được mức điện áp cao hơn, ta cần phải mắc chúngqua một mạch phân áp

max =3.3 V Giả sử R2=10 k Ohm ta tính

được giá trị R1=26.7 k Ohm.

Từ đó ta có công thức tính điện áp (1)

V

đo =3.67 × V ADC

b) Khối hiển thị Led 7 đoạn

Bảng kết nối chân của Led 7 đoạn với board ARM:

7 PA1 PA2 PA3 PA4

Bảng 2: Bảng kết nối chân của Led 7 đoạn với board ARM

c) Nút nhấn chuyển trạng thái

Trang 10

Hình 2 2: Nút nhấn chuyển trạng thái

Nút nhấn được nối với chân PC13 của vi điều khiển, tích cực ở mức thấp

d) Sơ đồ kết nối chung cho các khối

Hình 2 3: Sơ đồ kết nối chung

II) Viết chương trình C cho mạch

Trang 11

1) Cấu hình RCC

Trên STM32F103 có 2 bộ giao động thạch anh ngoại:

 HSE (High Speed External): Bộ dao động ngoại tốc độ cao từ 4-16Mhz Bộdao động cấp cho CPU hoạt động

 LSE (Low Speed External): Bộ dao động ngoại tốc độ thấp 32.768KHz Bộdao động này cấp cho bộ RTC có sẵn trên chip

 HSI (High Speed Internal): Bộ giao động nội tốc độ cao 8MHz Bộ này sẽcung cấp cho CPU trọng trường hợp không có HSE

 LSI (Low Speed Internal): Bộ này dung để cấp cho Watchdog Timer có tần

Trang 12

/* Wait till PLL is ready */

while (RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET){}

/* Select HSI as system clock source */

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB, &GPIO_InitStructure);

}

Trang 13

Các đặc điểm chính của ADC:

 Độ phân giải 12 bit

 Ngắt được sinh ra sau khi kết thúc chuyển đổi

 Có 2 chế độ chuyển đổi là Single và Continuous

 Continuous mode và Discontinuous mode: Với continuous mode ADC sẽ tựđộng chuyển đổi lại khi chuyển đổi xong và ngược lại với discontinuousmode Đối với chuyển đổi nhiều kênh cùng một lúc nên dùng discontinousmode như thế sẽ giảm thời gian đọc một kênh nhất định nào đó mà khôngphải đọc liên tục từ kênh 0-n

 Vref: điện áp so sánh Đối với chip 144 chân sẽ có chân input điện áp so sánh2.4V≤ Vref ≤ 3.6V Và phải có lọc cẩn thận để ADC hoạt động ổn định Vớichip 64 chân trở xuống chúng ta không cần quan tâm vì điện áp so sánh lấy ởtrong chip và bằng VDD

 Điện áp input cho kênh ADC Vref- ≤ Vin ≤ Vref+

Cấu hình ADC sử dụng chế độ quét liên tục:

void ADC_Config()

{

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 , ENABLE);

Trang 14

bỏ qua tác động đó Ngắt ra đời để phục vụ cho các sự cố đó.

Một số thông số ngắt chính của STM32F103:

 16 mức ưu tiên có thể lập trình được

 Độ trễ thấp (xảy ra ngắt cực kì nhanh)

 Có quản lí năng lượng cho vector ngắt

 Các thanh ghi điều khiển quá trình ngắt

Một số tính năng chính của ngắt ngoài:

Trang 15

 Kích hoạt độc lập và mặt nạ cho mỗi line sự kiện/ngắt.

 Có bit trạng thái riêng cho mỗi line ngắt

 Có thể có tối đa 20 sự kiện/ ngắt

 Kiểm tra tín hiệu ngoài có độ rộng xung nhỏ hơn clock trên APB2

Trang 16

RCC_APB2Periph_AFIO, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 ;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;

GPIO_Init(GPIOC, &GPIO_InitStructure);

/* mapping */

GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13);

/* Clear the the EXTI line interrupt pending bit */

value = ADC_GetConversionValue(ADC1);

sumadc += value;

Trang 17

Delay(1);

} sumadc /= 10;voltage = sumadc*12.111/4095;}

6) Hàm quét Led

Ở bài toán điều khiển Led 7 thanh chúng ta thường áp dụng theo cách nối mỗi conLed 7 thanh vào 8 chân data độc lập Tuy nhiên việc này sẽ gây lãng phí số chân điềukhiển Led và giới hạn số Led có thể điều khiển Với số Led tăng lên đủ lơn số chân cũng

cần tăng lên rất nhiều Để giải quyết bài toán này có một kĩ thuật nêu ra là kĩ thuật “Quét

Led”.

Kỹ thuật quét Led thực hiện theo nguyên tắc một thời điểm chỉ bật một Led 7 thanhvới dữ liệu nó cần hiển thị, các Led còn lại được tắt Việc quét Led thực hiên luôn phiênsáng với các yêu cầu trên Quá trình quét Led chuẩn được thực hiện theo các bước sau:

Bước 1: Xuất ra mã cần hiển thị.

Bước 2: Cấp nguồn cho Led muốn hiển thị.

Bước 3: Trễ 1 khoảng thời gian để duy trì sáng.

Bước 4: Cắt nguồn Led vừa hiển thị.

Thực hiện những bước trên nhiều lần mỗi giây làm mắt ta có cảm giác rằng 4 Ledđều đang được bật

Chương trình quét Led:

void Quetled(uint32_t t)

{

int i = 100;

GPIO_ResetBits(GPIOA, LED1); //LED1 = 0

GPIO_ResetBits(GPIOA, LED2); //LED2 = 0

GPIO_ResetBits(GPIOA, LED3); //LED3 = 0

GPIO_ResetBits(GPIOA, LED4); //LED4 = 0

while(i ){

/*display led1*/ GPIO_Write(GPIOB, LED7SEG1[t/1000]);

GPIO_SetBits(GPIOA, LED1); // LED1 = 1

Delay(1);

GPIO_ResetBits(GPIOA, LED1); //LED1 = 0

/*display led2*/ uint16_t tmp1 = t%1000;

Trang 18

GPIO_Write(GPIOB, LED7SEG2[tmp1/100]);

GPIO_SetBits(GPIOA, LED2); //LED2 = 1

Delay(1);

GPIO_ResetBits(GPIOA, LED2); //LED2 = 0

/*display led3*/ uint16_t tmp2 = tmp1%100;

GPIO_Write(GPIOB, LED7SEG1[tmp2/10]);

GPIO_SetBits(GPIOA, LED3); //LED3 = 1

Delay(1);

GPIO_ResetBits(GPIOA, LED3); //LED3 = 0

/*display led4*/ uint16_t tmp3 = tmp1%10;

Clock_Config(); // configuraion clock

SystemCoreClockUpdate(); // update SystemCoreClock varibale

Trang 20

Hình 2 7: Mạch sau khi nhấn nút

Trang 21

PHẦN 3 KẾT LUẬN

1) Những điều đề tài làm được

Như vậy với đề tài: Sử dụng vi điều khiển STM32F103C8T6 thiết kế đồng hồ đo

điện áp, hiển thị giá trị lên led 7 thanh dải đo từ 1 - 12V, sử dụng 1 nút nhấn chuyển thang đo giữa V và mV Đề tài đã đạt được những vấn đề sau:

 Đã giới thiệu sơ lược về các thành phần phần cứng khá chi tiết và dễ hiểu

 Có thể đo và hiển thị điện áp một cách tương đối chính xác

Do kiến thức còn nhiều hạn chế, chúng em tự thấy đề tài của mìnhthực hiện vẫn còn nhiều sai sót, khiếm khuyết Vì vậy, chúng em rấtmong nhận được sự góp ý và giúp đỡ của thầy giáo để đề tài đượchoàn thiện hơn và có thêm nhiều cải tiến đáng kể để ứng dụng tốt hơnvào thực tiễn

Trang 22

TÀI LIỆU THAM KHẢO

[1] Bài giảng Kỹ thuật vi xử lí, Thầy Nguyễn Quốc Uy, HVCNBCVT.

[2] Bài giảng Hệ thống nhúng, Thầy Nguyễn Ngọc Minh HVCNBCVT.

[3] STM32F1xx-Reference-Manual, ST-Microelectronics.

[4] https://khuenguyencreator.com/lap-trinh-stm32-doc-adc-mot-kenh/.

[5] STM32F10x-standard-peripheral-library, ST-Microelectronics.

Ngày đăng: 19/02/2022, 11:47

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w