Você está na página 1de 32

Microcontroladores de

Microprecessadores
Aula 08
Curso Engenharia de Controle e Automação

Universidade Paulista

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

Família de microcontroladores Atmel


ATMEGA 328 P
8 bits
Baixo consumo elétrico

Ciclos de gravação / exclusão: 10.000 Flash / 100.000 EEPROM

Retenção de dados: 20 anos a 85 ° C / 100 anos a 25 ° C


8 canais de 10 bits ADC no Encasulamento TQFP

6 canais de 10-bit ADC no encapsulamento DIP

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

CONVERSOR A/D

Objetivo do conversor AD é transformar uma


grandeza analógica (tensão) em um valor
digital.

Todo conversor AD opera sob uma faixa de


tensão definida, por exemplo de 0 a 5V. Além
disto, possuem uma resolução de leitura
específica, por exemplo de 8 bits.
Os valores de 0 a 5V serão representados em
8 bits, sendo:
0000 0000 – Representa 0
1111 1111 – Representa 5V

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

A variação de tensão dentro desta faixa costuma ser linear. Portanto, cada incremento
de 1 bit, neste caso, representa um incremento de ~20mV (5V/256 possibilidades).
Para convertendo o seguinte sinal
analógico de tensão. Para um conversor de 8bits (~20mV por bit)

DDP binário
0V 0000 0000
20mV 0000 0001
40mV 0000 0010
60mV 0000 0011
80mV 0000 0100
100mV 0000 0101

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

Devido essa característica de funcionamento, a onda reproduzida digitalmente fica


com quinas.
A imagem mostra um possível sinal amostrado da senóide da imagem anterior,
onde os valores do eixo y são valores de uma conversão de 10bits.

Quanto maior a resolução, mais suaves são as quinas.


A o gráfico apresentado não representa a conversão real, pois, na realidade,
haveriam muito mais degraus do que o verificado.

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

CONVERSOR AD PRESENTE NO MICROCONTROLADOR ATMEGA328P

Utilizando um conversor DA tenha uma resolução


de 8 bits e que ele opere de 0 a 5V.

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

CONVERSOR AD PRESENTE NO MICROCONTROLADOR ATMEGA328P

Entrada Conversor D/A Saída


Digital Analógica

Tensão de entrada de 25mV (em 8 bits de resolução ela será igual à 0000 0010).
O bloco lógico envia pro conversor DA 0000 0000 e recebe 1 do comparador, pois 25mV
é maior que 0V.
Ele repete o passo 1 e envia 0000 0001 e recebe 1 do comparador, pois 25mV > ~20mV.
Ele repete o passo 1 novamente e envia 0000 0010. Desta vez, recebe 0 do
comparador, pois ~40mV > 25mV.
Com isto, o bloco lógico é capaz de saber que a tensão de entrada está entre ~20mV e
~40mV.
Portanto, ele pega o valor binário que foi enviado ao conversor DA (0000 0010) e coloca
na saída.
© UNIP 2020 all rights reserved
Técnicas de Desenvolvimento de Software

CONVERSOR A/D DO ATMEGA328

Como pode ser observado na figura


acima, o bloco do conversor A/D
possui fonte separada para a parte
analógica, o pino AVcc.
Essa tensão não pode variar mais
do que +/-0,3V de Vcc.

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

ADCSRA – ADC Control and Status Registe A

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

ADCSRA – ADC Control and Status Registe A

Bit 7 – ADEN: ADC Enable


Habilita o conversor A/D quando em nível lógico 1. Quando ADEN = 0 o
conversor será desligado e caso isso ocorra enquanto uma conversão em
progresso, a mesma será terminada antes de desligar o conversor A/D.

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

ADCSRA – ADC Control and Status Registe A

Bit 6 - ADSC: ADC Start conversion


No modo de conversão simples, ADCS = 1 fará iniciar a conversão, já no modo
de conversão contínua será iniciada a primeira conversão. ADCS vai para nível
lógico zero quando a conversão é finalizada. Se ADCS for escrito em nível lógico
1 ao mesmo tempo que ADEN, a primeira conversão levará 25 ciclos de clock ao
invés dos 13 Ciclos de uma conversão.

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

ADCSRA – ADC Control and Status Registe A

Bit 5 – ADATE: ADC Auto Trigger Enable


Habilita o auto dispara, quando esse bit estiver em 1. O conversor iniciará uma
conversão quando uma borda de subida ocorrer no sinal de disparo. O sinal de
disparo é selecionado nos bits ADTS do registrador ADCSRB
.

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

ADCSRA – ADC Control and Status Registe A

Bit 4 – ADIF: ADC Interrupt Flag


Sinaliza o final de uma conversão e os registradores de dados são atualizados..

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

ADCSRA – ADC Control and Status Registe A

Bit 3 – ADIE: ADC Interrupt Enable


Habilita a interrupção no final da conversão. Porém os bits I do
registrador SREG deve estar ligado, para que ocorra a interrupção.

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

ADCSRA – ADC Control and Status Registe A

Bit 2:0 – ADPS2:0: ADC Prescaler Select Bits


Configura o fator de divisão entre o clock do sistema e a entrada de clock do
ADC.

Os valores possíveis
© UNIP 2020 all rights reserved
Técnicas de Desenvolvimento de Software

ADCSRB – ADC Control and Status Register B

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

Seleciona qual entrada analógica será conectada ao conversor.

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

Modos de operação
Conversão simples
É necessário a inicialização de cada conversão. Quando a conversão é finalizada os
registradores de dados são preenchidos e o bit ADIF é colocado em 1.
Para iniciar uma conversão deve-se ligar o bit ADSC. Esse bit permanecerá em 1
enquanto a conversão está em processo, e passará para 0 no final da conversão.

Conversão contínua
No modo de conversão contínua, você iniciará a primeira conversão e o conversor
iniciará automaticamente as próximas conversões, logo após ser completada a
anterior.

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

CLOCK

O clock recomendado para o conversor AD do Atmega328 é de 50KHz a 200 KHz para


uma resolução de 10 bits. O bloco prescaler controla do clock do conversor A/D, assim o
clock do conversor A/D será uma fração do clock do oscilador principal, conforme o fator
do prescaler.

Para um cristal de 16 MHz, o clock do conversor A/D pode


assumir os seguintes valores:

16 MHz / 2 = 8 MHz
16 MHz / 4 = 4 MHz
16 MHz / 8 = 2 MHz
16 MHz / 16 = 1 MHz
16 MHz / 32 = 500 kHz
16 MHz / 64 = 250 kHz
16 MHz / 128 = 125 kHz

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

RESOLUÇÃO

O conversor A/D do Atmega328 possui 10 bits de resolução, ou seja, os valores entre 0


e Vref serão convertidos entre 0 e 1023.

Se a entrada do conversor AD é 0 V, o resultado da conversão é 0;


Se a entrada do conversor AD é 5 V, o resultado da conversão é 1023;

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

RESOLUÇÃO

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

CONVERTENDO DA TENSÃO DE SAÍDA DO SENSOR EM TEMPERATURA


Os sinais de saída de um sensor de temperatura são analógicos. A utilização destes
sensores com os microcontroladores deverá ser feita por meio do conversor Analógico
Digital (ADC).
Portanto, é necessário que sejam construídas as relações entre a tensão medida (sinal
do sensor), o valor digital resultante e finalmente a temperatura correspondente.

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

Portas Analógicas

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

ENTENDENDO AS ENTRADAS ANALÓGICAS

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

RESOLUÇÃO

Vref: tensão de referência do conversor A/D


n: número de bits do conversor.
FAIXA DINÂMICA
É a faixa de amplitude de operação do sinal
analógico, em geral uma tensão.
RESOLUÇÃO
É a menor quantidade que pode ser
convertida, ou resolvida, dentro da faixa
dinâmica do sinal de entrada.

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

TEMPO DE CONVERSÃO
É o tempo necessário para se obter o valor na saída (digital para o A/D; analógico
para o D/A) a partir do momento em que o sinal de entrada foi aplicado e iniciado o
processo de conversão.

TEMPO TOTAL = TEMPO DE AQUISIÇÃO + TEMPO DE CONVERSÃO

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

ERRO DE LINEARIDADE
Expressa o desvio do resultado de conversão de uma reta ideal

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

A/D do microcontrolador ATmega328


Possui 10 bits de resolução, a sua tensão de entrada pode variar de 0 V até o valor
de VCC e possui referência interna selecionável de 1,1 V.
Dessa forma quando está trabalhando com a referência em VCC o menor valor
que pode ser lido será:
Resolução = 5 V/1024 = 4,88 mV
Esse é o valor de degrau para uma conversão em 10 bits com referência em 5 V.

Caso trabalhe com a referência interna de 1,1V a resolução será:

Resolução = 1,1 V/1024 = 1,07 mV

Se a referência externa for selecionada, a resolução dependerá do valor de


tensão aplicada ao pino AREF.

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

Funções para Entradas Analógicas do microcontrolador ATmega328

analogReference(tipo)
Configura a referência de tensão para a conversão
analógica/digital, usando esse valor como o máximo
para a entrada analógica.

Os tipos possíveis de configurações são:


DEFAULT: a tensão padrão para conversão é a tensão de alimentação da placa. 5 V
para placas alimentadas com 5 V e 3,3 V para placas alimentadas com 3,3 V.

INTERNAL: referência interna de 1,1V no Atmega168 e Atmega328, e 2,56 V


INTERNAL1V1: referência de 1,1V.

INTERNAL2V56: referência interna de 5,6 V.

EXTERNAL: referência de tensão aplicada no pino AREF (valor entre 0 e 5V).

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

TESTANDO UM AD
/*
* Entrada analógica
* Liga e desliga um LED conectado ao pino digital XX. O tempo
* que o LED permanece ligado ou desligado depende do valor
* obtido pelo analogRead().
*/
int potPin = XY; // selecione o pino de entrada ao potenciômetro
int ledPin = XX; // selecione o pino ao LED
int val = XY; // variável a guardar o valor proveniente do sensor

void setup() {
pinMode(ledPin, OUTPUT); // declarar o pino ledPin como saída
}
void loop() {
val = analogRead(potPin); // ler o valor do potenciômetro

digitalWrite(ledPin, HIGH); // ligar o led


delay(val); // espera tempo ajustado no potenciometro
digitalWrite(ledPin, LOW); // desligar o led
delay(val); // espera tempo ajustado no potenciometro
}

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

Exemplo
Construir a simulação no Proteus do algoritmo apresentado.

© UNIP 2020 all rights reserved

Você também pode gostar