##ESP32とL6470のステッピングモータードライバを使ってステッピングモーターを動かしたいのですが、現状ピクリとも動きません。
詳しい方がいらっしゃいましたら、ご教授ください。
使用ハード:
・ESP32-wroom-32d
・L6470(秋月電子で販売しているドライブキットです。 https://akizukidenshi.com/catalog/g/gK-07024/)
・DC電源 24V 2.7A
・ステッピングモーター 3V 1.3A 1.8°
各サイトを参考にしてプログラムを書いてみましたが、全く動く気配がありません。
作成したソースを載せます。
#include <Arduino.h> #include <SPI.h> #define PIN_SPI_STATUS 32//busy,sync pin #define PIN_SPI_MOSI 23 #define PIN_SPI_MISO 19 #define PIN_SPI_SCK 18 #define PIN_SPI_SS 5 void Stepper_L6470_Send(unsigned char val) { while ( !digitalRead(PIN_SPI_STATUS) ) { }//busy status check digitalWrite(PIN_SPI_SS, LOW); SPI.transfer(val); digitalWrite(PIN_SPI_SS, HIGH); } void Stepper_L6470_Send_u(unsigned char val) { digitalWrite(PIN_SPI_SS, LOW); SPI.transfer(val); digitalWrite(PIN_SPI_SS, HIGH); } void Stepper_L6470_transfer(int add,int bytes,long val){ int data[3]; Stepper_L6470_Send(add); for(int i=0;i<=bytes-1;i++){ data[i] = val & 0xff; val = val >> 8; } if(bytes==3){ Stepper_L6470_Send(data[2]); } if(bytes>=2){ Stepper_L6470_Send(data[1]); } if(bytes>=1){ Stepper_L6470_Send(data[0]); } } void Stepper_L6470_Reset() { Stepper_L6470_Send_u(0x00); Stepper_L6470_Send_u(0x00); Stepper_L6470_Send_u(0x00); Stepper_L6470_Send_u(0x00); Stepper_L6470_Send_u(0xc0); } void Stepper_L6470_setup() { Stepper_L6470_Send(0x09); Stepper_L6470_Send(0x1F); Stepper_L6470_Send(0x0A); Stepper_L6470_Send(0x1F); Stepper_L6470_Send(0x0B); Stepper_L6470_Send(0x1F); Stepper_L6470_Send(0x0C); Stepper_L6470_Send(0x1F); } void Stepper_L6470_Move(int dir, long n_step) { Stepper_L6470_transfer(dir, 3, n_step); } void setup() { delay(2000); Serial.begin(9600); pinMode(PIN_SPI_STATUS, INPUT); pinMode(5,OUTPUT);//PIN_SPI_SS//追記 SPI.begin(PIN_SPI_SCK, PIN_SPI_MISO, PIN_SPI_MOSI, PIN_SPI_SS); SPI.setDataMode(SPI_MODE3); SPI.setBitOrder(MSBFIRST); //reset device delay(200); Stepper_L6470_Reset();//device reset //setup device delay(200); Stepper_L6470_setup(); } void loop() { Stepper_L6470_Move(0x41, 200); delay(1000); uint8_t res; Stepper_L6470_Send(0xD0); digitalWrite(PIN_SPI_SS, LOW); res = SPI.transfer(0x00); digitalWrite(PIN_SPI_SS, HIGH); Serial.printf("%X", res); digitalWrite(PIN_SPI_SS, LOW); res = SPI.transfer(0x00); digitalWrite(PIN_SPI_SS, HIGH); Serial.printf("%X", res); digitalWrite(PIN_SPI_SS, LOW); res = SPI.transfer(0x00); digitalWrite(PIN_SPI_SS, HIGH); Serial.printf("%X", res); }
###試したこと
getsutasの値を取得してみましたが、0が戻って来るのみでステータス情報も取得できていません。
###追記
esp32とステピンクドライバーとの接続は、
esp32---L6470端子
GPIO23---5ピン GPIO23---7ピン
GPIO19---7ピン GPIO19---5ピン
GPIO18---6ピン
GPIO5---8ピン
GPIO22---1ピン
L6470のロジックボード電圧は、内部レギュレータの3vを使うように、ジャンパピンの1-2をつなげています。
基盤上のLEDは光っています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/04 17:01
2021/02/05 00:17 編集
2021/02/05 00:34
2021/02/05 15:03