Professional Documents
Culture Documents
MỤC LỤC
Các bộ biến đổi tương tự - số, thường nói tới là A/D ( ADC ) có vai trò
ngày càng quan trọng trong việc trang bị máy đo trong những năm qua. Các bộ
chuyển đổi ADC thuộc trong những thiết bị được sử dụng rộng rãi nhất để thu
dữ liệu. Các máy tính số sử dụng các giá trị nhị phân, nhưng trong thế giới vật
lý thì mọi đại lượng ở dạng tương tự (liên tục).
Nhiệt độ, áp suất (khí hoặc chất lỏng), độ ẩm và vận tốc và một số ít
trong những đại lượng vật lý của thế giới thực mà ta gặp hàng ngày. Một đại
lượng vật lý được chuyển về dòng điện hoặc điện áp qua một thiết bị được gọi
là các bộ biến đổi. Các bộ biến đổi cũng có thể được coi như các bộ cảm biến.
Mặc dù chỉ có các bộ cảm biến nhiệt, tốc độ, áp suất, ánh sáng và nhiều đại
lượng tự nhiên khác nhưng chúng đều cho ra các tín hiệu dạng dòng điện hoặc
điện áp ở dạng liên tục.
Có khi chức năng quan trọng của máy đo cơ bản như là vôn mét số, bây
giờ ADC nằm trong nhiều ứng dụng phức tạp như ôxylô và bộ phân tích phổ.
Trong nhiều trường hợp đặc tính bên ngoài của dụng cụ bị hạn chế bởi chỉ tiêu
chất lượng bên trong bộ biến đổi A/D. Càng có sự quan trọng của ADC đối với
máy đo đã được thực hiện bởi công nghệ mạch tổ hợp ( IC) chỉ tiêu chất lượng
cao. Nó cho phép bộ biến đổi tốc độ cao và độ phân giải cao hơn được thiết kế,
sản xuất và bán với giá phù hợp. Công nghệ IC tiên tiến quan trọng ngang bằng
cho phép bộ vi xử lí số nhanh mà cần thiết trong việc cung cấp sự thay đổi giá
thấp từ dữ liệu gốc tạo ra bởi ADC đến kết quả máy đo.
Bài tiểu luận này trình bày ngắn gọn các bộ biến đổi tín hiệu tương tự
sang số. Và trên 1 họ AVR cụ thể tìm hiểu việc chuyển đổi ADC đó.
2
Kĩ thuật biến đổi tương tự – số ADC
Bộ lấy Bộ lượng Bộ mã
Tín hiệu mẫu tử hoá hoá Tín hiệu số
analog
Nguyên tắc:
• Lấy mẫu:
Đây là quá trình chuyển đổi tín hiệu analog thành dãy xung điều biên.
Chu kỳ của dãy xung lấy mẫu ( Tm) được xác định theo định lý lấy mẫu của
Nyquist:
Tm ≤ 1/ 2fmax
Trong đó fmax là tần số lớn nhất của analog.
3
Kĩ thuật biến đổi tương tự – số ADC
fm = 2fmax = 8kHz
• Lượng tử hóa :
Lượng tử hóa là làm tròn biên độ xung lấy mẫu tới mức lượng tử gần
nhất, tín hiệu ra mạch lấy mẫu được đưa đến mạch lượng tử hoá làm tròn với độ
Q
chính xác: ± . Có nghĩa là gán cho mỗi xung lấy mẫu một số nguyên phù
2
hợp. Mục đích của lượng tử hóa để mã hóa giá trị mỗi xung lấy mẫu thành một
từ mã có số lượng bit ít nhất.
Hình 2.1 minh họa lượng tử hóa đều. Lượng tử hóa đều là chia biên độ
các xung lấy mẫu thành các khoảng bằng nhau, mỗi khoảng là một bước lượng
tử đều, kí hiệu là ∆. Các đường song song với trục thời gian là các mức lượng
tử. Sau đó làm tròn biên độ xung lấy mẫu tới mức lượng tử gần nhất sẽ nhận
được xung lượng tử.
Nếu biên độ của tín hiệu analog biến thiên trong khoảng từ -a đến +a thì
số lượng mức lượng tử Q và ∆ có mối quan hệ sau:
2a/ Q = ∆
4
Kĩ thuật biến đổi tương tự – số ADC
trong đó : a là biên độ của tín hiệu analog. WLT(a) là xác suất phân bố giá trị tức
thời của biên độ xung lấy mẫu trong một bước lượng tử.
• Mã hóa:
Chức năng của mã hóa là chuyển đổi biên độ xung lượng tử thành một
từ mã gồm số bit nhất định.
Bộ mã hóa nén số hoạt động theo nguyên tắc so sánh giá trị biên độ
xung lượng tử chưa bị nén với các nguồn điện áp mẫu để xác định giá trị các
bit.
(do đó, trong mã nhị phân là từ 011 đến 100). Nếu bit già (bit có trọng số cao
nhất) do thời gian “trễ” sẽ giảm đi mà thay đổi trạng thái của mình sớm hơn các
bít khác thì sẽ xuất hiện số 111, tức là “số 7”. Bởi vì các kết quả biến đổi A/D,
như đã biết, được ghi vào bộ nhớ, như vậy là tồn tại một xác xuất nhất định để
nhận được một trị số hoàn toàn sai.
Có thể hạn chế vấn đề này bằng cách, dùng một “bộ nhớ - trích mẫu” để
ngăn sự biến động điện áp vào trong thời gian đo. Tuy nhiên, phương pháp này
đã hạn chế tần số cho phép của điện áp vào, bởi vì cần phải có thời gian xác lập
cho mạch nhớ - trích mẫu ( mất thời gian). Ngoài ra không thể loại bỏ hoàn
toàn xác xuất thay đổi trạng thái ra của các bộ so sánh, bởi vì các mạch nhớ -
trích mẫu hoạt động nhanh chỉ có thể hạn chế được phần nào sự biến động điện
áp.
ULSB
U
chuẩn
1/2R
X7
+ K7
- D Q
Ue R
C
+ K6 X6
- D Q
C
R + X5
- K5
D Q Z2
C
+
R - K4 X4
Z1
D Q
C
Z0
R + X3 Bộ mã
- K3
D Q
C
hoá
+ ưu
R - K2
X2
D Q tiên
+ C
- X1
R K1
D Q
C
1/2R
6
Kĩ thuật biến đổi tương tự – số ADC
Hình 3: Bộ biến đổi A/D làm việc theo phương pháp song song
Nhược điểm này có thể được khắc phục bằng cách sau mỗi bộ so sánh, ta
dùng một “trigơ D “ với tư cách là một bộ nhớ đệm để nhớ các giá trị analog.
Trigơ này, dưới tác dụng của tín hiệu nhịp sẽ khởi động cho các trigơ tiếp sau;
trạng thái của trigơ có thể thay đổi khi tác động Xung lên các đầu vào, ở trường
hợp này đảm bảo giữ nguyên trạng thái dừng trên lối ra của bộ mã hóa ưu tiên
do đặc điểm trigơ có thể dùng để lưu trữ thông tin duới dạng nhị phân.
Bảng 1: Sự biến đổi trạng thái trong bộ biến đổi A/D song song
tuỳ thuộc vào điện áp lối vào.
Số thập
Điện áp phân
Trạng thái của các bộ so sánh Số nhị phân
vào tương
ứng
Ue/ULSB K7 K6 K5 K4 K3 K2 K1 Z2 Z1 Z0
0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 1 0 0 1 1
2 0 0 0 0 0 1 1 0 1 0 2
3 0 0 0 0 1 1 1 0 1 1 3
4 0 0 0 1 1 1 1 1 0 0 4
5 0 0 1 1 1 1 1 1 0 1 5
6 0 1 1 1 1 1 1 1 1 0 6
7 1 1 1 1 1 1 1 1 1 1 7
Thời gian lấy mẫu cần phải nhỏ hơn thời gian trễ của bộ so sánh, còn
điểm bắt đầu của nó được xác định bởi xung khởi động. Sự khác nhau về thời
gian trễ đã gây ra độ bất định thời gian (khe) của mẫu. Để giảm nhỏ trị số của
nó đến mức đã tính toán trong mục trước, tốt nhất là sử dụng các bộ so sánh có
7
Kĩ thuật biến đổi tương tự – số ADC
khả năng giảm nhỏ thời gian trễ. Nhờ các tầng làm việc song song nên phương
pháp biến đổi A/D vừa mô tả là nhanh nhất.
Bộ Bộ
biến biến
Bộ
đổi - + đổi
Bộ nhớ biến
A/D + A/D
trích mẫu đổi
song song
D/A
song song
4 bit
4 bit 4 bit
8
U U 1/16U
chuẩn chuẩn chuẩn
Z7Z6Z5Z4 Z3 Z2 Z1 Z0
Kĩ thuật biến đổi tương tự – số ADC
Hình 4: Bộ biến đổi A/D thực hiện theo phương pháp song song cải biến.
2.3. Bộ biến đổi ADC xấp xỉ liên tiếp (Successive Approximation ADC).
Bộ biến đổi ADC xấp xỉ liên tục chỉ biến đổi và so sánh “n” nhịp lối vào
ADC. Do vậy, thời gian biến đổi là cố định không phụ thuộc vào độ lớn của tín
hiệu cần biến đổi. Sơ đồ khối mô tả cấu trúc ADC xấp xỉ liên tiếp được trình
bày trên hinh 5a.
2.3.1. Sơ đồ khối cấu tạo.
Phương pháp chuyển đổi xấp xỉ liên tiếp là phương pháp phổ biến cho
các kiểu ADC do tính năng tốc độ, độ chính xác và tính dễ thiết kế của nó. Nó
hoạt động nhờ việc so sánh điện thế được sinh ra với điện thế nối vào. Một
mạch dãy và một mạch chuyển đổi số-tương tự ADC, một đồng hồ xung nhịp
và một thanh ghi xấp xỉ liên tiếp SAR .
Hình 11. Sơ đồ khối phương pháp chuyển đổi xấp xỉ liên tiếp
9
Kĩ thuật biến đổi tương tự – số ADC
kiểm tra xem nếu Vin lớn hơn giải điện áp VRanger .Qúa trình này sẽ lặp lại cho
đến khi điện thế vào xấp xỉ đủ chính xác .
Tốc độ biến đổi nhanh có thể thực hiện được đối với ADC xấp xỉ liên
tiếp. Kỹ thuật biến đổi này rất phổ biến và được dùng trong rất nhiều trong bộ
biến đổi 8 tới 16 bit. Nhân tố cơ bản hạn chế tốc độ ADC này là thời gian được
yêu cầu cho đầu ra bộ biến đổi D/A để ổn định giữa phân số một LSB của V FS
và thời gian được yêu cầu cho bộ so sánh để tương ứng với tín hiệu vào mà có
thể khác nhau bởi một lượng rất nhỏ.
Phần tử nhớ K
Ue trích mẫu + Phần tử điều Bộ
- Bộ so sánh khiển tạo
nhịp
U(z)
Bộ Z
biến Bộ nhớ
đổi
D/A
Z7Z6Z5Z4Z3Z2Z1Z0
U chuẩn
Hình 6: Bộ biến đổi A/D làm việc theo phương pháp trọng số
Ue
Z=
U LSB
Trước khi bắt đầu đo thì phần tử điều khiển (thí dụ như máy vi tính) ghi
vào bộ nhớ các giá trị 0 (xoá hết thông tin trong bộ nhớ). Ngay sau đó xác lập
giá trị “1” cho bit già, ở đây Z7 =1. Nhờ đó, điện áp trên lối ra bộ biến đổi D/A
bằng:
U(Z) = 27 ULSB
10
Kĩ thuật biến đổi tương tự – số ADC
Giá trị này chính là một nửa dải có thể của tín hiệu tạo ra. Nếu điện áp
vào Ue có Z7 = 1 thì lớn hơn trị số này. Nếu nhỏ hơn thì Z7=0. Do đó phần tử
điều khiển cần phải chuyển Z7 ngược về trạng thái 0.
Nếu trong thời gian biến đổi mà điện áp bị biến đổi đi thì cần phải có một
phần tử nhớ - trích mẫu để nhớ trung gian các giá trị của hàm, nhằm đảm bảo
để tất cả các bit được biến đổi ra từ cùng một giá trị điện áp vào như nhau.
11
Kĩ thuật biến đổi tương tự – số ADC
sau khi giảm đi sai số lượng tử bằng 1/2ULSB thí chính là tổng các sai số phi
tuyến.
12
Kĩ thuật biến đổi tương tự – số ADC
Trạng thái cân bằng có thể tạo ra sai số lơn tại đầu ra của ADC, mặc dù
chúng ít khi xảy ra. Sai số lớn này là kết quả của mạch logic bị điều khiển bởi
bộ so sánh lặp lại mức xấu một cách khác nhau. Mạch logic này thường là một
phần của bộ mã hoá, đôi khi sai số tới nửa mức lớn nhất. Trạng thái cần bằng
có vẻ xảy ra nhiều hơn đối với bộ chuyển đổi làm việc tại tần số rất cao, nơi mà
có ít thời gian cho sự tái tạo trạng thái.
IV. Tìm hiểu việc chuyển đổi ADC trên chip họ AVR
Trong các ứng dụng đo lường và điều khiển bằng vi điều khiển, bộ
chuyển đổi tương tự-số (ADC) là một thành phần rất quan trọng. Dữ liệu trong
thế giới của chúng ta là các dữ liệu tương tự (analog). Ví dụ nhiệt độ không khí
buổi sáng là 25oC và buổi trưa là 32oC, giữa hai mức giá trị này có vô số các
giá trị liên tục mà nhiệt độ phải “đi qua” để có thể đạt mức 32oC từ 25oC, đại
lượng nhiệt độ như thế gọi là một đại lượng analog. Trong khi đó, rõ ràng vi
điều khiển là một thiết bị số (digital), các giá trị mà một vi điều khiển có thể
thao tác là các con số rời rạc vì thực chất chúng được tạo thành từ sự kết hợp
của hai mức 0 và 1. Ví dụ chúng ta muốn dùng một thanh ghi 8 bit trong vi điều
khiển để lưu lại các giá trị nhiệt độ từ 0oC đến 255 oC. Nói cách khác, chúng ta
đã “số hóa” (digitalize) một dữ liệu analog thành một dữ liệu digital. Quá trình
“số hóa” này thường được thực hiện bởi một thiết bị gọi là “bộ chuyển đổi
tương tự - số hay đơn giản là ADC (Analog to Digital Converter).
Có rất nhiều phương pháp chuyển đổi ADC, em không có ý định giải
thích cụ thể các nguyên lý chuyển đổi này trong bài học về AVR. Phương pháp
chuyển đổi mà em nói là phương pháp chuyển đổi trực tiếp (direct converting)
hoặc flash ADC. Các bộ chuyển đổi ADC theo phương pháp này được cấu
thành từ một dãy các bộ so sánh (như opamp), các bộ so sánh được mắc song
song và được kết nối trực tiếp với tín hiệu analog cần chuyển đổi. Một điện áp
tham chiếu (reference) và một mạch chia áp được sử dụng để tạo ra các mức
điện áp so sánh khác nhau cho mỗi bộ so sánh. Hình 8 mô tả một bộ chuyển đổi
flash ADC có 4 bộ so sánh, Vin là tín hiệu analog cần chuyển đổi và giá trị sau
chuyển đổi là các con số tạo thành từ sự kết hợp các mức nhị phân trên các
chân Vo.
Trong hình 8, bạn thấy rằng do anh hưởng của mạch chia áp (các điện trở
mắc nối tiếp từ điện áp +15V đến ground), điện áp trên chân âm (chân -) của
13
Kĩ thuật biến đổi tương tự – số ADC
các bộ so sánh sẽ khác nhau. Trong lúc chuyển đổi, giả sử điện áp Vin lớn hơn
điện áp “V-“ của bộ so sánh 1 (opamp ở phía thấp nhất trong mạch) nhưng lại
nhỏ hơn điện áp V- của các bộ so sánh khác, khi đó ngõ Vo1 ở mức 1 và các
ngõ Vo khác ở mức 0, chúng ta thu được một kết quả số. Một cách tương tự,
nếu tăng điện áp Vin ta thu được các tổ hợp số khác nhau. Với mạch điện có 4
bộ so sánh như trong hình 8, sẽ có tất cả 5 trường hợp có thể xảy ra, hay nói
theo cách khác điện áp analog Vin được chia thành 5 mức số khác nhau. Tuy
nhiên, bạn chú ý là các ngõ Vo không phải là các bit của tín hiệu số ngõ ra,
chúng chỉ là đại diện để tổ hợp thành tín hiệu số ngõ ra, dễ hiểu hơn chúng ta
không sử dụng được các bit Vo trực tiếp mà cần một bộ giải mã (decoder).
Trong bảng 2 tôi trình bày kết quả sau khi giải mã ứng với các tổ hợp của các
ngõ Vo.
14
Kĩ thuật biến đổi tương tự – số ADC
Khái niệm độ phân giải được dùng để chỉ số bit cần thiết để chứa hết các
mức giá trị digital ngõ ra. Trong trường hợp có 8 mức giá trị ngõ ra, chúng ta
cần 3 bit nhị phân để mã hóa hết các giá trị này, vì thế mạch chuyển đổi ADC
với 7 bộ so sánh sẽ có độ phân giải là 3 bit. Một cách tổng quát, nếu một mạch
chuyển đổi ADC có độ phân giải n bit thì sẽ có 2n mức giá trị có thể có ở ngõ ra
digital. Để tạo ra một mạch chuyển đổi flash ADC có độ phân giải n bit, chúng
ta cần đến 2n-1 bộ so sánh, giá trị này rất lớn khi thiết kế bộ chuyển đổi ADC có
độ phân giải cao, vì thế các bộ chuyển đổi flash ADC thường có độ phân giải ít
hơn 8 bit. Độ phân giải liên quan mật thiết đến chất lượng chuyển đổi ADC,
việc lựa chọn độ phân giải phải phù hợp với độ chính xác yêu cầu và khả năng
xử lý của bô điều khiển. Trong hình 9 mô tả một ví dụ “số hóa” một hàm sin
analog thành dạng digital.
Điện áp tham chiếu (reference voltage): Cùng một bộ chuyển đổi ADC
nhưng có người muốn dùng cho các mức điện áp khác nhau (ví dụ người A
muốn chuyển đổi điện áp trong khoảng 0-1V trong khi người B muốn dùng cho
điện áp từ 0V đến 5V. Rõ ràng nếu hai người này dùng 2 bộ chuyển đổi ADC
đều có khả năng chuyển đổi đến điện áp 5V thì người A đang “phí phạm” tính
chính xác của thiết bị). Vấn đề sẽ được giải quyết bằng một đại lượng gọi là
điện áp tham chiếu - Vref (reference voltage). Điện áp tham chiếu thường là giá
trị điện áp lớn nhất mà bộ ADC có thể chuyển đổi. Trong các bộ ADC, Vref
thường là thông số được đặt bởi người dùng, nó là điện áp lớn nhất mà thiết bị
có thể chuyển đổi. Ví dụ, một bộ ADC 10 bit (độ phân giải) có Vref=3V, nếu
điện áp ở ngõ vào là 1V thì giá trị số thu được sau khi chuyển đổi sẽ là:
1023x(1/3)=314. Trong đó 1023 là giá trị lớn nhất mà một bộ ADC 10 bit có
thể tạo ra (1023=210-1). Vì điện áp tham chiếu ảnh hưởng đến độ chính xác của
quá trình chuyển đổi, chúng ta cần tính toán để chọn 1 điện áp tham chiếu phù
hợp, không được nhỏ hơn giá trị lớn nhất của input nhưng cũng đừng quá lớn.
Chip AVR ATmega32 của Atmel có tích hợp sẵn các bộ chuyển đổi
ADC với độ phân giải 10 bit. Có tất cả 8 kênh đơn (các chân ADC0 đến
ADC7), 16 tổ hợp chuyển đổi dạng so sánh, trong đó có 2 kênh so sánh có thể
khuyếch đại.
17
Kĩ thuật biến đổi tương tự – số ADC
ADC có nhiệm vụ chuyển đổi tín hiệu điện áp tương tự thành tín hiệu số
có độ phân giải 10 bit.Với giá trị nhỏ nhất của điện áp đặt ở chân GND và giá
trị cực đại của điện áp tương tự được mắc vào chân AREF or AVCC. Tám kênh
tương tự đầu vào được chọn lựa thông qua ADMUX và ADMUX này được
điều khiển bởi thanh ghi ADMUX.
Điện áp tham chiếu cho ADC trên AVR có thể được tạo bởi 3 nguồn:
dùng điện áp tham chiếu nội 2.56V (cố định), dùng điện áp AVCC hoặc điện áp
ngoài đặt trên chân VREF. Một lần nữa, bạn cần chú ý đến noise khi đặt điện
áp tham chiếu, nếu dùng điện áp ngoài đặt trên chân VREF thì điện áp này phải
được lọc thật tốt, nếu dùng điện áp tham chiếu nội 2.56V hoặc AVCC thì chân
VREF cần được nối với một tụ điện.
Các chân trên PORTA của chip ATmega32 được dùng cho bộ ADC,
chân PA0 tương ứng kênh ADC0 và chân PA7 tương ứng với kênh ADC7.
ADC này có thể hoạt động được ở hai chế độ. Đó là chuyển đổi đơn: chỉ
chuyển đổi một lần khi có lệnh chuyển đổi và chế độ tự chuyển đổi (Free
running mode) đây là chế độ mà ADC tự động chuyển đổi khi được hoạt động
và công việc chuyển đổi có tính tuần hoàn (chỉ cần khởi động một lần).
ADC được phép hoạt động nhờ thiết lập bit ADEN. Quá trình chuyển đổi
được bắt đầu bằng việc ghi vào bit ADSC mức logic 1 và trong suốt quá trình
chuyển đổi bit này luôn được giữ ở mức cao. Khi quá trình chuyển đổi hoàn
thành thì bit này được xóa bằng phần cứng và cờ ADIF được bật lên.
Dữ liệu sau khi chuyển đổi được đưa ra thanh ghi dữ liệu ADCL và
ADCH, nhưng chú ý khi đọc dữ liệu từ hai thanh ghi này thì đọc ADCL trước
rồi mới đọc ADCH. Nếu đọc ADCH trước thì dữ liệu cập nhật có thể ghi đè lên
ADCL (Vi điều khiển nghĩ rằng đã đọc xong dữ liệu).
Để điều khiển vào ra dữ liệu với ADC, các bước thực hiện như sau:
Bước 1: Định nghĩa các cổng vào cho tín hiệu tương tự.Xóa bit tương
ứng với chân đó trong thanh ghi DDRA. Sau đó loại bỏ điện trở treo bằng cách
xóa bit tương ứng ở thanh ghi PORTA.
Bước 2: Chọn kênh tương tự vào (chọn chân vào cho ADC) thông qua
thanh ghi ADMUX (có thể thay đổi trong quá trình hoạt động).
Bước 3: Thiết lập các thông số cho ADC
Tốc độ chuyển đổi thông qua xung nhip chuyển đổi.
Chế độ chuyển đổi : đơn hoặc tự động.
Sử dụng ngắt hoặc không.
Bước 4: Bắt đầu chuyển đổi và đọc dữ liệu.
19
Kĩ thuật biến đổi tương tự – số ADC
Có 4 thanh ghi trong bộ ADC trên AVR trong đó có 2 thanh ghi data
chứa dữ liệu sau khi chuyển đổi, 2 thanh ghi điều khiển và chứa trạng thái của
ADC.
• Bit 7:6- REFS1:0 (Reference Selection Bits): là các bit chọn điện áp
tham chiếu cho ADC, 1 trong 3 nguồn điện áp tham chiếu có thể được chọn là:
điện áp ngoài từ chân VREF, điện áp tham chiếu nội 2.56V hoặc điện áp
AVCC. Bảng 3 tóm tắt giá trị các bit và điện áp tham chiếu tương ứng.
• Bit 5-ADLAR (ADC Left Adjust Result): là bit cho phép hiệu chỉnh trái
kết quả chuyển đổi. Sở dĩ có bit này là vì ADC trên AVR có độ phân giải 10
bit, nghĩa là kết quả thu được sau chuyển đổi là 1 số có độ dài 10 bit (tối đa
1023), AVR bố trí 2 thanh ghi data 8 bit để chứa giá trị sau chuyển đổi. Như thế
giá trị chuyển đổi sẽ không lắp đầy 2 thanh ghi data, trong một số trường hợp
người dùng muốn 10 bit kết quả nằm lệch về phía trái trong khi cũng có trường
hợp người dùng muốn kết quả nằm về phía phải. Bit ADLAR sẽ quyết định vị
trí của 10 bit kết quả trong 16 bit của 2 thanh ghi data. Nếu ADLAR=0 kết quả
sẽ được hiệu chỉnh về phía phải (thanh ghi ADCL chứa trọn 8 bit thấp và thanh
ghi ADCH chứa 2 bit cao trong 10 bit kết quả), và nếu ADLAR=1 thì kết quả
được hiệu chỉnh trái (thanh ghi ADCH chứa trọn 8 bit cao nhất, các bit từ 9 đến
2, và thanh ADCL chứa 2 bit thấp nhất trong 10 bit kết quả.
20
Kĩ thuật biến đổi tương tự – số ADC
• Bits 4:0-MUX4:0 (Analog Channel and Gain Selection Bits): là 5 bit cho
phép chọn kênh, chế độ và cả hệ số khuyếch đại cho ADC. Do bộ ADC trên
AVR có nhiều kênh và cho phép thực hiện chuyển đổi ADC kiểu so sánh (so
sánh điện áp giữa 2 chân analog) nên trước khi thực hiện chuyển đổi, chúng ta
cần set các bit MUX để chọn kênh và chế độ cần sử dụng. Bảng 4 tóm tắt các
chế độ hoạt động của ADC thông qua các giá trị của các bit MUX. Trong bảng
này, ứng với các giá trị từ 00000 đến 00111 (nhị phân), các kênh ADC được
chọn ở chế độ đơn kênh (tín hiệu input lấy trực tiếp từ các chân analog và so
sánh với 0V), giá trị từ 01000 đến 11101 tương ứng với chế độ chuyển đổi so
sánh.
21
Kĩ thuật biến đổi tương tự – số ADC
Từng bit của thanh ghi ADCSRA được mô tả như bên dưới:
• Bit 7 - ADEN(ADC Enable): viết giá trị 1 vào bit này tức bạn đã cho
phép module ADC được sử dụng. Tuy nhiên khi ADEN=1 không có nghĩa là
ADC đã hoạt động ngay, bạn cần set một bit khác lên 1 để bắt đầu quá trình
chuyển đổi, đó là bit ADSC.
• Bit 6 - ADSC(ADC Start Conversion): set bit này lên 1 là bắt đầu khởi
động quá trình chuyển đổi. Trong suốt quá trình chuyển đổi, bit ADSC sẽ được
giữ nguyên giá trị 1, khi quá trình chuyển đổi kết thúc (tự động), bit này sẽ
được trả về 0. Vì vậy bạn không cần và cũng không nên viết giá trị 0 vào bit
này ở bất kỳ tình huống nào. Để thực hiện một chuyển đổi, thông thường chúng
ta sẽ set bit ADEN=1 trước và sau đó set ADSC=1.
• Bit 4 – ADIF(ADC Interrupt Flag): cờ báo ngắt. Khi một chuyển đổi kết
thúc, bit này tự động được set lên 1, vì thế người dùng cần kiểm tra giá trị bit
này trước khi thực hiện đọc giá trị chuyển đổi để đảm bảo quá trình chuyển đổi
đã thực sự hoàn tất.
• Bit 3 – ADIE(ADC Interrupt Enable): bit cho phép ngắt, nếu bit này
được set bằng 1 và bit cho phép ngắt toàn cục (bit I trong thanh ghi trạng thái
của chip) được set, một ngắt sẽ xảy ra khi một quá trình chuyển đổi ADC kết
thúc và các giá trị chuyển đổi đã được cập nhật (các giá trị chuyển đổi chứa
trong 2 thanh ghi ADCL và ADCH).
• Bit 2:0 – ADPS2:0(ADC Prescaler Select Bits): các bit chọn hệ số chia
xung nhịp cho ADC. ADC, cũng như tất cả các module khác trên AVR, cần
được giữ nhịp bằng một nguồn xung clock. Xung nhịp này được lấy từ nguồn
xung chính của chip thông qua một hệ số chia. Các bit ADPS cho phép người
dùng chọn hệ số chia từ nguồn clock chính đến ADC. Tham khảo bảng 5 để
biết cách chọn hệ số chia.
22
Kĩ thuật biến đổi tương tự – số ADC
- ADCL và ADCH (ADC Data Register): 2 thanh ghi chứa giá trị của quá
trình chuyển đổi. Do module ADC trên AVR có độ phân giải tối đa 10 bit nên
cần 2 thanh ghi để chứa giá trị chuyển đổi. Tuy nhiên tổng số bít của 2 thanh
ghi 8 bit là 16, con số này nhiều hơn 10 bit của kết quả chuyển đổi, vì thế
chúng ta được phép chọn cách ghi 10 bit kết quả vào 2 thanh ghi này. Bit
ADLAR trong thanh ghi ADMUX quy định cách mà kết quả được ghi vào.
ADLAR=0:
ADLAR=1:
Thông thường, 2 thanh ghi data được sắp xếp theo định dạng ADLAR=0,
ADCL chứa 8 bit thấp và 2 bit thấp của ADCH chứa 2 bit cao nhất của giá trị
thu được. Chú ý thứ tự đọc giá trị từ 2 thanh ghi này, để tránh đọc sai kết quả,
bạn cần đọc thanh ghi ADCL trước và ADCH sau, vì sau khi ADCH được đọc,
các thanh ghi data có thể được cập nhật giá trị tiếp theo.
23
Kĩ thuật biến đổi tương tự – số ADC
2. Các ưu điểm
- Dễ dàng tạo ra một sơ đồ nguyên lý đơn giản từ các mạch điện đơn giản
đến các mạch có bộ lập trình vi xử lý .
- Dễ dàng chỉnh sửa các đặc tính của linh kiện trên sơ đồ nguyên lý :
chỉnh sửa số bước của động cơ bước, chỉnh sửa nguồn nuôi cho mạch ,thay đổi
tần số hoạt động cơ bản của vi xử lý…
- Công cụ hỗ trợ kiểm tra lổi thiết kế trên sơ đồ nguyên lý . Xem và lưu
lại phần báo lỗi .
- Chạy mô phỏng và phân tích các tính chất của mạch điện cơ bản. Công
cụ hỗ trợ cho việc chạy và mô phỏng rất mạnh và chính xác. Các công cụ và đồ
thị hỗ trợ mạnh cho việc phân tích tần số, sóng, âm thanh .. không nhưng thế
phần mềm còn có thêm các máy phân tích từ đơn giản như : đồng hồ đo Vôn,
Ampe, đến các máy đo dao động ,máy tạo sóng dao động …
- Ngoài ra Proteus còn cung cấp cho người sử dụng các công cụ mạnh mà
các phần mềm khác hầu như không có. Chẳng hạn thư viện LED với các loại
màu sắc khác nhau kể cả led 7 đoạn. Nhưng phần hiển thị mạnh nhất mà
Proteus cung cấp là LCD, nó có thể mô phỏng cho rất nhiều LCD từ đơn giản
đến phức tạp.
- Một điểm mạnh khác của Proteus là cung cấp cho người sử dụng công
cụ biên dịch cho các họ vi xử lý như MSC51, AVR, HC11 … qua đó tạo ra các
tập tin HEX dùng để nạp cho vi xử lý và tập tin DSI dùng để xem và chạy kiểm
tra từng bước trong chương trình mô phỏng.
24
Kĩ thuật biến đổi tương tự – số ADC
- Proteus có một thư viện khá lớn với hơn 6000 linh kiện các loại và càng
ngày càng được bổ sung. Ngoài ra còn có keypad (ma trận phím tạo đơn giản
cho người thiết kế khi cần thao tác trên các ma trận phím ).
25
Kĩ thuật biến đổi tương tự – số ADC
Khái niệm đơn kênh được hiểu là đại lượng cần chuyển đổi là các điện áp
đặt trực tiếp trên các chân analog của chip, giá trị điện áp này được so sánh với
0V của chip, hay nói một cách khác, điện áp cần chuyển đổi và chip AVR có
“mass chung”.
Chúng ta sẽ minh họa cách sử dụng ADC trên AVR ở chế độ đơn kênh
bằng ví dụ đọc và hiển thị giá trị ADC trên các LED 7 đoạn. Như minh họa
trong hình 11, chúng ta sẽ dùng 4 LED để hiển thị 4 chữ số của kết quả, do
chúng ta đều biết ADC trên AVR có độ phân giải 10 bit nên kết quả chuyển đổi
tối đa là 1023, 4 LED là đủ để hiển thị kết quả này. 4 chip 7447 được dùng để
điều khiển 4 LED, chúng ta cần 16 đường để xuất dữ liệu hiển thị lên 4 LED vì
thế PORTB và PORTC sẽ được dùng cho mục đích này. 4 bit cao của
PORTC(PC4:7) chứa chữ số hàng nghìn của kết quả, 4 bit thấp PC0:3 chứa chữ
số hàng trăm, 4 bit cao của PORTB(PB4:7) dùng xuất chữ số hàng chục và 4
bit PB0:3 dành cho chữ số hàng đơn vị.
Đại lượng cần chuyển đổi là điện áp trên chân ADC0 (kênh 0 của ADC,
chân 0 trong PORTA chip ATmega32), điện áp được tạo ra bằng một biến trở
RV1. Thay đổi giá trị biến trở, điện áp rơi trên ADC0 thay đổi và được cập nhật
trực tiếp trên các LED. Giá trị hiển thị trên LED không phải là giá trị điện áp
mà là giá trị tương đối sau khi chuyển đổi. Trong ví dụ này, tôi sẽ trình bày
dạng tổng quát, việc đọc ADC và hiển thị LED được viết trong các chương
trình con tương ứng.
26
Kĩ thuật biến đổi tương tự – số ADC
2. Mô phỏng ví dụ.
27
Kĩ thuật biến đổi tương tự – số ADC
Khi ta dùng biến trở RV1 thay đổi giá trị điện áp analog vào thì lập tức ta
thu được giá trị digital thay đổi tương ứng ( hình 12)
Vậy ví dụ trên thực hiện việc đọc ADC và hiển thị giá trị lên LED 7
thanh đã phần nào minh họa được quá trình chuyển đổi từ tín hiệu tương tự
sang tín hiệu số thông qua phân mềm mô phỏng Proteus, giúp chúng ta hiểu
hơn về việc biến đổi tương tự - số trong các chip AVR.
28