タグ別アーカイブ: SENSOR

Intel Quark D2000 Zephyr CURRENT SENSOR

EasyDriverへ供給される電流を電流センサで計測しました。

電流センサは、TIのハイサイド、I2C 出力電流/電力モニタINA219を使用しました。
http://www.tij.co.jp/product/jp/INA219
INA219使用 電流センサーモジュール(カレントセンサー)
http://akizukidenshi.com/catalog/g/gM-08221/

シャント電圧降下とバス電源電圧を計測し、電流と電力が取得できます。

100msec毎にデータ取得しました。
高速回転時が80mA程度、停止時が350mA程度です。

サンプルプログラムは以下にあります。
https://github.com/jendo1969/d2000/tree/master/Step_motor2/src
INA219.hファイルに電流センサの制御をまとめてあります。
https://github.com/adafruit/Adafruit_INA219
ここを参考に作成しました。

Intel Quark D2000 Zephyr Rotary Encoder


D2000にロータリーエンコーダを接続してみました。ロータリーエンコーダは、なるべく安いものを探して以下の物をアマゾンで購入しました。

エンコーダー 元 AB 相 5-24v 400 パルス 増分の光学式ロータリーエンコーダー 本体サイズ 39 * 35.5 mm NPN 出力
https://www.amazon.co.jp/gp/product/B076Q5W251/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1
分解能が違いますが以下の取説を見つけました。
https://uamper.com/products/datasheet/LPD3806-360BM.pdf
エンコーダの出力は、NPNのオープンコレクタ出力です。D2000には、AB出力を4.7kΩの抵抗で3.3Vにプルアップして接続しています。
入力ピンの割り込みを利用して位相計数を行いました。アップエッジ、ダウンエッジの両方で割り込みをかけて4倍の分解能としました。400pprなので一周1600カウントとなります。正転でカウンタ増加、逆転でカウンタ減少が確認できました。

サンプルプログラムは以下にあります。
https://github.com/jendo1969/d2000/tree/master/RotEncoder

Intel Quark D2000 Zephyr BMC150 Magnetometer

BOSCH社製6軸センサ(3軸加速度、3軸磁気)BMC150を搭載しています。
https://www.bosch-sensortec.com/bst/products/all_products/bmc150

今回は磁気センサにアクセスします。

QMSIのサンプルMagnetometerと
mbedのBMC150サンプルを参考にしました。
https://os.mbed.com/users/Dautor/code/BMC150/file/1d1123b3df76/bmc150.cpp/
ありがとうございます。

加速度計のアドレスは、0x12です。
#define BMC150_I2C_MAG_ADDR 0x12

磁気センサの初期化でレジスタ0x4Cで0x38を設定しています。出力データレートを30Hz、操作モードをノーマルにしています。

磁気データは、0x42レジスタから2バイトづつXYZ軸の順に入っています。6バイトを一度に読み込んでいます。

温度と加速度と磁気値を500ms毎に取得し、シリアル経由でパソコンに表示しました。

以下にサンプルプログラムがあります。
https://github.com/jendo1969/d2000/tree/master/Bmc150_MAG

Intel Quark D2000 Zephyr BMC150 TEMPERATURE

BOSCH社製6軸センサ(3軸加速度、3軸磁気)BMC150には、加速度センサ側に温度測定を搭載しています。
https://www.bosch-sensortec.com/bst/products/all_products/bmc150

#define BMC150_I2C_ADDR 0x10
#define ACCD_TEMP_REG 0x08
I2Cアドレスが0x10 、温度値のレジスタが0x08です。

温度は、取得した数値が0の時、23℃です。数値1が0.5℃に対応しています。下が変換式はです。
temp_val = ((float)data) / 2 + 23;

1秒ごとに温度を取得し、シリアル通信USART_Aでパソコンに送りました。

数℃実際の室温より高いので校正が必要です。
BMC150 ICを触ると温度が上がるので計測はできているようです。

以下にサンプルプログラムがあります。
https://github.com/jendo1969/d2000/tree/master/Bmc150_Temp

© 2014 Spineedge Corporation.