BÀI 09: ADC TRONG STM32F103 - Chia Sẻ Các Vấn đề điện Tử
Có thể bạn quan tâm
ADC – Analog to digital Converter là bộ chuyển đổi tín hiệu tương tự sang tín hiệu số. ADC được ứng dụng rất nhiều như đo nhiệt độ, đọc giá trị điện áp, cường độ dòng điện, đọc phím nhấn, đọc giá trị biến trở, bảo vệ động cơ…. Khi tìm hiểu về ADC chúng ta cần tìm hiểu bộ ADC đó là bao nhiêu bit, các phương pháp chuyển đổi. ADC có số bit càng cao tức là độ phân giải của bộ ADC càng lớn.
ADC trong STM32F103 là bộ ADC có 12 bit tức là giá trị đọc về nằm trong khoảng 0 ->2^12= 4096. Giá trị điện áp đầu vào bộ ADC được cung cấp trên chân VDDA và thường lấy bằng giá trị cấp nguồn cho vi điều khiển VDD(+3V3). STM32F103C8 có 2 kênh ADC đó là ADC1 và ADC2, mỗi kênh có tối đa là 9 channel với nhiều mode hoạt động như: single, continuous,scan hoặc discontinuous. Kết quả chuyển đổi được lưu trữ trong thanh ghi 16 bit. Đọc biến trở là ví dụ đơn giản nhất của chức năng ADC:
Một số tính năng chính được liệt kê như sau:
- Độ phân giải 12 bit tương ứng với giá trị maximum là 4095.
- Có các ngắt hỗ trợ như End conversion, End of Injected Conversion and Analog Watchdog Event.
- Single mode hay Continuous mode.
- Tự động calib và có thể điều khiển hoạt động ADC bằng xung Trigger.
- Thời gian chuyển đổi nhanh : 1us tại tần số 65Mhz.
- Điện áp cung cấp cho bộ ADC là 2.4V -> 3.6V. Nên điện áp Input của thiết bị có ADC 2.4V ≤ VIN ≤ 3.6V.
- Có bộ DMA giúp tăng tốc độ xử lí.
Sơ đồ khối của bộ ADC trong STM32F103:

Ví dụ: cấu hình sử dụng bộ ADC1 kênh 0 trên chân PA0 đọc giá trị biến trở hiển thị lên máy tính thông qua UART2.
- B1 – Khởi tạo các định nghĩa và cấp clock cho ngoại vi cũng như bộ ADC.
- B2 – Cấu hình chân GPIO Input ADC và cấu hình chung ADC.
- B3- Cấu hình chanel, rank, thời gian lấy mẫu, bộ calib.
- B4 – Sử dụng phương pháp trung bình để đọc kết quả chính xác hơn.
- Sử dụng lệnh printf để xuất kết quả lên màn hình đã có vd trong bài UART.
- Dùng phương pháp lấy trung bình để đọc kết quả giá trị ADC sẽ chính xác hơn. Ở đây số mẫu lấy trung bình là 10.





Lưu ý:
- ADC_DR – ADC regular data register.
- ADC_SR – ADC status register.
- STRT : báo channel đã bắt đầu chuyển đổi giá trị ADC hay chưa.
- JSTRT : báo channel đã bắt đầu chuyển đổi khi có tín hiệu bên ngoài điều khiển hay chưa.
- JEOC: báo kết thúc quá trình chuyển đổi khi có tín hiệu bên ngoài điều khiển hay chưa.
- EOC: báo kết thúc quá trình chuyển đổi ADC.
- AWD: báo có sự kiện Analog Watchdog có xảy ra hay không.
- ADC_CR2 – ADC Control register 2.
- TSVREFE: bật hay tắt cảm biến nhiệt độ và Vrefint.
- SWSTART : bật hay reset trạng thái bộ chuyển đổi liên tục.
- JSWSTART: bật hay reset trạng thái bộ chuyển đổi liên tục được điều khiển từ bên ngoài bộ ADC.
- EXTTRIG: cho phép hay không cho phép bắt đầu bộ chuyển đổi liên tục từ xung trigger bên ngoài.
- EXTSEL[2:0] : bit chọn lựa xung trigger bên ngoài từ nguồn nào.
- ALIGN : sắp xếp thanh ghi data theo chiều từ lớn đến bé hoặc ngược lại.
- DMA: có sử dụng bộ DMA hay không.
- RSTCAL: reset lại thanh ghi calib hay không.
- CAL: cho phép hay báo là đã calib xong.
- CONT: lựa chọn mode chuyển đổi liên tục hay chuyển đổi đơn.
- ADON: bật hay tắt bộ chuyển đổi ADC.
- ADC_SMPR2 – ADC sample time register.

