Então, eu tenho lido alguns tópicos aqui e em outros fóruns. Entendo que existem várias soluções para diminuir ou aumentar a tensão. O que eu encontrei são os registros de troca da série LVC que fornecem uma saída constante, o MCP1825 , que diminui de 5 a 3,3 (e outras versões com incrementos diferentes) o 74LCX245, que vai de 2,5 ou 3,3 a 5v e talvez alguns outros que eu estou esquecendo . Existem placas prontas, como os conversores Sparkfun ou este conversor de 8 pinos para 8 pinos . Mas todos esses são apenas uma direção ou bidirecional comutada por um jumper.
Como converter tensões para baixo ou para cima em ambas as direções sem a necessidade de uma seleção de pinos.
5--3,3
5--2,5
5--1,8
obrigado
fonte
Maxim tem um monte de tradutores de nível lógico , a maioria dos quais é bidirecional. As velocidades variam, o mais rápido suporta taxa de dados máxima de 100 MBit / s, que deve cobrir praticamente qualquer coisa que você queira fazer em um nível de hobby. As tensões variam de 0,9V a 5,5V.
fonte
Você está trabalhando com um barramento I2C, certo? Vou ligar para as linhas no lado SDA3 e SCL3 de 3,3 V ; as duas linhas no lado 5.0 V SDA5 e SCL5 .
" MOSFET e dois resistores"
Como todbot e cyphunk já apontaram, o circuito "MOSFET e dois resistores" descrito no tutorial "interface do sensor" do SparkFun faz o que você deseja: O fluxo de dados lógicos é simétrico - os dados fluem em ambas as direções nas linhas SDA, a partir do lado baixo para o lado alto e, milissegundos depois, do lado alto para o lado baixo.
A nota "não funcionará na outra direção" indica que o circuito é fisicamente assimétrico: o seu dispositivo de 5,0 V I²C deve estar conectado ao "lado alto", o seu dispositivo de 3,3 V deve estar conectado ao "lado baixo". Como o circuito é fisicamente assimétrico, certamente não é óbvio que é logicamente simétrico. (Esse tutorial está vinculado a uma nota de aplicativo AN97055 que mostra um circuito "dois MOSFETs e dois resistores" fisicamente simétrico e, portanto, obviamente simétrico).
As linhas rotuladas como "TX" nos conversores SparkFun - que o pôster original apontou - implementam o circuito bidirecional "MOSFET e dois resistores". Portanto, conecte SDA3 a TX_LV, SDA5 a TX_HV, SCL3 a TX2_LV e SCL5 a TX2_HV.
Em seguida, os dados fluem nas duas direções: Quando o dispositivo do lado inferior aciona os pinos SDA3 e SCL3, as voltagens apropriadas são vistas nos pinos SDA5 e SCL5 do lado superior. Milissegundos depois, quando o dispositivo do lado superior aciona os pinos SDA5 e SCL5, as voltagens apropriadas são vistas nos pinos SDA3 e SCL3.
(Inconsistentemente, as linhas rotuladas como "RX" nessa placa conversora transmitirão apenas dados na direção de alta e baixa tensão.)
Optoisolador bidirecional
Como você está usando I²C, também pode estar interessado em um optoisolador bidirecional para I²C . O circuito de dois optoisoladores é mais caro e mais lento que o circuito "MOSFET e dois resistores", mas funciona quando um lado tem sinais que oscilam entre 0 V e 5,0 V e o outro lado tem sinais que oscilam entre 500,0 V e 505,0 V.
O circuito de dois opto-isoladores também é completamente simétrico fisicamente - e, portanto, logicamente simétrico - não importa qual lado é o lado mais alto e qual lado é o lado mais baixo.
fonte
Em uma de nossas placas, usamos um TXS0104E para converter entre 3,3V e 5V em um barramento I2C (bidirecional).
fonte