Analogica

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Analogica

Mensagem  Anderson em Dom Jun 27, 2010 5:38 pm

como configurar e usar mais de uma porta analogica ao mesmo tempo usando um comparador entre elas ?

Anderson

Mensagens : 2
Data de inscrição : 26/12/2009
Idade : 32

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Analogica

Mensagem  Bruno S. Avelar em Qua Jul 14, 2010 10:27 am

Olá Anderson,

É bem fácil configurar mais de uma porta analógica.
Usando o compilador C18, você deve na configuração do sistema usar a função OpenADC usando o ultimo parâmetro para configurar o número e quais portas analógicas você utilizará.
Estas são as opções:
Código:

    ADC_0ANA        All digital
            ADC_1ANA        analog:AN0                    digital:AN1-AN15
            ADC_2ANA        analog:AN0-AN1            digital:AN2-AN15
            ADC_3ANA        analog:AN0-AN2            digital:AN3-AN15
            ADC_4ANA        analog:AN0-AN3            digital:AN4-AN15
            ADC_5ANA        analog:AN0-AN4            digital:AN5-AN15
            ADC_6ANA        analog:AN0-AN5            digital:AN6-AN15
            ADC_7ANA        analog:AN0-AN6            digital:AN7-AN15
            ADC_8ANA        analog:AN0-AN7            digital:AN8-AN15
            ADC_9ANA        analog:AN0-AN8            digital:AN9-AN15
            ADC_10ANA      analog:AN0-AN9            digital:AN10-AN15
            ADC_11ANA      analog:AN0-AN10          digital:AN11-AN15
            ADC_12ANA      analog:AN0-AN11          digital:AN12-AN15
            ADC_13ANA      analog:AN0-AN12          digital:AN13-AN15
            ADC_14ANA      analog:AN0-AN13          digital:AN14-AN15
            ADC_15ANA      All analog
Como você pode perceber só é possível configurar da porta AN0 até a ultima analógica que você deseje usar. Caso você deseje usar a AN13 e AN14 você vai usar ADC_14ANA e vai estar cofigurando da AN0 a AN14 como analógicas.

Um exemplo de configuração de portas analógicas segue abaixo:
Código:

    ADCON1 |= 0x0F;            // Default all pins to digital
   
   // Configura o conversor AD
       OpenADC(ADC_FOSC_64 &              // ADC_FOSC_64:      Clock de conversão do A/D igual a
                        //               FAD = FOSC/64 = 48MHz/64 = 750kHz
                        //               Desta Forma, TAD=1/FAD = 1,33us.
         ADC_RIGHT_JUST &            // ADC_RIGHT_JUST:    Resultado da conversão ocupará os
                        //               bits menos significativos dos regis-
                        //               tradores ADRESH e ADRESL.
         ADC_12_TAD,               // ADC_2_TAD:              Determina o tempo de conversão de uma
                        //               palavra de 10-bits. Neste caso será
                        //               igual a 12*TAD = 12*1,33us = 16us.
         
         ADC_CH0 &          // ADC_CH0:         Atua sobre os bits CHS3:CHS0 do ADCON0
                        //               para selecionar o canal no qual será
                        //               realizada a conversão. Neste caso o AN0.
         ADC_INT_OFF &       // ADC_INT_OFF:      Habilita a interrupção de términio de
                        //               conversão.
         ADC_VREFPLUS_VDD &    // ADC_VREFPLUS_VDD:    Determina o VDD (+5V)como tensão de refe-
                        //                      rência positiva (VREF+) do CAD.
         ADC_VREFMINUS_VSS,    // ADC_VREFMINUS_VSS:  Determina o VSS (0V)como tensão de
                        //                referência negativa (VREF-) do CAD.
         
         ADC_5ANA);         // BITs PCFG3:PCFG0:        Configura os pinos AN4 AN5 AN3(RA3), AN2(RA2), AN1(RA1)                         //                 e AN0(RA0) como Entradas Analógicas
   
Uma vez configurado usamos a função SetChanADC() para alternar entre os canais analógicos. Para usar ficaria por exemplo assim:
Código:

      char temp[5];
             int buffer;
             char send[3];
       //--------------------Termometro-------------------//


            unsigned char Num_CAD_g = 0;         // Variável que guarda o valor da
                                          // conversão A/D em GRAUS CELSIUS.
                                 
            unsigned float Num_CAD_d = 0.0;         // Variável que guarda o valor da
                                 // conversão A/D em DECIMAL.
                                 
            unsigned int Num_CAD_b = 0;            // Variável que guarda o valor da
                                 // conversão A/D em BINÁRIO.
                                 
            unsigned float resolucao = VDD/1023.0;    // resolução do CAD de 10bits (2^10-1).
            
            SetChanADC(ADC_CH0);     
              if(!BusyADC())                // Testa se o processo de conversão está completo.
            {       
               Num_CAD_b=ReadADC();      // Lê o valor convertido e armazena na variável.
               ConvertADC();                // Inicia a Conversão.
            }



Espero ter ajudado.

Bruno S. Avealr
avatar
Bruno S. Avelar
Admin

Mensagens : 74
Data de inscrição : 26/07/2009
Idade : 33
Localização : Belo Horizonte MG

Ver perfil do usuário http://picminas.forumeiros.com

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum