2020年07月25日

CO2センサ

混み具合や換気状態を監視する用途としても昨今、CO2センサが注目されています。

一般的なCO2の検出方式としてはNDIR(Non Dispersive Infrared)方式とMOX(Metal Oxide)方式の2種類があります。精度面ではNDIRの方がMOXよりも優れています。MOXは空気中の有機物を検出することで間接的にCO2を推定するため、直接CO2濃度を光学的に検出するNDIRに比べて精度では劣ります。一方でNDIRは光学機構を備えるため、コストがMOXに比べると高く、大きさも比較的大きくなります。一方、MOXは半導体素子として構成されるため、非常に小さく、コストも安い特徴があります。

今回はMOXのセンサを紹介します。MOXセンサとして有名なセンサは下記の通りです。

・AMS製 CCS811 (生産終了)

AMS製は最近、生産終了のようでメーカのサイトからも情報が消えていました。Arduino等で簡単に使いたい場合はSGP30の方が情報が豊富でおすすめです。ただ、個体差なのか、値のドリフトが大きく少し不満がありました。最近、改良版のファームが発表され、さらに精度が上がったということでIDT製ZMOD4410を試してみました。

残念ながらZMOD4410のレジスタ情報が非公開であり、IDTのサイトからユーザー登録して取得する必要があります。また、CO2換算処理アルゴリズムについても非公開でバイナリファイルとして配布されているため、Arduino IDE等では使用できません。バイナリファイル(libファイルやaファイル)を組み込むことができる開発環境が必須です。今回はSTM32F303KとSW4STM32を使用しました。

試しの基板としてZMOD4410とHS3001を組み合わせた環境センサを作成してみました。温度、湿度、TVOC、CO2等を測定することが可能です。

env-sen.jpg


実際に使用してみたところ、換気直後は400ppm以下(下限400ppmでそれ以下は測定できない)となり、夜部屋を閉め切った寝室では朝方にかけて800ppm以上となり、換気をすると400ppm以下に収まることが確認できました。以前の改良前のZMOD4410 - 1st GenではSGP30同様に値のドリフトが多少気になりましたが、ZMOD4410 - 2st Genでは学習にニューラルネットワークが適用された変換アルゴリズムでドリフトが低減したように感じました。


zmod_test.jpg


ZMOD4410はバイナリファイル(libファイルやaファイル)を組み込むことができる開発環境が必要で、データシートも公開されていません。さらに変換アルゴリズムライブラリのコードサイズやメモリ使用量が大きく、敷居が高いセンサです。今後はI2CでArduino等からも簡単に扱うことができるZMOD4410専用の変換基板も開発してみたいと思います。また、ZMOD4410、SGP30、NDIRとの同時計測で比較してみたいと思います。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2020年06月20日

RMD Servo Motor

今回は海外で話題になっているRMD Servo Motorについて紹介します。

RMD Servo Motorはブラシレスモータ本体、磁気エンコーダ(12bit以上、4096/回転)、モータ制御ドライバ、RS485orCAN通信ドライバが一体になったモータで電源と通信線だけでモータを制御することができます。ここまでは普通のプロポサーボモータ等と同じような仕様ですが、位置制御、速度制御に加えてトルク制御(電流制御)が可能です。トルク制御に対応したドライバ一体のブラシレス小型モータはほとんどありません。一部のプロポサーボモータはトルク制限(トルク制御でない)に対応していますが、トルク制御とは違います。ちょっと残念なのはトルク制御はオープンループな点ですが...電流センサを内蔵してフィードバックしてほしい気もします。

なお、各制御系の制御周期はオープンループトルク制御32kHz、クローズド速度制御4kHz、クローズド位置制御2kHzとなっており、32bitマイコンを搭載したメリットを存分に活かす仕様です。専用のソフトウェアで制御ゲインの他、モータIDや動作テストをすることができます。モータIDを書き換えることでRS485ラインorCAN通信ラインに最大32台のモータを同時に接続することができます。



今回はRMD Servo Motorの中でも最も小さいRMD-S-24を試食してみました。購入はAliexpressで行いました。

IMG_0089.JPG

設定ソフトウェアRMDconfigを用いて設定や動作確認を行いました。PCとの接続はUSB-RS485変換ケーブルが手元になかったため、LTC485AE-FT2232を用いて接続しました。配線は下記の通りです。ポイントはTXDEN出力があるシリアルICを選択する点とRMDへモータ電源のVCCとは別に制御系と通信系の電源となる5Vも外部から供給が必要な点です。

rmd_con.jpg

モータ電源とは別に5V電源の供給が必要なことに気づかず、通信できない問題に時間を要してしまいました。5V電源を供給するとRMDモータ内部の基板の緑LEDが点灯し、無事通信とモータ制御できることが確認できました。


RMD Servo Motorは様々な出力の種類が用意されており、最も小さいRMD-S-24では4000円前後(送料別)となっています。プロポサーボモータに比べると高いものの、12bit以上の高精度な磁気エンコーダを搭載して制御系も一折実装されており、安価な産業機器のサーボモータレベルの機能でこの価格は驚きです。時間を見つけて次はArduinoやSTM32マイコン等から制御してみたいと思います。

posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2020年05月23日

電流センサアンプ

今回はコンパレータ内蔵電流センサアンプINA303を紹介します。電流センサアンプはシャント抵抗の微小な電位差を増幅して電圧出力するためのアンプです。電流センサアンプを使用するメリットとしてTIのサイトでも紹介されていますが、下記のようなメリットが挙げられます。

・「小型化、部品点数の削減」
  ディスクリートでシャント抵抗から電流値を電圧に変換するためにはオペアンプや抵抗等の増幅回路が必要です。正負(バイポーラ)で電流検知する場合は正負電源が必要な場合もあります。電流センサアンプを使用するとゲインが固定されている一方でチップ単体で実現できます。また、電流センサアンプは電源電圧範囲を超える入力電圧をシャント抵抗の電圧として入力可能なため、正負電源が不要です。VCC/2を中立の0Aとして、負側の電流もオフセットさせて電圧出力させることができるため、そのままマイコンのADC等で取り込むことが可能です。

・「高精度化」
 オペアンプや抵抗等の増幅回路が削減できるため、部品による差がなくなります。また、電流センサアンプはシャント抵抗の電圧差の増幅に特化しているため、温度ドリフトが少なく、増幅率が高精度に固定されています。

・「設計工数の削減」
 小型化、部品点数の削減により、設計工数の削減が可能です。ハイサイド、ローサイドの電流検知回路によって回路を設計し直す必要もありません。電流センサアンプの多くはハイサイド、ローサイド両方ともそのまま使用することができます。


このように電流センサアンプは非常に便利です。単機能の電流センサアンプはINA181等をよく利用しています。今回、紹介する電流センサアンプINA303はアンプ機能に加えて、コンパレータを内蔵しています。電流を検知する場合、通常の電流変化の他、異常な電流を検知する場合もあります。コンパレータ内蔵の電流センサアンプはそのような場合のニーズを満たすICとなっています。

具体的にはINA303に閾値を入力することで異常な電流(電流センサアンプから見ればシャント抵抗の電圧差)が検知された場合にIOでアラートを出すことができます。また、アラート出力を保持することも可能です。通常、コンパレータを使用しない場合、異常な電流が発生したかどうか、電流センサアンプのアナログ値を高サンプリング周期で監視する必要があります。コンパレータはアナログ回路で構成されているため、高サンプリングな監視と同等です。コンパレータ内蔵電流センサアンプを使用すれば、マイコン側からは高サンプリングで監視する必要がなくなります。異常のアラートIOをマイコンの外部割込みに設定すれば異常があった場合にイベントを走らせることが可能です。サンプリング周期や監視周期を高くできない場合にも異常な電流を取り逃すことなく検知することができます。

コンパレータ内蔵の電流センサアンプはTIから数種類販売されています。中でも2つコンパレータが搭載されているデュアルコンパレータタイプは例えば、正側の過電流、負側の過電流の両方を検出(ウインドウコンパレータ)したり、異常電流と警報電流の2段階で異常を検出(2つの制限超過アラート)のタイプがあります。ウインドウコンパレータと2つの制限超過アラートの違いが分かりづらいと思ったのでINA303のデータシートから違いの図を抜粋してみました。


