Thông báo

Collapse
No announcement yet.

Chỉ cho em phần ADC.

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

  • Chỉ cho em phần ADC.

    E đang làm con ATmega16, dùng ADC trong, với Vin thay đổi dùng biến trở. Mọi người chỉ cho em cách đọc giá trị ADC khi thay đổi Vin. (dùng ngắt). Cảm ơn nhiều!

  • #2
    lâu rồi mình không đụng đến AVR nên cũng không rõ, nhưng không nhầm thì AVR có V_ref bên trong là 2,55V thì phải. nếu vậy V_in cũng phải phù hợp với V_ref nhỉ. mình thấy phần này trong tài liệu AVR có hết mà, bạn chịu khó đọc đi rồi mọi nguoi se giúp.

    Comment


    • #3
      nếu cần độ chính xác tương đối thì bạn sử dụng Vref nội là 2.56V còn sai số thì tùy, bạn xem trong datasheet ở đoạn phía dưới gần cuối ấy.
      còn nếu cần chính xác cao thì dùng nguồn Vref bên ngoài nối vào chân Vref.
      cần chú ý là khi set để sử dụng Vref nội thì chân Vref cần được để hở hoặc mắc tụ 104 xuống mass.
      và Vin phải nhỏ hơn Vref.nếu lớn hơn thì dùng cầu điện trở để chia xuống.
      để đọc ADC về thì bạn có thể sử dụng timer để đọc hoặc cho vòng lặp tùy thích. phần này trong codevision có hỗ trợ khá nhiều. bạn chỉ cần đọc datasheet tí và set các thông số là chạy ok.
      thân!

      Comment


      • #4
        bạn nên chú ý là dải điện áp hoạt động của ADC vi điều khiển ATMEGA16 là 5v.nếu bạn dùng ADC 8 bít có nghĩa là độ phân giải của ADC sẽ là 5000(mV)/256= 20mV.và nếu như điện áp đầu vào bạn đọc từ tín hiệu điện áp ngoài lớn hơn 5v bạn cần dùng 1 cầu chia áp để có thể dùng ADC một cách chính xac.

        Comment


        • #5
          Nguyên văn bởi thanh48ctu Xem bài viết
          bạn nên chú ý là dải điện áp hoạt động của ADC vi điều khiển ATMEGA16 là 5v.nếu bạn dùng ADC 8 bít có nghĩa là độ phân giải của ADC sẽ là 5000(mV)/256= 20mV.và nếu như điện áp đầu vào bạn đọc từ tín hiệu điện áp ngoài lớn hơn 5v bạn cần dùng 1 cầu chia áp để có thể dùng ADC một cách chính xac.
          chắc bạn nhầm tí chỗ này.
          để chân Vin ko bị khét thì cần giới hạn ở mức đó. còn để ADC đọc được giá trị chính xác tại chân Vin thì nó phải được giới hạn từ GND tới Vref. và khi đó độ phân giải của bộ adc sẽ là (Vref/2^sobit adc).

          Comment


          • #6
            Các bác có thể viết rõ hơn cơ chế của bộ ADC của AVR được không? Như : các thanh ghi liên quan, cách set chúng như thế nào? ADC compare hoat động tn?. E đã bay lượn nhiều nơi mà chưa thấy.

            Comment


            • #7
              Bạn nói thế chứng tỏ là bạn chưa đọc Datasheet rồi, đối với AVR hay bất kìa VĐK nào việc đầu tiên khi nghiên cứu cũng là đọc Datasheet sau đó tham khảo code mẫu (làm việc nhanh hơn).
              Tiện đây mình ngó lại Datasheet của con Mega16 thì thấy ghi tạm lại mấy thanh ghi cho bạn:
              ADMUX: thanh ghi cho phép chọn Vref (ngoài hoặc Vref nội) và chọn Kênh ADC
              ADCSCRA: thanh ghi điều khiển và thông báo trạng thái ADC (cái này muốn rõ xem lại sơ đồ khối trong Datasheet)
              ADCH và ADCL: 2 thanh ghi thông báo giá trị ADC đọc được
              Ngoài ra để làm với ngắt bạn phải set thêm bit cho phép ngắt ADC trong phần ngắt ngoại vi nữa.
              Nếu làm AVR GCC thì lên mạng nhờ bác Google tìm hộ: ADC AVR là ra nhiều project ng ta đã viết sẵn.
              Nếu làm bằng CodeVision thì đọc help rùi làm thử theo nó 1 tẹo là ra, chả phải nhớ thanh ghi nhiều lắm.

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              Đang tải...
              X