まず、L6470とArduinoの間では、制御信号のやりとりをSPI通信(シリアル・ペリフェラル・インタフェース – Serial Peripheral Interface, SPI)という方式で行います。このSPI通信とは、ArduinoなどのマイコンやICチップ同士などで信号をやりとりする際に使われる方式です。
プログラムの2行目(1)にある「#include
;」という表記で、Arduino上でSPI通信を利用する準備をしています。これまでライブラリを利用する際にも、「#include <***.h>」などのような表記がありましたね。
次に、(2)の部分で、L6470で利用するピンの設定を行います。ここではMOSIとかMISOとか書いてますが、これらがSPI通信の基本となる信号線になります。
SPI通信では、信号線は下記の基本的に3本(SS信号を使う場合は4本)で構成されます。それぞれ信号線はクロック(SCK)と出力信号(MOSI : Master Out Slave In)と入力信号(MISO : Master In Slave Out)という役割を持っていて、実際に通信する時に内部では、Arduino側が出力するクロック信号(SCK)を基準にして、L6470側と互いに向かい合わせて接続したそれぞれのインとアウト(MISOとMOSI)を使って、同時に8ビット単位のデータの送受信を行うしくみです。
SCK – Serial Clock
MISO – Master In Slave Out
MOSI – Master Out Slave In
SS – Slave Select
23hs45-4204s
24hs39-3008d
(3)で実際に利用する信号線のピンモードを設定します。次に(4)でSPI通信の利用モードを設定します。これは接続するデバイスにあったモードを選択する必要があります。(慣れないうちはこういうものか、という感じでとらえてください)
SPI通信の準備ができたので、(5)でようやくSPI通信を利用してL6470のセットアップを開始していきます。実際にSPI通信の信号を送信する部分は(6)でL6470_send()関数としてまとめてあります。
L6470のセットアップでは、データシートやマニュアルに記載されている仕様を確認しながら必要な項目をセットアップしていきます。
L6470 データシート – ストロベリーリナックス
※ページ下部にL6470説明書 と データシートが記載されています。
データシートの中身を見てみると、下記のような表やコマンドのアドレスが記載されています。今回12026モーターを使っていますので、表を参考にレジスタアドレスをSPI通信で送信してL6470の初期設定を行います。
表とプログラムの見方としては、例えば
Code-Example
//最大回転スピード設定
L6470_send(0x07);//レジスタアドレス
L6470_send(0x20);//値(10bit),デフォルト0x41
とプログラム側でありますが、これは表の機能「最大回転スピード」の行を見ていただければ、アドレスに「 0x07」、長さ「10」bit、初期値が「0x20」(12026モータの例)となっていますね。この表の値をSPI通信で送信することで設定ができるようになっています。
続きを見る:
https://www.oyostepper.com/
ブログ一覧 | 日記
Posted at
2019/12/12 18:35:41