長期的に製品提供される高機能かつ長寿命のIMUを採用することで、産業用デバイスの長い製品寿命を確保

著者 Stephen Evanczuk

DigiKeyの北米担当編集者の提供

開発者がロボットシステム、スマートパワーツール、資産追跡デバイス、その他のモーションベースの産業用製品を作成しようとするとき、慣性計測ユニット(IMU)は、性能や安全性などの管理に必要なデータを得るために重要な役割を果たします。このような長寿命の産業用製品のメーカーにとって頼りになるのは、IMUデバイスが発揮する性能だけでなく、デバイスが長期にわたり提供され続けることです。新しいクラスの産業用IMUが長く提供されて利用を継続できることで、開発者は性能と可用性の両面で要件を満たすソリューションを得られます。

この記事では、Bosch SensortecSTMicroelectronicsの2社が提供するIMUを取り上げます。これらの製品は、過酷な産業環境での正確な測定を保証するため、メーカー独自の10年間製品継続プログラムの一環として設計されています。また、これら産業用IMUデバイスメーカー2社とAdafruit Industriesが提供する、ソフトウェア開発ボードも取り上げます。これらの開発ボードは、IMUに基づく設計の迅速な開発を後押しする製品でもあります。

IMUの概要

IMUは、加速度計とジャイロスコープを組み合わせたセンシングデバイスで、6自由度の直線および回転運動の検出に必要なデータを提供します。高機能なIMU、たとえばBosch SensortecのBMI088などに含まれる、マイクロエレクトロメカニカルシステム(MEMS)技術で構成された加速度計やジャイロスコープセンサは、専用の信号チェーンとA/Dコンバータ(ADC)およびロジックに統合されており、完全なモーション検出システムを単体パッケージ化しています(図1)。

Bosch SensortecのBMI088 IMUの図図1:Bosch SensortecのBMI088などの高機能IMUは、センサ、信号チェーン、ロジックの統合によって完全なモーション検出システムを実現し、標準のシリアルインターフェースを介してホストプロセッサにそのまま統合できます。(画像提供:Bosch Sensortec)

その幅広い統合機能により、IMUはシステム設計に容易に統合できます。通常はI2CまたはSPI接続さえあれば、デジタル化されたデータをホストプロセッサに送信できます。

産業用IMUの性能と安定性

BoschのBMI088に代表される産業用IMUは、過酷な環境でも動作するように温度安定性と振動堅牢性に特化して設計されています。そのような環境で熱応力や機械的振動または衝撃に恒常的に晒されると、脆弱なデバイスでは性能低下の原因にもなります。BMI088は、16ビット3軸加速度計と16ビット3軸ジャイロスコープを統合しており、それぞれ重力加速度0.09ミリg(mg)と0.004度/秒(°/s)の分解能を備えています。このデバイスは、125°/sから最大2,000°/sに及ぶ範囲で多様なフルスケール角速度でのジャイロスコープ測定をサポートします。同クラスの多くのデバイスと同様に、BMI088は産業用温度範囲-40~+85°C全域での動作をサポートします。同クラスの多くのデバイスを上回る機能を備えたBMI088加速度計は、最大24グラムのフルスケール測定をサポートし、産業アプリケーションにありがちな高振動レベルでの信号クリッピングからの保護を強化しています。

同時にこのデバイスは、産業環境によく見られる高温や温度急変の要件にも対応します。BMI088の加速度計は、わずか0.002パーセント/ケルビン(%/K)の感度温度ドリフトと、0.2mg/ケルビン未満のゼロgオフセットの温度ドリフトを示します。同様に、BMI088のジャイロスコープのオフセット温度係数(TCO)はわずか0.015°/s/K、感度温度係数(TCS)は0.03%/Kです。

このような高性能な特性にもかかわらず、MEMSベースのIMUは一般的に最小限の電流しか消費しません。たとえば、BMI088の加速度計はノーマルモードで150μAの電流を消費し、ジャイロスコープで必要なのは5mAです。多くの低電力デバイスと同様に、BMI088は非アクティブ期間中であれば低電力モードに切り替えられます。低電力のサスペンドモードでは、加速度計とジャイロスコープの電流はそれぞれ3mAと25mAに低下します。実際には、BMI088ジャイロスコープはディープサスペンドモードを備えており、同モードの消費電力は5mA未満です。

もちろん、ポータブル型電動工具や資産追跡デバイスなどのバッテリ駆動式アプリケーションでは低電力動作がきわめて重要なことに加えて、産業向けアプリケーションでは通常の測定を即座に再開する機能も重要になります。実際に、BMI088のサスペンド(およびディープサスペンド)モードからのウェイクアップ時間は、ウェアラブルデバイスなどの個人用電子製品を含む民生用アプリケーションで通常使われるIMUのウェイクアップ時間よりも大幅に高速化されています。

長寿命製品のサポート

民生用機器と産業用機器に使われるIMUの要件には、これらを区別する根本的な違いがあると言えます。他の製品カテゴリと同じように、民生用製品と産業用製品のライフサイクルには、その製品の登場から、普及拡大、成熟、衰退に至る一般的なパターンが見られます(図2)。

長期的に提供される信頼性の高い成熟製品ラインのグラフ図2:一般的に民生用製品のライフサイクルでは、その終盤が消費者の最新機能志向によって減衰しますが、多くの産業ユーザーは信頼できる成熟製品ラインが長続きすることを重視します。(画像提供:Wikipedia)

民生用製品の場合、機能豊富な最新モバイル製品が常に求められるようになり、製品ライフサイクルの成熟と衰退の期間が劇的に短縮しています。民生用電子機器でライフサイクルが短縮するのとは対照的に、さまざまな産業用機器では、耐用期間が何年も続くことが期待されます。産業用グレードの成熟した電動工具製品ラインが一般的により多くの支持を集めるのは、「お飾り的な機能」でなく工具の主要機能を十分発揮することへの信頼感があるからです。また、資産追跡やIIoTモニタリングなどの産業用アプリケーションでは、1つのデバイスファミリが長く提供されることが、機能拡張のたびにデバイスを交換する必要性や現実性よりも重要だとも言えます。

長寿命製品の要件を満たすため、開発者は多くの場合、半導体メーカーの長期製品提供プログラムから特に重要なパーツを見つけ出します。これにより、製品登場からある程度の長期にわたり製品提供が続くことが保証されます。たとえばBoschは、10年間製品を提供し続ける独自プログラムの一環として、BMI090L IMUを提供しています。BMI090LはBMI088のピン互換バージョンで、BMI088と同じ機能および性能仕様を備えています。

機械学習型の産業用IMU

独自の10年継続プログラムの一環として、STMicroelectronicsは高性能なISM330DHCX産業用IMUを提供しています。ISM330DHCXは、専門化されたiNEMOシステムインパッケージ(SiP)モジュールのシリーズに含まれており、このシリーズには、STMicroelectronicsのLSM6DSOXおよびLSM6DSRXも含まれます。これらのデバイスでは、3軸加速度計と3軸ジャイロスコープを組み込み、機械学習コアと組み合わせています。(iNEMO機械学習コアとその使用方法について詳しくは、「スマートセンサに内蔵される機械学習コアを使用して「常時オン」モーショントラッキングを最適化」を参照してください。)

バッテリ駆動の民生用製品向けに設計されたLSM6DSOXは、同シリーズの特殊デバイスの中で最も低い消費電力を実現しています。もう1つのLSM6DSRXは、バーチャルリアリティ(VR)、拡張現実(AR)、およびドローンなどの用途向けに設計されています。LSM6DSOXよりも安定性が高く、拡張された機械学習コアを備えています。

高性能な産業用アプリケーション向けに設計されたISM330DHCXは、民生グレードのLSM6DSRXの機能に基づいて開発されましたが、LSM6DSRXの動作温度範囲-40~+85°Cに比べてISM330DHCXでは-40~+105°Cと大幅に広くなります。ISM330DHCXは、16gに及ぶ直線加速度範囲を備える一方、最大角速度の測定範囲は4,000°/sであり、同クラスのデバイスでは最大級の角速度測定範囲を備えています。産業用アプリケーションで求められるように、ISM330DHCXには温度依存性がほとんどありません。その加速度計は、感度変化率がわずか0.005%/°C、ゼロ点ドリフトが0.1mg/°Cで、ジャイロスコープは感度変化率が0.007%/°C、ゼロレートドリフトが0.005°/s/°Cです。

大半の高機能IMUと同様に、ISM330DHCXはI2CまたはSPI接続でホストプロセッサと簡単に統合できます。開発者は、以下4種類の構成でデバイスを接続できます。

  1. ホストに単独で接続して使用(モード1)
  2. センサハブ機能と共に使用(モード2)
  3. プライマリホストに接続、さらにジャイロスコープデータのみ読み取り可能なセカンダリホストに接続して使用(モード3)
  4. プライマリホストに接続、さらにジャイロスコープ/加速度計両データの読み取りが可能なセカンダリホストに接続して使用(モード4)

モード2では、ISM330DHCXがセンサハブとして動作します。スレーブモードでホストに対して機能し、ISM330DHCXのI2Cインターフェースに接続された外部センサに対しマスターとしても機能します(図3)。

STMicroelectronicsのISM330DHCXの図図3:STMicroelectronicsのISM330DHCXは、複数の動作モードで実行するように構成できます。上図の構成に含まれるモード2では、ISM330DHCXが外部センサへのセンサハブとして機能し、統合されたデータをホストに送信できます。(画像提供:STMicroelectronics)

IMU開発期間の短縮

デジタルIMUのハードウェア要件は最小限で済むため、開発者は開発の初期段階でハードウェア設計をほとんどスキップして、すぐにソフトウェア開発に着手し、その開発には産業用IMUデバイスのメーカーから提供される各種の開発ボードを利用できます。たとえば、Boschのアプリケーションボードは、BoschのBMI090Lシャトルボードなどの幅広いドーターボードを受け入れるように設計されています。Arm® Cortex®-M4プロセッサをベースにするBoschアプリケーションボードは、複数のテストポイントとコネクタを備え、ホストパーソナルコンピュータでの電源と開発用にUSB接続も装備します。

STMicroelectronicsのISM330DHCXに基づく産業用アプリケーションの評価と試作をスピードアップするには、Adafruit Industriesの4502 ISM330DHCX評価ボードをAdafruit Industriesの4382 STM32F405 Feather開発ボードに接続し、ハードウェアプラットフォームとして活用できます。

ソフトウェア開発では、AdafruitのCircuitPython LSM6DS GitHubソフトウェアリポジトリが、ISM330DHCX、LSM6DSOX、LSM6DS33など、多数のSTMicroelectronics製IMUをサポートします。これにより開発者は、Pythonコード数行のみを使用して試作のアプリケーションをすばやく作成し、ISM330DHCXセンサからのデータを読み取ることができます(リスト1)。

コピー
import time
import board
import busio
from adafruit_lsm6ds import ISM330DHCT
i2c = busio.I2C(board.SCL, board.SDA)
sensor = ISM330DHCT(i2c)
while True:
    print("Acceleration: X:%.2f, Y: %.2f, Z: %.2f m/s^2" % (sensor.acceleration))
    print("Gyro X:%.2f, Y: %.2f, Z: %.2f degrees/s" % (sensor.gyro))
    print("")
    time.sleep(0.5)

リスト1:開発者はAdafruitのCircuitPythonモジュールを使用して、ISM330DHCXオブジェクトの属性にアクセスするだけでISM330DHCXセンサデータを読み取るアプリケーションを迅速に試作できます。(コード提供:Adafruit Industries)

STMicroelectronicsは、同社独自のISM330DHCXベースのSTEVAL-MKI210V1Kアドオンボードも提供しています。このアドオンボードは、DIL 24アダプタを介して、同社のSTM32F401VEマイクロコントローラに基づくSTEVAL-MKI109V3開発ボードに接続します。STMicroelectronicsは、このボード設定でISM330DHCXを評価するためのソフトウェアパッケージを、Linux(STSW-MKI109L)、Mac OSX(STSW-MKI109M)、およびWindows(STSW-MKI109W)の各システム向けに提供しています。

このSTEVALハードウェアプラットフォームはISM330DHCXに特化したものすが、開発者はSTMicroelectronicsのX-NUCLEO-IKS02A1拡張ボードを活用することで、他のセンサとの組み合わせでもISM330DHCXを評価できます。ISM330DHCX IMUに加えて、X-NUCLEO-IKS02A1拡張ボードには、STMicroelectronicsのIIS2MDC地磁気センサ、IIS2DLPC低電力加速度計、およびIMP34DT05 MEMSデジタル全方向性マイクロフォンが含まれています。NUCLEO-IKS02A1拡張ボードは、STMicroelectronicsのNUCLEOボード(NUCLEO-L476RGなど)に差し込めるように設計されており、フル機能のハードウェアプラットフォームを提供します。

量産用コードの開発では、STMicroelectronicsのSTM32Cubeソフトウェアパッケージおよび関連するX-CUBE-MEMS1ソフトウェアアドオンが、包括的なソフトウェアプラットフォームを提供します。X-CUBE-MEMS1パッケージには、ボードおよびデバイスドライバに加えて、多数のサンプルアプリケーションが含まれており、センサとベースボードのセットで実行したり、カスタム開発の基盤としても使用できます。たとえば振動監視アプリケーションでは、単純なループによって、X-NUCLEO-IKS02A1拡張ボード上でISM330DHCXの加速度計からデータを継続的に読み取ります(リスト2)。

コピー
while (fftIsEnabled == 0)
    {
      if (((HAL_GetTick() - start) > 6000))
      {
        Restart_FIFO();
        return 0;
      }
 
      IKS02A1_MOTION_SENSOR_FIFO_Get_Tag(IKS02A1_ISM330DHCX_0, &tag);
 
      if (tag == (uint8_t)ISM330DHCX_XL_NC_TAG)
      {
        IKS02A1_MOTION_SENSOR_FIFO_Get_Axes(IKS02A1_ISM330DHCX_0, MOTION_ACCELERO, &acceleration);
      }
 
      /* Store data */
      single_data.AXIS_X = (float)acceleration.x;
      single_data.AXIS_Y = (float)acceleration.y;
      single_data.AXIS_Z = (float)acceleration.z;
 
      /* Remove DC offset */
      MotionSP_accDelOffset(&single_data_no_dc, &single_data, DC_SMOOTH, RestartFlag);
 
      /* Fill the accelero circular buffer */
      MotionSP_CreateAccCircBuffer(&AccCircBuffer, single_data_no_dc);
 
      if (AccCircBuffer.Ovf == 1)
      {
        fftIsEnabled = 1;
        AccCircBuffer.Ovf = 0;
      }
 
      MotionSP_TimeDomainProcess(&sTimeDomain, (Td_Type_t)MotionSP_Parameters.td_type, RestartFlag);
      RestartFlag = 0;
    }

リスト2:このスニペットは、STMicroelectronicsのX-CUBE-MEMS1パッケージに含まれる振動監視用のサンプルアプリケーションの一部であり、ISM330DHCX IMUから加速度計のデータを読み取る単純なループが示されています。(コード提供:STMicroelectronics)

このループ内で、関数IKS02A1_MOTION_SENSOR_FIFO_Get_Tag()はISM330DHCX固有のルーチン、ism330dhcx_fifo_sensor_tag_get()を呼び出し、モード1構成での動作時にISM330DHCXの特定ソースセンサまたは外部センサを識別するタグが返されます。ISM330DHCXに組み込まれたこのタグ付け機能により、デバイスの3Kバイト先入れ先出し(FIFO)バッファに格納される複数のデータタイプおよびソースを簡単に識別するメカニズムが可能になります。この例では、アプリケーションは加速度計タグISM330DHCX_XL_NC_TAGを想定しています。

