Thông báo

Collapse
No announcement yet.

Cần mọi người giúp đỡ về ADC của ATMEGA32

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

  • Cần mọi người giúp đỡ về ADC của ATMEGA32

    Xin chào mọi người!
    Hiện mình dang muốn làm một mạch có thể đo được điện áp DC âm với tầm đo trong khoảng -30VDC đến +30VDC bằng ATMEGA32. Vậy các bạn có thể làm ơn hướng dẫn cho mình được không, mình định dùng ngõ vào differential để đo nhưng chưa biết thiết kế như thế nào cho hợp lý. Mong các bạn hướng dẫn dùm nhé. Cám ơn mọi người rất nhiều.

  • #2
    Mình cũng mới sử dụng AVR và ADC trên AVR một cách đơn giản nhất nhưng chỉ biết giá trị tham chiếu của nó <=5V; Mình không biết có cách nào sử dụng ADC có nguồn >5V; ai có cao kiến xin chỉ giáo với
    Tự động hóa hôm nay cho một thế hệ robot mai sau

    Comment


    • #3
      - Khi bạn thiết kế một bộ đo điện áp có giải đo từ 0 - 30V, thì đồng thời nó cũng có thể đo được các giá trị trong khoảng -30V - 0V (giả sử trong trường hợp bạn đặt ngược que đo chẳng hạn, thì giá trị hiển thị lên cũng vẫn đúng về trị tuyệt đối nhưng ngược dấu). Như thế ta có thể thiết kế đầu vào là tín hiệu so đất, nhưng bằng cách nào đó ta xác định được khi nào điện áp vào là âm, và khi nào điện áp vào là dương để hiển thị đúng dấu của điện áp.
      - Để phát hiện dấu có thể sử dụng 2 phương án:

      + Thứ nhất ta tiến hành chuẩn hóa dải điện áp -30V --> +30V về dải điện áp 0 -- > 5V. Như vậy 0V thực tế sẽ tương ứng với 2,5V trong dải sau chuẩn hóa. Lúc này nếu điện áp vào ADC đo được < 2,5V thì đó là điện áp âm, nếu >2,5V thì đó là điện áp dương.

      + Thứ 2: Bạn đưa điện áp cần đo vào 2 khối, khối lặp dành cho điện áp dương, khối đảo dành cho điện áp âm. Đầu ra của hai khối này đưa vào một bộ dồn kênh analog chọn 1 trong 2 kênh. Tín hiệu cho phép chọn kênh của MUX được lấy từ tín hiệu đầu vào qua một bộ so sánh với 0. Như vậy điện áp vào ADC luôn là điện áp dương --> đo được giá trị tuyệt đối. Căn cứ vào tín hiệu cho phép dồn kênh mà bạn biết được dấu của điện áp, khi hiển thị thì bạn thêm dấu vào cùng với giá trị đo được.

      Có một vài góp ý không biết có hữu ích gì không!

      Thân mến,
      For a better world

      Comment


      • #4
        Xin cám ơn sự hướng dẫn của bạn, có vấn đề mình chưa hiểu rõ lắm là trong datasheet có nói về ngõ vào differential, nhưng mình không hiểu là khi ngõ vào là điện áp âm thì có đọc được không?
        Một đoạn ví dụ trong datasheet như sau:
        Example:
        ADMUX = 0xED (ADC3 - ADC2, 10x gain, 2.56V reference, left adjusted result)
        Voltage on ADC3 is 300mV, voltage on ADC2 is 500mV,
        ADCR = 512 * 10 * (300-500)/2560 = -400 = 0x270
        ADCL will thus read 0x00, and ADCH will read 0x9C. Writing zero to ADLAR right adjusts the result: ADCL = 0x70, ADCH = 0x02.
        Như vậy trong trường hợp này giả sử mình muốn đưa nguồn 0V vào chân ADC3 và nguồn điện áp âm(-VREF= - 5V) vào chân ADC2 thì có được không?
        Rất cám ơn bạn đã trả lời.

        Comment


        • #5
          Nguyên văn bởi LONGVOUS Xem bài viết
          Xin cám ơn sự hướng dẫn của bạn, có vấn đề mình chưa hiểu rõ lắm là trong datasheet có nói về ngõ vào differential, nhưng mình không hiểu là khi ngõ vào là điện áp âm thì có đọc được không?
          Một đoạn ví dụ trong datasheet như sau:
          Example:
          ADMUX = 0xED (ADC3 - ADC2, 10x gain, 2.56V reference, left adjusted result)
          Voltage on ADC3 is 300mV, voltage on ADC2 is 500mV,
          ADCR = 512 * 10 * (300-500)/2560 = -400 = 0x270
          ADCL will thus read 0x00, and ADCH will read 0x9C. Writing zero to ADLAR right adjusts the result: ADCL = 0x70, ADCH = 0x02.
          Như vậy trong trường hợp này giả sử mình muốn đưa nguồn 0V vào chân ADC3 và nguồn điện áp âm(-VREF= - 5V) vào chân ADC2 thì có được không?
          Rất cám ơn bạn đã trả lời.

          Chức năng diferentials ADC trong Atmega thực chất chỉ là phép trừ giữa 2 tín hiệu có giá trị dương rồi cho ra kết quả từ -512 đến 512. Do đó bạn ko thể đưa tín hiệu (-) vào được. Vref phải lớn hơn 0, ko có ngõ nào để đưa vào nguồn -Vref thi làm sao mà đo differential đươc. Differential mode là tính năng đáng thất vọng nhất của Atmega!
          Giải pháp là bạn thưc hiện theo ý tưởng của bạn ở trên, hoăc thiết kế ADC ngoài có tính năng differential thưc sự
          Thân chào bạn

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          Đang tải...
          X