ステッピングモータの話題と実験 > 「L6480 大電流ステッピングモータ・ドライバキット」の話題
「L6480 大電流ステッピングモータ・ドライバキット」の話題
#include <SPI.h>
#include <MsTimer2.h>
// ピン定義。
#define PIN_SPI_MOSI 11
#define PIN_SPI_MISO 12
#define PIN_SPI_SCK 13
#define PIN_SPI_SS 10
#define PIN_BUSY 9
#define PIN_STBY 8
void setup() {
delay(1000);
pinMode(PIN_SPI_MOSI, OUTPUT);
pinMode(PIN_SPI_MISO, INPUT);
pinMode(PIN_SPI_SCK, OUTPUT);
pinMode(PIN_SPI_SS, OUTPUT);
pinMode(PIN_BUSY, INPUT);
pinMode(PIN_STBY, OUTPUT);
digitalWrite(PIN_SPI_SS, HIGH);
digitalWrite(PIN_STBY, HIGH);
SPI.begin();
SPI.setDataMode(SPI_MODE3);
SPI.setBitOrder(MSBFIRST);
delay(1000);
while(!L6480_getstatus()){
Serial.println("Communication Error");
delay(1000);
}
L6480_resetdevice(); //L6480リセット
L6480_setup(); //L6480を設定
L6480_getstatus(); //フラグリセット
L6480_softstop();
delay(5000);
for(int k=2;k<400;k++){
L6480_run(1,stepspeed(k)); //指定方向に連続回転
delay(100);
}
delay(5000);
L6480_softhiz();//回転停止、保持トルクなし
}
void loop(){
}
long stepspeed(long k){//速度換算
long val=k/0.01490116119;
return val;
}
void L6480_setup(){
L6480_setparam_acc(0x8a); //[R, WS] 加速度default 0x08A (12bit) (14.55*val+14.55[step/s^2])
L6480_setparam_dec(0x8a); //[R, WS] 減速度default 0x08A (12bit) (14.55*val+14.55[step/s^2])
L6480_setparam_maxspeed(0x41); //[R, WR]最大速度default 0x041 (10bit) (15.25*val+15.25[step/s])
L6480_setparam_minspeed(0x00); //[R, WS]最小速度default 0x0000 (1+12bit) (0.238*val+[step/s])
L6480_setparam_fsspd(0x47); //[R, WR]μステップからフルステップへの切替点速度default 0x027 (10bit) (15.25*val+7.63[step/s])
L6480_setparam_kvalhold(0x29); //[R, WR]停止時励磁電圧default 0x29 (8bit) (Vs[V]*val/256)
L6480_setparam_kvalrun(0x29); //[R, WR]定速回転時励磁電圧default 0x29 (8bit) (Vs[V]*val/256)
L6480_setparam_kvalacc(0x29); //[R, WR]加速時励磁電圧default 0x29 (8bit) (Vs[V]*val/256)
L6480_setparam_kvaldec(0x29); //[R, WR]減速時励磁電圧default 0x29 (8bit) (Vs[V]*val/256)
L6480_setparam_intspd(0x508); //245[R, WH]逆起電力補償切替点速度default 0x0408 (14bit) (0.238*val[step/s])
L6480_setparam_stslp(0x26); //[R, WH]逆起電力補償低速時勾配default 0x19 (8bit) (0.000015*val[% s/step])
L6480_setparam_fnslpacc(0x65); //[R, WH]逆起電力補償高速時加速勾配default 0x29 (8bit) (0.000015*val[% s/step])
L6480_setparam_fnslpdec(0x65); //[R, WH]逆起電力補償高速時減速勾配default 0x29 (8bit) (0.000015*val[% s/step])
L6480_setparam_ktherm(0x1); //[R, WR]不明default 0x0 (4bit) (0.03125*val+1)
L6480_setparam_ocdth(0x1f); //[R, WR]過電流しきい値default 0x8 (5bit) (31.25*val+31.25[mV])
L6480_setparam_stallth(0x1f); //[R, WR]失速電流しきい値?default 0x10 (5bit) (31.25*val+31.25[mV])
L6480_setparam_stepmood(0x07); //[R, WH]ステップモードdefault 0x07 (8bit)L6480_setparam_alareen(val); //[R, WS]有効アラームdefault 0xff (1+1+1+1+1+1+1+1bit)
L6480_setparam_alareen(0xde); //[R, WS]有効アラームdefault 0xff (1+1+1+1+1+1+1+1bit)
L6480_setparam_gatecfg1(0x0148);//[R, WH]geta driver configuration //default 0x000(1+3+3+5bit)
L6480_setparam_gatecfg2(0x00);//[R, WH]geta driver configuration //default 0x00(3+5bit)
L6480_setparam_config(0x3728); //[R, WH]各種設定default 0x2e88 (3+3+1+1+1+1+1+1+1+3bit)
}
ステッピングモータの話題と実験 > 「L6480 大電流ステッピングモータ・ドライバキット」の話題