-
O primeiro conversor que parte
do sinal analógico para o digital
-
possui três etapas: amostragem,
quantização e codificação.
-
Vamos começar falando
da amostragem.
-
Aqui no gráfico, você
tem um sinal contínuo,
-
esse sinal é chamado
de senoidal,
-
porque ele sobe e desce
continuamente
-
entre dois picos de amplitude,
de valores iguais, inclusive,
-
+10 e -10.
-
Esse sinal também é
considerado contínuo
-
porque qualquer intervalo de tempo
que você considerar aqui no eixo X,
-
seja ele na base
milésima ou milionésima,
-
você vai ter o respectivo valor
da amplitude aqui no eixo Y.
-
Isso significa que esse sinal
analógico possui infinitos valores
-
entre dois pontos quaisquer
que você considerar.
-
A questão aqui é que para eu
passar esse sinal para dentro
-
do microcontrolador, eu preciso
fazer algumas escolhas.
-
A primeira delas é de quanto
em quanto tempo
-
nós vamos tirar uma foto
dos picos desse sinal
-
em amarelo, ou laranja,
que você está vendo aqui.
-
Esse processo de tirar as fotos
de intervalos iguais, ou seja,
-
eu tenho uma cadência definida
-
que eu posso começar aqui
do primeiro pontinho, 0,
-
do 0, 0, valendo 0,
-
ou qualquer outro momento
inicial que eu queira,
-
mas a partir daí eu vou respeitar
um intervalo subsequente,
-
e essa quantidade de intervalos,
essa distância entre os intervalos,
-
vai definir a qualidade
da amostragem.
-
Então, como o próprio nome fala,
amostrar significa pegar amostras
-
e, nesse caso, nós vamos pegar
os picos que a amostra tirar.
-
Então, vamos para
um exemplo aqui.
-
Entre 10 e 20 segundos,
no 15, eu tenho o valor máximo,
-
que é de 10,
amplitude de 10.
-
Então, nesse instante
de 15 segundos,
-
se a amostra coincidir
de ser pega nesse momento,
-
eu vou guardar
o número 10.
-
Vamos imaginar o número 5,
onde é que ele está aqui?
-
Ele está um pouco para a metade
da direita, entre o 0 e o 10,
-
então, provavelmente, ele
está aqui nos 6 segundos,
-
então eu vou guardar o 5.
-
E vamos supor que, entre
o intervalo de 6 até o 15,
-
eu não queira amostrar
mais o meu sinal,
-
o que acontece com todos
esses valores entre o 5 e o 10?
-
Eles são descartados,
portanto, essa primeira decisão
-
de decidir de quanto em quanto
tempo você vai tirar amostras
-
é o primeiro passo importante
para reconstituir esse sinal
-
ao longo da conversão
de digital para analógico,
-
que vai ser a segunda etapa que nós
vamos explicar, daqui a pouco.
-
Ou seja, se você fizer
as escolhas erradas agora,
-
você nunca mais vai conseguir
reconstituir esse sinal bonitinho
-
como ele está aqui na tela,
ele vai ficar meio triangulado,
-
com baixa definição e, às vezes,
até perderá o seu formato senoidal
-
como está aqui, mais
arredondado nos picos.
-
Essa etapa importante da conversão
de analógico para digital,
-
chamada amostragem,
segue uma regra,
-
chama teorema
de Nyquist-Shannon,
-
e esse teorema define que
a quantidade de fotos necessárias
-
para que eu possa
reconstituir o sinal
-
quando eu for convertê-lo
de digital para analógica
-
deve ser pelo menos
a metade do período,
-
ou seja, se o sinal tem um segundo
de duração, de período,
-
cada foto tem que acontecer
em meio segundo, ou seja,
-
menos da metade,
ou da metade para trás.
-
Se você quiser tirar mais
fotos no mesmo intervalo,
-
ou seja, no mesmo período, você vai
ter que ter menos de meio segundo.
-
Por exemplo, quero tirar
três fotos em 1 segundo,
-
então 0,3, eu tiro uma foto,
outro 0,3, eu tiro outra foto,
-
e a terceira foto no 0,3, ou 0,333,
que é uma dízima periódica.
-
Se você pegar, então,
1 e dividir por 3
-
a cada 0,33 segundos,
eu devo tirar uma foto.
-
A questão é se isso é
suficiente para você
-
que está fazendo o projeto
ou fazendo uma solução.
-
Quanto menos
fotos você tirar,
-
porém está dentro
do teorema de Nyquist,
-
menos qualidade você tem,
-
mas ainda assim vai ser possível
recuperar o sinal analógico.
-
E, quanto mais fotos você tira,
mais memória você vai gastar.
-
Então, esse balanço
entre qualidade
-
e capacidade de recuperação
do sinal analógico, lá na frente,
-
é a decisão mais importante
-
que o desenvolvedor
precisa tirar nesse processo.
-
Os chips mais modernos permitem
que o desenvolvedor defina
-
a quantidade de fotos por segundo,
outros chips não permitem.
-
É o caso do ESP32,
-
ele não vai deixar você mexer
na taxa de amostragem,
-
ele vai tirar uma quantidade
fixa das fotos,
-
que vai atender tranquilamente
as suas necessidades lá na frente,
-
quando for desfazer esse sinal
de digital para analógico.
-
Mas, quando você trabalha
com a parte de áudio,
-
os gravadores possuem
taxa de amostragem.
-
Você pode reparar aí
no gravador de microfone
-
ou gravador de vídeo, a taxa
de amostragem é sobre isso,
-
é a quantidade de fotos
que eu tiro por segundo
-
para eu poder recuperar
essa qualidade lá na frente.
-
Vejamos a próxima etapa,
que é a parte de quantização,
-
ou seja, como ficam esses
picos depois que eu amostrei.
-
Esse gráfico que você está vendo
na tela é o resultado da amostragem,
-
a gente chama
isso aqui de "raias".
-
As raias foram retiradas
do sinal analógico.
-
Perceba, aqui, que eu tenho
o 0, depois eu fui para o 10,
-
voltei para o 0, depois para o -10
e assim sucessivamente.
-
Você é capaz de reconstituir esse
sinal aqui como sendo uma senoide?
-
Ou seja, se você ligar
os pontos em cruz vermelha,
-
eu vou ter uma senoide?
-
Lógico que não,
-
porque se você ligar de uma forma,
assim, bem rudimentar, os pontos,
-
você vai acabar tendo triângulos
subindo e descendo,
-
mais que, de uma certa forma,
lembram o sinal senoidal.
-
Então, essa amostragem
está dentro dos requisitos,
-
porém, eu perdi
a qualidade da informação,
-
eu vou ter uma senoide,
porém não na mesma qualidade
-
que era na tela anterior.
-
Essa amostragem foi,
inclusive, arredondada
-
para os degraus conhecidos,
ou seja, nesse caso aqui,
-
eu tenho os degraus 5 e 10,
positivos, e -5 e -10, negativos.
-
Todos os outros itens ou amostras
que tinha ao longo de 0 e 10
-
foram descartados,
-
por isso que a qualidade dessa
senoide é considerada baixa,
-
porém, ainda sim, é uma informação
que dá para trabalhar.
-
Vejamos um próximo gráfico.
-
Nesse gráfico eu tenho
mais amostras retiradas.
-
Agora, perceba que eu continuo
arredondando os picos entre 5 e 10,
-
porém surgiu um componente
novo aqui, em torno de 7,
-
7 positivo.
-
Se você imaginar uma linha
reta aqui, cruzando esses Xs,
-
em segundo lugar, ele vai
passar em torno do 7.
-
A mesma coisa aqui
embaixo, em torno do -7.
-
E esses pontos aqui,
ao serem interligados,
-
você concorda que eles
estão mais fidedignos
-
em relação ao sinal
analógico original?
-
Sim, pode ter
certeza que sim.
-
Então, essa amostragem
está melhor,
-
e a quantização ainda está ruim,
porque o 5 eu tenho o valor, olha,
-
perceba que eu tenho uma linha
no 5 e tenho uma linha no 10,
-
e essa imaginária, que eu pedi para
você pensar e imaginar, não existe,
-
então esses pontos que estão
aqui no meio, entre 5 e 10,
-
serão arredondados
para o 10,
-
forçando então uma amplitude
que não existe.
-
Ou seja, originalmente ela
estava no 7, teve que ir para o 10.
-
A diferença do 7 para o 10
se chama erro de quantização
-
e esse erro de quantização
é possível ser ouvido
-
dependendo da maneira
ou da quantidade de amplitude
-
que foi arredondada, você
consegue ouvir em forma de ruído
-
junto com o áudio
que você gravou.
-
Vejamos, agora, uma maneira de você
entender mais ainda a quantização.
-
Eu vou trazer para você um gráfico
que possui mais elementos
-
entre o 5 e o 10.
-
Nessa tela, entre o 5 e o 10, eu
não vou ter aquele valor no meio,
-
que, aqui, está em torno de 7,5, 8,
está com cara de ser mais um 8.
-
Esse 8, quando
for quantizado,
-
ele vai ter que ser arredondado
para o 10, por quê?
-
Esse X está mais próximo
do 10 do que do cinco.
-
Todas as vezes que um X
ou uma amostra de pico
-
cair bem no meio
do caminho, ou seja,
-
bem no meio do limiar de decisão,
ele sempre é arredondado para cima.
-
É que nem uma nota 7,5.
-
Uma nota 7,5 é arredondada,
-
se eu tiver que trabalhar
com uma casa só,
-
ela vai ser arredondada para 8,
isso é uma convenção internacional.
-
O que você está vendo
nesse gráfico, então, aqui,
-
é uma perda de amplitude, eu vou
ter que arredondar esse 7,5, 8,
-
que a gente ainda não tem certeza
exatamente em que ponto ele caiu,
-
mas ele vai ter que ser
arredondado para 10.
-
E essa diferença
entre a amplitude real
-
para a amplitude que eu
vou ter que forçar ele a ir
-
se chama erro de quantização.
-
Dependendo desse
tamanho de erro aqui,
-
se ele for alguns milivolts, é
possível ouvi-lo em uma gravação.
-
Você vai ouvir uma música
e um chiado
-
parecendo um chiado
de microfone com mau contato.
-
Isso graças ao erro
de quantização
-
que foi inserido aqui
no processo de quantização,
-
já que nós não temos
outra alternativa
-
a não ser o 0, o 5 e o 10 para
representar os picos das amostras.
-
Em um próximo gráfico,
-
você vai verificar uma quantização
um pouco mais refinada,
-
onde eu vou colocar novos
elementos entre o 0 e o 10.
-
Observando esse gráfico,
agora que eu estou com 3 bits,
-
e eu já vou explicar o que
significa esses 3 bits,
-
eu, agora, acrescentei
esse elemento aqui,
-
então antes ele não existia,
e ele está aqui no 7,5,
-
portanto, aquele 8 que nós
tínhamos como amostra,
-
ao invés de ir para o 10, ele teria
que andar 2 degraus, ou 2 unidades,
-
o 8 tinha que pular
para o 9 e chegar no 10.
-
Ele vai ser arredondado para baixo,
para o 7,5, porque está mais perto,
-
8 está mais perto
de 7,5 do que do 10.
-
Então, o computador decide
fazer esses arredondamentos.
-
Agora, o que eu tenho?
-
Todos os Xs verdes são
as amplitudes arredondadas
-
pelo processo de quantização.
-
Note que, agora, eu vou
ter um erro de quantização
-
um pouquinho melhor para
as amostras aqui do meio, ok?
-
Note que a amostra do meio
foi arredondada para baixo,
-
ela perdeu o valor de
10 que, antes, eu tinha.
-
E por que isso aconteceu?
-
Porque eu estou
trabalhando com 3 bits.
-
3 bits têm 8 degraus,
vamos contar.
-
Eu tenho, aqui, o primeiro
azul, é um degrau,
-
depois o segundo azul,
o segundo degrau,
-
o terceiro, o quarto,
o quinto, conta no 0,
-
o sexto, o sétimo e o oitavo.
-
Então, é só você fazer 2, que é
a base binária, elevado a 3, dá 8.
-
Então, o +10 não tem representação
na nossa quantização.
-
Moral da história: todos
os valores para cima de 7,5
-
serão arredondados
para esse teto,
-
criando, assim, um erro
de quantização
-
até mais considerável
para essa amostra do meio.
-
Até que as amostras das laterais
não sofreram tanto,
-
como sofreram
no caso anterior.
-
Nesse caso, eu resolvi
as amostras laterais,
-
mas eu estraguei ainda
mais a amostra do meio.
-
Mas não tem jeito, pessoal,
-
ainda mais quando você tem
chips com limitação de recursos.
-
Mas não se desanime,
3 bits é muito pouco,
-
mal tem chip no mercado
que trabalha com só 3 bits.
-
A ideia, aqui, é para você
entender o conceito
-
e se aprofundar cada
vez mais nessa questão,
-
pois as bases de dados
das inteligências artificiais
-
nascem desse processo,
de quantizar, ou melhor,
-
de converter o analógico
para digital.
-
Decisões erradas tomadas
nesse momento poluem a base,
-
deixam a base um pouco
mais pobre de informação
-
e, consequentemente,
o seu modelo de IA
-
não vai se comportar como
a realidade do seu projeto.
-
Agora, vamos evoluir um pouco
mais o nosso quantizador,
-
vamos colocar mais
degraus aí nessa escada,
-
vamos trabalhar
com 6 bits.
-
Olhando para a tela,
nós temos, agora, 6 bits.
-
Se você fizer na calculadora,
2⁶ vai dar 64 degraus,
-
que estão aqui organizados
em cada pontinho azul e cinza,
-
aqui na sua tela.
-
Perceba, agora, que, embora
eu ainda não tenha o 10 lá,
-
cheguei muito mais
próximo que o resultado
-
do quantizador
de 3 bits anterior
-
e, por isso, meu erro de quantização
está bem mais comportado,
-
mas ainda existe.
-
Então, o vermelho é
o ponto amostrado
-
lá do meu sinal
analógico original,
-
e o ponto verde é
o resultado da quantização.
-
Tudo isso aqui que vocês
estão vendo, pessoal,
-
é o que está acontecendo dentro
de um elemento chamado conversor,
-
lá no ESP32, ou qualquer
outro dispositivo
-
que converte esse sinal
analógico para digital.
-
O legal é que as amostras
aqui perto do 5
-
não sofreram arredondamento,
porque, ainda bem,
-
coincidentemente,
caiu um degrau no 5.
-
Então, as amostras que nós
escolhemos trabalhar
-
só estão sendo arredondadas
de forma considerável
-
aqui nos pontos mais altos.
-
Outra curiosidade que eu queria
chamar a atenção de vocês
-
é o seguinte: a parte de baixo
do gráfico sempre vai ter
-
um número par de degraus,
o que significa isso?
-
Se dois 2⁶ dá 64, então 32 degraus
estarão aqui na parte de baixo
-
e 31 estarão na parte de cima,
e, como o 0 conta como um degrau,
-
ele rouba um degrau da parte
superior, da parte positiva.
-
Por isso que não
encostou no 10 ainda,
-
a quantidade de degraus
que eu tenho nesse sistema,
-
que é de 64, ainda
não contemplou o 10,
-
mas contempla sempre
a parte negativa.
-
Então, ele sempre começa
do valor menos negativo
-
e tenta se aproximar do valor
mais positivo, se sobrar degrau,
-
fazendo essa seguinte, repetindo,
fazendo a seguinte conta:
-
metade é para baixo
e a metade menos 1 para cima,
-
o menos 1 por causa do 0.
-
Você viu, então, que quanto mais
bits eu tenho no quantizador,
-
mais próximo dos sinais analógicos,
dos picos dos sinais analógicos,
-
eu chego.
-
Mas eu estou, também,
aumentando a quantidade
-
de memória necessária
para guardar esses dados.
-
Essa é a decisão que eu
estou falando para vocês,
-
quanto você tem de memória
e quanto de qualidade você precisa
-
para que o seu sistema funcione
de uma forma bem redondinha.
-
Vamos para mais
um exemplo de gráfico.
-
Nesse gráfico, nós temos
o topo das opções, que é 12 bits,
-
e eu estou falando
do ESP32.
-
São tantos degraus
-
que parece que o fundo
está colorido de forma azul.
-
2¹² dá 4096 degraus,
-
onde nós teríamos 2048
na parte de baixo
-
e 2048 - 1 na parte superior,
que é a parte +10.
-
Lembrando lá que o -1
é por conta do 0,
-
que eu conto como
um degrau da parte superior.
-
Graças a essas 4096
possibilidades de arredondamento,
-
não houve arredondamento
dos picos da amostra original.
-
Ou seja, se você reparar aqui,
onde tinha o ponto vermelho,
-
o X vermelho, agora tem um verde,
e eles estão sobrepostos.
-
É que não dá
para ver o vermelho
-
porque o verde fica
em cima do vermelho,
-
o computador vai lá e colore
com a última opção de cor.
-
Portanto, nesse caso, não
houve erro de quantização,
-
eu estou mantendo fidedignos
os picos da amostra
-
e quando eu for reconstituir esse
sinal do digital para analógico,
-
eu não vou ter problemas
com o erro de quantização.
-
Posso ter problemas
com a quantidade de amostras
-
que foram tiradas
ao longo do tempo,
-
mas de quantização,
não vou ter.
-
Portanto, pessoal, toda vez que você
estiver trabalhando com ESP32,
-
não se preocupe
com a quantização,
-
porque ele vai tirar
4096 níveis diferentes
-
entre o valor menor
para o valor maior,
-
ou seja, do valor mais negativo
até o valor mais positivo.
-
Esses 4096 são suficientes
para você trabalhar
-
com qualquer sinal analógico
que se preze no ramo de IoT.
-
Lembrando que o ESP32 trabalha
com 3,3 volts de amplitude máxima,
-
então você vai ter 3,3 volts
divididos por 4096.
-
Essa vai ser a resolução
dos degraus
-
quando você estiver lendo
-
as informações do seu
sinal analógico.
-
Vamos para a última etapa
do conversor analógico para digital.
-
Você viu a amostragem,
viu quantização,
-
agora vamos falar
da codificação.
-
E, para isso, eu vou
te mostrar uma tela
-
para exemplificar
didaticamente o resultado.
-
Essa tabela mostra para você
como a memória do dispositivo
-
vai decodificar, ou melhor,
codificar as amostras
-
que estão vindo
do quantizador.
-
Aqui na parte superior, eu
tenho os pesos dos bits.
-
Lembre-se que o ESP32 tem 12 bits,
então eles estão organizados aqui,
-
de 0 até chegar em 11,
de 0 a 11 dá 12.
-
E coloquei o peso de cada
bit aqui em cima
-
para facilitar
a conversão para você,
-
já que isso aqui já é um assunto
conhecido de vocês.
-
E, aqui no primeiro
bit, eu tenho 1,
-
no segundo bit, eu tenho
o dobro de 1, que é 2,
-
o terceiro bit é
o dobro de 2, que é 4,
-
e assim sucessivamente,
até chegar em 2048.
-
Esses 12 bits que nós temos aqui,
que representam o quantizador,
-
ou seja, 4096 degraus, ele
tem 2048 na parte de baixo,
-
que é a parte... desculpa está
invertido meu quadro aqui,
-
2048 na parte de cima
e 2047 na parte de baixo,
-
que a parte negativa, e o 0
considera como a parte positiva.
-
Então, 2048 + 2048
vão dar os 4096.
-
Pois bem, o meu decodificador
vai fazer o quê?
-
Ele vai, então, organizar a memória
de 12 bits em um gaveteiro
-
que que tenha
4096 gavetinhas.
-
Essa primeira linha aqui, tudo 0,
indica a primeira gavetinha.
-
E eu vou salvar
o valor que está lá,
-
porque esses sinais
-10, -7,5 e -5,
-
estão representando aquele
primeiro sinal analógico
-
para facilitar o entendimento
dessa tabela.
-
Em vez de eu colocar aqui vários
valores de degraus do valor original,
-
eu estou colocando
esse mais simples
-
para não deixar
a tabela tão poluída.
-
E de fácil entendimento.
-
Então vamos lá, se eu tenho
-10 na minha amostra original,
-
eu tenho condição
de aguardar esse valor,
-
porque o quantizador
começa na parte negativa,
-
ele considera o sinal
mais negativo, sempre.
-
É só o mais positivo que nem
sempre eu consigo pegar,
-
porque se ele tiver poucos degraus,
ele vai descartar mesmo,
-
mas se eu tiver muitos degraus,
ele consegue pegar o +10.
-
O -10 vai ser salvo, porque ele
é o menor dos menores valores.
-
Então, ele vai salvar onde?
-
No, 0, 0, 0, 0, tudo 0,
porque é a primeira gaveta.
-
A próxima gaveta
é a gaveta 1,
-
porém, eu não tenho
amostra para além do -10
-
ou antes do -10,
então eu não salvei.
-
A mesma coisa acontece na segunda
posição de memória, eu não salvei,
-
na terceira, eu não salvei,
na quarta, e assim sucessivamente,
-
até coloquei reticências
aqui, não salvei.
-
Então, eu não preenchi
aqui justamente por isso,
-
porque aqui tem
umas reticências,
-
são n valores até
chegar no 512.
-
O que é esse 512 aqui?
-
É o 512 degrau, então eu comecei
lá do degrau 0 e subi até o 512.
-
Só que, na hora
que eu cheguei no 512,
-
eu encontrei uma amostra
conhecida minha do sinal analógico,
-
que é -7,5.
-
Pois bem, o -7,5 está sendo
salvo na posição 512,
-
por isso eu coloquei 1 aqui
em 512 e 0 nas demais.
-
Portanto, turma, esses valores
que vocês estão vendo aqui,
-
esses 0 e 1 organizados
aqui na tabela,
-
não representam
o valor da amplitude,
-
mas sim a posição da memória
que eu vou guardar,
-
e aí, é esse o papel
do codificador,
-
o codificador de organiza
as amostras originais,
-
que foram arredondadas,
na posição de memória
-
e isso é codificar.
-
Depois, o que eu
vou fazer na saída?
-
Eu vou ler as posições de memórias
que foram organizadas
-
e, assim, eu vou ter
a respectiva amostra
-
no respectivo ponto
em que ela foi criada.
-
E, assim, eu consigo
desfazer a amostragem
-
e a codificação, desfazendo,
ou melhor, refazendo
-
a leitura das memórias
ou da posição das memórias
-
no exato momento
que ela foi guardada.
-
Então, nesse caso aqui,
como ela é crescente,
-
então a senoide sai
do -10 vai para o -7,5,
-
então ela está
em uma ordem.
-
Mas vamos supor que ela
tivesse voltado para -10
-
logo depois do 7,5.
-
Então, no lugar do -5,
eu colocaria -10,
-
porque ela voltou
para o -10.
-
Então, note, eu não voltei
a posição de memória
-
porque ela foi sendo crescente,
mas as amplitudes podem,
-
porque elas representam
-
o valor que eu vou colocar
dentro dessa gaveta.
-
Então, a gaveta tem dois dados:
a posição dela e o conteúdo dela.
-
Os conteúdos salvos são
esses marcados por salvo
-
e os conteúdos não salvos
são porque, de fato,
-
nós não temos
no sinal analógico,
-
então eu simplesmente não
tenho, então eu descarto.
-
E, quando eu
chegar lá no +10,
-
que é a última amostra
do meu sinal analógico,
-
eu vou marcar a posição
com tudo "1",
-
porque eu acabei completando
as posições das memórias
-
quando eu fiz um ciclo, ou
um período do meu sinal original.
-
Depois, eu volto a repetir.
-
Então, na hora que eu
começar a cair de +10,
-
eu caio para +7,5, porque
a senoide vai voltar,
-
então eu faço o quê?
-
Eu coloco lá nas posições
subsequentes.
-
Então 1, 1, 1, 1 é +10,
-
quando eu for colocar o +7,5,
eu ponho lá 1, 1, 1, 0, 0, 0,
-
e assim sucessivamente.
-
Quando eu leio o +5,
vai estar no 1, 1, 0, 0,
-
porque é a posição do bit 3072,
que é a soma de 2048 lá em cima
-
com esse 1 aqui, 1024.
-
Então pega esse número aqui
que é o nível do quantizador,
-
transforma ele em binário
-
que você vai ter
as amostras guardadas.
-
Essa forma de codificar
indica que o ESP32
-
está organizando as amostras
de cada amplitude da senoide
-
dentro da memória.
-
Quando eu for ler essas amostras
do digital para o analógico,
-
eu leio ela nas ordens
-
e vou conseguir reconstituir
o respectivo pico.
-
E, assim, se torna
analógico novamente,
-
podendo comunicar com os humanos,
já que nós todos somos analógicos.