1. Trang chủ
  2. » Tất cả

vi điều khiển nâng cao ADC

26 3 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Điều Khiển Nâng Cao ADC
Trường học Trường Đại học Bách Khoa Hà Nội
Chuyên ngành Điều khiển nâng cao
Thể loại giáo trình
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 26
Dung lượng 3,13 MB
File đính kèm Slide Vi dieu khien nang cao- ADC.rar (2 MB)

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

Nội dung

• ADC của STM32F103C8 có độ phân giải 12 Bit . • Có 22 kênh ADC trong đó có 20 kênh bên ngoài : ADC1_IN0 ÷ ADC1_IN9; ADC2_IN0 ÷ ADC2_IN9 và 2 kênh bên trong chip: Vrefint và cảm biếnnhiệt độ . • Chuyển đổi AD trên các kênh có thể thực hiện với 4 chế độ: Single; Continuous; Scan; Discontinuous. • Giá trị ADC sau khi chuyển đổi xong được lưu trữ trong thanh ghi 16 bit (leftaligned hoặc rightaligned). • Xung nhịp ADC thuộc khối clock APB2.

Trang 1

Bài 3 Lập trình cơ bản trên ARM

3.5 - Lập trình biến đổi tương tự số ADC.

#1

Trang 2

3.5.1 Giới thiệu

#2

• ADC của STM32F103C8 có độ phân giải 12 Bit

• Có 22 kênh ADC trong đó có 20 kênh bên ngoài : ADC1_IN0 ÷ ADC1_IN9; ADC2_IN0 ÷ ADC2_IN9 và 2 kênh bên trong chip: Vrefint và cảm biến

nhiệt độ

• Chuyển đổi A/D trên các kênh có thể thực hiện với 4 chế độ:

- Single; Continuous; Scan; Discontinuous.

• Giá trị ADC sau khi chuyển đổi xong được lưu trữ trong thanh ghi 16 bit (left-aligned hoặc right-aligned)

• Xung nhịp ADC thuộc khối clock APB2.

3.5 Lập trình biến đổi tương tự số ADC

Trang 3

3.5.2 Các tính năng của ADC trên STM32F103

#3

• Độ phân giải 12-bit.

• Xảy ra ngắt khi kết thúc quá trình chuyển đổi, kết thúc Injected conversion và có sự kiện

Analog watchdog

• Single mode và continuous mode (liên tục).

• Scan mode tự động chuyển đổi từ kênh 0 đến kênh ‘n’

• Tự hiệu chỉnh

• Căn chỉnh dữ liệu kết hợp xây dựng dữ liệu

• Thời gian lấy mẫu được thiết lập bằng chương trình trên từng kênh

• Lựa chọn đầu vào với chế độ thông thường và injected conversion

• Discontinuous mode (không liên tục)

• Dual mode (trên các vi điều khiển có 2 ADCs trở lên)

• Thời gian chuyển đổi ADC :

– STM32F103xx : 1 µs với 56 MHz (1.17 µs với 72 MHz)

• Nguồn cấp ADC: 2.4 V to 3.6 V

• Dải đầu vào ADC: VREF- ≤VIN ≤VREF+

• DMA - yêu cầu tạo trong quá trình chuyển đổi kênh thông thường.

3.5 Lập trình biến đổi tương tự số ADC

Trang 4

Sơ đồ khối ADC Hình 22 trang 217 Datasheet

3 5 Lập trình biến đổi tương tự số ADC

3.5.3 Sơ đồ khối của ADC

(1) Các khối chức năng của ADC

- Khối đầu vào

- Khối chuyển đổi tương tự số

- Khối nguồn và điện áp tham chiếu

- Khối Regular data register

- Khối Injected data registers

- Khối ngắt ADC

Trang 5

Sơ đồ khối ADC Hình 22 trang 217 Datasheet

3 5 Lập trình biến đổi tương tự số ADC

3.5.3 Sơ đồ khối của ADC

(1) Các khối chức năng của ADC

- Khối ADC Remap

Trang 6

ADC pins bảng 65 trang 218 Datasheet

3 5 Lập trình biến đổi tương tự số ADC

3.5.3 Sơ đồ khối của ADC

(2) Các chân ADC

Trang 7

Timing diagram Hình 23 trang 220 Datasheet

3 5 Lập trình biến đổi tương tự số ADC

3.5.3 Sơ đồ khối của ADC

Trang 8

3 5 Lập trình biến đổi tương tự số ADC

3.5.3 Sơ đồ khối của ADC

chuỗi chuyển đổi có thể

được thực hiện trên bất

kỳ kênh nào và theo thứ

Trang 9

3 5 Lập trình biến đổi tương tự số ADC

3.5.3 Sơ đồ khối của ADC

(4) Lựa chọn kênh

- Regular : gồm tối đa 16

kênh Lựa chọn kênh và

thứ tự chuyển đổi được

thiết lập trong thanh ghi

ADC_SQRx.

- Injected: gồm tối đa 4

kênh Lựa chọn kênh và

thứ tự chuyển đổi được

thiết lập trong thanh ghi

ADC_JSQR.

Nguồn http://web.eece.maine.edu/

Trang 10

3 5 Lập trình biến đổi tương tự số ADC

3.5.3 Sơ đồ khối của ADC

(4) Lựa chọn kênh

- Temperature sensor

/VREFIN : Cảm biến

nhiệt độ được kết nối

với kênh ADCx_IN16 và

điện áp tham chiếu bên

trongVREFINT được kết

nối với ADCx_IN17 Hai

kênh có thể được thiết

lập trong Regular hoặc

Trang 11

3 5 Lập trình biến đổi tương tự số ADC

3.5.3 Sơ đồ khối của ADC

(5) Analog watchdog

- Bit AWD (Analog watchdog flag)

thiết lập nếu điện áp tương tự

được ADC chuyển đổi dưới

ngưỡng thấp hoặc trên ngưỡng

cao Các ngưỡng này được lập

trình trong 12 bit thấp của thanh

ghi 16 bit ADC_HTR và

ADC_LTR Một ngắt có thể

được kích hoạt bằng cách sử

dụng bit AWDIE trong thanh ghi

ADC_CR1

Analog watchdog guarded area trang 220 Datasheet

Analog watchdog channel selection trang 220 Datasheet

Trang 12

3 5 Lập trình biến đổi tương tự số ADC

3.5.3 Sơ đồ khối của ADC

(6) Channel-by-channel programmable sample time

Thời gian lấy mẫu của các kênh ADC có thể được thiết lập bằng cách sử dụng các bit SMP [2: 0] trong thanh ghi ADC_SMPR1 và ADC_SMPR2 Mỗi kênh có thể được lấy mẫu với thời gian lấy mẫu khác

Tổng thời gian chuyển đổi được tính như sau:

Tconv = Sampling time + 12.5 cycles

Ví dụ:

ADCCLK = 14 MHz và Sampling time = 1.5 cycles:

Tconv = (1.5 + 12.5) cycles = 14 cycles = 1 µs

Trang 13

3 5 Lập trình biến đổi tương tự số ADC

3.5.3 Sơ đồ khối của ADC

(7) Ngắt ADC

Một ngắt có thể được tạo ra khi kết thúc chuyển đổi cho các nhóm Regular và Injected,

và khi bit Bit AWD của Analog watchdog được thiết lập.

Trang 16

3.5 Lập trình biến đổi tương tự số ADC

3.5.5 Các bước lập trình biến đổi ADC

(1) Các hàm sử dụng trong thư viện HAL

• HAL_ADC_Start: hàm khởi tạo chuyển đổi ADC không ngắt.

• HAL_ADC_Start_IT: hàm khởi tạo chuyển đổi ADC có ngắt.

• HAL_ADC_GetValue: hàm trả về giá trị ADC chuyển đổi.

• HAL_ADC_Stop: hàm dừng chuyển đổi ADC không ngắt.

• HAL_ADC_Stop_IT: hàm dừng chuyển đổi ADC có ngắt.

• HAL_ADC_Start_DMA: hàm khởi tạo chuyển đổi ADC DMA.

• HAL_ADC_Stop_DMA: hàm dừng chuyển đổi ADC DMA.

• HAL_ADC_PollForConversion: hàm chờ ADC chuyển đổi xong.

Trang 17

Bước 3 Cấu hình cho bộ chuyển đổi ADC

- Lựa chọn kênh đầu vào ADC

- ADC_Setting: Data Alignment(Right alignment);

Chế độ chuyển đổi ADC (Continuous Conversion Mode);

- ADC Regular_Conversion Mode:

- Rank: Sampling Time

- Cho phép ADC và bắt đầu chuyển đổi: HAL_ADC_Start(&hadc1);

- Chờ ADC chuyển đổi xong: HAL_ADC_PollForConversion(&hadc1,10);

- Đọc giá trị ADC chuyển đổi xong: AD=HAL_ADC_GetValue(&hadc1);

3 5 Lập trình biến đổi tương tự số ADC

3.5.5 Các bước lập trình biến đổi ADC

Trang 18

(2) Các bước lập trình biến đổi ADC

Bước 3 Thiết lập các thông số cho bộ chuyển đổi ADC

- Lựa chọn kênh đầu vào ADC

- ADC_Setting: Data Alignment(Right alignment);

Chế độ chuyển đổi ADC (Continuous Conversion Mode);

- ADC Regular_Conversion Mode:

- Rank: Sampling Time

- Cho phép ADC và bắt đầu chuyển đổi:

3 5 Lập trình biến đổi tương tự số ADC

3.5.5 Các bước lập trình biến đổi ADC

Trang 19

(3) Các bước lập trình biến đổi ADC trên STM CUBE

B1 Cấu hình nguồn xung của ADC

- ADC1, ADC2 – APB2

3 5 Lập trình biến đổi tương tự số ADC

3.5.5 Các bước lập trình biến đổi ADC

Trang 20

3 5 Lập trình biến đổi tương tự số ADC

3.5.5 Các bước lập trình biến đổi ADC

Trang 21

3 5 Lập trình biến đổi tương tự số ADC

3.5.5 Các bước lập trình biến đổi ADC

Trang 22

(3) Các bước lập trình biến đổi ADC trên STM CUBE

3 5 Lập trình biến đổi tương tự số ADC

3.5.5 Các bước lập trình biến đổi ADC

Lựa chọn chân chiều vào, chiều ra, mode Thiết lập các thông số trên STM32CubeMX như trong hướng dẫn lập trình với GPIO

Sau đó chọn GENERATE CODE để tạo file Code

Trang 23

(3) Các bước lập trình biến đổi ADC trên STM CUBE

3 5 Lập trình biến đổi tương tự số ADC

3.5.5 Các bước lập trình biến đổi ADC

- Khung chương trình ADC1 – Kênh 0

#include "main.h"

ADC_HandleTypeDef hadc1;

void SystemClock_Config(void);

static void MX_GPIO_Init(void);

static void MX_ADC1_Init(void);

Trang 24

(4) Ví dụ

Ví dụ 1: Sử dụng đọc tín hiệu ADC trên

ADC 1 – Kênh 0 (ADC1_IN0 - PA0).

Hiển thị giá trị ADC bằng mã nhị phân D0 ÷ D11

lần lượt trên 12 LED - kết nối từ PB4 ÷ PB15

Bộ tạo dao động chế độ HSI với Fosc = 8MHz

3 5 Lập trình biến đổi tương tự số ADC

3.5.5 Các bước lập trình biến đổi ADC

Trang 25

3 5 Lập trình biến đổi tương tự số ADC

3.5.5 Các bước lập trình biến đổi ADC

Code ví dụ 1

#include "main.h"

ADC_HandleTypeDef hadc1;

void SystemClock_Config(void);

static void MX_GPIO_Init(void);

static void MX_ADC1_Init(void);

void hienthi_12bit(unsigned int data);

Trang 26

3 5 Lập trình biến đổi tương tự số ADC #26

Bài tập:

Bài tập 1 Sử dụng đọc tín hiệu ADC trên ADC 1 – Kênh 1 (ADC1_IN1 – PA1) Hiển thị giá trị ADC bằng mã nhị phân D0 ÷ D11 lần lượt trên 12 LED - kết nối từ PB0 ÷ PB11

Bộ tạo dao động chế độ HSI với Fosc = 8MHz

Bài tập 2 Sử dụng đọc tín hiệu ADC trên ADC 2 – Kênh 2 (ADC2_IN2 – PA2) Hiển thị giá trị ADC bằng mã nhị phân D0 ÷ D11 lần lượt trên 12 LED - kết nối từ PB0 ÷ PB11

Bộ tạo dao động chế độ HSI với Fosc = 8MHz

Bài tập 3 Sử dụng đọc tín hiệu ADC trên ADC 1 – Kênh 3 (ADC1_IN3 – PA3) Hiển thị giá trị ADC lên 4 Led 7 thanh kết nối với PORT B Bộ tạo dao động chế độ HSI với Fosc = 8MHz.

Bài tập 4 Sử dụng đọc tín hiệu ADC trên ADC 1 – Kênh 4 (ADC1_IN4 – PA4) Hiển thị giá trị Volt của đầu vào ADC lên 4 Led 7 thanh kết nối với PORT B Bộ tạo dao động chế độ HSI với Fosc = 8MHz

Ngày đăng: 03/01/2023, 17:53

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w