IKS02A1_MOTION_SENSOR_FIFO_Get_Axes()への以降の呼び出しは、加速度計データのISM330DHCX固有ルーチンISM330DHCX_FIFO_ACC_Get_Axes()、またはジャイロスコープデータのルーチンISM330DHCX_FIFO_GYRO_Get_Axes()を呼び出します。この例では、この呼び出しはISM330DHCX_FIFO_ACC_Get_Axes()を使用し、このルーチンは低レベルルーチンISM330DHCX_FIFO_Get_Data()を呼び出します。これは、FIFOバッファデータ読み取りに必要なレジスタレベルの処理を実行し、次に3軸それぞれの感度スケールによる加速度データを返します(リスト3)。

コピー
int32_t ISM330DHCX_FIFO_ACC_Get_Axes(ISM330DHCX_Object_t *pObj, ISM330DHCX_Axes_t *Acceleration)
{
  uint8_t data[6];
  int16_t data_raw[3];
  float sensitivity = 0.0f;
  float acceleration_float[3];
 
  if (ISM330DHCX_FIFO_Get_Data(pObj, data) != ISM330DHCX_OK)
  {
    return ISM330DHCX_ERROR;
  }
 
  data_raw[0] = ((int16_t)data[1] << 8) | data[0];
  data_raw[1] = ((int16_t)data[3] << 8) | data[2];
  data_raw[2] = ((int16_t)data[5] << 8) | data[4];
 
  if (ISM330DHCX_ACC_GetSensitivity(pObj, &sensitivity) != ISM330DHCX_OK)
  {
    return ISM330DHCX_ERROR;
  }
 
  acceleration_float[0] = (float)data_raw[0] * sensitivity;
  acceleration_float[1] = (float)data_raw[1] * sensitivity;
  acceleration_float[2] = (float)data_raw[2] * sensitivity;
 
  Acceleration->x = (int32_t)acceleration_float[0];
  Acceleration->y = (int32_t)acceleration_float[1];
  Acceleration->z = (int32_t)acceleration_float[2];
 
  return ISM330DHCX_OK;
}

リスト3:複数のセンサと開発ボードをサポートするように設計されたSTMicroelectronicsのX-CUBE-MEMS1パッケージには、ここに示されるようなデバイス固有の機能が含まれます。これによって低レベルのルーチンISM330DHCX_FIFO_Get_Data()が呼び出され、必要なレジスタレベルの動作が実行されます。(コード提供:STMicroelectronics)

X-CUBE-MEMS1ソフトウェアパッケージに含まれる他のサンプルコードセットには、電子コンパス、チルトセンシング、センサ較正、そしてパッケージに含まれるMotionFXセンサ融合ライブラリを使用したデータ融合などの機能があります。NUCLEOボードセットと組み合わせることにより、STMicroelectronicsのSTM32CubeおよびX-CUBE-MEMS1ソフトウェアパッケージは、生産ですぐに使用できるモーションベースの産業用アプリケーション構築のための包括的な開発プラットフォームを提供します。

結論

産業用製品の設計では、過酷な動作条件への対応に加えて、製品ラインの寿命を向上させる必要が常にあります。モーションベースの産業アプリケーションに対応する産業用IMUは、堅牢性と安定性を組み合わせており、これらの特性は熱応力や機械的応力下でも正確に測定するために必要です。産業用IMUが長期的に提供されることで、開発者は、堅牢なモーションデータや長期にわたるデバイスの可用性に左右される産業用製品ラインにとって有効な設計ソリューションを得ることができます。

DigiKey logo

免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、DigiKeyの意見、信念および視点またはDigiKeyの公式な方針を必ずしも反映するものではありません。

著者について

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk氏は、IoTを含むハードウェア、ソフトウェア、システム、アプリケーションなど幅広いトピックについて、20年以上にわたってエレクトロニクス業界および電子業界に関する記事を書いたり経験を積んできました。彼はニューロンネットワークで神経科学のPh.Dを受け、大規模に分散された安全システムとアルゴリズム加速法に関して航空宇宙産業に従事しました。現在、彼は技術や工学に関する記事を書いていないときに、認知と推薦システムへの深い学びの応用に取り組んでいます。

出版者について

DigiKeyの北米担当編集者