Title Image

Blog Logo

STM 18. ADC Overview

🌱 STM 18. ADC Overview

    Ngoại vi tiếp theo mà mình muốn giới thiệu tới các bạn trong Series STM32 đó là ADC - Analog-to-Digital Converter. Chắc hẳn các bạn lập trình Vi điều khiển không còn xa lạ gì với ngoại vi này. Ở bài viết này mình sẽ tập trung vào đặc điểm của ADC nói chung. 

    👉 ADC và hoạt động của ADC

    ADC – Analog-to-Digital Converter là hệ thống mạch thực hiện chuyển đổi một tín hiệu tương tự sang tín hiệu số. ADC dùng để đọc giá trị điện áp tương tự từ bên ngoài và biến đổi thành tín hiệu số, mục tiêu là để vi xử lý có thể tính toán và đo lường được giá trị tương tự cần đo.

ADC

    👉 Hoạt động của ADC:

  • Xung Start khởi động hệ thống.

  • Xung Clock quyết định bộ điều khiển liên tục chỉnh sử số nhị phân lưu trong thanh ghi. 

  • Số nhị phân trong thanh ghi được DAC chuyển đổi thành mức điện áp tương tự VAX.

  • Bộ so sánh sẽ so sánh VAX với đầu vào tương tự VA. Nếu VAX < VA, đầu ra của  bộ so sánh lên mức cao. Nếu VAX > VA, ít nhất bằng một khoảng VT (điện thế ngưỡng), đầu ra của bộ so sánh sẽ xuống mức thấp và ngừng tiến trình biến đổi số nhị phân ở thanh ghi. Tại thời điểm này VAX  VA. giá trị nhị phân ở thanh ghi là đại lượng số tương đương VAX và cũng là đại lượng số tương đương VAX, trong giới hạn độ phân giải và độ chính xác của hệ thống.  

  • Logic điều khiển kích hoạt tín hiệu EOC khi chu kỳ chuyển đổi kết thúc. 

    Tiến trình này có thể có nhiều thay đổi đối với một số loại ADC khác, chủ yếu là sự khác nhau ở cách thức bộ điều khiển sửa đổi số nhị phân trong thanh ghi. 

    👉 Các chỉ tiêu kỹ thuật chủ yếu của ADC

  • Độ phân giải: Biểu thị bằng số bit của tín hiệu số đầu ra. Số lượng bit nhiều sai số lượng tử càng nhỏ, độ chính xác càng cao. 

  • Độ chính xác tương đối: Là sai số của các điểm chuyển đổi thực tế so với đặc tuyến chuyển đổi lý tưởng. 

  • Tốc độ chuyển đổi: Được xác định thời gian bởi thời gian cần thiết hoàn thành một lần chuyển đổi A/D.

    👉 Các dạng ADC

    💥 Flash ADC

    Đây là loại ADC đơn giản nhất và nhanh nhất, nó bao gồm một loạt các bộ so sánh với các đầu vào không đảo ngược nối với đầu vào tín hiệu và các chân đảo ngược nối với một thang chia điện áp.

ADC

    Rõ ràng với việc thiết kế các bộ OPAMP so sánh, việc chuyển đổi chỉ mất 1 chu kỳ xung Clock 😀 Vì vậy, Flash ADC có tốc độ chuyển đổi là nhanh nhất, nhưng việc thiết kế tích hợp nhiều OPAMP như vậy có thể kiến kích thước IC tăng lên, và khiến Flash ADC khá đắt. 

    💥 ADC dạng sóng bậc thang

ADC

    ADC dạng sóng bậc thang sử dụng một bộ đếm, và giá trị bộ đếm này sẽ bắt đầu từ 0, giá trị đếm sẽ tăng dần cho đến khi giá trị đầu ra của DAC đạt được lớn hơn hoặc bằng giá trị điện áp đầu vào Va. 

    Chính vì vậy, nếu điện áp đầu vào nhỏ, ADC bậc thang sẽ đếm rất nhanh, còn khi điện áp càng cao thì ADC bậc thang càng mất nhiều thời gian chuyển đổi, tối đa có thể lên đến 2^N - 1 chu kỳ xung nhịp (Với N là số bit của bộ đếm). 

    Độ phân giải của ADC chính là kích thước bậc thang, tức là số bit của bộ đếm. 

    💥 ADC xấp xỉ liên tiếp

adc

    Khác với ADC bậc thang, ADC xấp xỉ liên tiếp sử dụng một thanh ghi để đếm. Ý tưởng của ADC xấp xỉ liên tiếp là đếm từng bit của thanh ghi này. 

    ADC sẽ bắt đầu xem xét từ bit MSB (Giá trị cao nhất), ADC sẽ xét xem bit này có cần thiết bằng 1 hay không? Mình ví dụ thanh ghi 8-bit, khi set bit MSB lên 1 sẽ có giá trị 1000.0000 = 255. sau đó đi qua bộ DAC sẽ có giá trị khoảng 2.5V (Với điện áp tham chiếu 5V). Ở đây nếu điện áp Va đầu vào > 2.5V thì bit MSB này cần set lên 1. Còn Va < 2,5V thì MSB = 0. Cứ tiếp tục với các bit sau đó cho đến bit cuối cùng LSB. 

    Có thể thấy với quá trình trên, mỗi chu kỳ thực hiện xét được 1 bit. Vậy nếu thanh ghi N bit thì sẽ luôn mất N chu kỳ clock để chuyển đổi. 

    Số bit của thanh ghi cũng chính là độ phân giải của ADC.

    👉 ADC xấp xỉ liên tiếp chính là loại ADC được sử dụng (tích hợp) thường xuyên nhất trong các dòng vi điều khiển.

    👉 ADC trong Vi điều khiển STM32

    Các dòng Vi điều khiển STM32 thường sử dụng bộ ADC xấp xỉ liên tiếp, với độ phân giải tối đa là 12-bit (Có thể cấu hình xuống 8-bit/6-bit). 

    Đối với vi điều khiển mình đang xét STM32F401, hỗ trợ đến 19 kênh (16 kênh đo điện áp ngoài, 2 nguồn bên trong và một kênh VBAT). Việc thực hiện ADC có thể thực hiện ở 4 chế độ: chế độ đơn, liên tục, quét hoặc không liên tục. Kết quả chuyển đổi được lưu trong một thanh ghi 16-bit (Chỉ sử dụng số bit bằng độ phân giải). 

    ADC còn hỗ trợ bộ Analog Watchdog để phát hiện điện áp vào vượt quá rải cho phép.

    Nguồn cấp ADC: 2.4 V to 3.6 V với full speed và giảm còn 1.8 V ở slower speed.

        
    Trên đây là sơ đồ khối của ADC trong STM32F401, các bạn có thể vào Reference Manual để xem full sơ đồ. Dưới đây là một số thông số về điện áp tham chiếu:


    Nguồn cấp xung Clock của ADC là bus APB2, với độ chia 2/4/6/8.


    Trên đây là những đặc điểm cơ bản của ADC và ngoại vi ADC trong STM32. Còn rất nhiều đặc điểm khác mà các bạn có thể đọc thêm trong RM và chờ các bài viết sau của mình 😁

    Chúc các bạn học tập tốt 😊

Xem Bài STM 17                  Xem Bài STM 19

Đăng nhận xét

0 Nhận xét