ADC tiếng anh là Analog-to-digital converter, tức là chuyển từ tín hiệu tương tự sang tín hiệu số. Ví dụ ADC 12 bit có giá trị trong vòng 0 - 4096, với mức đo hiệu điện thế từ 0 -3.3V chẳng hạn. Khi đó nếu 0V thì đọc giá trị digital sẽ là 0, nếu 3.3V thì đọc giá trị sẽ là 4096, nếu 1.65V thì sẽ có giá trị 2048,...
Ứng dụng ADC để đo các đại lượng analog như nhiệt độ, độ sáng... Chẳng hạn cặp nhiệt K (K-type thermal couple), khi nhiệt độ thay đổi thì hiệu điện thế hai đầu cặp nhiệt sẽ thay đổi. Lúc đó có thể dùng bộ ADC để đọc giá trị thay đổi rồi dựa vào đó điều khiển thiết bị.
Để sử dụng ADC trên STM32F103C8T6 thực hiện các bước như sau:
1. Tạo dự án mới trong STM32CubeMX, chọn IN3 trong ADC1, chọn Asynchronous cho USART1, ngoài ra cần chọn Serial Wire cho mục SYS/Debug, và chọn chân PC13 là GPIO_Output để tắt bật đèn LED nếu cần.
2. Trong tab Configuration, chọn NVIC và bật các ngắt như hình dưới
3. Để bắt đầu đọc tín hiệu analog thì cần gọi hàm HAL_ADC_Start_IT(&hadc1); Tín hiệu analog sẽ được đọc trong hàm HAL_ADC_ConvCpltCallback. Trong ví dụ này sau khi đọc được giá trị analog sẽ gửi qua UART để hiển thị lên máy tính.
Ứng dụng ADC để đo các đại lượng analog như nhiệt độ, độ sáng... Chẳng hạn cặp nhiệt K (K-type thermal couple), khi nhiệt độ thay đổi thì hiệu điện thế hai đầu cặp nhiệt sẽ thay đổi. Lúc đó có thể dùng bộ ADC để đọc giá trị thay đổi rồi dựa vào đó điều khiển thiết bị.
Để sử dụng ADC trên STM32F103C8T6 thực hiện các bước như sau:
1. Tạo dự án mới trong STM32CubeMX, chọn IN3 trong ADC1, chọn Asynchronous cho USART1, ngoài ra cần chọn Serial Wire cho mục SYS/Debug, và chọn chân PC13 là GPIO_Output để tắt bật đèn LED nếu cần.
2. Trong tab Configuration, chọn NVIC và bật các ngắt như hình dưới
3. Để bắt đầu đọc tín hiệu analog thì cần gọi hàm HAL_ADC_Start_IT(&hadc1); Tín hiệu analog sẽ được đọc trong hàm HAL_ADC_ConvCpltCallback. Trong ví dụ này sau khi đọc được giá trị analog sẽ gửi qua UART để hiển thị lên máy tính.
Code đầy đủ có thể tải về từ đây https://drive.google.com/open?id=1lqyqH6TEbtyrKpxpsUmObGolQukG_Ds0.
Nếu các bạn cần biết chi tiết làm thế nào để tạo project từ đầu, xin xem lại bài #1.
Board mạch phát triển STM32F103C8T6 có thể mua tại đây:
Comments
Post a Comment