モーターも買い直し、歯車も購入し、ここまでで実にパタパタ本体(2万)の半分くらいのお金をかけてきましたが、ようやく部品としては整ってきた感じです。
とりあえず、このサイトに書いてあるやり方をそのままやってみます。
サイトにある通り、L6470のドライバーとArduinoをこのようにつなぎます。
ドライバとモーターの配線は、下の写真のような感じです。上から、赤、緑、青、黄。
ドライバの電源は、写真上の赤い線2本から供給します。12Vで、1Aか2Aのものが良いようです。
できれば2Aのほうが余裕があって良いようです。
私は、あまり使っていない外付けハードディスクのACアダプタがたまたまその出力だったので、それを使うことにしました。
サンプルコードをArduinoのアプリに入力して、「マイコンボードに書き込む」を押すと…
おお、回る回る。
スピードや急停止などもコマンドで結構簡単に制御できるんですね。
このサンプルコードは、右まわり、左回り、ゆっくりなど、いろいろな回り方をするようにできています。パタパタを動かすにはちょっと向かないので、少しだけコードを改造して、単純に一定時間まわるようにしました。こんな感じ。
さっそく、歯車を本体に当ててみると…
おお、パタパタしてる!パワーは十分なようです。
これで基本的な部分は実現したことになります。意外と簡単です。
次は、プログラム部分を勉強して、パタパタをもう少し自在に動かしたいものです。
その辺を考えていきます。
とりあえず、このサイトに書いてあるやり方をそのままやってみます。
サイトにある通り、L6470のドライバーとArduinoをこのようにつなぎます。
ドライバとモーターの配線は、下の写真のような感じです。上から、赤、緑、青、黄。
ドライバの電源は、写真上の赤い線2本から供給します。12Vで、1Aか2Aのものが良いようです。
できれば2Aのほうが余裕があって良いようです。
私は、あまり使っていない外付けハードディスクのACアダプタがたまたまその出力だったので、それを使うことにしました。
サンプルコードをArduinoのアプリに入力して、「マイコンボードに書き込む」を押すと…
おお、回る回る。
スピードや急停止などもコマンドで結構簡単に制御できるんですね。
このサンプルコードは、右まわり、左回り、ゆっくりなど、いろいろな回り方をするようにできています。パタパタを動かすにはちょっと向かないので、少しだけコードを改造して、単純に一定時間まわるようにしました。こんな感じ。
#include <Arduino.h>#include <SPI.h>// ピン定義。#define PIN_SPI_MOSI 11#define PIN_SPI_MISO 12#define PIN_SPI_SCK 13#define PIN_SPI_SS 10void setup(){delay(2000);// ピン設定。pinMode(PIN_SPI_MOSI, OUTPUT);pinMode(PIN_SPI_MISO, INPUT);pinMode(PIN_SPI_SCK, OUTPUT);pinMode(PIN_SPI_SS, OUTPUT);digitalWrite(PIN_SPI_SS, HIGH);//SPI通信開始SPI.begin();// シリアル通信。Serial.begin(9600);SPI.setDataMode(SPI_MODE3);//SCKの立ち上がりでテータを送受信&アイドル時はpinをHIGHに設定SPI.setBitOrder(MSBFIRST);//MSBから送信//前のコマンドの引数を消去L6470_send(0x00);//nopL6470_send(0x00);L6470_send(0x00);L6470_send(0x00);//デバイスリセットコマンドL6470_send(0xc0);//ResetReviceL6470_setup();//L6470を設定}int i = 0;void loop(){//以下に動きを書くとその通りに動くwhile(i < 61 ){//連続運転 全部で61枚を回転させると、一周+1になるL6470_send(0x50);//Run(DIR,SPD),0x51:正転,0x50:逆転L6470_send(0x00);//SPD値(20bit)いじらないL6470_send(0x20);//ここの数字を下げると遅くなるL6470_send(0x00);//いじらないdelay(133);//この数字の時間だけ動作するL6470_send(0xB8);//HradStop_急停止i++;}}void L6470_send(unsigned char add_or_val){digitalWrite(PIN_SPI_SS, LOW);SPI.transfer(add_or_val); // アドレスもしくはデータ送信。digitalWrite(PIN_SPI_SS, HIGH);}void L6470_setup(){//最大回転スピードL6470_send(0x07);//レジスタアドレスL6470_send(0x00);//値(10bit),デフォルト0x41L6470_send(0x30);//モータ停止中の電圧設定L6470_send(0x09);//レジスタアドレスL6470_send(0x20);//値(8bit),デフォルト0x29//モータ定速回転時の電圧設定L6470_send(0x0a);//レジスタアドレスL6470_send(0x40);//値(8bit),デフォルト0x29//加速中の電圧設定L6470_send(0x0b);//レジスタアドレスL6470_send(0x40);//値(8bit),デフォルト0x29//減速中の電圧設定L6470_send(0x0c);//レジスタアドレスL6470_send(0x40);//値(8bit),デフォルト0x29//フ ル ス テ ッ プ,ハ ー フ ス テ ッ プ,1/4, 1/8,…,1/128 ステップの設定L6470_send(0x16);//レジスタアドレスL6470_send(0x00);//値(8bit)}
さっそく、歯車を本体に当ててみると…
おお、パタパタしてる!パワーは十分なようです。
これで基本的な部分は実現したことになります。意外と簡単です。
次は、プログラム部分を勉強して、パタパタをもう少し自在に動かしたいものです。
その辺を考えていきます。
コメント