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); } }