ステッピングモータードライバ(SLA7078M)を動かしてみます
〔マイコンのトップに戻る〕
前にモータードライバ(L6470)を使い2相バイポーラステッピングモーターを動作させて見ました。
今回、2相ステッピングモーターユニポーラ駆動用 IC SLA7078MPRTを動作させたので忘備録として
残して置きます。
SLA7078MPRTの購入先は、秋月電子通商のこちらで買いました。
・モーター電源は10-44V Logic電源は3.0-5.5V 出力電流は3A
・Clock(パルス)入力駆動に対応(シーケンサーを内蔵)
・μステップ対応品、Full ステップ〜4W1-2 相に対応
・モーター電流を検出する「検出抵抗」を内蔵 (外付け不要)「R品」
・2 相励磁状態モニター出力
・コイルオープン/ショート検知出力 (保護回路内蔵品)「P品」
因みに、こちら(SLA7083MPR)の制御は"Phase入力対応"でA/B相のパルス切り替えを入力するらしい。
SLA7078MPRT(SLA7070Mシリーズ)のデータシートは、こちらを参照して下さい。
ピン配列構成
左はデータシートの外形図に少し書き
加えました。
図の様にピンピッチ2.54mmが
2列並んでいますが、
互いが少しずれているので1.27mmピッチ基板ですがぁ、
前後のピンピッチが4.5mmなのでぇ..
挿すには少し曲げないとぉ......
蛇の目基板作り人の事も考えて欲しいぞぉ。
でぇ、私は左写真の如く"EIC-801"の
ブレッドボードを2個用意し、お互いの
片側の電源部分を取り外します。
でぇ、取り外したお互いの部分を
少しずらし"SLA7078MPRT"を刺して
実験を行っています。
ICピン
|
PICピン
|
記号
|
機能
|
1
|
|
Out A
|
A相出力
(モーターの赤色線)
|
2
|
|
3
|
|
Out A/
|
A/相出力
(モーターの緑色線)
|
4
|
|
5
|
|
SenseA
|
A相電流検出
「R」品の為、抵抗を内蔵しているので端子はオープン
|
6
|
22(RB1)
|
Mo
|
1-2相励磁状態モニター出力(2相励磁モードでは出力されず)
(Clockの1周期毎或いは1ステップ毎にHigh/Low反転出力)
|
7
|
14(RC3)
|
M1
|
励磁/Sleep2 設定入力
励磁モードを設定(データシート参照)する端子だが、
M1/M2/M3=HighでSleep2モード
|
8
|
13(RC2)
|
M2
|
9
|
12(RC1)
|
M3
|
10
|
21(RB0)
|
Clock
|
Step Clock 入力
(1周期で1ステップ)
|
11
|
|
VBB
|
主電源(モーター電源 12V)
|
12
|
|
Gnd |
製品 Gnd
|
13
|
|
Ref/Sleep1 |
制御電流/Sleep1 設定入力
2.0V以上でSleep1モード、0 - 0.45Vでモーター電流の設定
|
14
|
|
VDD |
Logic 電源 (5.0V)
|
15
|
|
Reset |
内部 Logic リセット入力
(Highでリセットなので通常はLow)
|
16
|
15(RC4)
|
CW/CCW |
シーケンス正転/逆転切替入力
(Highで逆転、Lowで正転)
|
17
|
17(RC6)
|
Sync |
PWM制御切替入力(2相励磁のタイミングで使用可能)
(Highで同期 PWM 制御、Lowで非同期 PWM 制御 )
|
18
|
16(RC5)
|
Flag |
コイルオープン/ショート検知出力
(保護回路動作でHigh)
|
19
|
|
SenseB |
B相電流検出
「R」品の為、抵抗を内蔵しているので端子はオープン |
20
|
|
Out B/
|
B/相出力
(モーターの青色線) |
21
|
|
22
|
|
Out B
|
B相出力
(モーターの黄色線) |
23
|
|
※ Sleep1/2共に出力は停止なのでモーターはフリーラン状態です、
Sleep1はClock信号の入力を待ちますが、Sleep2は待ちません Logic 回路は停止します。
※ モーターの線色は、ST-42BYG020用での色線です。
《 配線図 》

"SLA7078MPRT"のドライバは上記で記載している様に、
この配線図の如くブレッドボードに刺さらない事に注意しましょう。
"Ref/Sleep1"の回路はデータシートの様に回路を組んだ方が良さげな気がします。
(今回は、Logic電源4.9Vの10K/1KΩの電源分割なのでぇ電流設定は0.44Vとなります)
LEDは"Flag"保護回路動作確認用です、正常動作で点灯、保護回路動作で消灯です。
《 サンプルプログラムについて 》
↓ここからサンプルプログラムソースファイルをダウンロードして下さい。
7078M.zip
プログラムソースをダウンロードしたら、MPLAB X(v4.10)にてプロジェクトを作成します。
以下のファイルをプロジェクトディレクトリにコピーしてプロジェクトに取込んで下さい。
次にコンパイルとPIC書き込みを実行して下さい。
MPLAB(R) XC8 C Compiler Version 1.40コンパイラを使用しています。
ダウンロードファイルを解凍すると下記の様なファイル構成です。
StepRun.c・・・・・・・本体のサンプルソースプログラム(ステップ指示で動作する)
ContinuRun.c・・・・本体のサンプルソースプログラム(連続回転指示で動作する)
コンパイル時は、"StepRun.c"か"ContinuRun.c"の何れか一つを取り込んでコンパイルします。
尚、CPUのクロックは8MHzを想定しています。
StepRun.c
このプログラムは起動させると1回転(正転方向)して止まります。
使ったモーターは、こちら(ST-42BYG020)で、1回転200Stepの1step1.8°です。
ドライバの励磁設定は、"1-2相励磁(2分割:Mode F固定)"なので、1stepを2分割にした分解能だから、
1回転は400stepとなります。
LEDは、起動させると起動確認で3回点滅します、その後は保護回路が正常なら点灯し、異常で消灯です。
(保護回路が動作するとドライバは出力を停止させます。)
下の図はClock周期は、200Hz時の波形です。

"Clock"の1周期が1ステップで、"Mo"出力は1周期単位に反転出力ですね。
下は拡大波形図、電流が制御されているのが解りますよね。

ContinuRun.c
このプログラムは起動させると連続で回転(正転方向)し、約10秒後に停止します。
関数の使い方を説明します。
Mdriver_Set(mode)
モータードライバの設定を行う処理関数です。
"Sync"は非同期PWM制御で設定を行っています。
mode:励磁モードを指定します
PHACE2_EXCITATION_M8 0 2相励磁(Mode 8固定)
PHACE2_EXCITATION_MF 1 2相励磁(Mode F固定)
PHACE12_EXCITATION_M8 2 1-2相励磁(2分割:Mode 8固定)
PHACE12_EXCITATION_MF 3 1-2相励磁(2分割:Mode F固定)
PHACE12W_EXCITATION_4 4 W1-2相励磁(4分割)
PHACE12W_EXCITATION_8 5 2W1-2相励磁(8分割)
PHACE12W_EXCITATION_16 6 4W1-2相励磁(16分割)
SLEEP_MODE2 7 スリープモード2
例)Mdriver_Set(PHACE12_EXCITATION_M8) ;
Mdriver_Start(dir,step,frq)
モータードライバへの回転指示を行う処理関数です。
dir : 回転方向を指定します
FORWARD(0)=正転 REVERSE(1)=逆転
step:回転させるステップ数を指定します
CONTINUED_ROLL(0)=連続回転
2相励磁モード(mode=0/1)では指定出来ません、連続回転となります。
frq : 回転させる速度(周波数:Hz)を指定します(200Hz前後での調整となるでしょう)
指定周波数が同じでも励磁モード(mode)により速度は変わります。
Mdriver_Stop(sleep)
モータードライバへの停止指示を行う処理関数です。
スリープ解除は、"Mdriver_Set( )"で励磁モードを指定する事で行います。
sleep : 0=停止後スリーブさせない 1=停止後スリープモードに入る(フリーラン状態)
PWM_Set()
PWM(CCP1)の設定を行う処理関数です。
CCP機能はTimer2を使いCCP1のRB0端子から出力します。
ans = PWM_Frequency(frequency)
PWM(CCP1)の出力周波数を設定する処理関数です。
この関数を呼び出したら、Timer2は停止します、"PWM_Start( )"で開始しましょう。
frequency : 設定する周波数(Hz)を指定します。(125-8000Hz程)
ans : -1=設定不可能な周波数ですよ それ以外は"約100%"のデュティ比を返す
PWM_Start(duty)
PWM(CCP1)の出力を開始する処理関数です。
duty : PWMのデュティ比を指定する(10bit)
(出力周波数が高くなると10bitでなく6bitとか少なくなって行きます)
PWM_Stop()
PWM(CCP1)の出力を停止する処理関数です。
例)
int d ;
PWM_Set() ;
d = PWM_Frequency(200) ;
PWM_Start(d/2) ;
《2相励磁の波形》
2相励磁(Mode F固定)モードでClock周波数は"220Hz"の正回転での波形を示します。
回転時の波形です。
電流設定値は0.44V(Logic電源4.9Vの10K/1KΩの電源分割)での波形。

停止時の波形です。(スリープしていないので出力は出ているからトルクは有ります)

停止時の波形(上図)を拡大して見ました。
全体的にA相とB相がLow状態で、A/相とB/相がHigh状態でしょうか、
完全にLow/Highでは無い様ですね。

上は電流設定が0.44Vですが、下は0.1V(Logic電源4.9Vの100K/2.2KΩの電源分割)での波形。
出力電流はこちらの方が少なさそうですね。
なのでぇ、モーターが回転しない場合は、電流設定を上げて見ましょう。

拡大して見た。

《その他》
速度制御がぁ、もう少し低速から高速まで出来たら良いのになぁ。
それとぉ、ピンピッチがぁ....ザンネン...(´ω・`。)
後ぉ、"Clock"信号の周期を数KHzにして欲しい気もします、
低い周波数(Hz)だとCCP機能で作り出せない場合が有るのでぇ。
【きむ茶工房ガレージハウス】
Copyright (C) 2006-2018 Shigehiro Kimura All Rights Reserved.