Com a integração de memórias flash programáveis no sistema (In-System Programmable Flash Memory ou ISP, a possibilidade de se eliminar memórias EEPROM discreta em muitos projetos se tornou uma realidade. Uma das possibilidades de aplicação de microcontroladores que tenham estes recursos é justamente dada pela Texas Instruments neste artigo e consiste num gravador de voz.
Com os recursos do MSP430 de converter sinais analógicos como a voz captada por um microfone em sinais digitais, podemos ir além e gravar na própria memória do chip estes sinais para depois reproduzí-los novamente quando e onde forem necessários. O projeto original da Texas Instruments usa o microcontrolador MSP430F149 com 60 k bytes de memória e possibilita a gravação de até 10 segundos de som.
Fomos um dos pioneiros na publicação de um projeto de síntese e gravação digital de sons, quando há mais de 20 anos apresentamos um projeto da Texas Instruments que se baseava na tecnologia disponível na época.
O gravador de então exigia um estúdio de gravação para converter os padrões de voz em fonemas digitalizados que então eram compilados de modo a se obter a sequência de sons que deveriam ser reproduzidos pelo circuito.
A tecnologia avançou muito desde então, e a possibilidade de se gravar sons digitalmente, além de simplificada, melhorou muito quanto aos resultados finais. A própria Texas Instruments tem agora uma ampla linha de produtos especialmente destinados a síntese e gravação de voz, cujo endereço, para mais informações, será dado no final do artigo.
Neste artigo, o que vamos mostrar ao leitor é um projeto com finalidades didáticas e demonstrativas em que se utiliza a memória flash do MSP430F149 para gravar dados em tempo real. Evidentemente, a partir deste projeto, muitas aplicações importantes podem ser imaginadas pelo leitor que precisa deste tipo de circuito.
Usando poucos componentes, uma alimentação de apenas 3 V é possível gravar e reproduzir até 10 segundos de sons, com a versão básica do circuito dado aqui.
Esse tempo de 10 segundos pode parecer pouco para a maioria dos leitores, mas permite a sua utilização numa infinidade de projetos interessantes demonstrativos como:
a) Agenda para gravação instantânea de números de telefones e endereços.
b) Gravação de mensagens publicitárias que podem ser reproduzidas quando, através de um sensor, o gravador for ativado pela passagem de um cliente nas suas proximidades.
c) Circuitos de "boas vindas" para entradas de estabelecimentos comerciais.
d) Produção de mensagens faladas em automatismos, equipamentos eletroeletrônicos e outros.
e) Aprendizado de idiomas (repetição de frases curtas)
Dentro das aplicações industriais finais podemos sugerir o processamento de dados de sensores analógicos em tempo real e gravação de dados obtidos de sensores analógicos com aplicações em:
a) Controles de processos industriais
b) Equipamento médico e científico
c) Automatismos em equipamento de consumo
Mais informações sobre os componentes da série MSP430 da Texas Instruments podem ser obtidas em diversas edições anteriores em que exploramos este componente, inclusive analisando as ferramentas de programação.
Um Gravador Digital com o MSP430 Flash
A possibilidade de se contar com um microcontrolador dotado de memória flash integrada, capaz de reter informações por até 10 anos, abre uma nova porta para os projetistas que desejam usar este tipo de dispositivo.
O MSP430F149 é um desses dispositivos promissores, com 60 k bytes de memória flash, capazes de manusear até 10 segundos de palavra gravada, e um conversor A/D de 12 bits integrado para digitalizar o sinal analógico correspondente à voz, ele abre caminho para o projeto de um gravador digital de excelente performance com poucos componentes adicionais.
Baseados no Application Report SLAA123 da Texas Instruments, que pode ser acessado a partir do endereço http://www.ti.com, vamos descrever a montagem de um gravador digital que além de aplicações práticas, como as sugeridas na introdução ainda serve para demonstrar aplicações do dispositivo tais como:
• Apagar e gravar a memória flash do MSP430.
• Fazer a programação em tempo real da memória flash do MSP430
• Controlar o MSP430x13x/14x usando um cristal XT2 HF
• Usar o conversor A/D ADC12 integrado em tempo real
• Interfacear o conversor de dados TLV5616 com o MSP430
• Aplicar o amplificador operacional TLV2252 e o amplificador de potência TPA721 com os circuitos do MSP430.
• Operar o MSP430 em aplicações de circuito misto com bateria de 3 V
O Hardware
Começamos por mostrar o diagrama de blocos do sistema na figura 1.
Observe que os blocos do setor analógico e digital são diferenciados, e as setas indicam o percurso do sinal, desde o momento em que ele captado e gravado até o momento em que ele é amplificado e reproduzido num alto-falante.
Observe que o ADC12 consiste num conversor analógico para digital integrado no próprio MSP430F149, e que na sua entrada tem um Mux (multiplexador) o qual possibilita a entrada de 8 canais de dados analógicos.
No processo de gravação apenas os dois primeiros blocos estão ativos enquanto que na reprodução os dois últimos blocos do MSP430F149 é que estão ativos.
A conversor serial DAC converte os sinais digitais disponíveis na saída da USART SPI do MSP430 em sinais analógicos. Uma filtragem, obtida com um filtro ativo, suaviza a forma de onda destes sinais para que, depois de amplificados pelo amplificador final, possam ser reproduzidos no alto-falante.
Analisamos os circuitos das diversas etapas:
a) Preamplificador do Microfone e Filtro
Na figura 2 temos o circuito do preamplificador e filtro que usam como base o amplificador operacional da Texas Instruments TLV2252.
O microfone de eletreto capta os sinais que são amplificados pelo TLV2252. Este amplificador operacional foi escolhido pela sua capacidade de operar com apenas 3 V e exigir uma corrente muito baixa.
Um filtro RC na saída limita a resposta de frequência em 2,7 kHz, o que é suficiente para esta aplicação. O capacitor C4 no circuito de realimentação também ajuda a cortar as altas frequências, com a redução do ganho do amplificador em sua presença. Tecnicamente podemos dizer que se trata de um filtro "antialiasing", que é necessário sempre antes da conversão de um sinal analógico para a forma digital.
A frequência de 2,7 kHz atende às necessidades da frequência de amostragem pelo critério de Nyquist que ela é de 5,5 kHz nesta aplicação. Assim, com esta baixa frequência de amostragem, obtemos um prolongamento do tempo da informação que pode ser gravada na memória flash. Com os valores de componentes indicados na aplicação temos aproximadamente seis segundos de voz armazenada. O som digitalizado, captado pelo microfone é convertido em informação de 12 bits e armazenado sem compressão na memória.
Se os dados forem comprimidos usando A-law ou μ-law, o tempo de armazenamento pode subir para 12 segundos.
b) DAC e Filtro
Na figura 3 mostramos o circuito conversor digital para analógico (DAC) e o filtro de saída.
O dispositivo conversor de dados é um DAC TLV5616 que pode operar com tensões de 3 V e um DLN menor que 0,5 LSB. Este DAC interfaceia diretamente com a USART do MSP430 configurada no modo SPI. A SPI do MSP430 manuseia os dados de 16 bits tirando vantagem da sua capacidade de dupla bufferização do seu módulo USART.
O TLV5616 pode ter sua saída diretamente ligada à entrada do filtro de saída, elaborado em torno do amplificador operacional TLV2252. O filtro é do tipo Sallen-Key ativo de segunda ordem, passa baixas, tendo seu sinal aplicado à etapa seguinte que consiste no amplificador de potência de áudio.
c) Amplificador de Potência de Áudio
Na figura 4 mostramos o circuito da etapa amplificadora de áudio, baseada no circuito integrado TPA721. Este amplificador BTL pode ser alimentado com tensões de 2,5 V a 5,0 V. Numa carga de 8 ohms ele pode fornecer uma tensão de saída de 6 Vpp quando alimentado com 3 V. Outra vantagem dos circuitos BTL é que eles não necessitam de capacitores de acoplamento ao alto-falante.
O circuito RC formado por R13 e C9 tem por finalidade desacoplar o amplificador de áudio dos demais circuitos, evitando a interação dos sinais.
d) Hardware Digital
Na figura 5 temos o diagrama do setor digital do gravador e que tem por componente básico o microcontrolador MSP430F149.
Os periféricos integrados que são encontrados no MSP430F149 simplificam o projeto, exigindo um mínimo de componentes externos.
O clock é formado por um ressonador cerâmico que o faz operar numa frequência de 3,58 MHz. O ressonador usado nesta aplicação possui capacitores de carga embutidos.
O timer B7 é usado para gerar as interrupções temporizadas para a frequência de amostragem. Para esta aplicação a frequência deve ser estável, já que qualquer desvio pode afetar a qualidade da voz.
No projeto é preciso tomar cuidado com o interfaceamento dos circuitos analógicos com os digitais. Veja que os terras digitais e analógicos são mostrados separadamente. Veja que a alimentação dos circuitos analógicos e digitais precisam ser separadas, como mostrado no esquema.
Os dados digitalizados neste circuito são armazenados sequencialmente na memória flash. No manual do MSP430 o leitor poderá encontrar mais informações sobre o acesso à memória flash.
Quando a gravação é reproduzida (playback) os dados armazenados são transmitidos na mesma sequência em que foram gravados e usando a mesma frequência de amostragem. A transmissão é feita para o DAC via USART no modo SPI. O DAC converte estes dados nas formas de onda que correspondem ao som original amostrado, de modo a haver a sua amplificação e reprodução depois de passar pelo filtro.
O Software
O código para esta aplicação é escrito em linguagem assembly, usando a ferramenta de desenvolvimento integrada IAR KickStart.
O MSP430F149 possui 120 segmentos da memória principal, partindo de 1100h até FFFFh. Os segmentos de 0 a 118 têm uma largura de 512 bytes enquanto que os segmentos de 119 a 256 possui uma largura de 256 bytes. O segmento 0 carrega os vetores de interrupção e não podem ser modificado durante o período de operação.
Dois segmentos adicionais, denominados A e B, cada um com 128 bytes de largura, são alocados como memória de informação no dispositivo.
O usuário pode usar esta memória de informação para armazenar os códigos de identificação do dispositivo. A memória de informação também pode ser usada para substituir uma EEPROM ou ainda ser usada para armazenar códigos executáveis dependendo da definição do assembler. A memória de informação será deixada sem uso nesta aplicação.
O código executável para esta aplicação tem vetor em 1100h, o endereço de partida para a memória principal. O tamanho do código compilado é de 346 bytes e ocupa os segmentos 119 (256 bytes) e 118 (90 bytes de 512 bytes). O segmento 0 é programado com os vetores de interrupção. Os segmentos restantes de 1 a 117 são alocados pelo software para armazenar a voz digitalizada. Este conjunto de segmento é chamado de "array" de memória gravada e tem 117 segmentos de largura, com um total de 59 904 bytes, começando em 11400h e terminando em FDFFh.
O software implementado roda a aplicação em dois modos: gravar e reproduzir, dependendo da posição do bush button de gravação.
No momento em que o sistema é ligado, ele vai ao modo reproduzir (playback) e com isso reproduz qualquer coisa que tenha sido previamente gravada. O conteúdo gravado é repetido continuamente enquanto o sistema estiver ligado.
Para entrar no modo "gravar", as seguintes operações devem ser feitas: enquanto o sistema está reproduzindo a mensagem, aperte o botão "gravar"(record). O LED deve acender in dicando que a memória flash foi apagada e está pronta para receber uma nova gravação.
Solte o botão e fale diante do microfone. A mensagem será armazenada na memória até o momento em que o LED apagar, indicando que a capacidade da memória está esgotada.
Agora, a mensagem será reproduzida enquanto a alimentação estiver ligada.
Observe que a memória flash só pode ser programada ou apagada enquanto a tensão de alimentação estiver acima de 2,7 V. Se houver o desgaste da bateria com a tensão caindo abaixo deste valor, o sistema não poderá fazer a gravação. No entanto, ele ainda conseguirá reproduzir a mensagem gravada algumas vezes até que a tensão cai abaixo do limite exigido pelos circuitos analógicos para a operação.
Nota:
Este projeto não é destinado a uma aplicação final que envolva a gravação de voz servindo apenas para demonstrar como a memória flash do MS430 pode ser usada em tempo real. Para manter a aplicação simples o projeto não foi dotado de recursos para a compressão de voz. Apenas os dados PCM foram armazenados e reproduzidos. Para um projeto nesta área com finalidades mais avançadas a Texas Instruments possui produtos específicos. Informações sobre estes produtos podem ser obtidas em:
http://www.ti.com/sc/docs/products/speech/index.htm
Código Para o F149 Voice Demo.s43
O código para a implementação dos recursos que permitem a gravação de voz no MSPF149 pode ser acessado no site da Texas Instruments como texto no documento SLAA123.