2026年02月07日

USB Type-C PD Sniffer基板

nanoDLAsigrokSLogic等の低価格なロジックアナライザはPulseView等のソフトウェアを介して様々な信号の解析に対応しています。

SPIやUART、CAN等の様々な信号がありますが、USB PDの通信ロジックは1.2Vと信号レベルが低いため、上記のような低価格なロジックアナライザではそのまま取り込むことができません。これらのロジックアナライザは3.3Vや5Vの電圧レベルを想定しているため、USB PDの通信を取り込むためには何かしらの信号レベル変換が必要です。手持ちの双方向レベル変換IC、NTB0104GU12があったため、試しにレベル変換してみましたが、うまくレベル変換できませんでした。双方向レベル変換の場合、ロジックアナライザ側のプルアップやプルダウン等が邪魔してしまい、逆にPD信号を阻害してしまったようです。USB PDの通信ロジックの信号レベルを変換する際は片方向のレベル変換やバッファIC等を使用した方がよさそうです。

USB PDの電圧レベルは低く、信号レベル変換に苦労したため、専用のUSB PD Sniffer基板を作成してみました。レベル変換は汎用的なコンパレータを0.5V付近に閾値を設定しました。これにより1.2Vのロジックを3.3Vロジックに変換することが可能です。また、PD通信が完了後に5Vから指定した電圧に変化したタイミングを検出するため、VBUSが5.5Vを超えると信号がHighに変化する出力(ここではPD信号)も追加しました。この信号によって、リクエスト後に電圧が変化するタイミングや電圧変化後のReady信号までのタイミング等をロジックアナライザでCCの通信と同時に確認することが可能です。

VBUS電源を用いてコンパレータを動作させているため、追加で外部電源を供給する必要がありません。

img1.jpeg

img2.jpeg





実際に手持ちの65WクラスのUSB PDアダプタで20Vを出力させる際に本アダプタとnanoDLA+PulseViewで解析してみました。USB PDは300kHzで通信するため、ロジックアナライザのサンプリングレートは少なくとも500kHz以上を設定する必要があります。

PD_Negotiation.jpg



接続後にVBUSに5Vが供給されるとPD通信を開始して、ソース側のUSB PDアダプタが出力可能なプロファイルを送信していることが確認できました。また、その後、シンク側のPDデバイスが20Vのリクエストしていることが確認できました。リクエストに対するアクセプト信号後、出力が20Vに変化し、Ready信号がソースからシンク側に送られていることも確認できました。



高性能なロジックアナライザであれば、信号電圧レベルの閾値を任意に変更できますが、入手が容易で安価なロジックアナライザは信号検出レベルが固定になっていることが多いです。そのような場合に本USB PD Sniffer基板は便利かと思います。

なお、本基板はPD通信の解析を目的としており、下記の注意点があります。
・USB3向けのTX、RXは未接続
・D+/D-、CC1/CC2、VBUS/GNDのみ接続
・CC1/CC2の信号が3.3Vレベルでピンヘッダから出力されます
・ピンヘッダから信号を入力してCC1/CC2にインジェクションすることはできません
・2つのType-Cコネクタの違いはありません(片方にシンク、もう片方にソースを接続してください)
・本基板のVBUSラインの定格は2Aです
・ネゴシエーション後、VBUSラインに大電流を流す場合は本基板外でVBUSラインパイパスさせてください
・挿入向きによって通信できない場合はどちらかのType-Cコネクタを裏返してください 
・VBUS ON直後のPD、CC信号はコンパレータが不安定なため、出力が一瞬、ONする場合があります  
・VBUSピンはPDネゴシエーション後に5Vを超える電圧が印加されます
・VBUSピンを直接、ロジックアナライザに接続した場合、ロジックアナライザが破損する可能性があります
・VBUSピンにロジックアナライザを接続せず、マルチメータやオシロスコープ等の電圧モニタピンとして使用してください


回路図やガーバー等はこちらで公開しています。USB PDデバイスを開発する際にぜひご活用ください。また、近日中にUSB PD Sniffer基板を販売開始を予定しています。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2026年01月03日

光学式トラッキングセンサ

あけましておめでとうございます。2026年もよろしくお願いします。

今回は先日からElecrowで販売を開始した光学式トラッキングセンサ基板について紹介したいと思います。自動走行車、走行ロボット等を制御する場合に自身の位置や移動距離の検出は非常に重要です。一般的な方法としてはホイールやタイヤにロータリーエンコーダ等を搭載することで位置や速度から自己位置を推定しますが、床面が滑りやすい場合や外力等で移動された場合に正しく推定できない問題があります。そのような場合に位置を推定するセンサとして便利なセンサが光学式トラッキングセンサです。

光学式トラッキングセンサは一言でいえば、パソコンの光学式マウスのセンサです。非接触で平面のX方向、Y方向の移動距離を検出することが可能です。パソコンの光学式マウスのセンサに比べて、専用の光学式トラッキングセンサは下記のような特徴があります。

・インタフェースがUSBでなく、マイコン等と接続しやすいI2CやSPI
・追加レンズや光学ユニットが不要
・検出距離が比較的広く、調整が容易

光学式トラッキングセンサとして有名なPixArt Imaging社製PAT9125EL-TKITを使用して、光学式トラッキングセンサ基板を開発しました。


img1.jpeg
光学式トラッキングセンサ基板の特徴は下記の通りです。

・追加レンズ不要
・検出距離は1mm~30mmで比較的広い範囲で検出可能
・基板上に電圧レベル変換を搭載しており、3.3V系の他、5V系にも直結可能
・使い勝手のよいI2Cモデルを使用、Grove互換コネクタで接続可能
・解像度は最大1,275cpiまで設定可能
・1つのセンサでX方向、Y方向の2軸の移動距離を検出可能
・トラッキングスピードは最大25.4cm/sec (1~3mm)、 76.2cm/sec (3~30mm) です



ElecrowのWebサイトで販売しています。また、動きを検出して位置の差分を表示するArduinoのサンプルコードも用意しています。25mm x25mmの基板のため、小型ロボットにも搭載が容易です。今後、光学式トラッキングセンサの活用事例等も紹介したいと思います。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2025年10月04日

SPU0410LR5Hの後継、SPV0142LR5H

Knowles製アナログMEMSマイク、SPU0410LR5Hは生産完了となったため、後継品のSPV0142LR5Hを今回は紹介したいと思います。SPU0410LR5HとSPV0142LR5Hは80kHzまでの超音波帯域に対応した数少ないアナログMEMSマイクです。エアリーク検出やコウモリ探知機(バッドディテクター)、コロナ放電検出等の超音波の検出が必要な用途に最適です。

SPU0410LR5Hが生産完了となった背景として、24年9月にコンシューマー向けMEMSマイクの製造から撤退し、Syntiantに売却したため、製品ラインアップの整理を行ったと思われます。

SPU0410LR5HとSPV0142LR5Hの違いを下記にまとめました。

項目SPU0410LR5H(Old)SPV0142LR5H(New)
電圧VDD1.5V~3.6V1.5V~3.6V
感度S-38dBV/Pa-38dBV/Pa
SN比63dBV/Pa62.5dBV/Pa
出力インピーンダンス最大400Ω最大400Ω
ポートタイプボトムボトム
フットプリント6ピン3ピン+1ピン

SPU0410LR5HとSPV0142LR5Hはフットプリントが異なるものの、他の電気的な仕様はほぼ同等でした。なお、SPV0142LR5Hのフットプリントの1ピンはテスト用ピンで通常使用では未接続で、3ピンのみ使用します。


OldFrqRes.jpgNewFrqRes.jpg
SPU0410LR5H(Old)SPV0142LR5H(New)

周波数特性についてもピーク周波数がSPU0410LR5Hで24kHz前後、SPV0142LR5Hで27kHz前後と少し異なるものの、大きな差はなく、周波数特性に依存した特殊な使い方でもない限りはほぼ同等と考えてよさそうです。

SPU0410LR5HとSPV0142LR5Hでフットプリントを除いて大きな差がないため、そのまま置き換えすることが可能と考えられます。

アナログマイク基板アンプ内蔵マイク基板可変アンプ内蔵マイク基板等については、SPU0410LR5Hの在庫がなくなり次第、SPV0142LR5Hに移行する予定です。詳細な切替タイミングについては各リンク先のページを更新する予定です。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2025年05月03日

UART互換シフトレジスタ

今回は簡単にマイコンの出力ポートを拡張できるシフトレジスタ、SN74LV8153を紹介したいと思います。


一般的にマイコン等のGPIOを拡張する際にはI2C接続のGPIO Expanderを多く使用することが多いと思います。また、出力もしくは入力の片方しか使用しない場合はパラレル入力用のシフトレジスタSN74HC165やパラレル出力のSN74HC595等を活用することが多いと思います。入出力混在の場合はI2C GPIO Expander、入力のみor出力のみといった片方向の場合はシフトレジスタという使い分が多いようです。

I2C接続のGPIO ExpanderやSN74HC165、SN74HC595等は少なくとも2本、現実的にはINTピンやロードピンを含めて3本以上の通信線が必要となります。少しでも占有ピン数を減らして出力を拡張する手段として、シフトレジスタとコンデンサや抵抗を駆使して1wire化する方法もありますが、信号タイミングの依存が強くなります。比較的タイミングに依存せず、容易に拡張可能なICとしてSN74LV8153があります。

SN74LV8153は一言でいえばUARTから8bitの出力ポートを操作できるExpander/シフトレジスタです。UARTのTX通信線、1本のみで8bitの出力操作を実現できます(必要に応じて別途Resetピンを接続してください)。また、3ビットのアドレス設定ピンを備えており、1本の通信ラインで最大8つのSN74LV8153を接続可能です。この場合、最大64bitまで拡張することができます。その他の特徴として、自動的にボーレートを検出するため、ボーレート設定が不要という特徴があります。


SN74LV8153の主な仕様は下記の通りです

・信号電源3V〜5.5V
・出力電源3V~13.2V
・出力電流最大40mA
・UARTフォーマット互換
・ボーレート2kbps~24kbps
 ※UARTであれば9600bpsや19200bps等の設定が汎用的

