terça-feira, 4 de junho de 2013

TEA5767 - Rádio FM com o PIC 16F876a

Radio FM com o PIC
O circuito integrado TEA5767 é um rádio FM estéreo em um único chip. Esse CI é ideal para pequenas aplicações com baixo consumo de energia e de baixa complexidade uma vez que não é necessário nenhum tipo de ajuste no seu circuito. Este chip pode se comunicar com circuitos externo via um barramento I2C. Confira como funciona este dispositivo e como utilizá-lo para fazer um rádio FM com o microcontrolador PIC16F876a.










Introdução


O  módulo de rádio FM contem todos os blocos necessários para construir uma função de rádio digitalmente sintonizável em um único chip. O chip TEA 5767 é geralmente encontrado em forma de módulo como apresentado na figura 1. Esse componente é facilmente achado em dispositivos portáteis como MP3, MP4 ou celulares com função rádio.
Radio FM com o PIC
Figura 1 - Módulo de rádio FM TEA5767 encontrado em dispositivos móveis

Descrição do módulo TEA5767


O módulo possui 10 pinos como ilustrado na figura 2 e é comandado via um barramento I2C quando o Busmode (Pino 3) é colocado em nível baixo. A interface serial I2C usa o pino 1 para SDA (via de dados) e o pino 2 para SCL (Clock). O sistema é alimentado no pino 5 (VCC) com tensão entre 2,5V a 5V e o pino 6 é o GND . Os pinos 7 e 8 são as saídas de áudio estéreo e o pino 10 é a antena para entrada de RF. 

Ligação do modulo TEA5767/68 com o PIC
Figura 2 - Ligação do TEA5767

Receptor super-heteródino

Inicialmente de comandarmos o circuito é interessante entendermos a idéia de funcionamento de um receptor super-heteródino que é usado nesse componente em questão. 
O receptor Super-heteródino (figura 3)  foi inventado em 1918 por Edwin Armstrong. O princípio de funcionamento, que ainda hoje se aplica aos mais modernos aparelhos de rádio, constituiu o maior salto na evolução das radiocomunicações uma vez que permitiu resolver alguns graves problemas que os receptores da época tinham: fraca estabilidade, pouca seletividade e grande sensibilidade às interferências.


TEA5757 + PIC16f876
Figura 3 - Diagrama de Bloco simplificado de um receptor super-heteródino.


No receptor super-heteródino uma onda de rádio com frequência Frf, captada pela antena, é amplificada e levada ao bloco misturador que é um elemento não linear. No bloco misturador a onda de radiofrequência é misturada com outra onda que é gerada em um oscilador do próprio receptor, chamado de oscilador local. A frequência do oscilador local, na grande maioria dos sintonizadores é sempre 10,7MHz, chamada de frequência intermediária FI.

De forma resumida o misturador recebe x+y, e efetua (x+y)2 = x2 + y2 + 2xy. O termo 2xy é o responsável pela conversão de frequência, pois corresponde ao produto de duas funções senoidais (identidade trigonométrica sen(x)sen(y)=[cos(x-y)-cos(x+y)]/2 ) esse produto resulta em dois novos sinais com frequência soma: Frf+Fo e frequência diferença: Frf-Fo e é um desses dois sinais que nos interessa. Esse sinal é escolhido como sinal de FI (frequência intermediária) por meio de um filtro (figura 4) adequado de FI.

tea5767 + PIC
Figura 4 - Funcionamento receptor super-heteródino.


Para que todo esse processo? Imaginemos uma frequência de sintonia do rádio FM escolhida de 97,7MHz.
No final do bloco misturador teremos várias frequências espalhadas espectralmente entorno  da frequência central de 97,7MHz, porém as duas mais importantes são a soma e a diferença das frequências Frf e FI, ou seja, 108,4MHz e 10,7MHz. A frequência de 108,4MHz é então eliminada pelo filtro e a frequência de 10,7MHz é amplificada e detectada.

Para a frequência de 97,7MHz e uma frequência local de oscilação de 10,7MHz teremos:



Portanto com essa frequência local nós iremos pegar:



E se nós  pegarmos a Banda lateral inferior?

 
Novamente fazemos o procedimento anterior: 


