quarta-feira, 3 de agosto de 2011

Tradutores de nível de tensão (level translators)

O lema da indústria de semicondutores tem sido diminuir, baratear e melhorar. Fabricantes conseguiram nestes últimos anos atingir estas metas ao diminuir o tamanho dos transístores que compõe estes semicondutores. Esta diminuição tem uma consequência interessante: a diminuição do tamanho traz uma diminuição da tensão de operação destes transístores. Por isto, não tem sido raro encontrar novas tecnologias que funcionem apenas com 3.3V ou menos.
Obviamente, isto não é problema, quando você trabalha apenas com este nível de tensão. Mas nem sempre você tem esta escolha. Por exemplo, displays de LCD trabalham normalmente com 5V, pelo menos os mais fáceis de se encontrar. Muitas vezes a versão de 3.3V é difícil de ser encontrada, principalmente em nosso país.
É para casos como este que precisamos empregar os circuitos tradutores de nível (level translators). Muitos fabricantes disponibilizam circuitos integrados dedicados a este fim. Mas por uma questão de conveniência, vamos aqui discutir alguns dos circuitos não-integrados, que são usados para esta função. Assim, você poderá usar um tradutor de nível, mesmo que não tenha acesso aos circuitos integrados disponíveis no mercado.
Quase todo circuito integrado CMOS possui uma proteção nos pinos de I/O contra ESD (electrostatic-discharge). A proteção mais comum é o uso de grampo diodo no Vdd e Vss. Isto nos dá uma tensão máxima de alimentação de Vdd+0.3V e uma tensão mínima de Vss-0.3V. Se você exceder estas especificações, os diodos poderão conduzir. E se não houver nenhum resistor para limitar a corrente neste caso, o circuito pode ser danificado. Para o caso de um circuito de 3.3V alimentado por uma tensão de 5V, você deverá inserir uma resistência alta em série com a entrada, para diminuir esta corrente a níveis aceitáveis.
Mas introduzir um resistor muito alto também pode ter suas consequências desagradáveis. O circuito e os pinos possuem uma capacitância, e ela aliada à alta resistência em série, poderá resultar em uma alta constante de tempo RC. E com o aumento desta constante, nosso sinal passará a sofrer atrasos. Por isto muitos fabricantes não recomendam o uso destes diodos de proteção para o grampeamento de sinais.

Divisor de tensão

A primeira opção disponível é usar um divisor de tensão, para diminuir a tensão de 5V para 3.3V.


Devemos selecionar os valores de resistência de tal forma que se leve em conta todas as tolerâncias. As seguintes fórmulas:
1) Com a tensão de alimentação de 5V no seu valor mínimo:
\[\begin{equation}\left(\frac{R2}{R1+R2}\right)×V_{OH(MIN)}>V_{IH(MIN)}\end{equation}\]
2) Com a tensão de alimentação de 5V no seu valor máximo:
\[\begin{equation}\left(\frac{R2}{R1+R2}\right)×V_{OH(MAX)}<V_{IH(MAX)}\end{equation}\]
Tolerância dos resistores devem ser consideradas nestes cálculos também.

Dispositivos de entrada TTL

Um abordagem mais simples é usar um dispositivo TTL de 5V. A tensão mínima de entrada de um dispositivo TTL é 2.1V em uma tensão dreno a dreno de 5V. A maioria de dispositivos CMOS de 3.3V são capazes de gerar um sinal alto de valor acima deste, mesmo com correntes de saída altas. Assim, você poderá procurar por circuitos equivalentes que possuam entradas TTL. A tabela abaixo, fornecida por Gaurang Kavaiya da Microchip, serve de exemplo:

FunçãoDispositivo com entrada CMOSDispositivo com entrada TTL
LCD 16x2 alfanuméricoMuitos variantesDispositivos como LCM-S01602DTR/M
Driver de MosfetLM5100LM5101
Driver de displays Vacuum-fluorescentMuitos variantesDispositivos como MM58342
Transceiver CANPCA82C50MCP2551
Transceiver LINNCV7380MCP201

Você também poderá encontrar famílias padrão de dispositivos com entrada TTL. Por exemplo, se você está usando dispositivos da família 74HC, poderá trocá-los pela família 74HCT.

Diodo cria um deslocamento positivo de 0.6V

A tensão de saída alta de um dispositivo CMOS operando a 3.3V é um pouco menor que a tensão de entrada alta de um dispositivo CMOS operando a 5V. Geralmente a tensão mínima de entrada alta de um dispositivo CMOS está entre 0.7 a 0.8 vezes o valor de Vcc. Isto nos dá 3.5V de tensão mínima para os 5V. Uma forma de fazer a tradução de tensão, portanto, é usar um diodo para esta tarefa.


O circuito acima desloca a saída em aproximadamente 0.6V no sentido positivo. Deslocando a tensão de saída faz com que a entrada CMOS de 5V reconheça a saída do circuito CMOS de 3.3V. Mesmo o sinal de nível baixo sendo deslocado, ainda permanece na faixa de sinal baixo reconhecido pelo circuito CMOS de 5V (que é no máximo aproximadamente 1.5V). Há no entanto algumas considerações a serem feitas. Quando o dispositivo CMOS de 3.3V usar um nível lógico 0, a corrente que ele drena da fonte irá aumentar. Você também deverá observar a tensão de saída em nível baixo do dispositivo de 3.3V, para esta corrente. Tipicamente, quanto maior a corrente, maior a tensão de saída. Você portanto deverá observar se esta elevação de tensão não ultrapassará os 1.5V que o dispositivo de 5V impõe como limite superior. Se a tensão for muito alta, você deverá considerar o aumento do resistor de pull-up. Mas tome cuidado: se o resistor for muito alto, a corrente do diodo será muito baixa, e o diodo poderá chavear mais lentamente.

Entradas tolerantes a 5V

Alguns dispositivos não possuem grampos de diodo como proteção contra ESD, mas oferecem mecanismos de proteção diferentes. Este é o caso de alguns microcontroladores da Microchip, por exemplo, que podem receber entradas de 5V, mesmo que estejam operando a 3.3V. Alguns dispositivos vão além, permitindo gerar saídas de 5V, mesmo operando em tensões menores.

A capacitância pode limitar a velocidade

Quando você usar alguma configuração com resistores de pull-up, você deverá considerar a frequência máxima de chaveamento e a capacitância da conexão entre os dois dispositivos. A equação abaixo ajuda a determinar os tempos de subida e descida do sinal:
\[\begin{equation}\text{Tempo de subida/descida} = \tau\cdot\ln{\left(\frac{PV_{DD}}{PV_{DD}-PV_{IH(IM)}}\right)}\end{equation}\]
Onde o \(\tau\) é a constante RC, \(PV_{DD}\) é a tensão de alimentação do periférico e \(PV_{IH(IM)}\) é a tensão mínima de entrada de nível alto. Se você usar um resistor de pull-up de 1K, uma capacitância parasita de 10pF para o pino e a placa, 5V de alimentação para o periférico e 3.5V de entrada mínima para nível alto, terá como resultado um tempo de 12ns. Se o pulso mínimo aceitável para estes tempos é de 50ns, então a frequência máxima de saída é 20MHz, o que é o suficiente para a maioria das interações com periféricos.
Mas a configuração tem suas desvantagens. Quando o microcontrolador usa um nível lógico baixo, a corrente extra flui pelo resistor de pull-up. O resistor troca velocidade por corrente da fonte. Você deverá selecionar um resistor que mantém os compromissos de consumo de corrente e velocidade do projeto.
Alguns podem dizer que tal configuração não pode ser usada com cargas de baixa impedância. O que fazer quando a carga é um relê, como na figura abaixo?


Para ligar o relê, você define o pino como saída, e ponha ele em nível lógico 0. A única limitação aqui é as capacidades de corrente do dispositivo. Para desligar o relê, defina o pino como entrada, o que desabilita a carga, e joga 5V na entrada. O pino tolera 5V, então esta operação é válida. Em outras palavras, você precisa manter o nível lógico 0 na saída, mudando apenas o sentido do pino entre entrada e saída.

Conclusão

Tentamos aqui dar algumas dicas na tarefa de interfacear circuitos que operam a 3.3V, com circuitos que operam a 5V. O texto aqui foi amplamente baseado no artigo escrito por Gaurang Kavaiya, Don't pay for level translators in systems using multiple power-supply voltages. Outros circuitos destinados ao mesmo fim podem ser encontrados ainda no site DayCounter.

Nenhum comentário:

Postar um comentário

Você também poderá gostar de