PCD2112AをArduino(ATmega328P)から制御する(ソフトウェアサンプル)

概要

プロトタイプ開発に有用なArduino Holding製Arduino基板は、
SPIやI2C、UARTなどの多様なインターフェースで、周辺機器を接続できるAVRマイコン搭載ボードです。

SPIが使えるということなので、4線式シリアルバスインターフェースを搭載している
NPM製シリアルバス制御専用パルスコントロールLSI「PCD2112A」も接続できます。

ハードウェア接続例



上図は、2個のスイッチでステッピングモーターを操作するPCD2112A-QD接続例です。

マイコンボードはArduino Uno R3で、SPI信号線4本を「PCD2112A」に接続します。

ステッピングモーターはバイポーラで、制御線4本を「PCD2112A」に接続します。
(該当モーターは12V定格のためHブリッジICであるL293Dの採用を推奨します)

スイッチはプルダウン接続で、モーメンタリー2個を「PCD2112A」に接続します。

※リセットICが無ければ、代用として外部スイッチをご追加ください。

ソフトウェア記述例

  1. // 以下、Arduino言語によるプログラムソースコード例で、1-2相励磁の96ppsです。
  2. // スイッチを押すと直線加速して60rpmに達し、離すと直線減速して停止します。
  3. #include "SPI.h"
  4. void setup() {
  5.   byte mosi[] = {
  6.     0x02, 0x12, 0xFF, 0xFF, 0x04, 0xAF, 0x00, 0x00, 0x00,
  7.     0x00, 0x01, 0x00, 0x60, 0x00, 0x60,
  8.     0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x43};
  9.   SPI.begin();
  10.   SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE3));
  11.   delay(400); // PCD2112AをリセットするICの遅延時間
  12.   digitalWrite(PIN_SPI_SS, LOW);
  13.   SPI.transfer(mosi, 22);
  14.   digitalWrite(PIN_SPI_SS, HIGH);
  15. }
  16. void loop() { // スイッチ入力も含め、全てPCD2112Aが制御します
  17. }

ソフトウェアサンプル

ファイル構成

PCD2112A-QD_sample.ino Arduino IDE用のスケッチ

動画