Thanh ghi này chứa giá trị ADC đọc về, nó là thanh ghi 32 bit với 16 bit data của bộ ADC1 và 16 bit data của bộ ADC2.

Thanh ghi này chứa các cờ báo trạng thái như:

Thanh ghi này điều khiển các quá trình chuyển đổi ADC như:

Thanh ghi này thiết lập thời gian lấy mẫu nhanh hay chậm và được cài đặt bởi lập trình.SMPx[2:0] tương ứng giá trị nhị phân từ 0->7 sẽ tương ứng với thời gian lấy mầu là: 1.5 - 7.5 - 13.5 - 28.5 - 41.5 - 55.5 - 71.5 - 239.5 cycles. Cách tính thời gian dựa theo hình sau:

- Đọc giá trị biến trở sử dụng kênh ADC1 channel 0 trên chân PA0, hiển thị giá trị ADC lên máy tính thông qua UART.
- Đọc giá trị biến trở sử dụng kênh ADC1 channel 0 trên chân PA0, hiển thị giá trị ADC lên máy tính thông qua UART có sử dụng ngắt Analog Watchdog, nếu giá trị ADC nằm ngoài lớn hơn 3000 và nhỏ hơn 2000 thì đèn PB9 sẽ sáng để cảnh báo.
- Đọc giá trị cảm biến nhiệt độ trong bộ ADC, nếu giá trị lớn hơn 35oC thì bật led ở chân PB9 cảnh báo, hiển thị giá trị nhiệt độ lên máy tính thông qua UART.
Từ khóa » Bộ Adc 2 Trên Stm32f103c8t6 Có Bao Nhiêu Kênh
-
Chức Năng ADC Sử Dụng Vi điều Khiển STM32F103C8T6 - TAPIT
-
STM32F1: ADC Với STM32 - DevIOT
-
Bài 8: Lập Trình STM32 đọc ADC Một Kênh Chế độ Single Mode
-
Bài 3: Lập Trình ADC STM32
-
Lập Trình STM32 ADC Nhiều Kênh Với DMA - OLP Tiếng Anh
-
BÀI 1 : GIỚI THIỆU VỀ STM32F103C8T6. - Điện Tử Hello
-
13.Lập Trình Nhiều Kênh ADC Trên STM32F4 Sử Dụng DMA - Scribd
-
Kiến Trúc Cơ Bản Của Stm32 Là Gì, Bài 1 : Giới Thiệu Về ...
-
ADC Mua Lại Bảng AD7606 16 Bit 8 Kênh STM32 Bộ Vi Xử Lý ...
-
Nguyễn-Khắc-Dương Tạ-Nhật-Minh 2k1 Tieu Luan - StuDocu
-
Kiến Trúc Cơ Bản Của Stm32 Là Gì, Bài 1 : Giới Thiệu Về Stm32f103c8t6
-
Lập Trình STM32 Với CubeMX Bài 8 STM32F4 ADC - Vidieukhien.Xyz
-
Từ Cửa Giao Tiếp STM32, Cảm Biến Magnetic Door + Đèn 220V + STM
-
Nghien Cứu Hệ Thống Giam Sat Trạm BTS Tự Dộng
-
HỆ THỐNG NHÚNG Thực Hiện ADC Hiện Thị Lên Led 7 Thanh Và đọc ...