My tutorial

Từng phần từng phần sẽ được tìm hiểu và ghi chép....( PIC 16f877A)
1. Pic tutorial Eleven -  Analogue Inputs
( http://www.winpicprog.co.uk/pic_tutorial11.htm)
     Những thanh ghi liên quan tới bộ chuyển đổi A/D trong Pic
 
Địa chỉ
Tên
 Chức năng
0Bh,8Bh, 10Bh,18Bh
INTCON
Cho phép ngắt hoạt động và ngắt thiết bị ngoại vi
0Ch
PIR1
Chứa bit cờ ngắt ( bit 6)
8Ch
PIE1
Chữa bit cho phép ngắt (bit 6)
1Eh
ADRESH
Byte cao của kết quả của bộ chuyển đổi
9Eh
ADRESH
Byte thấp của kết quả của bộ chuyển đổi
1Fh
ADCON0
Thanh ghi điều khiển
9Fh
ADCON1
Thanh ghi điều khiển
85h
TRISA
Thanh ghi hướng dữ liệu
05h
PORTA
Chốt dữ liệu khi ghi, đọc
89h
TRISE
Thanh ghi hướng dữ liệu
09h
PORTE
Chốt dữ liệu khi ghi, đọc
   16f877A cung cấp 8 đầu vào tương tự, độ phân giải là 10 bit, trên thực tế chỉ thực hiện chuyển đổi một kênh trong một khoảng thời gian. Vì vậy cần phải chuyển đổi qua lại giữa các kênh ( chọn kênh chuyển đổi) được thực hiện thông qua các bit chọn kênh trong thanh ghi điều khiển. Việc chuyển đổi qua lại giữa 2 kênh kênh tương tự thường hay nhầm lẫn nhưng thực ra lại rất đơn giản. Vấn đề là bạn tìm câu trả lời cho câu hỏi đó như thế nào và nó nằm ở đâu trong datasheet? Sự nhầm lẫn chính xuất phát từ thực tế cài đặt chúng. Chúng ta cùng mổ sẻ vấn đề trong thanh ghi điều khiển A/D để lấy thông tin cần thiết cho việc cài đặt ADC
   Có 4 thanh ghi chính liên quan đến việc sử dụng đầu vào tượng tự:
4 thanh ghi chính 
ADRESH and ADRESL hai thanh ghi chứa kết quả của bộ chuyển đổi tương tự sang số ( địa chỉ của 2 thanh ghi trong bộ nhớ ở 2 banks khác nhau)

ADCON0 Details

ADCON0 được chia thành 4 phần, phần đầu gồm 2 bit ADCS1 and ADCS0 có nhiệm vụ đặt tần số cho bộ chuyển đổi ADC ( được chia từ clock của hệ thống hoặc sử dụng bộ dao động RC nội). Vì vậy khi chúng ta sử dụng tần số 20MHz clock thì chúng ta phải sử dụng Fosc/32 ( xem bảng dưới)
Chọn xung chuyển đổi ADC
     Phần thứ 2 của ADCON0 gồm 3 bit CHS2,CHS1 and CHS0, đây  là các bit chọn kênh chuyển đổi và đặt các chân này liên kết với bộ chuyển đổi ( 5 kênh cho 16F876 AN0-AN4 và 8 kênh cho 16f877 thêm AN5- AN7) Chú ý kí hiệu RA4 <> AN4. Để chọn đúng kênh thì cần cài đặt 3bit (CHS2:CHS0)theo thứ tự sao cho đúng :
Bảng chọn kênh
     Phần 3 gồm 1 bit đơn, bit GO/DONE bit này có 2 chức năng. Thứ nhất cài đặt (set) để cho phép bắt đầu quá trình chuyển đổi và chức năng thứ 2 là báo quá trình chuyển đổi kết thúc ( bít tự động xóa khi chuyển đổi kết thúc)
     Phần 4 gồm 1 bit đơn (bit 0) ADON cài đặt ON/FF dùng để cho phép hoặc không cho phép ADC hoạt động. Mặc định ADON=0 để tiết kiệm năng lượng.
    Do đó muốn đọc tín hiệu từ AN0 cần cài đặt ADCON0 là '10000001'. Đọc từ AN1 thì ADCON0 được cấu hình '10001001'. Bit 1 không được sử dụng ( cũng có thể cho nó là '0' hoặc '1' ). Để bắt đầu quá trình chuyển đổi chúng ta cần đặt bit2 lên mức cao. Sau đó liên tục kiểm tra bit này để xác định bộ chuyển đổi xong hay chưa ( được xóa chưa)


Cấu hình ADCON0 để chọn AN0 hoặc AN1

   

ADCON1 Details

Việc cài đặt ADCO1 thì ít phức tạp hơn. Nó chỉ chia thành 2 phần. Phần thứ nhất là một bít đơn ADFM chức năng Result Format Selection Bit. Canh Phải nếu đặt bit, canh trái nếu xóa bit. Ưu điểm là thay vì lấy 10 bit chuyển đổi thì ta chỉ lấy ra 8 bit của chuyển đổi dẽ dàng. bằng cách xóa bit này,  chỉ đọc ADRESH, chúng ta nhận được một kết quả bit 8,bỏ qua hai bit it quan trọng trong ADRESL.


     PCFG3-0 có lẽ là phần phức tạp nhất của cài đặt ADC chúng cho nhiều sự lựa chọn khác nhau.

Chọn giá trị thích hợp cho PCFG3-0
     Như đã đề cập ở trên phần này khá phức tạp nhưng nếu ta xác định ngay ban đầu cần phải làm gì thì bước này không có gì khó khăn cả. Có 4 lựa chọn cần thiết lập ở đây là:       
  1. Setting a pin to be an analogue input. ( Chân nào cần xác định là kênh tương tự)
  2. Setting a pin to be a digital input.        (Chân nào cần xác định là kênh tương số)
  3. Setting the positive reference for the converter (Vref+). - điện áp tham chiếu dương 
  4. Setting the negative reference for the converter (Vref-)  - điện áp tham chiếu âm
    Để bắt đầu chúng ta cần xác định yêu cầu thực tế ban đầu. Đầu tiên chúng ta chỉ sử dụng kênh đầu vào tương tự AN0 và AN1.  Từ bảng chọn trên ta dễ dàng thấy có thể loại bỏ 4 khả năng (0110, 0111, 1110 and 1111, thể hiện bằng màu xanh lam) Nếu chọn VRef of Vss (GND) cũng có 4 khả năng (1000, 1011, 1100 and 1101, shaded in yellow). Như vậy còn lại chúng ta còn 8 sự lựa chọn ( giảm xuống còn 50%. Tiếp theo nếu sử dụng tham chiếu ngoài VRef+ chúng ta cần RA3 kết nối với VRef+ . Nếu lựa chọn tham chiếu ngoài thì chỉ còn 4 sự lựa chọn khác nữa (0000, 0010, 0100 and 1001, shaded in green). Lựa chọn một trong bốn giá trị đó đều được. Nếu yêu cầu chỉ có 2 đầu vào tương tự thì chỉ có giá trị '0101' thỏa mãn
     Do đó cần cài đặt cho ADCON1 giá trị '10000101'. Thỏa mãn chỉ có 2 đầu vào tương tự và Vref+ set to RA3, and Vref- set to Vss.
Cấu hình ADCON1
   Bây giờ chúng ta sẽ chi tiết hơn về cài đặt ADC giải thích hơn về thời gian chuyển đổi của bộ ADC. Giả sử ADC có độ phân giải là 10 bit nghĩa là đầu ra ADC có thể nhận giá trị từ 0 tới 1023. Các con số không có nghĩa nếu ta không diễn tả dược nó ( Xác định mối tương quan của nó với Vref+ và Vref-). Khi đầu ra của ADC là 1023 ( biên trên) tương ứng Vref+ và khi đầu ra của ADC là 0 ( biên dưới) tương ứng vói Vref-. Cùng với tham chiếu ở TL241(điện áp đặt và RA3) trên RA3, 1023 tương ứng 2.5V và Vref- tương ứng Vss thì giá trị ADC tương ứng là 0. 
    Tóm lại 1023 tương ứng với 2.5V và 0 tương ứng với 0V. Xác định được giá trị đầu ra bộ chuyển đổi ta sẽ dễ dàng xác định được giá trị điện áp đầu vào. Để xác định được ta cần tính toán một chút: Chia 2.5V cho 1023 ta được  0.00244(độ phân giải điện áp tại đầu ta của ADC vì vậy 1 tương ứng 2.44mV, đầu ra ADC là 2 tương ứng 4.88mV. Số 0.00244 là số làm tròn, thực tế là  0.00244379276637341153470185728250244. Nếu nhân 0.0024mV với 1023 thi giá trị nhận được là 2.49612V không phải 2.5V sai số vào là 0.388% như thế là không chấp nhận được. Tất nhiên chúng ta muốn đọc được giá trị từ 0 đến giá trị MAX cùng với sự hạn chế trên.
    Vấn đề có thể khắc phục được bằng xây dựng phần cứng.  Các bộ khuếch đại đầu vào làm suy hao ...The amplifiers on the inputs have attenuators feeding them, this gives the overall amplifier an adjustable gain of around minus 4, so 10V (or so) input will give 1000 output from the A2D...Chính vì vậy bằng việc điều chỉnh lại 'độ lợi' của khuếch đại đầu vào chúng ta có thể sử dụng một giải điện áp đầu vào 0-10.23V cho phép chúng ta đọc đầu ra của bộ chuyển đổi ADC tương ứng với 0 - 1023 => độ phân giải là 10mV sự chính xác của phép đo lên tới 0.1%. Nếu cho phép đo chính xác 0.1% thì sai số ban đầu  là không đạt yêu cầu. Hệ thống là không chính xác, cũng không phải do đồng hồ đo=> ta có thể sử dụng sai số đó để hiệu chỉnh sao cho chính xác hơn. Ưu điểm khác của phương pháp này là nó hiệu chỉnh điện áp tham chiếu là tốt. Có lẽ nó không chính xác với 2.5V. Bằng việc hiệu chỉnh các thông số đầu vào đã biết trước ta sẽ có được giá trị điện áp chính xác hơn.

The end.


2. 8-bit A/D Converter

  1. Giới thiệu
  2. Thanh ghi điều khiển
  3. Hoạt động
  4. Yêu cầu Nhận tín hiệu A/D
  5. Chọn tần số chuyển đổi
  6. Cấu hình chân cổng tương tự
  7. Chuyển đổi A/D
  8. Hoạt động trong chế độ SLEEP
  9. A/D chính xác/lỗi
  10. Hiệu ứng của RESET
  11. Sử dụng Trigger CCP
  12. Cân nhắc về kết nối
  13. Hàm truyền
  14. Khởi tạo
  15. Ứng dụng liên quan

1. Giới thiệu
     Module chuyển đổi gồm có 8 đầu vào tương tự. Độ phân giải của A/D trong trường hợp này là 8 bit. Điện áp tham chiếu có thể là VDD hoặc mức điện áp ở trên chân Vref. Bộ chuyển đổi A/D có một đặc tính là có thể hoạt động trong chế độ SLEEP. Module A/D có 3 thanh ghi đó là:

• A/D Result Register (ADRES)
        • A/D Control Register0 (ADCON0)
        • A/D Control Register1 (ADCON1)
    Thanh ghi ADCON0 điều khiển hoạt động của của module. Thanh ghi ADCON1 cấu hình chức năng của chân cổng. Chân I/O có thể được cấu hình là chân vào tương tự ( có thể là điện áp tham chiếu ) hoặc chân vào ra số.
 Sơ đồ khối của module A/D:
Sơ đồ khối A/D

2. Thanh ghi điều khiển



     
 3. Hoạt động 
     Khi chuyển đổi hoàn thành kết quả sẽ được lưu vào thanh ghi ADRES GO/DONE bit (ADCON0<2>) is cleared và cờ ngắt A/D, ADIF được đặt.
     Sau khi cấu hình xong cho module A/D ta phải chọn kênh cần chuyển đổi trước khi bắt đầu một sự chuyển đổi mới. Kênh tương tự nào thì tương ứng với việc đặt bit tương ứng trong thanh ghi TRIS để nó là kênh đầu vào tương tự. Phải xác định được thời gian thu nhận tín hiệu, sau thời gian thu nhận tín hiệu thì một quá trình chuyển đổi được phép bắt đầu. Sau đây là tường bước làm việc với bộ chuyển đổi.
1. Configure the A/D module:
• Configure analog pins / voltage reference / and digital I/O (ADCON1)
• Select A/D input channel (ADCON0)
• Select A/D conversion clock (ADCON0)
• Turn on A/D module (ADCON0)
2. Configure A/D interrupt (if desired):
• Clear the ADIF bit 
• Set the ADIE bit 
• Set the GIE bit 
3. Wait the required acquisition time.// đợi thời gian thu nhận tín hiệu hoàn tất
4. Start conversion:
• Set the GO/DONE bit (ADCON0)
5. Wait for A/D conversion to complete, by either:
• Polling for the GO/DONE bit to be cleared
OR
• Waiting for the A/D interrupt
6. Read A/D Result register (ADRES), clear the ADIF bit, if required.
7. For next conversion, go to step 1 or step 2 as required. The A/D conversion time per bit is
defined as TAD. A minimum wait of 2TAD is required before next acquisition starts.


   Thời gian thu nhận tín hiệu là thời gian mà Tụ giữ của A/D kết nối với điện áp bên ngoài sau đó là thời gian chuyển đổi 10 Tad được bắt đầu khi bit GO/DONE được đặt ta gọi quá trình trên là quá trình lấy mẫu tương ứng với thời gian lấy mẫu. Thời gian trên là giá trị min và chắc chắn rằng Tụ dữ được nạp đến giá trị sao cho quá trình chuyển đổi là chính xác nhất
4.Yêu cầu Nhận tín hiệu A/D
    Để cho bộ chuyển đổi A/D đạt được đến giá trị chính xác quá trình nạp tụ (CHOLD) phải đủ ( tụ đầy) đúng bằng điện áp đầu vào. Để tính toán thời gian Thu nhận nhỏ nhất có thể sử dụng công thức Equation 21-1 


5. Chọn tần số chuyển đổi
     Thời gian chuyển đổi trên 1 bit là Tad. Bộ chuyển đổi yêu cầu 9.5Tad cho 8 bit. Nguồn clock của bộ chuyển đổi được chọn bằng phần mềm. Có 4 khả năng cho Tad đó là:
                    •2TOSC
                    •8TOSC
                    • 32TOSC 
                    • Internal RC oscillator
Để chuyển đổi đúng thì phải chắc chắn rằng tần số chuyển đổi phải được chọn để đảm bảo thời gian tối thiểu Tad=1.6uS cho tất cả các thiết bị.......
6. Cấu hình chân tương tự
     ADCON1 và tương ứng bên thanh ghi TRIS điều khiển chân cổng hoạt động của A/D. Chân được xác định là đầu vào tương tự thì bit tương ứng phải được đặt trong thanh ghi TRIS. Nếu bit trong TRIS bị xóa thì mức đầu ra số (VOH or VOL)  sẽ được chuyển đổi. Hoạt động của các bit CHS2:CHS0 bits của bộ A/D  độc lập bits của TRIS.
  7.Chuyển đổi A/D
      Example 21-2 hướng dẫn cách thực hiện một sự chuyển đổi. Chân I/O được cấu hình như đầu vào tương tự. Điện áp tham chiếu Vref  là Vdd cho phép ngắt A/D và tần số chuyển đổi là Frc. Chuyển đổi được thực hiện trên chân AN0.
Note: The GO/DONE bit should NOT be set in the same instruction that turns on the A/D,
due to the required acquition time requirement.
     Nếu bit GO/DONE =0; thì quá trình chuyển đổi không sảy ra.Thanh ghi ADRES sẽ không được cập nhật kể cả khi lấy mẫu hoàn tất. Tuy vậy nó vẫn giữ giá trị chuyển đổi trước. Sau khi sự chuyển đổi được bỏ qua thì ta phải đợi  2TAD thì mới tiếp tục quá trình chuyển đổi  ADC. Sau 2Tad thì một sự thu nhận được bắt đầu khi kênh được lựa chọn.

   7.1 Chuyển đổi nhanh - độ phân giải thấp
          Không phải tất cả các ứng dụng đều yêu cầu độ phân giải của bộ chuyển đổi là 8bit nhưng vì yêu cầu thời gian chuyển đổi nhanh nên A / D module cho phép người dùng thực hiện những đánh đổi giưa tốc độ chuyển đổi và phân giải. Bất kể độ phân giải là như thế nào thì thời gian thu giữ là như nhau. Để tăng tốc độ chuyển đổi thì tương ứng với nó là công tắc kết nối với tụ sẽ đóng nhanh hơn do đó dẫn tới thời gian Tad có thể không đáp ứng với nhu cầu ( tức là không đủ thời gian ). Khi mà thời gian Tad không đủ thì kết quả thu được từ bộ chuyển đổi là không được chấp nhận (see A/D Conversion Timing in the Electrical Specifications section).The clock sources may only be switched between the three oscillator versions (cannot be switched from/to RC). The equation to determine the time before the oscillator can be switched is as follows:
                             Conversion time = TAD + N • TAD + (10 - N)(2TOSC)
                             Where:   N = number of bits of resolution required.
Khi xác định được Tad từ thông số thạnh anh được chọn thì người sử dụng phải năm được vài phương pháp (timer, software loop...) để xác định khi nào dao động của bộ A/D được thay đổi.  Example 21-3 thể hiện sự so sánh thời gian để thực hiện chuyển đổi ad với độ phân giải 4 bit và độ phân giải 8 bit. Ví dụ cho thiết bị hoạt động ở tần số 20Mhz ( xung clock cho ad được lập trình là 32 Tosc) và giả thiết rằng sau 5Tad thì ngay lập tức chuyển xung clock sang 2Tosc
    Clock là 2Tosc như vậy đã vi phạm ( <Tadmin) như vậy từ bit thứ 4 trở đi sẽ không được chuyển đổi đúng



 8. Hoạt động của bộ A/D trong chế độ SLEEP
      Module A/D có thể hoạt động trong chế độ SLEEP với yêu cầu nguồn xung clock cấp cho bộ chuyển đổi là  RC (ADCS1:ADCS0 = 11). Khi xung clock cấp cho bộ chuyển đổi là RCđược chọn module sẽ đợi sau 1 chu kì lệnh trước khi bắt đầu thực hiện 1 sự chuyển đổi. Khi thực hiện xong công việc trên thì câu lệnh SLEEP mới được thực hiện. Khi chuyển đổi hoàn thành bit GO/DONE sẽ bị xóa và kết quả được tải vào thanh ghi ADRES. Nếu ngắt ad được cho phép thì sẽ đánh thức vdk. Nếu ngắt A/D không được thiết lập thì thì bộ chuyển đổi ad sẽ tắt để tiết kiệm năng lượng mặc dù bit ADON vẫn được thiết lập.
    Khi nguồn clock khác RC thì câu lệnh SLEEP sẽ là nguyên nhân của chuyển đổi đang thực hiện được bỏ qua và đồng thời tắt module A/D do đó ta cần thiết lập lại bit ADON nếu muốn tiếp tục một sự chuyển đổi mới
  Note: For the A/D module to operate in SLEEP, the A/D clock source must be set to RC (ADCS1:ADCS0 = 11). To perform an A/D conversion in SLEEP, the GO/DONE bi must be set, followed by the SLEEP instruction.

9. A/D chính xác/lỗi
      Trong hệ thống mà tần số thiết bị là thấp thì sử dụng nguồn clock rc là thích hợp ngược lại thì sử dụng bộ dao động có tần số cao. Tad nên được tham khảo qua datasheet để chọn cho phù hợp.
    Để xác định đúng cho bộ chuyển đổi AD bao gồm tổng tất cả các lỗi bao gồm lỗi lượng tử, lỗi tổ hợp, lỗi vi phân, lỗi thang, lỗi lệch...( all contributions for quantization error, integral error, differential error, full scale error, offset error, and monotonicity). Nó được xác định khi ta thu được giá trị cuối cùng so với giá trị chuyển.
 Lỗi tuyệt đối của bộ chuyển đổi được xác định tại < ±1 LSb for VDD = VREF (over thedevice’s specified operating range). Tuy nhiên tính chính xác của bộ chuyển đổi cũng suy giảm khi điện áp tham chiếu từ Vdd tới Vref.
    Đối với một dải nhất định của đầu vào tương tự. Mã đầu ra số là như nhau. Lỗi lượng tử cơ bản là vào  ± 1/2 LSb và nó thuộc quá trình sử lý chuyển đổi từ tương tự sang số====> giảm lỗi lượng tử bằng cách tăng độ phân giải của bộ chuyển đổi
    Offset error được xác định là sự sai khác giữa code thu được với code muốn thu được của quá trình chuyển đổi. Lỗi này có thể được khắc phục hoặc giảm thiểu nó thông qua sự tương tác giữa tổng dòng dò và trở kháng của nguồn tín hiệu đầu vào.
    Gain error được xác định là độ lệch lớn nhất của sự chuyển đổi cuối cùng so với giá trị cuối cùng sau khi điều chỉnh lỗi trước đó. Chỉ có khác là gain error không có sự bù đắp nào do đó có thể hiệu chỉnh lỗi này bằng phần mềm
    Lỗi tuyễn tính (Linearity error) có được khi thống nhất một sự thay đổi về mã. Lỗi này không thể loại bỏ được khỏi hệ thống. Nó là sự điều chỉnh từ lỗi Gain error so với code thu được
   Sai số không tuyến tính giữa code thu được và code lý tưởng. Không thể điều chỉnh được lỗi này.
   The maximum pin leakage current is specified in the Device Data Sheet electrical specification
parameter D060..   
   Trong hệ thống mà tần số thiết bị là thấp thì sử dụng nguồn clock rc là thích hợp ngược lại thì sử dụng bộ dao động có tần số cao. Tad nên được tham khảo qua datasheet để chọn cho phù hợp. Tad phải không được vi phạm giá trị nhỏ nhất và nên là nhỏ nhất để giảm lỗi ( tụ nạp vừa đủ)
   Hệ thống trong chế độ SLEEP sau khi bắt đầu sự chuyển đổi xung clock được chọn phải là RC. Trong chế độ này nhiễu 'số' là không ảnh hưởng tới và ta đạt được độ chính xác cao hơn.

10. Ảnh hưởng của RESET
       Khi RESET tất cả các thanh ghi đều quay về trạng thái reset. Điều này sẽ tắt bộ A/D và bất kỳ sự chuyển đổi nào cũng đều bị bỏ qua. Và thanh ghi ADRES chứa giá trị không xác định

11. Sử dụng Trigger CCP
       Một sự chuyển đổi A/D được bắt đầu  bởi “special event trigger” của module CCP. Điều này yêu cầu CCPxM3:CCPxM0 bits (CCPxCON<3:0>) be programmed as 1011 và module A/D được cho phép (ADON bit is set). Khi đó GO/DONE bit sẽ được đặt và bắt đầu sự chuyển đổi và bộ đếm Timer 1 sẽ được reset về 0. Timer 1 reset để tự động lặp lại quá trình thu nhận A/D. Kênh đầu vào phải được chọn và thời gian thu nhận nhỏ nhất phải được thực hiện xong trước khi  “special event trigger” sets the GO/DONE bit (starts a conversion).
   if the A/D module is not enabled (ADON is cleared), then the “special event trigger” will be ignored by the A/D module, but will still reset the Timer1 counter.

12. Cân nhắc kết nối
       Nếu điện áp đầu vào vượt qua dải giá trị (VSS or VDD) khoảng trên 0.3V thì sự chính xác không còn nữa ( vượt qua độ phân giải bit). Một bộ lọc RC ngoài có thể được thêm vào để đôi khi chống lại điện áp răng cưa tại đầu vào. R được chọn sao cho tổng trở kháng đầu vào của nguồn <=10k. Any external components connected (via hi-impedance) to an analog input pin (capacitor, zener diode, etc.) should have very little leakage current at the pin.

13. Chức năng truyền
       Việc truyền trước tiên một đầu vào tín hiệu tương tự (VAIN) is 1 LSb (or Analog VREF / 256) (Figure 21-6).


14. Cài đặt
  15. Câu hỏi liên quan + ứng dụng
        Ques: Tôi sử dụng PIC16C7X devices nhưng kết quả đo được là không thực sự chính xác. Phải làm thế nào để thu được kết quả chính xác hơn?
         Ans:

  •  Chắc chắn về thông số thời gian chuyển đổi. Nếu bạn tắt hay bật A/D thì phải có thời gian trễ để thu được mẫu ( Tmin ). Nếu bạn thay đổi kênh đầu vào thì phải có thời gian để bạn thực hiện điều này và cuối cùng là Tad ( thời gian cho chuyển đổi mỗi bit) được chọn tại ADCON0 và nên chọn giữa 2 và 6uS. Nếu Tad quá ngắn thì kết quả chuyển đổi sẽ không đúng và nếu Tad quá dài thì điện áp trên tụ giữ sẽ giảm trước khi lấy mẫu hoàn thành và kết quả là không thực sự chính xác. Thông số thời gian đã được cung cấp trong sách hướng dẫn hoặc bằng cách tính toán ta có thể xác định được và từ đó áp dụng cho từng trường hợp của bạn.
  • Trở kháng của nguồn đầu vào tương tự (cao hơn 1k) để cho tụ giữ làm việc chính xác. Nếu điện áp đầu vào không thay đổi nhanh nên đặt 1 tụ có trí số 0.1uF tai đầu vào. Tụ này sẽ nạp điện áp tương tự tới gần điện áp lấy mẫu và cung cấp ngay cho tụ lấy mẫu.
  • Cuối cùng, theo sách "Trong hệ thống tần số thiết bị là thấp sử dụng clock thông qua lựa chọn thạch anh dao động. ...this reduces, to a larg extent, the effects of digital switching noise.” and “In systems where the device will enter SLEEP mode after start of A/D conversion, the RC clock source selection is required. This method gives the highest accuracy.
 Ques 2: Sau một sự chuyển đổi tôi có thể chọn kênh như thế nào?
 Ans   2: Sau khi tụ giữ không được kết nối với chân đầu vào Khi bit GO được đặt sau khoảng thời gian Tsd thì kênh đầu vào được thay đổi.
  
Ứng dụng:      Title Application Note #Using the Analog to Digital Converter                 AN546
                      Four Channel Digital Voltmeter with Display and Keyboard                    AN557         

1.Tôi sử dụng PIC16C7x và thấy rằng kết quả chuyển đổi là không chính xác. Tôi phải làm gì để được kết quả chính xác?
Answer 1:
a. Bạn phải chắc chắn rằng thời gian giữa các khoảng là phải đủ.Nếu tắt mở ADC thì cũng phải mất 1 khoảng thời gian sau đó mới thực hiện lấy mẫu hay nếu chọn (thay đổi) kênh đầu vào thì cũng phải đợi để thực hiện công việc đó xảy ra tương tư Tad(thời gian cho mỗi bit chuyển đổi). Điều đó được thực hiện thông qua ADCON0 và giá trị nên nằm giữa 2 và 6us.Nếu TAD nhỏ thì việc chuyển đổi sẽ không thực hiện được hoàn toàn ngược lại nếu Tad quá dài thì điện áp trên tụ điện lấy mẫu sẽ sụt giảm trước khi chuyển đổi hoàn tất ( được cho cụ thể trong 1 bảng - đọc)
b. Thông thường trở kháng của nguồn tín hiệu tương tự đầu vào là cao(hon1k) nên dòng từ nguồn tới để nạp vào tụ lấy mẫu là không chính xác. Nếu tín hiệu đầu vào không thay đổi quá nhanh thử đặt một tụ điên 0.1uF trên đường tín hiệu vào. Tụ điện này sẽ nạp đến điện áp tương tự và cung cấp một dòng điện tức thời cho tụ lấy mẫu.
c. Cuối cùng tra lại sách: " Trong hệ thống ở đó tần số thiết bị là thấp sử dụng xung từ bộ dao động điên là thích hợp"


2. Khi đang bắt đầu 1 sự chuyển đổi thì tôi đổi kênh đầu vào ( cho chuyển đổi tiếp theo)?
       Sau khi tụ giữ là không dược kết nối từ kênh đầu vào sau Tad thì bit GO được đặt khi đó kênh đầu vào có thể được thay đổi


3. Tài liệu tham khảo choADC?
      Analog-Digital Conversion Handbook” third edition, published by Prentice Hall (ISBN 0-13-03-2848-0)






Không có nhận xét nào:

Đăng nhận xét