More Related Content
Similar to モーターを低速で定速で動かしてみる (20)
モーターを低速で定速で動かしてみる
- 3. (本題とは関係ないけど)OS歴
Sun-3(68K), Sun-4(SPARC), Solaris-2.x 〜 8(SPARC)
NEWS OS (Sony CISC NEWS, 68K)
DG/UX (Data General AV4000だったっけ?, M88K)
Luna OS (オムロン, 68K)
DOS/V
Windows 3.1
Digital UNIX (DEC Alpha AXP 61064)
Linux 1.0.x 〜
Windows XP/Vista/7 3
- 5. 定速制御
角速度のPI制御を使う
角速度は目的位置との変位から計算
恒星時追尾時の制御ループは二重になる
角速度は一定とする
導入の補助のときは変位は気にしない
角速度の検知をどうするか?
タコジェネを使うなんてありえない
位置の検知をどうするか?
ロータリーエンコーダなんてもっとありえない
モーターを検出用に追加する?
センサレス制御しかありえない?
5
- 10. PWMによる回転数制御
CCM(Continuous Conduction Mode)を使う
巻線のインダクタンスにより電流が途切れない
上下のスイッチを適度に速く交互にON/OFFする
T = TON +TOFF
DI =
V1 -V2 - IR1( )
L
TON
DI =
- V2 + IR1( )
L
TOFF
モーター電流は数百mA
V1=5V, V2=0.2V,
ΔIがおよそ30mAのとき、
TOFF=30mA*0.34mH/200mV=0.051ms
※ R1を無視した概算です
電池
1.8V〜5.4V
モーター
10
- 11. インダクタンスと抵抗
インダクタンス[μH] 抵抗[Ω]
miniモーター 1200 5.0 ミニモーター多段12速付属品
FA-130RA-2270 340 0.68
RE-260RA-2670 340 0.58
RC-260 340 遊星ギアセット付属品
Torque Tune Motor 145 0.33
Power Dash Motor 49.7 0.17
RE-280-20120 1200 RDO-501付属品
RE-280RA-2865 266 0.64
11
- 12. 制御と検出の違い
実はパルス幅を変えるだけ
DCM(Discontinuous Conduction Mode)に持っていく
上下スイッチをOFF, 電流=0まではダイオードを使う
電流=0のときに、モーター端子にV2が見える
I =
- V2 +VF( )
L
TOFF
モーター電流を仮に640mA
V2=0.2V, VF=0.3Vのとき、
TOFF=640mA*0.34mH/500mV=0.44ms
※ R1を無視した概算です
IR1は無視して、
Back-EMF
12
- 14. ch1: p-MOS Gate
ch2: モーター端子
ch1: n-MOS Gate
ch2: モーター端子
1 2 3
3. 上側(p-MOS)がON
2. 上下のFETがOFF
ダイオードによる還流
1. 下側(n-MOS)がON
FETによる還流
14
- 15. ch1: p-MOS Gate
ch2: モーター端子
ch1: n-MOS Gate
ch2: モーター端子
1 2 3
1. 上側(p-MOS)がON
2. 上下のFETがOFF
ダイオードによる還流
3. 下側(n-MOS)がON
FETによる還流
15
- 16. ※ 機械損・鉄損に対応する抵抗は省略
モーター始動時は、Back-EMFが0Vなので、
(電源電圧 ÷ 巻線抵抗)に相当する電流が流れます。
モーターが回転している時はBack-EMFが発生します。
ですので、流れる電流は((電源電圧 - Back-EMF)÷巻線抵抗)です。
トルクは電流に比例ですので、高トルク時は回転が下がります。
Back-EMFが下がった分だけ電流が流せて、トルクがでます。
電流は巻線に加わる電圧に依存して増減します。
インダクタンス分があるため、電流はいきなり増減しません。
dI
dt
=
V
L 16
- 23. 制御ループ
谷の数とBack-EMF
一定周期でPWM駆動を停止
巻線電流が0になるまで待つ
Back-EMFを20us間隔で4回サンプル
最大値と最小値を捨て、2サンプルの平均値を使う
Back-EMFサンプル列から谷を検出し、数え上げる
電源電圧で補正
Back-EMFはADCのVrefに2048mVを使い測定
制御値はこの電圧に基づき電圧値として計算
電圧値を電源電圧で除することでDuty比に変換 23
- 24. Verror t( ) =Vtarget t( )-VBackEMF t( )
Vcontrol t( ) = KpVerror t( )+ Ki Verror t( )
t=0
t
å
Dcontrol t( ) =
Vcontrol t( )
Vpower t( )
概略の計算式
比例ゲインと積分ゲインは定数なので、ループ展開することとし、
アセンブラのマクロを使って定数の乗算を実装
目標のBack-EMF電圧を、回転数相応な値と谷の数の増減から計算しておく
目標値と現在値から誤差を計算し、PI制御する
電源電圧で除算することでデュティー比に変換
除算は非回復法で実装している
24
- 28. 谷検出
PWM周波数 20kHz
リップル周波数 115.6Hz, 1156rpmの場合を示す
リップル1周期あたり、3サンプル取得
Back-EMFが、下がる-上がる、で谷通過と認識
ch1: 制御対象モーター
ch2: 測定用モーター
整流子切り替わり
28
- 29. まとめ
演算能力が足りない
PWM開始時に電流を速く立ち上げたかった
フィードフォワード制御するだけの余裕がない
高速(3000rpm程度)で回したいときこそ補正したかった
せめて乗算命令が欲しい
キャリー付き加減算があるだけマシだけど。
思ったより安定してフィードバック制御できた
ブラシの接触が微妙なときは全然ダメだった
Back-EMFが200mV(100LSB)あればいける
低速なので電気を食わない 29