SHIKAKIKI のプロフ

Oyodental.jpは、高品質の歯科医療用機器・器具を提供する中国一流のオンラインサプライヤーであり、卸売価格でありながら迅速・効率のあるサービス提供しております。
Oyodental.jpは、高品質の歯科医療用機器・器具を提供する中国一流のオンラインサプライヤーであり、卸売価格でありながら迅速・効率のあるサービス提供しております。
ステッピングモーターのプログラムについて

ステッピングモーターのプログラムについて

今回の主題、ハイブリッドステッピングモーターのプログラムについて、詳しく勉強してみます。ArduinoからL6470を通してステッピングモーターを制御するには、L6470に制御信号を送るプログラムが必要です。回路は下記のとおりです。

図1 ArduinoとL6470のステッピングモーター回路
図1 ArduinoとL6470のステッピングモーター回路

ステッピングモーターのプログラム動作の流れ
下記がステッピングモーターのプログラムです。第37回、第38回と出てきましたが、このプログラムの流れを紐解いていきます。


Code-Example
#include
#include //(1)SPI通信をするための読み込み

//(2)ステッピングモーター用のピンの定義
#define PIN_SPI_MOSI 11
#define PIN_SPI_MISO 12
#define PIN_SPI_SCK 13
#define PIN_SPI_SS 10

void setup()
{
delay(1000);
Serial.begin(9600);

//(3)ステッピングモーター用のピンの準備
pinMode(PIN_SPI_MOSI, OUTPUT);
pinMode(PIN_SPI_MISO, INPUT);
pinMode(PIN_SPI_SCK, OUTPUT);
pinMode(PIN_SPI_SS, OUTPUT);
digitalWrite(PIN_SPI_SS, HIGH);

//(4)SPI通信の開始宣言
SPI.begin();
SPI.setDataMode(SPI_MODE3);//SCKの立上りでテータを送受信、アイドル時はpinをHIGHに設定
SPI.setBitOrder(MSBFIRST);//MSBから送信

//(5)L6470の利用設定
L6470_setup();
}

//**********************************************
//(6)SPI通信するための関数
//**********************************************
void L6470_send(unsigned char value){
digitalWrite(PIN_SPI_SS, LOW);
SPI.transfer(value); //制御信号をSPI通信で送る
digitalWrite(PIN_SPI_SS, HIGH);
}

//**********************************************
// (7)L6470のセットアップ
//**********************************************
void L6470_setup(){
//デバイス設定
L6470_send(0x00);
L6470_send(0x00);
L6470_send(0x00);
L6470_send(0x00);
L6470_send(0xc0);

//最大回転スピード設定
L6470_send(0x07);//レジスタアドレス
L6470_send(0x20);//値(10bit),デフォルト0x41

//モータ停止中の電圧設定
L6470_send(0x09);//レジスタアドレス
L6470_send(0xFF);//値(8bit),デフォルト0x29

//モータ定速回転時の電圧設定
L6470_send(0x0a);//レジスタアドレス
L6470_send(0xFF);//値(8bit),デフォルト0x29

//加速中の電圧設定
L6470_send(0x0b);//レジスタアドレス
L6470_send(0xFF);//値(8bit),デフォルト0x29

//減速中の電圧設定
L6470_send(0x0c);//レジスタアドレス
L6470_send(0xFF);//値(8bit),デフォルト0x29

//フルステップ,ハーフステップ,1/4,1/8,…,1/128ステップの設定
L6470_send(0x16);//レジスタアドレス
L6470_send(0x00);//値(8bit)
}

//**********************************************
// (8)メイン処理 - loop()
//**********************************************
void loop(){
//360度 - 1回転させる処理
L6470_send(0x50);//Run(DIR,SPD),0x51:正転,0x50:逆転
L6470_send(0x00);
L6470_send(0x20);//回転スピードの設定
L6470_send(0x00);
delay(1604);//1604msで約1回転
L6470_send(0xB8);//急停止(ハードストップ)
}
続きを見る:

name
email
url
comment

NEW ENTRIES
ステッピングモーターのプログラムについて(12.12)
なかたに歯科クリニックの菅敬江歯科衛生士(09.25)
OYO 2019 ベストセラーLED無影灯歯科手術用ライト(09.19)
音の少ない歯科ドリル(歯科用マイクロモーター)の特徴(09.11)
FAQ-歯科ホワイトニングLed ライトに関する知識(08.01)
DIYの大きな壁時計の3Dミラーの歯の形のステッカービッグ時計(08.01)
ケーラーチップの新たな挑戦(07.13)
RECENT COMMENTS
ARCHIVES
RSS
RSS