フォト
2024年9月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          
無料ブログはココログ

« IchigoJamでアナログ入力を使った6ボタン入力 | トップページ | Word2013(Windows 8.1環境)で中国語(簡体字)にルビを振る »

2015年5月 6日 (水)

IchigoJamでDVR8830を使ったロボットカー制御(1)

IchigoJamで何か動くものを製作したいと思い、試してみました。
Aliexpressでよさげな、商品を見つけ注文しました。
三輪の形状で二輪駆動のロボットカーです。

01


10日ほどで到着しました。
中華製品にしては珍しく、説明書がついていました。

Dscn3795

当然、説明は中国語です。

Dscn3796

んで、早速組み立てました。

Dscn3800

モーターの制御は以前利用したDRV8830を利用しました。
モーターを2つ制御するので2つ利用しました。

利用したのは秋月電子で購入した次のようなモジュールです。
I2Cバス接続でDCモーターの駆動制御が行えます。
Hブリッジ構成(モーターの正転、停止、逆転の制御)でPWM制御による
モーターの電圧を制御できます。

DRV8830の日本語データシートが下記にあります。
   TEXAS INSTRUMENTS http://www.tij.co.jp/jp/lit/ds/symlink/drv8830.pdf
その他の資料はこちら
   http://www.tij.co.jp/product/jp/DRV8830/description

モーター1つにつき、次のような結線を行います。
C1、C2のコンデンサはパスコン、C3のコンデンサはモーターのノイズ対策用です。
R1、R2はI2Cバス用のプルアップ抵抗です。
R3は、電流制限値1Aとして0.2Ωを抵抗を選定しています。

今回はFAULTnピンによる障害状態のチェックは行っていません。

02

2つのうち一方は、I2Cバスのプルアップ抵抗は不要、
I2Cアドレスが重ならないようにA0、A1をGNDに結線します。
2つのモジュールのI2Cアドレスは0xC0と0xC8(8ビット表記)となります。

モーターの制御は次の簡単な2バイトのコマンドを送るだけです。
1バイト目: レジスタアドレス(=0x00)
2バイト目: VSET(電圧コード)+CTRL(スタンバイ、正転、逆転、ブレーキ)

VSETの値


CTRLの設定値(2進数)
  00  スタンバイ
  01   逆転
  10   正転
  11   ブレーキ

IchigoJamで1つのモータに対して、正転で1.20Vの電圧を付加して回す場合は、
100 POKE #700,0,#F<<2+'10
110 R=I2CW(#64,#700,1,#701,1)


という感じになります。
取りあえず、本体を浮かせて走らない状態でプログラムでモーターを回してみました。
一応、ちゃんと回りました。

電源は、エネループ4本 4.8VからDC-DCコンバータを使って3.3Vを生成して
IchigoJamとDVR8830、モーターに供給しています。

Dscn3805

電流は800mAまで流せます。
基板上に半固定抵抗がついており出力電圧の調整ができます。
これもAliexplressで購入しました。140円くらいで購入できます。

全体としてはこんな感じです。

03

さて、組み上げて色々とセンサーを付けて動かして見たいところですが、
購入した三輪ロボットカー(2輪駆動+キャスター)がどんな動きをするのか
想像が付きません。曲がるには、片輪だけを回せば良いのか、どのくらい小回りが
きくのかさっぱり分かりません。

そこで、まずは先日作成した12ボタンを使った有線リモコン形式にしてみました。
手動操作でどんな動きが可能か、ボタンに色々な動作を割り当てて試したいと思います。

Dscn3801

100円ショップで2mのステレオ延長コードを購入してケーブルを延長しました。
長すぎでノイズが乗って誤動作の感はありますがまあ、よしとしましょう。

Dscn3798

早速、試運転です。プログラムとしては、
前進・行進・停止、右のみ正転・逆転、左のみ正転・逆転をボタンで行えるようにしました。
操作としては、7種類となります。


今回も助手のルミちゃんが走行試験を手伝ってくれました。
意外とよい動きをします。ただ、キャスターが機能していないっぽい。
キャスターのベアリングが固くて全然回らないです。

もう少し、旋回等を試してからセンサー等を付けて自動運転させたいと思います。

今回のプログラムはこんな感じです。

10 CLS:CLV:
20 POKE #700,0,0,0,0
30 LET[0],80,150,250,400,500,600,650,720,800,840,880,950
40 LET[20],#F<<2+`10,0,#F<<2+`01,#0
50 B=-1:I=0
60 A=ANA()
70 IF A<[I] THEN B=I:GOTO 100
80 I=I+1:IF I<12 GOTO 60
90 GOTO 50
100 LC 0,0:? B;" ";A;"    "
110 IF B=0 C=[20]:D=[21]:GOTO 200
120 IF B=1 C=[21]:D=[21]:GOTO 200
130 IF B=2 C=[22]:D=[21]:GOTO 200
140 IF B=4 C=[20]:D=[20]:GOTO 200
150 IF B=5 C=[21]:D=[21]:GOTO 200
160 IF B=6 C=[22]:D=[22]:GOTO 200
170 IF B=8 C=[21]:D=[20]:GOTO 200
180 IF B=9 C=[21]:D=[21]:GOTO 200
190 IF B=10 C=[21]:D=[22]:GOTO 200
195 C=[21]:D=[21]
200 GOSUB 500
210 GOTO 50
500 'MTR DRV(C,D)
510 POKE #701,C:POKE #703,D
520 R=I2CW(#60,#700,1,#701,1)
530 R=I2CW(#64,#702,1,#703,1)
540 RETURN

500行以降がモーターの制御です。
残りはリモコンの判定と各ボタンを押したときのモーターの挙動を設定しています。



« IchigoJamでアナログ入力を使った6ボタン入力 | トップページ | Word2013(Windows 8.1環境)で中国語(簡体字)にルビを振る »

IchigoJam」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: IchigoJamでDVR8830を使ったロボットカー制御(1):

« IchigoJamでアナログ入力を使った6ボタン入力 | トップページ | Word2013(Windows 8.1環境)で中国語(簡体字)にルビを振る »