730 likes | 1.18k Views
AULA 05: Entrada Analógica. Sistemas Embarcados. Conversor Analógico/Digital (A/D). Sinais Digitais e Analógicos. A comunicação de dados através de sinais digitais : maior imunidade a ruídos , maior robustez e maior confiabilidade;
E N D
AULA 05: Entrada Analógica Sistemas Embarcados
Conversor Analógico/Digital (A/D) professor
Sinais Digitais e Analógicos • A comunicação de dados através de sinais digitais: maior imunidade a ruídos, maior robustez e maior confiabilidade; • Processamento de sinais digitais: mais eficiente do que o processamento de sinais analógicos microprocessadores; • O armazenamento dos dados digitais é mais robusto; • Então, por quê ainda usamos sinais analógicos? professor
Sinais Analógicos • Uma das razões é que, em muitos casos, os sinais de saída dos sensores são analógicos. Ex.: termopar, PT-100, célula de carga, etc. • Além disso, há padrões industriais de comunicação de dados que usam sinais analógicos, como 4 a 20mA ou 0 a 10 V. • Por essas razões, o estudo dos Conversores Analógicos/Digitais (ADC) e Digitais/Analógicos (DAC) é de grande importância. professor
Sinais Analógicos • Sinais Contínuos no tempo são representados por funções de variáveis contínuas. Por exemplo: sinais de voz, de áudio, eletrocardiograma, etc. • A Figura ilustra um trecho de sinal contínuo no tempo e que é descrito por x(t) = cos(π t/10). professor
Sinais Analógicos • A informação muitas vezes está representada pela amplitude do sinal analógico. Este é o caso dos sinais resultantes de termopares, strain-gages, LDRs, etc. Também é o caso dos padrões 4 a 20mA e 0 a 10V. • Por isso, nos interessa converter a amplitude de um sinal analógico num valor que possa ser representado na forma digital (formato binário). professor
Conversão A/D professor
Etapas de Conversão A/D • O procedimento de conversão envolve as etapas de Amostragem, Retenção, Quantificação e Codificação. professor
Amostragem • A amostragem consiste em tomar amostras de um sinal contínuo regularmente espaçadas no tempo. • Gera um sinal discreto no tempo correspondente ao sinal contínuo original. • A frequência de amostragem é definida como: • e • Onde: • fs - frequência de amostragem em Hz; • ws - frequência de amostragem em rad/s; • Ts - período de amostragem em s. professor
f(t) t Amostragem • O gráfico ilustra a amostragem de um sinal cossenoidal. professor
Amostragem • O sinal amostrado é representado por uma sequência de valores cujas amplitudes correspondem às amplitudes instantâneas do sinal original no momento da realização da amostragem. professor
Amostragem • Um circuito amostrador faz a discretização de um sinal. professor
Amostragem • Note que o processo de Amostragem introduz um erro na representação, pois variações que ocorrem entre as amostras não são percebidas. • É natural supor que quanto maior for o número de amostras em determinado intervalo, melhor será a representação discreta do sinal. • Teorema da Amostragem de Shannon: • A taxa de amostragem para um sinal cuja componente de maior frequência tem frequência f0 deve ser de, pelo menos, 2f0. professor
Retenção • Durante o processo de conversão A/D o sinal deve ser mantido num valor constante na entrada do circuito conversor. Esse processo é chamado de retenção. • Retentor de Ordem Zero (Zero Order Hold): professor
Quantificação • Quantificação é o processo de representação de uma fonte de dados analógicos num conjunto finito de níveis. • Este processo introduz uma distorção e perda de informação. • Pode ser uniforme (em que o passo de quantificação é constante) ou não uniforme. • Nos conversores A/D a quantificação é uniforme e o número de níveis está diretamente relacionado ao número de bits do conversor: o erro de quantificação será tão menor quanto maior for o número de bits usados para representar o valor. professor
Quantificação professor
Codificação • Consiste em converter os valores de tensão amostrados para valores correspondentes à escala disponível no conversor A/D. • Ex: sinal de vídeo de 0 a 5V com um conversor A/D de 8 bits: • Quantificação = 5/(28) = 0,0195V por nível. • Codificação = cada nível vale 1 unidade binária. professor
Codificação professor
Breve revisão de Amp.Ops. • Sem realimentação, funcionam como comparadores: • Se V1 > V2 => saída = V+ (tensão de alimentação +) • Se V2 > V1 => saída = V- (tensão de alimentação -) professor
Breve revisão de Amp.Ops. • Com realimentação negativa: • Curto-circuito virtual entre as entradas inversora e não-inversora. professor
Breve revisão de Amp.Ops. • Buffer de corrente, ou seguidor de tensão: • Curto-circuito virtual entre as entradas inversora e não-inversora faz com que a tensão de saída seja igual à da entrada; • Pode aumentar a capacidade de fornecimento de corrente de alguns circuitos, como redes de resistores. professor
Breve revisão de Amp.Ops. • Podem funcionar com realimentação negativa nas configurações inversora e não-inversora: professor
Breve revisão de Amp.Ops. • Amplificadores a diferenças e somador: professor
Breve revisão de Amp.Ops. • Integrador professor
Breve revisão de Amp.Ops. • Derivador professor
Conversor A/D Flash professor
Conversor A/D Flash • Também chamado de Paralelo, Simultâneo ou com Comparador. • É extremamente rápido; • Saída possui sempre o sinal de entrada; • Circuito pode ser excessivamente grande se o número de bits for alto: 2n – 1 comparadores para um conversor de n bits; • Precisa de sinal de tensão de referência externa. professor
Conversores A/D de Rampa em Escada professor
Conversores A/D de Rampa em Escada • Requer pouco hardware e é barato; • Tempo de conversão depende do valor do sinal de entrada e pode ser muito longo: até 2n períodos de clock para um conversor de n bits; professor
Conversor A/D de Aproximações Sucessivas professor
Conversor A/D de Aproximações Sucessivas • Utiliza uma estratégia de conversão diferente; • Inicialmente o circuito de controle coloca na entrada do conversor D/A um valor correspondente a metade do fundo de escala. Por exemplo: 1000; • A tensão gerada pelo DAC é, então, comparada com a tensão de entrada: se for maior, o valor binário é reduzido; se for menor, o valor é aumentado; • O aumento e a redução do valor binário é sempre tal que a mudança em volts corresponde à metade da mudança anterior; • Com tal estratégia, um conversor de n bits leva apenas n ciclos de clock para realizar uma conversão completa. professor
Conversor A/D de Aproximações Sucessivas professor
Conversor A/D do ATmega328P • O ATmega328P possui um conversor A/D de aproximações sucessivas. • Resolução: 10 bits (1024 intervalos); • Precisão: +/- 2 LSB; • 6(8) canais multiplexados; • Entrada: 0 a Vcc • Conversão simples ou contínua; • Converesão em modo sleep para redução de ruído; • Interrupção por fim de conversão. professor
ADC – Alimentação • O pino AVcc deve ser alimentado mesmo que o conversor A/D não seja utilizado. • O fabricante recomenda ligação através de um filtro para aumentar imunidade a interferências durante a conversão. professor
ADC – Circuito de Entrada • A amostragem consiste na carga do capacitor: tempo de amostragem depende do circuito externo; • Otimizado para circuitos com impedância <= 10kΩ; • Componentes maiores que fADC/2 não devem existir: sinal deve ser filtrado externamente. professor
ADC – Referência • A referência de tensão para o conversor A/D estabelece o nível de tensão associado ao valor digital máximo (1023). • A referência pode ser: • Vcc (5V); • Interna (1,1V no ATmega328); • Externa (pino AREF: entre 0 e 5V). professor
ADC – Funções do Arduino • Basicamente, existem duas funções para realização de leitura de sinais analógicos no Arduino: analogReference(tipo); • tipo DEFAULT, INTERNAL, EXTERNAL. analogRead(pino); • pino A0, A1, A2, A3, A4, A5. professor
Pinos de Entradas Analógicas professor
ADC – Considerações importantes • O comando analogRead() não irá funcionar corretamente se um pino tiver sido previamente selecionado como saída. • Nesse caso, o pino deve ser novamente configurado como entrada antes que o comando analogRead() seja executado. • Caso o pino tenha sido colocado em nível alto (HIGH) como saída, ao ser configurado como entrada ele terá o resistor de pull-up conectado. • Por isso, coloque o pino em nível baixo antes de configurá-lo como entrada. professor
ADC – Considerações importantes • O fabricante do ATmega alerta contra a troca de canais do conversor A/D num curto intervalo para leitura de valores analógicos em pinos diferentes. • A troca de canais causa ruído elétrico e introduz erros no processo de conversão. • Por isso, deve-se introduzir algum intervalo entre a leitura de pinos analógicos diferentes. • Mesmo depois de manipular pinos analógicos em modo digital, é aconselhável acrescentar um pequeno intervalo antes de executar a função analogRead() em outros pinos. professor
Prática 1: Detector de EMF • http://www.aaronalai.com/emf-detector professor
Prática 1: Detector de EMF • #define sample 300 • float val; • int array1[sample]; • unsigned long averaging; • void setup() { • Serial.begin(9600); • pinMode(A5, INPUT); • digitalWrite(A5, LOW); // Qual é a função desta linha? • } • void loop() { • for(int i = 0; i < sample; i++){ • array1[i] = analogRead(A5); • averaging += array1[i]; • } • val = averaging / sample; • val = constrain(val, 0, 255); • Serial.println(val); • averaging = 0; • } professor
Prática 2: Aquisição de Dados • Faça um programa que realize a leitura do valor analógico do pino A0 e transmita o valor convertido para o computador via porta serial. • Funcionamento: ao ser energizado, o programa deve mostrar a mensagem de menu: Digite C para começar e P para parar. • Ao digitar C, o usuário passa a receber os dados da leitura analógica a cada 100ms. • Ao digitar P, o Arduino cessa a transferência dos dados e imprime a mesma mensagem na tela. professor
Exemplo: Leitura de Teclado Matricial professor
Exemplo: Leitura de Teclado Matricial professor
Exemplo: Aquisição de Dados • int knockSensor = A0; • int val = 0; • void setup() { • Serial.begin(9600); • } • void loop() { • val = analogRead(knockSensor); • Serial.println(val); • delay(100); • } professor
Exemplo: Aquisição de Dados http://www.blendedtechnologies.com/realtime-plot-of-arduino-serial-data-using-python/231 professor
Exemplo: Aquisição de Dados professor
Exemplo: Aquisição de Dados http://www.nossosrobos.blogspot.com.br/2011/10/arduino-com-matlab.html professor