INA302_INA303_compare.jpg
INA303データシートP.21から抜粋。
左がINA302の2つの制限超過アラートタイプ、右がINA303のウインドウコンパレータタイプです。アラート部分にピンクor赤の色を付けています。

デュアルコンパレータの場合、1つのコンパレータは閾値の超過でアラートを出力しますが、もう片方をどう出力するかで2つのタイプ(制限超過アラートタイプ、ウインドウコンパレータタイプ)があります。正側の電流監視の場合はコンパレータ1つもしくは2つの制限超過アラートタイプが適当です。正負の両側を監視する場合はウインドウコンパレータタイプが適当です。

例えば、DCモータの過電流検知をする場合、正回転、負回転で電流の方向が正負両側の異常電流を検出するため、ウインドウコンパレータタイプが適当です。もし、異常電流だけでなく、警報機能も持たせたい場合はウインドウコンパレータタイプをもう1つ使用して低い閾値を設定することで実現できます。

便利なデュアルコンパレータ搭載の電流センサアンプを評価しやすいように可変抵抗とアラートLED等を実装して電流センサアンプモジュールを設計してみました。

cs.jpg

検証を進めて問題なければ、どこかで販売を開始したいと思います。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2020年05月16日

CP2615パラメータ書き換え方法

今回はUSB-I2S変換IC CP2615について紹介します。

Silicon Labs社から販売されているUSBインタフェース関連ICの1つにCP2615があります。CP2615はUSBとI2Sの変換ICで、I2S接続のcodecやadc、dacをUSBに変換することができます。USBをPCに接続するとPCからは標準オーディオデバイスとして認識され、USB接続マイクやスピーカーの開発を容易に行うことができます。また、USBデバイスを開発する際にはVID(Vender ID)やPID(Product ID)をUSB.orgから取得したり、ドライバを開発する必要がありますが、Silicon Labs社のCP2615はSilicon Labs社のVIDやPIDをそのまま最終製品に利用しても構わないと謳っているため、開発の敷居が低くなっています。

CP2615は出荷直後はUSBスピーカデバイスとして認識される設定となっており、使用するcodecやadc、dacに応じて内部のパラメータを変更して使用します。主要なcodecやadc、dacはI2Sでオーディオ信号を送受信する前にI2Cでパラメータ初期化が必要です。CP2615の内部パラメータを変更することでI2Cマスタとしての送受信を合わせて設定することができます。他にCP2615のGPIOでボリューム上げ下げのインタフェース設定等もできます。CP2615とcodec等を組み合わせてUSBスピーカやUSBマイクを簡単に開発できるようになっています。



CP2615のパラメータ変更はSimplicityStudio内のXpress Configuratorで行います。下記のようなイメージでパラメータを変更できます。

CP2615_setting_image.jpg



内部パラメータの書き換えはCP2615単体ではできません。書き込み治具としてCP2112が別途必要です。CP2615とCP2112はI2Cで接続し、CP2112を介してUSBで書き換えを行います。書き込む際には電源を入れる前にCP2615のCFGとRSTをGNDに接続し、電源投入後にRSTをVDDに接続し、CFGモードの状態で書き換えを行います。CP2615をXpress Configuratorから書き換えてみましたが下記の様なエラーが発生しました。

Programming completed,but with errors!
CP2615_SetConfig:HID_SMBUS_DEVICE_NOT_FOUND
CP2615_GetConfig:HID_SMBUS_DEVICE_NOT_FOUND

LogではProgramming completedと出ていますが、CP2615をUSBで接続しても設定が反映されておらず、書き込み失敗していました。原因を調査すると書き込み治具のCP2112のPIDが0xEA93でないと書き込み失敗するようです。CP2112のデフォルトVIDは0x10C4、PIDは0xEA90となっていまずが、CP2615の書き換えをSimplicityStudio内のXpress Configuratorで行うためにはPIDが0xEA93である必要があるようです。CP2615のEvalボードCP2112は出荷時にPIDが変更されているようですが、市販のCP2112を使ったため、書き込みに失敗したようです。

