Como funciona o conversor de nível lógico bidirecional
Muitas vezes ligar um módulo que trabalha com nível de sinal de 3.3V ao Arduino (cujo nível de sinal é de 5V, na maioria das placas) pode ser um exercício complicado. E nem sempre montar um divisor de tensão com resistores consegue trazer os resultados esperados, seja em interfaces I2C ou SPI. Isso sem contar a perda de espaço ao montar um circuito desse tipo. Nessas situações, você pode utilizar um componente barato e confiável, o Conversor de Nível Lógico bidirecional 3,3 – 5V:
Com este conversor você tem 2 canais bidirecionais (convertem tensão de 3,3 para 5v e de 5v para 3,3V), e dois unidirecionais (convertem de 5V para 3,3V), além de ser ideal para montagem em uma protoboard.
Ele também é muito útil para utilização com o Raspberry Pi (nível de sinal de 3.3V) para conectar alguns módulos que trabalham com nível de sinal de 5V.
Pinagem e estrutura
Essa placa tem internamente dois circuitos: um divisor de tensão comum, que vai diminuir a tensão de 5V para 3,3V, e um circuito baseado em MOSFET, que vai fazer a conversão em ambos os sentidos (menor para o maior e maior para o menor).
Na imagem abaixo temos a disposição dos dois canais nas laterais da placa, e na parte central temos os conectores de tensão de referência, cuja ligação é obrigatória para que a placa funcione.
Em cada canal temos 2 entradas e 2 saídas, que funcionam da seguinte maneira:
- RXI e RXO (RX Input e RX Output) – Pinos do divisor de tensão. Esses pinos convertem o sinal de 5V para 3,3V, e NÃO funcionam no sentido inverso.
- TXI e TXO (TX Input e TX Output) – Pinos do circuito MOSFET. Esses pinos convertem o sinal de 5V para 3,3V e de 3,3V para 5V, se necessário.
A imagem abaixo mostra de maneira mais clara como funciona cada canal:
Conversor de nível lógico – Exemplos de uso
Uma das aplicações mais comuns do conversor de nível lógico é com o módulo bluetooth, que trabalha com nível de sinal de 3,3V. Nos posts aqui do Arduino e Cia geralmente usamos com um divisor de tensão formado por resistores.
Em uma ligação básica desse conversor com o Arduino e um módulo bluetooth HC-05, por exemplo, teríamos a seguinte ligação:
Já com um módulo cartão SD, que no post Gravando dados do Arduino no cartão SD usou 8 resistores, a ligação ficaria assim, bem mais simples:
Como comentamos no início do post, é possível utilizar o conversor de nível lógico para ligar ao Raspberry Pi módulos que trabalham exclusivamente com 5V. Um exemplo é o módulo RTC DS1307:
O Conversor de Nível Lógico bidirecional é uma opção simples e prática para o seu circuito, deixando o seu projeto com um aspecto mais profissional.
Gostou? Confira outros posts usando Arduino aqui mesmo no Arduino e Cia!
Se eu preciso apenas converter os 5v de um carregador de celular para ligar um módulo que trabalha a 3,3v posso utilizar um regulador de tensão comum ou mesmo um compacto como por exemplo AMS1117 ?
Bom dia Elvis,
Pode ser um regulador de tensão comum. Eu já fiz algo desse tipo usando o módulo LM317:
http://www.arduinoecia.com.br/2015/06/modulo-regulador-tensao-lm317-step-down.html
Abraço!
Nessa mesma saida 3.3v eu posso utilizar o módulo gps por exemplo ?
Comprei esse componente mas ele não veio com aquelas "cabecinhas" nos pinos como tem no anúncio do site http://www.filipeflop.com/pd-14770b-conversor-de-nivel-logico-3-3-5v-bidirecional.html?ct=&p=1&s=1
Os pinos ficam soltos. É assim mesmo ou precisa comprar algo pra prender?
Oi Adriano,
Esses pinos precisam ser soldados no módulo.
Abraço!
Pessoal, acredito que isso seja a solução para o meu problema que é ter um arduino rodando com alimentação de bateria de litium de 3.7v, com demanda de 5v para alguns sensores, mas a duvida que ficou é: O consumo de energia aumenta ? devido ao fato de trabalhar com baterias, o consumo é um fator crucial para o meu projeto, então se há um aumento, eu preciso saber como calcular isso para dimensionar a bateria de acordo.
Obrigado,
Este módulo apenas altera o nível lógico de sinais, para usá-lo, você ainda precisa de uma fonte de 5v (conectada no pino HV) para fornecer o nível de sinal correspondente. Ele não é capaz de elevar uma tensão de 3v para 5v por si.
Suas possibilidades são um circuito dobrador de tensão (eficiência baixa, vai aumentar muito o consumo) ou ligar 2 pilhas de lítio em série, para obter 7,4v.
Bom dia! Estou utizando o NodeMCU ESP8266 que trabalha com tensão de 3.3V e não tem nenhum pino 5v. Quero saber se posso usar esse conversor para conectar um componente de 5v no NodeMCU?
Oi Ivanildo,
Sim, este é o conversor mais indicado.
Abraço!
Como fazer essa ligação?
Olá, você saberia me dizer a limitação da frequência de operação que este circuito consegue tem, se está muito abaixo dos tempos especificados no datasheet do BSS138?
Oi Felipe,
O que você quer dizer exatamente com frequência de operação ?
Abraço!
Olá,
Eu posso enviar os dados com uma taxa de transmissão de 5 Mbps, 10 Mbps ou mais?
Olá,
talvez me expressei mal, gostaria de saber a taxa de transmissão suportada, ex: 10 Mbps ou 5 Mbps, pelo conversor e se já foi usado em taxas próximas a exemplificada?
Abraço!
Oi Felipe,
Entendi. eu realmente não testei com essas taxas, mas creio que não tenha problema. O módulo deve suportar tranquilamente.
Abraço!
Meus 2 centavos… os pinos RX funcionam com divisor de tensão, de modo totalmente analógico, logo teoricamente não deve haver limite de taxa transferência de dados. Já os pinos bidirecionais, que usam os MOSFET, tudo vai depender da velocidade de comutação destes transistores. Veja o modelo deles e consulte o datasheet. Possivelmente está na casa dos MHz, o que em teoria deve ser o suficiente para suportar taxas de transferências de alguns Mbps.
Bom dia. Tá, e quando vc tem um arduino standalone que não tem a tensao de 3.3v como é que faz?
Olá Odilon.
Neste caso fica simples resolver, basta colocar um regulador de tensão de 3.3V ligado em uma saida de 5V do arduino tendo assim as 2 tensões de 5V e 3.3V.
desta forma você pode ligar tranquilamente o conversor de nível logico.
Você pode usar um LM-317 ou comprar um modulo pronto como o AMS1117 3.3 V
Espero ter sanado sua duvida.
Bacana seu artigo. gostaria de saber, nas placas em que a pinagem vem enumerada como l1, l2, h1, h2, etc, como saber quais os pinos TX e RX ?
Boa tarde,
Interessante, gostaria de dar uma olhada nesse módulo. Onde vc comprou? tem o link?
Abraço!
Adilson
Obrigado. Muito eficiente a comunicação!
Prezado… Gostaria de saber se com esse regulador poderia conectar arduino e raspberry trabalhando em conjunto.
Oi Rogério,
Sim, ele é perfeito para esse tipo de situação. Costumo usar bastante nessa configuração Arduino -> Raspberry Pi.
Abraço!
Adilson
Boa noite!
Posso ligar 5 ou 12v no pino-3 do AMS1117, o terra no pino-1 e conseguir 3,3v no pino-2?
Obrigado.
Eu não entendi porque a placa (conversor ) está sendo alimentada com as duas tensões: 5V e 3.3V.
Até então, eu pensava que, se alimentasse a placa de um lado com 5V, do outro lado sairia 3.3V e vice-versa.
Oi Daniel,
Sim, a placa não é um simples transformador, ela precisa de uma “referência” do outro lado para saber em que nível jogará o sinal.
Abraço!
Adilson
Oi Adilson, é possível obter 3,3v lógicos em ambos os lados da placa, ligando assim, 3,3v do Arduino na alimentação LV, HV e GND?
Digo isso pois, preciso alimentar com nível lógico de 3,3v em 5 terminais de um Display TFT.
Obrigado
Oi Daniel!
Nunca testei dessa maneira.. mas creio que não vá funcionar. :/
Abraço!
Adilson
Olá, esses circuitos foram desenhados no Tinkercad?
Oi Samuel,
Não, usei o Fritzing (fritzing.org).:)
Abraço!
Adilson
Olá.
Esse circuito serve para conversão analógica? Preciso de um conversor de sinal analogico de 0-5V para 0-3.3V.
Oi Edenilson,
Ainda não usei o conversor dessa maneira. Que tipo de aplicação seria?
Abraço!
Adilson
Qual é a frequência máxima de operação?.
Preciso acionar um driver de motor de passo por trem de pulsos.
O meu driver funciona a 5 VDC com frequência máxima de 1 MHz no trem de pulsos.