Conversor Analógico para Digital

Esta biblioteca fornece funções para usar o conversor analógico para digital do AVR. Todas as funções desta biblioteca bloqueiam o processador até chegarem ao resultado. O tempo de conversão depende do relógio ADC.

Tipos de dados

  • adc_reference
    Enumeração dos tipos para voltagem de referência do ADC. Opções:
    • ADC_REF_AREF - Voltagem de referência do pin AREF.
    • ADC_REF_AVCC - Voltagem de referência do pin AVCC.
    • ADC_REF_2V56 - Voltagem de referência interna - 2,56 V.
  • adc_prescale
    Enumeração dos tipos de prescaler de relógio ADC. Determina o factor de divisão do sistema de relógio. Opções:
    • ADC_PRESCALE_2 - Factor de divisão 2.
    • ADC_PRESCALE_4 - Factor de divisão 4.
    • ADC_PRESCALE_8 - Factor de divisão 8.
    • ADC_PRESCALE_16 - Factor de divisão 16.
    • ADC_PRESCALE_32 - Factor de divisão 32.
    • ADC_PRESCALE_64 - Factor de divisão 64.
    • ADC_PRESCALE_128 - Factor de divisão 128.

Funções

  • void adc_init(adc_reference reference, adc_prescale prescale)

Inicializa o ADC. Parâmetros:

  • reference - Selecção da voltagem de referência.
  • prescale - Selecção do prescaler de relógio.
  • unsigned short adc_get_value(unsigned char channel)

Converte o valor analógico do canal ADC especificado num valor digital. Bloqueia o processador. Parâmetro:

  • channel - número do canal ADC (0 a 7).
  • Devolve um valor digital de 10 bits.
  • unsigned short adc_get_average_value(unsigned char channel, unsigned char num_samples)

Converte o valor analógico do canal ADC especificado para digital um número de vez especificadas e calcula a sua média. Bloqueia o processador. Parâmetros:

  • channel - Número do canal ADC (0 a 7).
  • num_samples - Número de amostras para cálculo (1 a 64).
  • Devolve um valor digital com 10 bits.

Exemplo

O ADC é inicializado e os valores de dois canais analógicos são convertidos para digital. O valor do canal 0 é alocado à variável x e o valor médio do canal 1 à variável y.

#include <homelab/adc.h>
 
int main(void)
{
	unsigned short x, y;
 
	// Initializing ADC. Reference voltage from AVCC.
	// Clock is 8 times slower than system clock.
	adc_init(ADC_REF_AVCC, ADC_PRESCALE_8);
 
	// Converting channel 0 value.
	x = adc_get_value(0);
 
	// Converting and averaging channel 1 value.
	y = adc_get_average_value(1, 10);
}
pt/software/homelab/library/adc.txt · Last modified: by 127.0.0.1
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0