Biblioteca DAC para FRDM-KL25Z

Periodic Interrupt Timer

Olá caro leitor, este é mais um artigo da série Bibliotecas de Software para a FRDM-KL25Z. Neste artigo será feita uma breve introdução sobre conversor digital analógico, apresentar a biblioteca DAC de software para a utilização deste periférico e um exemplo de aplicação.

 

 

Introdução

 

Um sistema de Processamento de Sinais Digitais (PDS), de maneira bem simples, pode ser dividido em três blocos, são eles: aquisição do sinal e conversão, processamento digital do sinal e reconstrução do sinal.

 

Diagrama de bloco Processamento Digital de Sinal - Biblioteca DAC
Diagrama de bloco Processamento Digital de Sinal

 

Aquisição de sinal é a primeira etapa de um processamento digital de sinais, responsável por traduzir o sinal analógico que varia continuamente em uma série de níveis discretos. Essa etapa é composta por filtros e conversor analógico-digital (ADC).

 

O segundo item é a etapa de processamento digital, é neste bloco que serão realizadas todas as operações tais como: remoções de interferências indesejadas; aumento ou redução de amplitude ou da frequência; entre outras operações. De acordo com a aplicação, essa tarefa pode ser realizada por um DSP - Digital Signal Processor (Processador de Sinais Digitais), microprocessador ou microcontrolador.

 

O último item de um sistema de processamento digital de sinais é a parte responsável pela a reconstrução do sinal. Essa etapa fica a cargo de um Conversor Digital-Analógico (DAC). O DAC transforma uma série de códigos digitais, que representa um sinal analógico.

 

Para mais informações a respeito de processamento digital de sinais, recomendo a série de artigos Processamento Digital de Sinais - DSP produzidos pelo Henrique Puhlmann.

 

 

DAC - Característica e Desempenho

 

As principais características de conversor digital-analógico incluem resolução, precisão e linearidade. Resolução de DAC é expressa pela a equação abaixo:

 

Cálculo de resolução do DAC

 

Onde n é número de bits. Também pode-se obter a percentagem, expresso pela equação:

 

Cálculo porcentual do DAC

 

Precisão é deduzida da comparação da saída real com a saída esperada.

 

Linearidade ou erro linear é um desvio a partir de uma reta ideal de saída de DAC. Um exemplo é o erro de Offset, o qual corresponde ao valor de tensão de saída quando o valor de entrada é zero.

 

 

DAC da Freedom Board KL25Z

 

O microcontrolador MKL25Z128VLK4 possui um conversor digital-analógico de 12 bits. O sinal do DAC pode ser configurado para um pino externo ou para um comparador analógico. Também pode ser utilizado em conjunto com o DMA (Direct Memory Access).

 

Diagrama de bloco DAC da FRDM-KL25Z
Diagrama de bloco DAC da FRDM-KL25Z

 

O primeiro item a ser configurado é habilitar o Clock ao periférico. Essa operação é feita utilizando o registrador System Clock Gating Control Register 6 (SIM_SCGC6). Para habilitar o Clock deve-se utilizar a macro SIM_SCGC6_DAC0_MASK.

 

Detalhes do Registrador System Clock Gating Control Register 6 (SIM_SCGC6)
Detalhes do Registrador System Clock Gating Control Register 6 (SIM_SCGC6)
Bit do registrador SIM_SCGC6 responsável por habilitar o Clock ao DAC
Bit do registrador SIM_SCGC6 responsável por habilitar o Clock ao DAC

 

O segundo registrador que devemos configurar é DAC Status Register (DACx_SR).

 

Registrador DAC Control Register (DACx_C0)
Registrador DAC Control Register (DACx_C0)

 

O terceiro registrador a ser configurado é DAC Control Register (DACx_C0).

 

 

 

 

Escrevendo no DAC

 

Para realizar a escrita no conversor digital-analógico devemos utilizar dois registadores, são eles: DAC Data Low Register (DACx_DATnL) e DAC Data High Register (DACx_DATnH). O primeiro é destinado para escrever os 8 bits menos significativos e o segundo registrador é para escrever os 4 bits mais significativos.

 

Registrador DAC Data Low (DACx_DATnL)
Registrador DAC Data Low (DACx_DATnL)
Registrador DAC Data High (DACx_DATnH)
Registrador DAC Data High (DACx_DATnH)

 

 

Biblioteca de Software DAC

 

Demonstrarei a seguir a biblioteca de software com as configurações mínimas para utilizar o conversor digital-analógico, apresentando a função de inicialização e de escrita.

 

Nota I: O pino destinado para conversor digital-analógico é PTE30.

 

Pino de saída externa do DAC
Pino de saída externa do DAC

 

Nota II: O sinal do proveniente do conversor digital-analógico também pode ser direcionado para outro periférico do microcontrolador.

 

Função de inicialização do DAC e Escrita 

 

Arquivo dac.c

 

Arquivo dac.h

 

 

Aplicação

 

A aplicação com conversor digital-analógico consiste em gerar sinal analógico que se assemelhe ao sinal cardíaco.

 

main.c

 

Representação do sinal analógico
Representação do sinal analógico

 

 

Conclusão

 

Neste artigo foi apresentada mais uma biblioteca de software para a Freedom Board KL25Z utilizando o periférico DAC - Conversor Digital Analógico. O arquivos aqui apresentado estão disponíveis neste Github.

 

 

Referências

 

Sistemas Digitais Fundamentos E Aplicações 9ª Edição, THOMAS L. FLOYD - Capitulo 13.

Reference Manuals KL25Z

Github - Library-FRDM-KL25Z

Outros artigos da série

<< PIT - Periodic Interrupt Timer para FRDM-KL25ZBiblioteca de Software de DMA para FRDM-KL25Z >>
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Evandro Teixeira
Desenvolvedor de Sistemas Embarcados. Sou formado Técnico em Instrumentação e Automação Industrial/Mecatrônica pelo Colégio Salesiano Dom Bosco de Americana-SP, cursei o Engenharia Elétrica com Ênfase em Eletrônica pela UNISAL Centro Universitário Salesiano de São Paulo e atualmente estou cursando Superior de Tecnologia em Análise e Desenvolvimento de Sistemas pela UNIP Universidade Paulista.

2
Deixe um comentário

avatar
 
1 Comment threads
1 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
2 Comment authors
Evandro TeixeiraRoitter Konrad Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Roitter Konrad
Visitante
Roitter Konrad

Por favor, poderia me explicar mais detalhadamente a parte do código, mbs = (uint_t) (valeu>>8)