CP2615の書き換えを行う前にCP2112のXpress Configuratorのプロジェクトを作成し、PIDを0xEA93に変更してCP2112のパラメータを書き換えました。残念ながら、CP2112のパラメータ書き換えは1回限りのワンタイムプログラムとなっているため、再度の変更はできません。間違ったパラメータを書き込まないように注意する必要があります。

cp2112_pid.jpg


PIDを変更したCP2112で再度、CP2615の書き換えを行ったところ、正常に書き換えができました。手持ちのCP2112はPIDを0xEA93に変更したため、Xpress Configurator専用の治具になってしまいました。なお、CP2112はワンタイムプログラムですが、CP2615はフラッシュベースのため、CP2112を用いて何度も書き換えできます。CP2615で様々なI2Sデバイスを検証することができます。CP2615を用いてI2S接続のcodecやadcを組み合わせて遊んでみたいと思います。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2020年04月11日

正負昇圧コンバータ回路

オペアンプやAD変換、オーディオアンプといった回路では正負電源が必要になることが多々あります。そのような場合には方法として、昇圧コンバータ回路を使用する方法、仮想GNDを生成する方法(レールスプリッタ、オペアンプ)が考えられます。

仮想GNDを生成する方法では最大数mA~数10mA程度とあまり電流をとれません。一方、昇圧コンバータ回路を使用する方法では回路によって大電流をとれるものの、昇圧系部品のコストとスイッチングノイズが課題となります。MAU109といった絶縁型の昇圧コンバータは部品を減らして実装できますが、スイッチング周波数が100kHz前後とあまり高くありません。100ksps以上のAD変換用途やハイレゾオーディオ用途ではスイッチングノイズの影響を避けられません。電解コンデンサやインダクタ等のノイズフィルタが別途必要になります。スイッチング周波数を外部のノイズフィルタで除く場合、負荷変動によってノイズフィルタが十分機能しない場合があります。ノイズフィルタの他に昇圧させたあとにリニアレギュレータICでノイズリップルを除去するといった対策を行う場合もあります。

絶縁型ではありませんが、スイッチング周波数が高い2ch以上の昇圧回路を内蔵したスイッチングICを使用(例1例2)して正負電源を生成するとスイッチング周波数によるノイズリップルの影響を低減させることができます。スイッチング周波数が1.2MHz前後と非常に高いため、インダクタ等でノイズ除去も容易です。ただ、問題点として2ch以上の昇圧回路を内蔵したスイッチングICは1個800円~1000円近くするものも多く、コストが課題となります。


そこでいろいろ調査すると1chの昇圧回路で正負の電源を生成する回路例がありました。AD変換ICのADAS3023の電源回路として紹介されており、1chの昇圧スイッチングICとしてADP1613が使用されています。ADP1613であれば200円前後で販売されており、2ch以上の昇圧回路を内蔵したスイッチングICに比べてコストが1/4以下です。当該回路の弱点として正側の電圧しかフィードバックしていないため、正負で偏った負荷を与えると電圧変動してしまう点とカップルインダクタが2つ必要な点があります。オペアンプやAD変換、オーディオアンプ用途であれば正負で偏ることは少なく、カップルインダクタのコストアップもスイッチングICのコストアップに比べれば小さいため、メリットは十分ありそうです。

ADP1613_DualOutput.jpg
AD変換IC ADAS3023データシートから抜粋(左側が正負昇圧回路)


1chの昇圧回路で正負の電源を生成回路を実際に実装してみました。


ADP1613_Board.JPG

カップルインダクタのフットプリントpinアサインを間違えたため、ちょっと残念な実装になってしまいましたが、±15V前後の出力を確認することができました。正負対称電圧なら思いつかなくはないですが、1chの昇圧回路で正負の電源を生成するのはなかなか面白いと思いました。フットプリントpinアサインの修正とインダクタ、コンデンサのパラメータを調整してから基板公開や昇圧モジュールとしての販売を検討したいと思います。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする