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) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2023年06月10日

RTC SD30XXシリーズ

以前に外付けRTC比較について紹介しましたが、昨今の円安の影響でより低価格かつ高精度なRTCについて調査していました。その中で要求を満たす中華製RTCがあったため、今回、紹介したいと思います。

深圳にあるwave社のRTC SD3031、SD3077、SD3078は温度補正機能付きのRTCで水晶発振子内蔵、精度±3.8ppm、電源/電池切り替え内蔵(電池と電源のピンがそれぞれある)、1個250円前後の低価格です。更に70byteのSRAMも利用できます。中華製なのでDigi-keyやMouser等での入手性は悪いものの、LCSCやAliexpress等で入手可能です。SD3031モジュールDigi-keyでも入手可能です。


SD3031、SD3077、SD3078のアドレスや内部レジスタ等は全て同じで、ピンアサインのみが異なります。他のRTCからの置き換えを想定してピンアサインの互換性のために3種類販売されています。ただし、既存のRTCとはソフトウェアでは互換性がなく、更にちょっと癖があるため、注意点についても紹介します。


■時刻書き込み時の注意点
・日時を書き込む際は先にCTRレジスタのWRTC1に1をセットし、続いてWRTC2,3に1をセットする必要
・hourは0~23時表現の場合は7bit目に1を立てて書き込む必要
・時刻、日付の7バイトを一括で書き込む必要
・書き込み後は先にWRTC2,3を0に戻してからWRTC1を0に戻す必要
・SRAMの書き込み時も日時同様にWRTCレジスタの書き換えが必要

■時刻読み込み時の注意点
・hourは0~23時表現の場合は7bit目の1を除く必要

■その他注意点
・汎用的なSOP8パッケージだが、NOR Flashで使用される幅が広い208milタイプ

一般的なRTCではレジスタに日時を書き込めばそのまま更新できますが、SD30XXの場合、事前にレジスタで書き込み有効化の処理が必要であり、手間がかかります。また、時間は24時間表記固定でなく、12時間モード/24時間モードの両方に対応している分、書き込みと読み込みに処理が必要です。これらを考慮して、USBシリアルI2C変換基板を使用したSD30XXシリーズ用のWebシリアルの設定/確認ツールを作成してみました。日本における入手性が悪い点と扱いにちょっと癖のあるRTCですが、低価格で高精度なのは非常に魅力的だと思いました。
posted by Crescent at 00:00| Comment(2) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2023年02月25日

RTC用MEMS発振器

今回は安価に高精度を実現するMEMS発振器を紹介したいと思います。RTCの精度が悪い場合、RTCの時刻が頻繁にずれ、時刻調整やネットワークから時刻を取得する頻度を多くする必要があります。

マイコンで時刻や日付を保持するためのRTCを利用する場合、内蔵RTC機能を使用するか、外付けRTCを利用することになります。外付けの場合はRV-8803-C7やDS3231といった温度補正があるRTCを利用することで高精度に時刻保持することが可能ですが、部品が増え、コストが高くなりがちです。内蔵RTCの方が通信ラグがなく、比較的安価に実装することが可能です。ただし、精度は一般的な32.768kHz水晶発振子では20ppm前後とあまり期待できません。また、水晶発振子の外部負荷容量によっては更に精度が悪化する場合があります。一般的な水晶発振子の精度と時刻ずれの関係は下記の通りです。実際は昼夜の温度変化、季節の温度変化の影響、負荷容量によって更に大きくずれることが想定されます。

20ppmの場合、1年で11分前後
5ppmの場合、1年で3分前後
1ppmの場合、1年で30秒前後

今回は内蔵RTCで安価に高精度を実現する方法として、温度補正機能内蔵のMEMS発振器、SiT1552を紹介したいと思います。23年2月時点で1個200円~300円で温度補正機能を内蔵し、5ppmの精度を実現しています。データシートを見る限り、SiT1552AC-JEでは5ppm以内を謳っており、実力値としては1~2ppm前後あるようです。また、1.5V~3.63Vの広い電源範囲と1uA以下の消費電力でRTC用途にも最適です。

32.768kHzの水晶発振子を接続する代わりにXINにSiT1552のクロック出力を接続し、電源を供給して使用します。XOUTは未接続にします。マイコン側に水晶発振子か、発振器の設定パラメータがある場合は発振器に変更します。水晶発振子と異なり、MEMS発振器はそのままクロックが出力されます。そのため、負荷容量の調整や配線長を水晶発振子ほど考慮しなくてもよく、設計負荷が減ります。

SiT1552はCSPパッケージで非常に小さく、そのままでは扱いにくいため、ブレイクアウト基板を設計してみました。

osc1.jpg

osc2.jpg

実際にSiT1552を実装して、使い勝手が良ければまた、製品として提供を開始する予定です。今回は温度補正機能付きのMEMS発振器を利用することで比較的安価に内蔵RTCで高精度を実現する方法を紹介しました。内蔵RTCで安価に高精度を実現する方法として、今回紹介した方法の他にマイコン内蔵の温度計を使用して温度補正する方法もありますが、水晶発振子毎の温度特性のばらつきもあるため、調整が難しいのが難点です。RTCの部品を減らしつつ、より低コストに高精度を実現したいという場合に最適だと思いました。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする