Thông báo

Collapse
No announcement yet.

Cho em hỏi về tốc độ đo ADC

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Cho em hỏi về tốc độ đo ADC

    Với Pic thì ADC ko có gì là xa lạ tuy nhiên em cũng có 1 chút thắc mắc đó là cái tốc độ lấy mẫu nhanh hay chậm có j khác nhau mà nó cần tới bộ chia tần nhỉ, theo ngu ý của em thì càng nhanh càng tốt thì đâu cần. Vậy tác dụng của việc chia tần này để làm j hay là với chế độ chia tần lớn thì thời gian lấy mẫu lâu và chuẩn hơn. Ngoài ra em hỏi thêm là việc đọc nhiều kênh adc, em làm 1 cái mạch cắm board test thứ vs 2 chân adc thì nó bị ảnh hưởng nhau. Cụ thể em xài con 16f723 nó có các bit CHS3:0 để chọn kênh adc tương ứng. em đọc mỗi kênh adc 10 lần rồi lại set lại các bit đó để đọc kênh ADC khác
    Code:
    void Select_ADC(unsigned char channel)
    {
    	if(channel == 0) CHS0 = 0;
    	if(channel == 1) CHS0 = 1;
    	CHS1 = 0;
    	CHS2 = 0;
    	CHS3 = 0;
    }
    Khi em thay đổi điện áp đầu vào của 1 kênh thì kênh còn lại ít nhiều cũng bị ảnh hưởng. chỉ khi 2 đầu vào chênh nhau ít thì nó gần như ko bị ảnh hưởng nữa
    Last edited by mast090; 25-11-2013, 01:43.
    Website chính thức đổi địa chỉ website thành
    Mời các bạn ghé thăm !!!

  • #2
    ko thấy bác nào reply hộ em vấn để này nhỉ, ko rõ có phải em trình bày khó hiểu. Đơn giản là 2 chân adc nếu em để 1 chân adc1=5v, 1 chân adc2=1v chẳng hạn (vref=5v) thì adc1 nó đo ko phải là 5v mà chỉ đc 4.5v. disable chân adc2 đi thì nó lại nhảy về đúng 5v. còn nếu em để adc1 = 5v và adc2 xấp xỉ 5v thì lúc đo mới đạt đc đúng giá trị. test vs mô phỏng thì oke ko vấn đề j nhưng làm thực tế thì nó bị ảnh hưởng
    Website chính thức đổi địa chỉ website thành
    Mời các bạn ghé thăm !!!

    Comment


    • #3
      Thời gian lấy mẫu phụ thuộc nhiều vào kiểu ADC và cấu tạo phần lấy mẫu, đồng thời nó ảnh hưởng tới độ chính xác phép đo. Với vi điều khiển nói chung có nhiều đầu vào ADC, khi chuyển từ đầu vào này sang đầu vào khác thì cần có một quãng thời gian để ổn định tín hiệu vào phần lấy mẫu, vì thế thời gian lấy mẫu không thể nhanh tùy ý được, đơn giản vì giới hạn về mặt vật lý. Ngoài ra, thời gian lấy mẫu phải tương thích với cách cấu tạo bên trong của vi điều khiển nên không thể nhanh quá (phần lấy mẫu chạy không kịp), cũng không nên chậm quá (sai số tăng). Bạn đọc datasheet của bất kỳ chip PIC nào (hoặc vi điều khiển khác cũng tương tự) đều có dải thời gian chờ lấy mẫu tối ưu không nhanh không chậm.

      Thứ đến, việc lấy mẫu nhanh quá mức cần thiết không phải lúc nào cũng tốt. Trong một thiết kế bài bản, thời gian lấy mẫu phải được tính toán cẩn thận xét theo cả hệ thông chứ không phải chỉ phụ thuộc vào mỗi khả năng ADC vì nhiều lý do.
      • Năng lực xử lý dữ liệu của lõi MCU
      • Khả năng lọc nhiễu tự thân : ví dụ đo tín hiệu từ điện áp lưới 50Hz (hoặc tín hiệu bất kỳ, đều bị ảnh hưởng bởi nhiễu 50Hz đầy rẫy trong không gian) 1 chu kỳ là 20ms; người ta thường chọn ADC kiểu tích lũy (ADC tích phân hai sườn xung đối xứng) lấy mẫu với thời gian là bội số của 20ms (40, 60, 100 ...) thì cái nhiễu 50Hz đó nó tự triệt tiêu lẫn nhau mà không cần mạch lọc phức tạp. Lấy mẫu đúng cách là kiểu xử lý số tín hiệu đơn giản nhất.
      • Về mặt điều khiển học, một hệ thống số (hoạt động gián đoạn trong cả miền thời gian lẫn miền giá trị) một mặt cần thời gian lấy mẫu đủ nhanh bị ràng buộc bởi tiêu chuẩn Nyquist nhưng mặt khác lại có thể bị mất ổn định khi lấy mẫu quá nhanh. Vụ này giáo trình lý thuyết điều khiển cũng đã giải thích rõ.

      Viết dài dòng là vậy, nhưng thực tế đơn giản là cái gì cũng cần làm đủ nhanh, không được chậm quá nhưng cũng không nên nhanh quá.

      Về chuyện ảnh hưởng tín hiệu giữa 2 đường ADC, chuyện này là đương nhiên. Giữa các chân IC luôn có điện dung ký sinh đối với nhau (và với đất) nên tín hiệu ảnh hưởng lẫn nhau. Microchip có cả một cái appnote hướng dẫn cách làm nút ấn cảm ứng cho những loại PIC vốn không có mTouch module chỉ dựa trên hiệu ứng điện dung ký sinh này. IC ADC vi sai cao cấp của Analog Device đều có 1 đôi chân mỗi đường tín hiệu, các đôi chân cách nhau bởi chân GND. Cũng không phải tự nhiên người ta phải nghĩ ra cáp đôi dây xoắn để triệt tiêu cross-talk khi truyền xa.

      Dòng PIC16F723 đã quá cổ rồi, ngoài thị trường chỉ còn hàng nhái. Ít nhất cũng nên dùng PIC16F723A rất rẻ, hoặc các loại mới hơn : 182x 193x, 194x ... Đã có cả dòng PIC16 có ADC 12bit và DAC 8bit nội. Nói chung bây giờ là thời của PIC<cái gì đó>F<4 chữ số> cho dân chuyên nghiệp. Mấy loại 2 hoặc 3 chữ số dành cho dân bán chuyên mà thôi.
      Phần mềm tự do hoặc không dùng máy tính nữa !.

      Comment


      • #4
        Chia tần có thể để thay đổi chu kì lấy mẫu trong trường hợp người ta muốn ADC lấy mẫu liên tục không cần vòng lặp hay timer điều khiển.
        Còn vụ ADC ảnh hưởng lẫn nhau thì mình dùng cũng vài loại PIC cả 16F lẫn 18F chưa bị như trường hợp của bạn. Có thể phần cứng bạn làm không đúng ( thêm thắt mấy cái linh tinh ) hoặc phần mềm cấu hình không đúng ( vì trên 1 chân PIC còn các chức năng khác của các modul khác : IO,SPI,TIMER,....).

        Comment


        • #5
          Đôi khi đo ADC sai đơn giản vì quên tắt low power pull-up ở chân ADC.
          Phần mềm tự do hoặc không dùng máy tính nữa !.

          Comment


          • #6
            Nguyên văn bởi bqviet Xem bài viết
            Dòng PIC16F723 đã quá cổ rồi, ngoài thị trường chỉ còn hàng nhái. Ít nhất cũng nên dùng PIC16F723A rất rẻ, hoặc các loại mới hơn : 182x 193x, 194x ... Đã có cả dòng PIC16 có ADC 12bit và DAC 8bit nội. Nói chung bây giờ là thời của PIC<cái gì đó>F<4 chữ số> cho dân chuyên nghiệp. Mấy loại 2 hoặc 3 chữ số dành cho dân bán chuyên mà thôi.
            Đính chính là em cũng xài 16F723A. Lúc gõ viết thiếu, về giá em cũng xem trên RP, còn về chất lượng thì cũng so nó vs dòng 3 chữ số cũ tương đương... nên mới lấy
            việc ảnh hưởng adc này em đã cố gắng tìm tất cả các thanh ghi liên quan đến các chân adc đang xài và disable nó tuy nhiên nó vẫn ảnh hưởng, ngay cả việc phải disable cả ngắt, cả adc và khởi tạo lại, tạo trễ 1 thời gian khá lớn so với time note trong datasheet giữa các lần chuyển đổi adc. Lỗi trước mắt thì tạm thời em đã giải quyết đc, nhưng ko rõ nguyên nhân tại sao khi sử dụng ngắt adc, phải đọc thủ công
            Website chính thức đổi địa chỉ website thành
            Mời các bạn ghé thăm !!!

            Comment


            • #7
              Nguyên văn bởi mast090 Xem bài viết
              Đính chính là em cũng xài 16F723A. Lúc gõ viết thiếu, về giá em cũng xem trên RP, còn về chất lượng thì cũng so nó vs dòng 3 chữ số cũ tương đương... nên mới lấy
              việc ảnh hưởng adc này em đã cố gắng tìm tất cả các thanh ghi liên quan đến các chân adc đang xài và disable nó tuy nhiên nó vẫn ảnh hưởng, ngay cả việc phải disable cả ngắt, cả adc và khởi tạo lại, tạo trễ 1 thời gian khá lớn so với time note trong datasheet giữa các lần chuyển đổi adc. Lỗi trước mắt thì tạm thời em đã giải quyết đc, nhưng ko rõ nguyên nhân tại sao khi sử dụng ngắt adc, phải đọc thủ công
              Có một tụ khá lớn trong module adc và bạn không thể làm gì được tụ này vì đây là tụ lấy mẫu trong adc cho tất cả các kênh. Đồng thời không thể đi sai định lí nyquist về tần số lẫy mẫu. Không phải ưa lấy nhanh thì đc đâu. Còn trong ngắt adc không đọc thanh ghi sao mà bik được giá trị

              Comment


              • #8
                Nguyên văn bởi Emark Xem bài viết
                Có một tụ khá lớn trong module adc và bạn không thể làm gì được tụ này vì đây là tụ lấy mẫu trong adc cho tất cả các kênh. Đồng thời không thể đi sai định lí nyquist về tần số lẫy mẫu. Không phải ưa lấy nhanh thì đc đâu. Còn trong ngắt adc không đọc thanh ghi sao mà bik được giá trị
                bạn ko đọc kỹ nhỉ, mình nói rằng đã tạo trễ khá lớn so vs yêu cầu của datasheet và tăng time lấy mẫu .... vẫn ko đc
                còn adc mình ko đọc bằng ngắt mà làm bằng cách kiểm tra thanh ghi trong main thì đâu cần xài ngắt chỉ là khi hoàn tất 1 adc nó ko tự động nhảy vào như ngắt mà thôi
                Website chính thức đổi địa chỉ website thành
                Mời các bạn ghé thăm !!!

                Comment


                • #9
                  Nguyên văn bởi mast090 Xem bài viết
                  bạn ko đọc kỹ nhỉ, mình nói rằng đã tạo trễ khá lớn so vs yêu cầu của datasheet và tăng time lấy mẫu .... vẫn ko đc
                  còn adc mình ko đọc bằng ngắt mà làm bằng cách kiểm tra thanh ghi trong main thì đâu cần xài ngắt chỉ là khi hoàn tất 1 adc nó ko tự động nhảy vào như ngắt mà thôi
                  Thật tình mình cũng chưa quét ADC lần nào Nhưng mình đoán là cách gì nó cũng phải dính đến thằng tụ trong đấy. Bạn lấy PIC khác thử xem sao

                  Comment

                  Về tác giả

                  Collapse

                  mast090 Tìm hiểu thêm về mast090

                  Bài viết mới nhất

                  Collapse

                  Đang tải...
                  X