Para que todo esse procedimento? Amplificar uma frequência de 97,7MHz é mais complicada do que amplificar uma frequência de 10,7MHz por isso temos essa conversão de espectro. Em resumo o sinal de áudio modulado na frequência de 97,7MHz é transferido para uma frequência mais baixa para ser amplificado e detectado mais facilmente e minimizando os efeitos indesejáveis. Entretanto o CI TEA5767 utiliza uma frequência intermediária (FI) de 225KHz ao invés de 10,7MHz.

Demodulação

Nos sistemas osciladores de RF a sintonia é feita por intermédio de um capacitor variável ou por um diodo varicap. Os sistemas de sintonia digitais substituem os convencionais receptores AM e FM. O sintonizador digital é feito com um PLL (Phase Locked Loop). O PLL é usado para sintetizar a comunicação dos receptores e transmissores, ele necessita de uma frequência de referencia de baixa frequência. O Modulo TEA5767 usa um cristal de 32,768Khz para isso. A demodulação FM é mostrada de forma ilustrativa na figura 5.

TEA5767 + PIC
Figura 5 - Demodulação FM com PLL.


O circuito PLL funciona a partir de um oscilador de referencia sintonizado em uma frequência fo. O PLL recebe em sua entrada um sinal com uma frequência fc. O circuito compara então a frequência e a fase do sinal recebido com a frequência e a fase do oscilador de referencia (32768KHz no caso do TEA5767).  Se forem iguais, a saída do circuito é nula. Se a frequência fc for maior que fo, então o circuito fornece na saída uma tensão positiva proporcional à diferença entre as frequências. Se a frequência fc for menor que fo, então o circuito fornece na saída uma tensão negativa proporcional à diferença entre as frequências. Resumidamente, o  PLL  fornece  uma  tensão  proporcional  ao  desvio  de  frequência  a partir da frequência do oscilador local, que é, em princípio, o processo inverso da modulação a partir de um VCO. Modificando o valor  da  frequência  fo,  é  possível  demodular  sinais  com  diferentes portadoras  ou  estações,  visto  que  os  desvios  serão  agora  comparados  a  partir  da  nova frequência fo que no caso do CI TEA5767 pode ser ajustada digitalmente através de um registrador de 14bits.

Configurando o modulo TEA5767 com o PIC16F876a




O TEA5767HN pode se comunicar com o controlador externo através de uma interface serial. O sintonizador suporta interface de barramento I2C e 3-WIRE, selecionável através do pino BUSMODE. Quando o pino BUSMODE é levado para estado baixo o barramento de comunicação é I2C mas quando em estado alto funciona no modo 3-WIRE. Uma aplicação típica de interface I2C é dado na figura 6.

Ligação do modulo TEA5767/68 com o PIC
Figura 6 - Comunicação I2C.
Para estabelecermos uma comunicação serial com o módulo de rádio utilizaremos um microcontrolador PIC16F876a. Esse microcontrolador possui internamente um periférico de comunicação que suporta o protocolo I2C e é facilmente encontrado no mercado com preços acessíveis. 

Estabelecer a comunicação entre o microcontrolador PIC e o módulo é relativamente simples se os comandos forem dados corretamente.
O módulo TEA5767 pode ser lido e escrito, porem neste artigo vamos somente descrever o processo básico de escrita no módulo para operá-lo de forma simples. O programa apresentado a seguir pode servir como base para novas aplicações. 

Em artigos futuras apresentarei outros projetos com o TEA5767!


Escrita no Barramento I2C



I2C é uma interface de barramento bidirecional simples. O barramento requer apenas duas linhas, que são dados seriais (SDA) e o clock (SCL). O barramento é de 8 bits orientado serialmente. Cada dispositivo é reconhecida com um único endereço. O barramento I2C funciona com uma frequência máxima de 400KHz.

A transferência de bytes de dados devem ser ordenados do menor para o maior. A sequencia de transferência dos dados para o modulo é a seguinte: Endereço, Byte1, Byte2, Byte3, Byte4 e Byte5 (A sequencia dever ser necessariamente nessa ordem como apresentado na figura 7).  

