「えだまめ」しているラズパイ

30年ぶりに半田ごて握ってラズパイ勉強中。

I2Cの信号線のレベル変換をBSS138で組んでみる

◯やりたいこと

ESP8266から出力される3.3VのI2Cの信号線(SCL,SDA)を、MOSFET(BSS138)を使って5Vに変換してみる。

◯やったこと

・製作

秋月電子さんで販売しているロジックレベル変換モジュールを参考に、同じく秋月さんで売っているBSS138とDIP変換基板を使ってディスクリートで変換回路を組んでみました。
回路は変換モジュールの回路図を参考に以下のものを2回路作成します。

オリジナルとの違いはプルアップ抵抗を4.7KΩに変更している点です。
部品は秋月さんから調達。

これを前回作った電源基板にESP8266の回路と一緒に組んでみました。

変換基板にピンヘッダを取付け、8PのDIPソケットに差し込んで使用してます。
基板写真右下二つが3.3V系のI2Cgroveソケット、左側が5V系のGROVEソケットになります。GROVEソケットは2.54mmピッチ基板に脚を広げて無理くり取付してます。

・動作チェック

配線をチェックした後さっそくハンディオシロで動作を確認してみます。

3.3V(黄)がきちんと5V(青)に変換されてます。やりー。
拡大して遅延を見てみると

約30nS(プローブがワニグチなのでリンギングが大きいのはご勘弁)。思ったよりいいスピードです。これでしたら100KHzのI2Cは楽勝です。

◯やってみて

入出力実験用に使用しているRGB-LED,4-KEYブレッドボードですが、5V動作だとWS2811の規格内に入るためやはり動きが安定します。

まあ当然といえば当然なのですけど…。
アナログKEY入力もたまに隣のキーと間違って認識していたものが、電圧マージンが大きくなるせいかやはり安定動作してくれます。消費電力の点では不利なんでしょうが5VI2C、安心感という点ではいいかもしれません。

3.3Vの方はHUBを使って王道のBME280(温湿度、気圧)、LH1750(照度)、SSD1306(128x64lcd)のスケッチを開発。

こちらもしっかり安定動作中。
電源に加えてレベル変換もいい感じで動いています。