Thông báo

Collapse
No announcement yet.

Có Ai Thật sự dùng AD10 bit của AVR chưa ??

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

  • Có Ai Thật sự dùng AD10 bit của AVR chưa ??

    Ai chưa dùng xin đừng đọc.
    Mình có 1 vấn đề thực tế xin được hỏi các tiền bối AVR.Mình đưa tín hiệu từ
    loadcell đã qua khếch đại 1kilogram-1V;2k-2V;3k-3V. Vref mega16 là 5V, progammer Codevision. Mình đang muốn sao cho khi được set ở những mức
    điện áp trên thì ta sẽ out ra một pỏt tương ứng (vd D0,D1,D2).Mình lay hoay
    mãi nhưng vẫn chưa xong.Phần ad mình chỉ từng thí nghiệm với AD8bit out ra
    0-->255 của GiọtĐắng.Mình ghe các cao nhân dùng 8bit nhiều nhưng có ai dùng 10bit chưa ??Mình xin chờ các chú bác chỉ giáo thiết ghĩ đây là ứng dụnh thực tế chúnh ta hãy cùng nghiên cứu.ThankS !

  • #2
    AD 10 bit của AVR thì chỉ có loại đóng vỏ dán mới đc căn chỉnh từ trước còn với đóng vỏ DIP thì chưa đc căn chỉnh. Nếu muốn thì cứ dùng.
    AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
    Xem thêm tại Online Store ---> Click here
    Mob: 0982.083.106

    Comment


    • #3
      Nguyên văn bởi VNarmy Xem bài viết
      AD 10 bit của AVR thì chỉ có loại đóng vỏ dán mới đc căn chỉnh từ trước còn với đóng vỏ DIP thì chưa đc căn chỉnh. Nếu muốn thì cứ dùng.
      Vụ này em ko biết đấy , đại ca nói rõ hơn được ko?
      PNLab
      Mạch nạp/debug ULink2, Jlink ARM USB
      Mạch nạp AVR, PIC, 8051, MSP430 USB
      Mạch phát triển STM32, ARM9, ARM11
      more...www.pnlabvn.com

      Comment


      • #4
        Nhầm cbn sang cái Differential Input Channel with Gain. Hê hê.
        Đính chính lại: AVR loại nào cũng dùng đc 10 bit ADC. Tốc độ tối đa ở Full Resulotion là 15KSps.
        AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
        Xem thêm tại Online Store ---> Click here
        Mob: 0982.083.106

        Comment


        • #5
          Các dòng mega16,32 thì trong da ta sheet nói có tích hợp ad10bit nhưng hiện nay mình chưa được các ví dụ cụ thể của nó về cách sử dụng. Các ứng dụng chủ yếu bên ngoài chỉ thường dùng 8bit(AVR) còn khi cần độ phân giải cao hơn người ta dùng các bộ AD gắn ngoài tạo sao ta không dùng trực tiếp AD10bit mà hãng đã cung cấp bên trong chip.
          mai mình sẽ pỏt sơ đồ nguyên ly ,mạch,cho các bạn thích AVR cùng nhau thảo luận.

          Comment


          • #6
            Bác VNarmy nói dúng!!! Nhưng khi viết code thì tiểu đệ thực sự lúng túng.Không biết khai báo thế nào cho phù hợp.Bác có thể minh họa một chuơng trình đọc ad từ portA0 sau đó giả sư ứng 1V và 3V (Vref 5v)...Ta xuất ra C0,C1.

            Sẵn đây cho tiểu đệ xin hỏi luôn cái:"Differential Input Channel " là thông số gì?

            Comment


            • #7
              Bạn muốn dùng 10 bit thì bạn để căn phải ADLAR=0 và đọc giá trị của 2 ghi ADCH và ADCL là thành 10 bit thôi.
              AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
              Xem thêm tại Online Store ---> Click here
              Mob: 0982.083.106

              Comment


              • #8
                Nguyên văn bởi XshrelaxX Xem bài viết
                Bác VNarmy nói dúng!!! Nhưng khi viết code thì tiểu đệ thực sự lúng túng.Không biết khai báo thế nào cho phù hợp.Bác có thể minh họa một chuơng trình đọc ad từ portA0 sau đó giả sư ứng 1V và 3V (Vref 5v)...Ta xuất ra C0,C1.

                Sẵn đây cho tiểu đệ xin hỏi luôn cái:"Differential Input Channel " là thông số gì?
                Là giá trị AD là hiệu của 2 kênh đầu vào chứ không phải là 1 kênh so với đất (Single Input).
                AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
                Xem thêm tại Online Store ---> Click here
                Mob: 0982.083.106

                Comment


                • #9
                  Rất nhiều người dùng ADC10 bit trong chip AVR bạn ạ!
                  Bạn dùng CodevisionAVR thì cũng dễ thôi, nó làm cho hết cả rồi, có thể khai báo xong thì mình tự viết code còn không thì dùng ngắt cho nó tự làm. Sau cùng mỗi thời gian mình đọc 2 byte ( 1 byte 8 bit và 1 byte 10 bit) để dùng là OK.

                  email:mahaco@fpt.vn

                  Comment


                  • #10
                    Code:
                    #include <mega16.h>
                    
                    #define FIRST_ADC_INPUT 0
                    #define LAST_ADC_INPUT 7
                    unsigned int adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
                    #define ADC_VREF_TYPE 0x00
                    
                    // ADC interrupt service routine
                    // with auto input scanning
                    interrupt [ADC_INT] void adc_isr(void)
                    {
                    register static unsigned char input_index=0;
                    // Read the AD conversion result
                    adc_data[input_index]=ADCW;
                    // Select next ADC input
                    if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT))
                       input_index=0;
                    ADMUX=(FIRST_ADC_INPUT|ADC_VREF_TYPE)+input_index;
                    // Start the AD conversion
                    ADCSRA|=0x40;
                    }
                    
                    // Declare your global variables here
                    
                    void main(void)
                    {
                    
                    PORTA=0x00;
                    DDRA=0x00;
                    
                    PORTB=0x00;
                    DDRB=0x00;
                    
                    PORTC=0x00;
                    DDRC=0x00;
                    
                    PORTD=0x00;
                    DDRD=0x00;
                    
                    TCCR0=0x00;
                    TCNT0=0x00;
                    OCR0=0x00;
                    
                    TCCR1A=0x00;
                    TCCR1B=0x00;
                    TCNT1H=0x00;
                    TCNT1L=0x00;
                    ICR1H=0x00;
                    ICR1L=0x00;
                    OCR1AH=0x00;
                    OCR1AL=0x00;
                    OCR1BH=0x00;
                    OCR1BL=0x00;
                    
                    ASSR=0x00;
                    TCCR2=0x00;
                    TCNT2=0x00;
                    OCR2=0x00;
                    
                    // External Interrupt(s) initialization
                    // INT0: Off
                    // INT1: Off
                    // INT2: Off
                    MCUCR=0x00;
                    MCUCSR=0x00;
                    
                    // Timer(s)/Counter(s) Interrupt(s) initialization
                    TIMSK=0x00;
                    
                    // Analog Comparator initialization
                    // Analog Comparator: Off
                    // Analog Comparator Input Capture by Timer/Counter 1: Off
                    ACSR=0x80;
                    SFIOR=0x00;
                    
                    // ADC initialization
                    // ADC Clock frequency: 125.000 kHz
                    // ADC Voltage Reference: AREF pin
                    // ADC Auto Trigger Source: Free Running
                    ADMUX=FIRST_ADC_INPUT|ADC_VREF_TYPE;
                    ADCSRA=0xEE;
                    SFIOR&=0x1F;
                    
                    // Global enable interrupts
                    #asm("sei")
                    
                    while (1)
                          {
                          // Place your code here
                    
                          };
                    }
                    cái nì dùng hoài ý mà.
                    đoạn code này set hết roài.
                    chạy Free Running
                    cứ thế đọc mảng adc_data[index] là biết thôi.
                    còn chiện chống nhiễu không nói.keke
                    Cty TNHH Cơ Điện tử Hiệp Phát.
                    ------------------------------------------
                    Trần Hoàng Giang
                    11-04-1985

                    Mobil: 0905 438 533

                    Comment


                    • #11
                      Nguyên văn bởi VNarmy Xem bài viết
                      Là giá trị AD là hiệu của 2 kênh đầu vào chứ không phải là 1 kênh so với đất (Single Input).
                      Em dùng mega32 dạng PDIP, đọc vi sai 2 kênh nó chả hiểu gì cả. Đành phải đọc từng kênh, rồi làm phép trừ trên phần mềm. Tuy hơi "không chuyên nghiệp" cho một số ứng dụng nhưng cũng sài tạm được.
                      !e

                      Comment


                      • #12
                        Mình cũng làm ADC 10 bit rồi, muốn kết quả ổn định thì phần điện áp tham chiếu cần thực hiện theo đúng các khuyến cáo trong datasheet (lọc LC, cách ly...) thì mới thu được 10 bit đúng nghĩa, còn không chỉ lấy được 8 bit cao thôi. Trước khi xử lý VCC-ANA, dữ liệu cho ra 1000 +/- 10, xử lý xong còn 1000 +/- 1, thật đáng kinh ngạc mặc dù không chạy chế độ khử nhiễu gì cả.

                        Tuy nhiên, nếu các bác cần thiết dùng ADC chính xác thì nên đọc trộm các AN của Bonnie Baker bên Microchip, ví dụ ADN007
                        Đẹp từng kilomét

                        Comment


                        • #13
                          Sẵn có các cao nhân, xin phép hỏi lạc đề một tí rất cơ bản của điều khiển tự động (ngại mở luồng khác quá):
                          - tôi muốn xuất một điện áp điều khiển motor, xong đọc giá trị vòng/phút, so sánh với giá trị vòng/phút mong muốn (thay đổi).
                          - giả sử xuất tín hiệu điều khiển là thdk, tốc độ mong muốn là rpm, sai số là error_rpm vậy giải thuật cơ bản như sau có ổn không? Có giải thuật nào áp dụng tốt cho môtr không? Theo kinh nghiệm các bác thì nên hiệu chỉnh hệ số nào trước (trì hoãn T, N hay Limit). Vẫn biết không có hệ thống nào giống nhau nhưng chắc cũng có một điểm chung?
                          -Hiện tại, motor tôi nó nhảy như ngựa, lúc lên lúc xuống, cũng đã hiệu chỉnh nhưng chưa thấy hiệu quả
                          ...
                          while(1)
                          {
                          xuất(thdk);
                          delay(t);
                          đọc(rpm);
                          tinh_sai_so(error_rpm);
                          if (error_rpm > Limit) thdk += N;
                          if (error_rpm < -Limit) thdk -= N;
                          }

                          Cám ơn các bác
                          Đẹp từng kilomét

                          Comment


                          • #14
                            Nguyên văn bởi XshrelaxX Xem bài viết
                            Ai chưa dùng xin đừng đọc.
                            Mình có 1 vấn đề thực tế xin được hỏi các tiền bối AVR.Mình đưa tín hiệu từ
                            loadcell đã qua khếch đại 1kilogram-1V;2k-2V;3k-3V. Vref mega16 là 5V, progammer Codevision. Mình đang muốn sao cho khi được set ở những mức
                            điện áp trên thì ta sẽ out ra một pỏt tương ứng (vd D0,D1,D2).Mình lay hoay
                            mãi nhưng vẫn chưa xong.Phần ad mình chỉ từng thí nghiệm với AD8bit out ra
                            0-->255 của GiọtĐắng.Mình ghe các cao nhân dùng 8bit nhiều nhưng có ai dùng 10bit chưa ??Mình xin chờ các chú bác chỉ giáo thiết ghĩ đây là ứng dụnh thực tế chúnh ta hãy cùng nghiên cứu.ThankS !
                            em cũng đang làm đồ án về cân tự động , mong các huynh chỉ giáo giúp ..
                            loadcell của em có ghi 150kg/F.. cho em hỏi vậy là sao ? lúc đầu em nghĩ là cân max là 15kg , nhưng kô phải..hix..hix...-->po tay ..
                            à, cái load cell thầy em đưa ra là :
                            input reistance : 400_+ 20 ôm
                            output reistance 350_+3.5 ôm
                            recommended excitation : 10v
                            max.excitation : 15v
                            cho em hỏi các thông số trên có ý nghĩ như thế nao?
                            nó đưa ra 5 dây :
                            red : +input
                            white: -input
                            green: +signal
                            blue: -signal
                            black; Shield

                            Cho em hỏi cái sợi dây đen nó dùng làm cái gi vậy ?
                            Em làm mạch khếch đại dùng lm324 mà sao chẳng ăn thua gì hết. Em định dùng 1 con op07 để điều chỉnh điện áp offset , và 1 con lm358 để khếch đại va đệm , ko biết ý mấy anh thê nào
                            Em còn mù mờ quá mong các anh giúp cho em xong cai đồ án ...hix..hix..
                            Mong mọi người giúp đỡ ..
                            Thanks for all !!!

                            Comment


                            • #15
                              Bạn vào website http://www.friendlykit.com để download chương trình

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X