Dave from DesignSpark
こちらの記事について、内容・翻訳・視点・長さなど、皆様のご意見をお送りください。今後の記事製作の参考にしたいと思います。
Dave from DesignSpark
Thank you! Your feedback has been received.
Dave from DesignSpark
There was a problem submitting your feedback, please try again later.
Dave from DesignSpark
こちらの記事の感想をお聞かせください。
MEMS技術を使った加速度センサは、特定方向の加速度の量を測定できる半導体デバイスで、主に地球の重力加速度を検出するために使用されてりしています。さらに、産業機器、モバイルアプリケーション、航空機器、戦術誘導システムなどでも使用されています。今回の記事では、このMSMS加速度センサモジュールを、ポータブル計測器の「Digital Discovery(136-8070)」上でPythonプログラミングで、動作評価する方法を紹介します。
この Digilent製「Digital Discovery」は、大人気の「Analog Discovery」の姉妹製品となっており、ロジック・アナライザ、パターン・ジェネレータなどのデジタル信号計測に必要な機能を1台に搭載尾したコンパクトなデバイスです。デジタル入出力は、シンプルなジャンパーやブレッドボード・ワイヤで回路接続できますし、専用アダプタっを使えばインピーダンス整合プローブを使ったより専門的な計測機として利用することもできます。
このデバイスはPC上のソフトウェア「WaveForms」と組み合わせで使用します。このソフトは、Windows、Mac、Linux、Raspberry Pi 4上で動作するマルチプラットフォームツールとなっており、JavascriptでDgital Discoveryの制御を自動化したり、内部APIにアクセスし、カスタムアプリ開発を行うこともできます。
評価に必要なもの
- Digilent製 Digital Discovery
- WaveForms 開発環境
- USBポートのあるPC
- Python 2.7インタプリタとmatplotlibを搭載したPythonソフトウェ
- I2C インターフェースの加速度センサ(この例では KAmodMEMS2 モジュールに採用されているMEMSセンサ「LIS35DE」 を評価します
事前準備
- センサーの GND と Vdd をそれぞれ Digital Discovery の GND と VIO ピンに接続し、KAmodMEMS2 I2C インターフェースから Digital Discovery に以下の接続を行います。
- CSピン を Vdd に
- SDOピン を GND に
- SDA、SCLを DIO33、DIO32に
- WaveForms SDKをロードします
- Pythonスクリプトを使用して、Digital DiscoveryからKAmodMEMS2モジュールへ3.3V電源供給を有効にし、I2Cインターフェースを設定します。デモを構成するには、バスの動作周波数を設定し、Digital Discoveryのどのピンを使用するかを選択する必要があります
# set I2C frequency and pins dwf.FDwfDigitalI2cRateSet(hdwf, c_double(1e5)) # 100kHz dwf.FDwfDigitalI2cSclSet(hdwf, c_int(32-24)) # SCL = DIO-32 dwf.FDwfDigitalI2cSdaSet(hdwf, c_int(33-24)) # SDA = DIO-33
- プロットウィンドウが開いている限り、Pythonスクリプトを使用してデータを読み込み、グラフを更新します。KAmodMEMS2 モジュールからの各読み出し操作は、I2C バス上での書き込み読み出し操作です。完全な操作のためにデバイスアドレスが設定され、WaveForms SDKは自動的にR/Wビットを維持します。データの書き込みと読み出しには2つの配列が使用され、ユーザーは何バイトを書き込むかを指定し、繰り返し起動した後に読み出しを行います。今回のテストでは、1バイトのみ書き込みます。レジスタアドレスは、各バイトがバスから読み出された後、センサーがレジスタアドレスをインクリメントするべきであることを示すビットマスクと結合されています。その後、OUTX レジスタから始まる後続のレジスタから 5 バイトが読み出されます。読み込んだデータは X,Y,Z の加速度データを 2 の補数で表現した 3 バイトと 2 つのダミーバイトで構成されています
dwf.FDwfDigitalI2cWriteRead(hdwf, c_int(address << 1), (c_ubyte*1)(LIS35DEreg.REG_OUTX | LIS35DEreg.READ_INC), c_int(1), rgRX, c_int(5), byref(iNak))
- スクリプトを実行し、KAmodMEMS2 モジュールをテストします。ウィンドウの上部にはセンサーからのライブ XYZ 加速度が時間の関数として表示され、下部には実際の X と Y の加速度が青いアスタリスク (*)として表示されます
プロジェクトの詳細、およびソースは Digilent Wiki で公開されています。ぜひ試してみてください。