-
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, 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 senóide?
-
Ou seja, se você ligar
os pontos em cruz vermelha,
-
eu vou ter uma senóide?
-
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 senóide,
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
senóide é 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 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 contador.
-
Vamos colocar mais degraus
aí nessa escada.
-
Vamos trabalhar com seis bits.
-
Olhando para a tela,
nós temos agora seis bits.
-
Se você fizer na calculadora dois
elevado a seis, vão 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 dez, lá,
cheguei muito mais próximo
-
que o resultado
do quantizado de três 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ê está vendo,
pessoal, é o que está acontecendo
-
dentro de um elemento chamado
conversor, lá no SP 32
-
ou qualquer outro dispositivo
que converte esse sinal
-
analógico para digital.
-
O legal é
que as amostras aqui perto do cinco
-
não sofreram arredondamento
porque ainda bem,
-
coincidentemente
caiu um degrau no cinco.
-
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 que
-
a parte de baixo do gráfico sempre
-
vai ter um número par de degraus.
-
O que significa isso?
-
Se dois elevado a seis dá 64,
então 32 degraus estarão aqui
-
na parte de baixo
e 31 estarão na parte de cima.
-
E como o zero conta como um degrau,
-
ele rouba um degrau
da parte superior da parte positiva.
-
Por isso que não encostou no dez
ainda A quantidade de degraus
-
que eu tenho nesse sistema,
que é de 64,
-
ainda não contemplou dez, 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 -1 para cima, ou -1
por causa do zero.
-
Você viu então que quanto mais bits
eu tenho no quantificador,
-
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.
-
E essa é a decisão
que eu estou falando para vocês.
-
Quanto você tem de memória
e o 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 bytes
e eu estou falando do SP 32.
-
São tantos degraus que parece que
o fundo está colorido de forma azul.
-
Dois Elevada 12 dá 4096 degraus,
-
onde nós teríamos 2048
na parte de baixo
-
e 2048 -1
-
na parte superior,
que é a parte mais dez.
-
Lembrando lá que o -1
é por conta do zero
-
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 a
onde tinha o ponto vermelho
-
ou x vermelho, agora tem um verde
e eles estão sobrepostos.
-
É que não dá pra ver o vermelho
porque o verde fica em cima
-
do vermelho.
-
O computador vai lá e é colorido
com a última opção de cor.
-
Portanto, nesse caso não houve erro
de quantização.
-
Eu estou mantendo fidedigno
os picos da amostra
-
e quando eu
for reconstituía 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 SP 32,
-
não se preocupe com a quantização,
porque ele vai tirar 4096
-
níveis diferentes
entre o valor menor
-
para um valor maior, ou seja,
-
do valor negativo mais negativo
até o valor mais positivo.
-
Esses 4096 são
são suficientes para você trabalhar
-
com qualquer sinal analógico
que se preze aí no ramo de eu.
-
Lembrando que o SP 32 trabalha
com três matrizes
-
voltes de amplitude máximo,
então você vai ter
-
3,3 volts dividido por 4096.
-
Essa vai ser
a resolução do 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
-
ela mostra para você
-
como que a memória do dispositivo
vai decodificar, ou melhor,
-
codificar as amostras
que estão vindo do quantizado.
-
Aqui na parte superior
eu tenho os pesos dos bytes.
-
Lembre se que o SP 32 tem 12 bits,
então eles estão organizados
-
aqui de zero
até chegar em 11 e de 0 a 11 dá 12
-
e coloquei o peso de cada byte
-
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 byte
-
eu tenho um, no segundo byte
eu tenho o dobro de um, que é dois.
-
O terceiro byte é o dobro de dois,
que é quatro e assim
-
sucessivamente até chegar em 2048.
-
Esses 12 bytes
-
que nós temos aqui que representa
-
o quantificador,
ou seja, 4096 degraus.
-
Ele tem 2048
-
na parte de baixo que a parte
-
desculpa estava em ter invertido
meu quadro aqui
-
2048 na parte de cima e 2047
-
na parte de baixo
que a parte negativa é o zero.
-
Considera como a parte positiva.
-
Então 2048
mais 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 bytes num gaveta zero
-
que que tenha 4096 gavetinhas.
-
Essa primeira linha aqui todo zero
indica a primeira gavetinha
-
e eu vou salvar o valor que está lá,
porque esse sinal -10, -7, -5,
-
está representando
aquele primeiro sinal analógico.
-
Para facilitar o entendimento
dessa tabela,
-
ao invés de eu colocar aqui
-
vários valores de degraus
do valor original,
-
eu estou colocando esse aqui
mais simples
-
para não deixar a tabela
tão poluída.
-
É fácil 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 quantificador começa
na parte negativa.
-
Ele considera o sinal mais negativo
sempre
-
e 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 mais dez ou -10.
-
Vai ser salvo, porque ele é
o menor dos menores valores.
-
Então ele vai salvar aonde?
-
No zero zero zero zero zero?
-
Porque a primeira gaveta,
a próxima gaveta e a gaveta um.
-
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,
nós só veio na quarta
-
e assim sucessivamente
até colocar reticências aqui.
-
Não salvei, então eu não
preenchi aqui justamente por isso,
-
porque aqui tem uma reticências
são N valores
-
até chegar no 512.
-
O que é esse 512 aqui?
-
E é o 512 degrau.
-
Então comecei lá do zero degrau zero
e subi até o 512.
-
Só que a hora que eu cheguei no 512
eu encontrei uma amostra conhecida
-
minha do sinal analógico,
que é -7,5.
-
Pois bem, ou -7,5
está sendo salvo na posição 512.
-
Então por isso que eu coloquei um
aqui em 512 e zero nas demais.
-
Portanto toma esses valores
que vocês estão vendo aqui.
-
Esses zeros e uns organizados
aqui na tabela
-
não representa 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 Organi.
-
Fiz as amostras originais
lá 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 que ela foi criada.
-
E assim
eu consigo desfazer a amostragem
-
e a codificação,
desfazer, ou melhor,
-
refazendo a
-
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, ou
-
então se a sai do -10 vai para -7,
então ela está numa ordem.
-
Mas vamos supor que ela tivesse
voltado para -10 aqui, logo depois
-
o sete meio.
-
Então no lugar do -5,
eu colocaria -10 aqui,
-
porque ela voltou para -10.
-
Então note,
-
eu não voltei a posição de memória
porque ela foi sendo crescente,
-
mas as amplitudes,
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.
-
É porque, de fato nós
-
não temos nenhum sinal analógico,
então eu simplesmente não tenho.
-
Então eu descarto.
-
E quando eu for,
quando eu chegar lá no mais dez,
-
que é a última amostra
do meu sinal analógico,
-
eu vou estar marcando a posição todo
um, 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 aí a hora
que eu começar a cair de mais
-
dez, eu cai para mais 7,5
que essa noite vai voltar.
-
Então eu faço o que eu coloco
lá nas posições subsequentes.
-
Então
-
um e menos e mais dez.
-
Quando eu for colocar o mais sete
meio, eu ponho lá um zero zero zero
-
e assim sucessivamente.
-
Quando eu leio o mais cinco
vai estar um zero zero
-
porque a posição do byte 3072
-
que é a soma de 2048
-
lá em cima com esse um aqui 1024.
-
Então pega esse número aqui
que é o nível do quantificador.
-
Transforma ele aqui em binário
que você vai ter.
-
As amostras guardadas.
-
Essa forma de
-
codificar indica que o SP é 32.
-
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.