O MSB de cada byte será enviado em primeiro lugar. O endereço IC do TEA5767 é 0b1100000. Isto significa que o primeiro byte a ser transmitido para o TEA5767HN deve ser "0xC0" para uma operação de escrita (caso abordado neste artigo) ou "0xC1" para a operação de leitura.

PIC16F876 + TEA5757/58
Figura 7 - Sequencia de comando de escrita no TEA5767.



Portanto após enviarmos o Byte de Endereço devemos enviar os 5 bytes subsequentes. Nas tabelas a baixo temos a sequencia de bytes que devêm ser enviados para a operação de escrita básica.

Para sintonizar o rádio na frequência desejada, deve-se em primeiro lugar calcular a variável do registrador PLL correspondente. Está variável é uma palavra de 14bits que vai ser enviada para o divisor programável do PLL. Podemos escolher entre o sinal contido na banda lateral inferior ou superior. Em contraste com a maioria dos sistemas que utilizam um sintonizador super-heteródino com FI de 10.7MHz, o TEA5767/68 usa uma baixa FI de 225KHz. Com esta baixa FI, integração do FI filtro torna-se viável. O objetivo é reduzir os custos do sistema e da potência global.

A formula para calcular a variável do registrador PLL é dada na figura 8. Como dito anteriormente o valor desse registrador é de 14Bits, portanto a variável é enviada ao registrador por dois bytes seguidos, o primeiro (Byte1) contêm os 6bits mais significativos (MSB) já o segundo (Byte2) contêm os 8bits menos significativos (LSB) restantes.

Calculo de banda lateral superior Radio FM com o PIC
Figura 8 - Formula para o calculo da frequência de sintonia.


A frequência que eu escolhi para sintonizar uma estação no módulo foi de 100,1MHz. Utilizando a formula da figura 9 chegamos ao resultado a baixo.

Banda Lateral superior Radio FM com PIC16f876
Figura 9 - Calculo da frequência de sintonia com a banda lateral superior.
Enviando o Byte1 ao módulo (Tabela 1). O Bit MUTE e SM são deixado em 0 sendo necessário enviar somente os 6bits dos registradores PLL (0x2F).

Tabela 1
Radio FM com o PIC16F876


Enviando o Byte 2 ao módulo (Tabela 2). Corresponde ao 8bits restantes do registrador PLL (0xD7).

Tabela 2
Radio FM com o PIC16F876



Enviando o Byte 3 ao módulo (Tabela 3). Configuração do modo de busca (SUD,SSL[1,0]) e escolhemos a banda lateral superior para a demodulação (HLSI).


Tabela 3
Radio FM com o PIC16F876



Enviando o Byte 4 ao módulo (Tabela 4). Configuração da frequência de oscilação de referencia do PLL (XTAL).

Tabela 4
Radio FM com o PIC16F876
 

E por último enviamos o Byte 5 ao módulo (Tabela 5). Configuração da frequência de oscilação de referencia do PLL (PLLREF).


Tabela 5
Radio FM com o PIC16F876


A baixo temos uma parte do código básico para configurar o módulo com o microcontrolador PIC16F876a por intermédio do barramento I2C. O programa foi desenvolvido com o compilador CCS e o arquivo completo pode ser baixado no link:  Radio.c

Radio FM com o PIC


Circuito e Montagem do Receptor de Rádio


O circuito elétrico de ligação é apresentado na figura 10. Caixinhas de som do computador poderão ser usadas como amplificador de áudio.


TEA5767 + PIC
Figura 10 - Circuito elétrico para montagem.

Na figura 11 temos o circuito montado em protoboard.


TEA5767/68 + PIC
Figura 11 - Montagem do circuito em protoboard.

Maiores informações sobre o receptor de rádio e sua configuração podem ser obtidas no datasheet e no application note do TEA5767. O módulo oferece muitos outros recursos que podem ser explorados.

Em breve estarei postando um outro trabalho mais elaborado com esse pequeno receptor de rádio FM!

Arquivos:

Datasheet: TEA5767
Application: TEA5767
Codigo fonte: Radio.c
Arquivo .hex: Radio.hex

Vídeos









