タグ別アーカイブ: D2000

Intel Quark D2000 Zephyr STEPPING MOTOR


D2000でステッピングモータを回しました。
バイポーラ ステッピングモーター4SM-42BYG011
http://akizukidenshi.com/catalog/g/gP-05372/
SparkFun ROB-12779 EasyDriver ステッピングモータドライバ
https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4YRY
EasyDriver – Stepper Motor Driver
https://www.sparkfun.com/products/12779
ドライバIC A3967を使用しているのでパルス出力と方向出力のみでステッピングモータを回すことができます。
ZephyrのPWMのサンプルは、”PWM_0″を対象にしています。
PWM_0は、JTAGピンと競合しているため使用できません。PWM_1を使用するようにしました。

ピンの機能割付けを行いました。
struct device *pinmux = device_get_binding(PINMUX_NAME);
PWM1_PIN(24ピン)を機能C(PWM)に設定します。
if (pinmux_pin_set(pinmux, PWM1_PIN, PINMUX_FUNC_C)) {
これでPWM_1側が使えるようになります。

電源は、DC12Vを使用しています。
65W級スイッチングACアダプター12V5A GF65I-US1250
http://akizukidenshi.com/catalog/g/gM-00510/
D200ボードには12Vから三端子レギュレータで作成したDC5Vを入力しています。
エンコーダカウントが1秒間6400カウントに調整しました。一周1600カウントなので1秒4周です。240rpmで回したことになります。

サンプルプログラムは以下にあります。
https://github.com/jendo1969/d2000/blob/master/Step_motor/src/main.c

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 Blinky

Zephyr OSでサンプルを動かします。ISSMを起動し、
Project for Micro controllersで新しいプロジェクトを作ります。
Select a developer boardで
Intel Quark D2000 Developer Boardを選択します。
次にSelect firmwareで
Zephyr Project「[1.7.0]
を選択します。

Select a platform configuration画面はそのまま進めます。

次にサンプルを選択します。
ここでBasicのBlinkyを選択します。
BuildしてデバッグするとD2000のボード上のLEDが1秒間隔で点滅します。

周辺機器は、ライブラリ化されてるので初期化など関数化され
非常に短いコードになっています。
このサンプルでは、OSに関係する関数は、k_sleep()くらいです。

© 2014 Spineedge Corporation.