データシートに記載されていないものの、UARTから送信する際の仕様
・UARTデータ長8bit
・スタートビット 1bit
・ストップビット 1bit
・パリティビット None
・スタートビット後は必ずHighレベルである必要があるため、データは0bXXXXAAA1となる
 ※XXXXは出力のデータ、AAAは出力先ICのアドレス
・8つの出力を制御するため、1byteデータ0bXXXXAAA1を2回連続で送信する


PCにUSB-UARTSerial変換アダプタを接続して、SN74LV8153を操作した際、UARTはLSB Firstであることを失念しており、なかなか思い通りに動作せず、時間を要してしまいました。具体的には「スタートビット後は必ずHighレベルにする」ということは理解していましたが、MSB Firstだと思い込んでしまい、0b1AAAXXXXのデータを送信して、全く動作しないと悩んでしまいました。

UARTからデータを送信する際は下記のように「スタートビット後は必ずHighレベルにする」ため、UARTはLSB Firstなので0x80を加えるのでなく、0x01を加えるプログラムになります。

bytes[0] = 0x01 + (addr<<1) +((io_state&0x0F)<<4);
bytes[1] = 0x01 + (addr<<1) +((io_state&0xF0)<<0);



WebSerialAPIを活用して、ブラウザからUSB-UARTSerialを介してSN74LV8153を操作可能なツール、SN74LV8153 Test Toolを作成してみました。

SN74LV8153TessTool.png


EdgeやChorme等のWebSerialAPIに対応したブラウザからSN74LV8153の出力ポートを簡単に操作できます。


UARTはLSB Firstであることを失念して時間を要してしまいましたが、1本の通信線で出力を拡張できるSN74LV8153は非常に便利で面白いと思いました。出力だけでなく、入力に対応したICも出てくれば更に汎用性が上がって面白いですが、入力の場合はボーレート設定等が必要になるため、そのようなICは開発、販売されていないようです。少し残念です。

SN74LV8153の通信ボーレートが最大24kbpsでそこまで高速ではないため、高速な出力用途には向いていませんが、そこまで速度を要しない7SegやLED等の出力だけを拡張したいという場合には非常に便利だと思いました。今後、更に活用してみたいと思います。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2024年03月16日

SC18IM700とSC18IM704の差

以前にUART I2Cプロトコルブリッジのリニューアル版について紹介しました。UART I2Cプロトコルブリッジの旧バージョンはSC18IM700リニューアル版はSC18IM704となって別の製品として販売されています。

ハードウェアについてはピンアサインやGPIOモード、IO電圧、バッファサイズで変更があります。ただし、SC18IM700とSC18IM704でコマンドの互換があるものの、設定の一部は互換性がなくなっているようです。今回は変更となっているコマンド部分の差について紹介したいと思います。


■I2C CLK
 I2C CLKはデフォルトでは100kHzの設定になっており、特別な理由がない限りは変更する必要がありません。CLKを落としてより通信を安定させたい場合やCLKを上げて少しでも通信レートを上げたい場合等で変更する必要があります。

 設定自体のレジスタアドレスは同じですが、設定値が変更になっています。SC18IM700では2つのレジスタを合わせた値がCLKとして反映されてる仕様(I2CClkHとI2CClkLの差がない)でしたが、SC18IM704は2つのレジスタに16bitで設定した値がCLKとして反映される仕様(I2CClkHとI2CClkLを区別する)に変更されています。

 個人的にはI2CClkHに値を設定すると大幅にCLKが低下するため、I2CClkHの用途が限定的で以前の仕様の方が利便性は良かったと感じました・・・


・SC18IM700

700_CLK.jpg

・SC18IM704
704_CLK.jpg



■I2C CTO
 I2C通信のタイムアウト時間設定はデフォルトでは無効化されています。

 SC18IM700の場合、CTOのビットのみを有効化したするとデフォルトのタイムアウト時間は230msec程度です。

 一方、SC18IM704の場合はI2C_CLKも設定値に関係する仕様になっています。I2C_CLKがデフォルトの100kHzの場合、CTOのデフォルトは35msec程度とタイムアウト時間が短くなっています。また最大でも90msec(I2C_CLK=100kHz)程度で設定可能なCTO時間の範囲が狭くなっています。

 個人的にはI2C_CLKに依存せず、CTOの調整幅が大きいため、以前の仕様の方が利便性は良かったと感じました・・・



・SC18IM700

700_CTO.jpg

・SC18IM704

704_CTO.jpg



なお、SC18IM700とSC18IM704をソフトウェア側で区別するためにはSC18IM704に搭載された「Read version function ID」コマンドを利用することで確認することが可能です。アスキーで「VP」の文字列(0x56,0x50)を送信することで「SC18IM704 1.0.2」という感じで応答を確認することが可能です。応答がない場合はSC18IM700と区別できます。

後継のSC18IM704はIO電圧、バッファサイズ等、拡張が行われている一方でレジスタ設定については以前の仕様の方が利便性が良いと感じました。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする