前回報告した、DECモーターが回らない件が解決した。原因は、結果的にモータードライバのRESET端子がLow になっていたためだった。これを High (RUN MODE) になるようにして、回転するようになった。
モータードライバのRESET端子はそれぞれ
RA側 → PC13
DEC側 → PB15
に物理的に接続されている。
これらのPINは、Pins.STM32B.h のPIN MAP定義ファイルにより、
#define A1MISO PC13
#define A2MISO PB15
#define A2MISO PB15
さらに
#define Aux1 A1MISO
#define Aux2 A2MISO
#define Aux2 A2MISO
と定義され、またまた
#define Axis1_Aux Aux1 // Aux - ESP8266 GPIO0 or SPI MISO
#define Axis2_Aux Aux2 // Aux - ESP8266 RST or SPI MISO
となっている。
#define Axis2_Aux Aux2 // Aux - ESP8266 RST or SPI MISO
となっている。
Onstep STM32 の一連のファイルを検索してみたところ、Axis1_Aux、Axis2_Aux は、ESP8266を使うときと共用になっており、Config で ESP8266 OFF としているので、PINの設定はされない。
このため、これらのPINは、入力設定になり、値が不定となる。起動時に、たまたま、RA側は High になり、DEC側は Low になったため、RA側は回転し、DEC側はしなかったということだ。
Initialize.ino ファイルの void initPins() に
pinMode(Axis1_Aux,OUTPUT); // For Motor Driver1 Reset
digitalWrite(Axis1_Aux,LOW); delay(5); // ResetReset Driver1
digitalWrite(Axis1_Aux,HIGH); // Run mode
pinMode(Axis2_Aux,OUTPUT); // For Motor Driver2 Reset
digitalWrite(Axis2_Aux,LOW); delay(5); // Reset Driver2
digitalWrite(Axis2_Aux,HIGH); // Run modeH
digitalWrite(Axis1_Aux,LOW); delay(5); // ResetReset Driver1
digitalWrite(Axis1_Aux,HIGH); // Run mode
pinMode(Axis2_Aux,OUTPUT); // For Motor Driver2 Reset
digitalWrite(Axis2_Aux,LOW); delay(5); // Reset Driver2
digitalWrite(Axis2_Aux,HIGH); // Run modeH
を追加して、起動時に、これらの端子を Low → High とすることで、モータードライバをリセットし運転モードにすることで、正常に回転するようになった。
届いたギアをモーターアセンブリに組み込んで、
さらに、RA側のウォームとのあたりを確認。かなりギリギリなので、再加工が必要。
まもなくRA側の試運転ができそう。