35 comentários:
  1. Onde posso encontrar esse ci TEA5767

    ResponderExcluir
  2. Olá amigo,
    Esse módulo pode ser encontrado em sucatas de MP3 ou MP4 player... Eu particularmente retirei esse módulo de um mp4 que não funcionava mais... Talvez no mercado livre você possa encontrar também.

    Obrigado pela visita.

    ResponderExcluir
    Respostas

    1. http://produto.mercadolivre.com.br/MLB-463865997-modulo-radio-fm-digital-philips-tea5767-para-arduino-pic-_JM

      Excluir
  3. Parabéns pelo projeto. Muito útil. Este módulo pode ser encontrado importado também, pela bagatela de 2 dolares.
    http://www.banggood.com/TEA5767-FM-Programmable-Radio-Module-Stereo-Low-power-Low-noise-p-86432.html

    ResponderExcluir
  4. Amigo pode colocar o código em C já com o LCD o Mesmo que usou no vídeo ?

    ResponderExcluir
    Respostas
    1. Oi Gabriel, bom dia !
      Tente fazer a sua propria rotina para exercitar a programação. Meu objetivo é estimular a criação...
      A rotina é bem simples.. Você pode incrementar a variável "frequency" por intermédio de dois botoes e apresentá-la em um LCD não é nada complicado. Você coloca o valor da variável atualizada no LCD... As rotinas para a utilização do LCD ja estão implementadas no próprio compilador.

      Qualquer duvida entre em contato pelo o e-mail do blog !
      Obrigado pela visita e desculpe-me a demora do retorno !

      Excluir
  5. Ola tudo bem, eu gostaria de saber o seguinte, estou tentando montar um link de fm , transmissor e receptor o meu problema é o receptor , no caso do circuito , gostaria de colocar ele para funcionar em uma frequencia fixa , daria para fazer isso somente com ele ou teria que montar o outro bloco .
    para que ele funcione eu teria que montar o bloco com o pic no caso ou ele sozinho poderia funcionar .

    ResponderExcluir
  6. Boa tarde Luciano,
    O módulo TEA5767 necessita ser configurado para que ele possa funcionar nas condições desejada. No caso o microcontrolador PIC faz essa configuração, descrita no tópico "configurando o módulo TEA5767 com o PIC..". Portanto você precisa montar o bloco para configuração. Você não é obrigado a utilizar o PIC descrito no post, outros modelos de PIC podem ser utilizado e até mesmo outros microcontroladores como a plataforma Arduino.

    Obrigado pela visita !

    ResponderExcluir
  7. Boa tarde Guilherme,

    Sabe me dizer se é possível adaptar o modulo TEA5767 em um tablet (meu tablet é o Genesis GT-7230)?

    ResponderExcluir
    Respostas
    1. Bom dia Marcelo,
      Não sei informar com exatidão Marcelo... Mas acredito que essa adaptação não seja muito trivial ou possível além de ser arriscada para o tablet...

      Obrigado pela visita !

      Excluir
  8. Como faz pelo programa para saber se é stereo ou mono ? Não consegui.

    ResponderExcluir
    Respostas
    1. Boa noite Gabriel,
      Que bom que o senhor consegui fazer a rotina, parabéns !
      Para saber se stereo ou mono você necessita fazer o processo de leitura dos registradores do módulo para obter essa informação. Para saber se a recepção está sendo estereofônica vc dever ler bit7 do 3° byte dos registrador dedicado a leitura... é só usar o comando ic2_read(). Mais informações podem ser obtidas no datasheet do módulo pag 17 do pdf, dê uma olhadinha vc vai ficar por dentro de todas as funcionalidades do TEA5767

      Para receber os dados do TEA5767 vc pode fazer dessa forma abaixo, depois é só tratar a informação!

      //Recebe dados para o modulo TEA5767 via I2C
      i2c_start();
      i2c_write(0xC1); //adres om te schrijven
      byte1=i2C_read();
      byte2=i2C_read();
      byte3=i2C_read();
      byte4=i2C_read();
      byte5=i2C_read();
      i2c_stop();


      Obrigado por contribuir com o blog ! abraço

      Excluir
    2. posso só ler o byte 3 ? Tenho que colocar em alto o pino R/W ? Posso colocar essa rotina dentro da primeira

      Excluir
    3. Boa tarde Gabriel,
      Não, você deve ler a sequencia de bytes como descrita acima... O comando i2c_write(0xC1) já informa para o TEA que você estará lendo os bytes... Após a leitura você deve tratar a variável Byte3 para pegar a informação no stereo ou mono... Sim você pode colocar essa rotina dentro da outra...

      Excluir
  9. Olá

    como faço para o modulo sintonizar automaticamente uma estacão de radio?

    ResponderExcluir
    Respostas
    1. Boa noite amigo,
      O módulo não sintoniza sozinho... A sintonia automática deve ser implementada via software, ou seja, seu controlador que deve fazer a varredura das estações e armazenar as frequências que possuem sinal !

      Excluir
    2. Boa Noite Guilherme, então queria saber se consigo fazer esse rádio com qualquer pic, acoplando ele, a um circuito já existente? e se caso fizer ele independente, c consigo conectá-lo para um acionamento a partir de uma saida do pic....

      agurado uma resposta, email: allanssantossp@gmail.com...

      Excluir
    3. Sim amigo, sem problemas você pode usar qualquer pic !

      Excluir
  10. Olá Guilherme, no byte 5 de escrita o bit 6 teria que ficar em 1, ja que a pré-ênfase adotada para o Brasil é de 75us não seria isso?

    ResponderExcluir
  11. Boa noite Mauricio,
    Eu não tenho certeza se no Brasil é realmente 75us para a pré-ênfase. Eu sei que na américa do norte eles adotam 75us mas para a maior parte do mundo a constante de tempo do circuito de pré-ênfase é de 50us. Ja pesquisei sobre o assunto para saber o padrão adotado para a faixa FM aqui no Brasil mais não achei nada ainda. Para outras bandas de frequência o Brasil acaba não especificando a pré-ênfase e adota 50 ou 75... Se você tive algum material que esclareça esse assunto envie para mim (eletronicaemcasa@gmail.com.br)
    No trabalho desenvolvido acabei usando 50us para a pré-ênfase por esse motivo.

    Obrigado pela contribuição ao blog !

    ResponderExcluir
  12. Olá Guilherme, não abre o arquivo da programação.

    ResponderExcluir
  13. Olá Guilherme.
    Bom projeto. Parabens!
    O link está quebrado.

    Ass: Costa.

    ResponderExcluir
  14. Olá Guilherme parabéns pelo projetos, gostaria de implementá-lo em outro que estou desenvolvendo mas o link da programação está quebrado. Obrigado

    ResponderExcluir
  15. Olá guilherme, sabe me dizer se é possível receber frequências VHF ?

    ResponderExcluir
  16. Boa tarde Matheus,
    Não é possível receber frequências VHF.
    Obrigado pela visita !

    ResponderExcluir
  17. E como posso fazer um receptor VHF digital, pode me dar alguma dica ?

    ResponderExcluir
    Respostas
    1. Oi Matheus,
      Desculpa-me pela demora !
      Eu não fiz um receptor VHF, mas eu lhe recomendo dar uma olhada no site do Newton C. Braga. No site possui algumas dicas e soluções.
      link: http://www.newtoncbraga.com.br/index.php/artigos/54-dicas/995-receptor-de-vhf-art141.pdf

      Excluir
  18. OLA COMO POSSO ENCONTRAR O TEA 5767 NO PROTEUS 8.1?

    ResponderExcluir
    Respostas
    1. Oi Amigo,
      Não sei se o proteus possui o TEA5767 na biblioteca padrão. Eu quando fiz o projeto simulei o circuito utilizando a ferramenta de comunicação I2C. Com o bloco de comunicação I2C, basta conectar os pinos SDA e SCL com resistores de pullup ao pic. Com o terminal de comunicação aberto basta verificar se os bytes em hexadecimal são enviados corretamente.

      Excluir
  19. ola Guilherme tudo bem tem com enviar o codigo HEX para gravar no pic.

    ResponderExcluir
    Respostas
    1. Boa tarde Paulo,
      Atualizei a postagem e inseri o .hex em um link. Confira no post!

      Excluir

Digite seu cometário...
(Seu comentário será visível apos a moderação)

Related Posts Plugin for WordPress, Blogger...
Paginas