Windows + Python + FT232H + L6470 でステッピングモーターを回す

| コメント(0) | トラックバック(0)

ステッピングモーターを回したい!

ステッピングモーター関連を触ろうとすると高いんですよね・・・なんで、なんとか秋月で買えるもので。

というわけでFT232HL6470を使ってWindowsからUSB、SPI経由でステッピングモーターを回してみようと思います。

DSCN0276.JPGまずは接続。

なーんも考えることはありません。ピンアサインに従ってSPIをつなぎます。FT232H基板はUSB電源で、L6470基板は独自に12V電源をつなぎます。なんで、2枚の基板間ではGNDはつなぎますが、電源はつなぎません。

写真ではモーターはつないでませんが、動かすときには右側のコネクタにモーターをつなぎます。まぁ、当たり前ですね。

で、次にWindows上での環境セットアップ。Pythonをインストールして、FT232Hを使うための環境を構築します。すでにまとめてくださってる方がいらっしゃるので、こちらを参考にしてもらったほうが早いでしょう。FT232Hのメーカーのページもリンクしておく。

まぁ、簡単に書くと、

こんな感じ。

で、この記事のポイントはここから。

FT232Hで記事を探すと GPIO を使う話がひじょーに多くて、次にI2Cの記事が出てくる。SPIをやってる人がほとんど見つからなかったので、この記事を書いてます。

まずは、ソースをどーん!

from pyftdi.spi import SpiController
spi = SpiController()
spi.configure('ftdi://ftdi:232h:1/1')
dev=spi.get_port(cs=0, freq=12E3, mode=0)

# GetStatus CMD
dev.exchange([0xd0])
val1 = dev.exchange([], 1)
val = 0
val = val1[0] << 8
val1 = dev.exchange([], 1)
val = val | val1[0]
print("Status : %04x" % val)

こんな感じです。

前半4行がFT232HでSPIを使うための初期化部分。後半8行は L6470 の Status レジスターを読みだす処理です。

SPI に関する初期化は FTDI 社のライブラリにお任せです。特に3行目のURLっぽい指定方法は知らなきゃわかんねーよって言いたい書き方ですね。

で、次に L6470 のアクセス処理。ここが割と特殊です。

L6470 は仕様でコマンド 0xd0 を 1Byte 書き込むと、2Byte 使ってステータスレジスターの値を返してきます。

で、その書き方がポイント。

FTDIライブラリのサンプルとかに従って書くと、

val = dev.exchange([0xd0], 2)

と書くはずなんですが、これだと動きません。この時のSPIの波形がこんな感じです。

DSCN0268.JPG上からSPICLK、(FT232Hからみて)SPIOUT、SPIIN、SPICSです。

なぜかSPIOUTで書き込んだコマンド波形がそのままSPIINにエコーバックしてます。なぜなのか分かりませんが、こういう仕様のようです。

上記の正しく動くコードだと、こんな波形になります。

DSCN0267.JPG違いはSPICSの動き。8bit おきにCS が Diassert されてます。まぁ、実はデータシートに「各バイト送信ごとにCSをHにしろ」って書いてあるので、ちゃんと読めっていうだけの話なんですけどね。

最後におまけ。

from pyftdi.spi import SpiController
spi = SpiController()
spi.configure('ftdi://ftdi:232h:1/1')
dev=spi.get_port(cs=0, freq=12E3, mode=0)

speed = 45000
cmd = 0x50
dev.exchange([cmd])
val = (speed & 0xff0000) >> 16
dev.exchange([val])
val = (speed & 0x00ff00) >> 8
dev.exchange([val])
val = (speed & 0x0000ff)
dev.exchange([val])

とりあえずモーターを定速で回転させるスクリプトです。

内容はデータシートみて読み解いてください(を

このスクリプトを実行したときのSPIはこんな感じ。

DSCN0269.JPG

トラックバック(0)

トラックバックURL: http://horliy.seri.gr.jp/MTcgi/mt-tb.cgi/116

コメントする

このブログ記事について

このページは、ほーりーが2021年3月16日 20:47に書いたブログ記事です。

ひとつ前のブログ記事は「撮れた」です。

次のブログ記事は「銀河 NGC2336」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。