O modo de codificação Mancherster (Manchester Encoding) está se tornando muito popular nos sistemas de transmissão de dados digitais de baixo custo, encontrando aplicações principalmente em sistemas de controle remoto. Veja neste artigo, baseado em documentação da Maxim como ele funciona.

O processo de codificação Manchester consiste num método simples de manipulação de frequência (Shift-keying) que produz trens de grande extensão de zeros e uns sem que o clock de transmissão esteja embutido nos próprios dados transmitidos.

Trata-se, portanto, de uma forma de modulação BPSK ou Binary Phase Shift Keying que, pela sua simplicidade permite a elaboração de sistemas de controles remotos de baixo custo.

Nesta codificação dados digitais seriais de padrões arbitrários de bits que não tenham sequências longas de zeros ou uns, podem ser transmitidos.

Neste sistema, os níveis lógicos 0 e 1 não são definidos por estados estáticos mas sim por transições, conforme mostra a figura 1. Assim, conforme mostra a mesma figura, temos transições de níveis que definem os valores transmitidos.

 

   Figura 1 – Os níveis lógicos são dados pelas transições
Figura 1 – Os níveis lógicos são dados pelas transições

 

Também é possível inverter a lógica, como ocorre com a lógica positiva e negativa no caso das aplicações digitais, conforme mostra a figura 2.

 

Figura 2 – Outra possibilidade de transmissão
Figura 2 – Outra possibilidade de transmissão

 

A definição de um bit para os dados codificados pelo método Manchester pode ser confusa, porque cada dado binário codificado resulta em dois bits aparentes na corrente de dados.

Se levarmos em conta que um bit de dados é definido como uma transição, podemos perceber que não existem dados nas correntes de dados na codificação Manchester.

Os dados codificados na corrente não requerem dois níveis para cada transição, pois pela definição a informação é codificada numa transição do nível baixo para o alto ou numa transição do nível alto para o baixo.

Assim, tomamos duas vezes os níveis lógicos para codificar os dados em Manchester. Entretanto, o uso da frase “Bits Manchester” persiste e deve-se tomar cuidado quando se usar o termo bit para especificar o que é um bit de dados serial ou um bit codificado em Manchester.

O termo chip é também usado para descrever os períodos de nível de cada lado de uma transição ou fronte. Assim, cada codificação de dados Manchester de um bit requer dois chips. Uma corrente de dados serial é mostrada na figura 3.

 

Figura 3 – Uma corrente de dados codificada em Manchester
Figura 3 – Uma corrente de dados codificada em Manchester

 

Um ponto importante que deve ser considerado neste processo de decodificação é que o nível da componente DC tem um nível médio igual a zero. Além da amplitude pico a pico dos dados codificados, as transições podem ser identificadas como o ponto em que elas passam pelo nível médio, por exemplo, zero.

Os codificadores de dados de baixo custo usam esta características empregando um circuito simples de detector de transição denominado “data slicer”.

Na figura 4 temos um exemplo deste tipo, empregando um comparador para decodificar o “fatiar”(slice) uma corrente de dados.

 

Figura 4 – Decodificando os sinais com um comparador
Figura 4 – Decodificando os sinais com um comparador

 

Um filtro passa-baixas, formado por R1 e C1, acompanham a tensão DC média da corrente de dados, com uma constante de tempo escolhida para não ser muito maior que a taxa de chips serial.

A tensão média em C1 estabelece a referência negativa de entrada para o comparador. A corrente de dados serial é aplicada a entrada do circuito e o resultado é uma sequência de dados de saída onde o comparador tem sua oscilando entre o nível negativo e positivo da alimentação.

Na figura 5 temos um exemplo de uma corrente de dados codificados em Manchester aplicada ao circuito e o sinal de saída resultante.

 

Figura 5 – O sinal do decodificador
Figura 5 – O sinal do decodificador

 

Note que neste exemplo os dados codificados tem uma tensão offset a partir do nível de zero, como ocorre normalmente nos receptores comuns de RF.

O data-slicer efetivamente converte a corrente de dados de entrada em uma corrente de sados binários que variam conforme a tensão de alimentação, como exigido nos sistemas digitais. Os sinais obtidos podem então ser processados pelos circuitos digitais comuns.

O circuito mostrado na figura 5 têm ainda os resistores R2 e R3 que formam um elo de realimentação positiva que adiciona histerese ao comparador. Esta histerese reduz as frontes múltiplas que podem ocorrer com sinais lentos ou sujeitos a ruídos.

Uma vez que os dados enviados sejam separados em dados seriais digitais com o restabelecimentos das tensões que representam os níveis lógicos, um decodificador pode ser usado para extrair o sinal original,

Normalmente, para o decodificador é usado um microcontrolador que roda algum algoritmo capaz de fazer isso.

Num sistema, o software pode antecipar o tempo da transição lógica, conhecendo a taxa aproximada de transmissão dos dados. Com isso é possível aproveitar um segundo benefício: a taxa de transmissão embutida.

Nas situações em os dados recebidos estão próximos do nível de ruído (baixas potências ou transmissores distantes) as frontes de transição podem ser múltiplas na decodificação.

Um algoritmo apropriado pode ser utilizado para antecipar os valores válidos da transição, rejeitando os que não devem ser considerados.

Apear dos microcontroladores poderem ser implementados com a função de decodificação, eles também devem ser empregados para outras como o controle de dispositivos externos e tudo mais.

Na figura 6 temos um sistema básico de receptor de controle remoto.

 

Figura 6 – Receptor básico
Figura 6 – Receptor básico

 

A codificação Manchester refere-se ao processo da combinação lógica de dados seriais que devem ser codificados e o clock usado para se estabeecer a taxa de transmissão.

Um exemplo de circuito transmissor é mostrado na figura 7.

 

Figura 7 – Um circuito transmissor
Figura 7 – Um circuito transmissor

 

Utiliza-se um circuito como este para codificar dados seriais da saída µART de um microcontrolador. O circuito mostrado imite funções necessárias para se evitar a geração de frontes múltiplas nas transições do clock e das entradas de dados que podem ocorrer com estados lógicos intermediários.

Na figura 8 temos o modo de se implementar um transmissor de dados codificado com Manchester e usando software apropriado.

 

Figura 8 – Um transmissor para dados codificados em Manchester
Figura 8 – Um transmissor para dados codificados em Manchester

 

Desta forma não é necessário usar um microcontrolador com µART e circuitos externos para transmitir os dados codificados em Manchester.

Um timer interno do microcontrolador dispara uma sub-rotina para atualizar o pino de saída de acordo com os dados que estão sendo transmitidos e então estabelece o tempo da taxa de dados.

A base de tempo do microcontrolador não precisa ser precisa, já que os dados codificados contém toda a informação sobre dados e clock embutida para uso do circuito decodificador.