fenri's diary

基本的には勉強し始めたC#のメモ。後は140字で収まらない駄文。

KP-DRV8830がM5 StickCで動いた

共立エレショップで買ったKP-DRV8830がうまくいかない。。。

調べた限りの事はやったつもりだけどなんでかうまくいかない。
うーん。。。

動いた!
わかってみれば超アホなことで
モータードライバに渡している値が小さすぎて電圧低くて回らないっていう。。。

そりゃそーだよ。
今回助言いただいた皆様ありがとうございました。


参考にしたとこ
kirakulabo.blogspot.com
shintarof.hatenablog.com
lang-ship.com


上記のブログの回路図上の4.7Kの抵抗は手持ちがなかったので
10Kの抵抗にしてみた。

KP-DRV8830の3ピンをM5StickCのG0へ
4ピンをG26に接続
KP-DRV8830の8ピンと9ピンをタミヤのモーターに接続

何が違うのか。。。

#include <M5StickC.h>

void writeRegister(byte adr, byte vset,byte Hbridge){//vset 電圧設定 データシートp10、Hbridge = 0x01;//回転方向(ブリッジ制御) データシートp8 0x01 正転 0x02逆転
  Wire.beginTransmission(adr);//I2Cの初期設定 データシートp12
  Wire.write(0x00);//スタンバイ データシートp8
  int vdata = (vset << 2) + Hbridge;   //DRV8830に送る信号 データシートp13 D0-1 Hブリッジ D2-D7 
  Wire.write(vdata);
  Wire.endTransmission();
}
void setup() {
  Serial.begin(115200);
  Wire.begin(0, 26); //SDA, SCL
  Wire.setClock(50000);
  M5.begin();
  M5.Lcd.setRotation(3);
  M5.Lcd.setTextSize(2);
}

void loop() {
  M5.update();
  if(M5.BtnA.pressedFor(100)){
     M5.Lcd.setCursor(10,10);
     M5.Lcd.println("start");
     writeRegister(0x63,0x30,0x01);//(正転)
     writeRegister(0x65,0x30,0x01);//(正転)
     delay(10);
  }else{
     M5.Lcd.setCursor(10,10);
     M5.Lcd.println("stop ");
     writeRegister(0x63,0x00,0x03);//vset:0x00 Hbridg:0x03(ブレーキ)
     writeRegister(0x65,0x00,0x03);//vset:0x00 Hbridg:0x03(ブレーキ)
     delay(10);
  }
}