Document made with KompoZer
Fujisekk Store ForSale

FUJISEKKを作る。 
マイコンによるモーター駆動

ブラシ付DCモーター等価回路
ステッピングモーターの駆動方式
マイクロステップ駆動
三相ブラシレス直流モーター
センサーレス
ローター位置の検出
ホール素子
ドライバー回路
マイルドハイブリッド

一般には三相はUVWで表すようです、必要によりABCはUVWと置き換えてください。
模型のマニアはモーターコントローラをスピードコントローラー(ESC)と言う。

初めに
モーターは
ステッピングモーター
ブラシレス直流モーター
3相同期モーター

などに分類されるが、動作原理は同じである
内部のマグネット回転子(ロータ)を回りのコイル固定子(ステータ)の磁気の方向を
変えてそれに引き付けて決めた方向に動かすわけです。
下図は、ブラシレス直流モーターの物でセンサーホールICの位置(中間にあるので)にS/Nの境界が来た時
コイルに流す電流の方向を切り替えることで回転方向に回転子を移動させることが出来る。
三相モータ
ステッピングモーターは固定子の電流を切ってもその位置を保持する
各ステップごとに既定位置に停止するのが基本でなめらかに動くことは二の次になっている。
ステッピングモーターでも高速で回っているときはたの同期モーターと変わりありません。
各ステップごとに既定位置に停止することを利用して位置判定を省略できる利点がある。
しかし作る方としては、与えたパルスからずれる脱調という困難な問題をかかえこむわけです。
脱調の検出は通常エンコーダを追加し駆動パルス数とエンコーダのパルス数を監視し違いが出たらNGとするが、
駆動電流を見て過負荷になるとアラームを出すドライバーもあるようです。

マイコン内臓タイマーカウンターを使ったステッピングモーター駆動

ステッピングモーターの駆動方式

1相駆動
2相駆動
1/2相駆動
マイクロステップ駆動
がある

1/2相駆動に動作状態を示す
この図のうちある時間に特定のコイルだけが励磁されるものを1相駆動
逆に1相駆動の部分がないものを2相駆動という。
2相駆動、1/2相駆動がよくもちいられるようだ。
これはおなじモーターを使ったとき1相駆動より2相駆動、の方がトルクが大きいためです。
1/2相駆動はさらに動きがなめらかになる特徴があり、脱調に強くなる。

マイクロステップ駆動
1/2相駆動のつなぎ目をさらにスムーズにしようと考えると結局サイン波になってしまう。
各コイルに流れる電流をPWMでサイン波にする、加減速時動作はAC同期モータと同じ
1/2相駆動より動きがなめらかになるとともに、もっとも脱調に強い。

ほとんどのマイコンのタイマーカウンターはPWMを出力でき,
2CH出力できればステッピングモーターの駆動ができる

等加速度運動
駆動すべき相手は色々有るが必ず重さがある、
脱調もこの重さ 慣性ともいうが原因である、モーターから見ると必要トルク∝重さ*加速度なので、
加減速度の限界は速度によらず等加速度となり等加速度運動、台形駆動などとも言う。
この原理はステッピングモーターでも変わらない原則で守らないと
脱調してしまう

S字駆動
加速の開始、減速の最後では急激に加速度が変化する、電車に乗っているとこのことは足元が不安定になったりたまには転げたりすることになる。
最近の電車は制御が滑らかになり快適に成った、かつてはモータの直列、並列を張り替えたりする時ガタガタ言ったものである。
機械系でもおなじらしい、ギアにバックラッシュが有るとここでガタンと言って脱調してしまう。
そこで
加速の開始、減速の最後の変化を旨く調節してなめらからに動かすほうほうである。

ブラシレス直流モーター
の駆動方式
 3相
駆動
 2相駆動
がある
2相駆動
 はマイクロステップの1/2相駆動と同じ動きとなる、
 ただしロータの動きを検出してステ‐タの電流を切替えている点がちがう
 これは卵と鶏の関係ではない、脱調という問題を回避し負荷の重さで
 最大の加速度を得られ、モータの実力を100%出せることになる。
 ドライバーが1コイル2回路、計4回路必要となる

3相駆動
 2相駆動よりトルク変動がなめらかな上、ドライバーが3回路でよい。
 すべてのコイルに電流がながれるので、コイルの利用率が良い

単相駆動(おまけ)
2相駆動の実験台を手に入れようとDCファンを分解してみたら、コイルの線が2本しか無かった。
 写真
 DCファンは単相なのだそうだ、つまり2極モータ子供の頃キットで作った右左どちらでも回るやつ。
 写真のは4極だが巻線は1本が芋づる式に巻かれていて、2極を90度ずらし組み合わせている。
 起動時はコイルが磁化されると、磁極の僅かなずれでロータが移動し、これをセンサーが検出してコイル電流を切り替えるようだ。

ロータの動き検出
 ロータの動きを検出してステ‐タの電流を切替えるため、ロータ位置を検出する必要がある。
 これにホール素子、光デテクター等のセンサーを使うものと
 ステ‐タの逆起電力を検出するセンサーレス方式がある
ホールICによる回転検出

センサーレス
ステ‐タの逆起電力を考えたがけっこう頭が混乱する、まず問題を整理するために逆起電力について考えよう。
もっとも単純な等価回路で現せるのがブラシ付DCモーターである。
下図のように回転数Nに比例した電圧が得られる、
ブラシ付DCモーター等価回路
直流モーターの等価回路
ある電圧の時、 モーターの無負荷回転数時、逆起電圧Ecは。

 Ec(Nmax)=Ea−Ra×Ia
Raはテスターで計れる。
これは直流値なので実験も簡単だ。

ECはコイルが磁束線を切るときに発生しその速度(ここでは回転数)に比例する上記等式がこの平行点だ、またコイル巻数にも比例する。
高速回転させるには、コイル巻数を少なくすれば良い訳だ。

 ブラシ付DCモータはブラシで整流しているだけである、ブラシレスでも同じことがおこっているはずだ。
ブラシレスはACモーターとほぼ同じ構造なので空コイルにはサイン波の一部が現れるはずである。
これの検出のためには巻線はスター結線である必要がある、デルターでは無理だ。
ブラシレス三相モータで実際に測って見る
COM、A相をオシロに接続
緑の線がCommon、黄色がA相

駆動モータとの間に輪ゴムをかける
DCモータで回す、と

サインウエーブのような波形
サインウエーブのような波形が、切り替える辺りの立ち上がりが良いのでうまく検出できるはず。
50HZにちかいのは偶然です。

2相インバーターの設計
ジャガーハイブリット化?のためにコンプレッサを動かすインバーターを設計する
インバーターエアコンは三相モーターが使われている、しかし今のところ単層の物しか手に入らない。
これをは進相コンデンサで2相化しているわけで、2相インバーターを造れば進相コンデンサはいらない。
仕様
周波数40〜70HZ
出力波形RTZ 0Vの期間がある  
A相 ~~~~----______----~~~~

B相 ----~~~~----______----

出力電圧 120V固定、PWMで電力を可変する
PWMはタイマーで出しFETをスイッチする。
波形と磁束の関係はこのようになる、+−の線に同じ電圧がかかればその相の駆動電圧は0Vになる
二相モーターの駆動波形と磁束の関係

PWM制御
DCモータの等価回路によりEcが回転に比例するなら、Eaを変えれば回転速度を制御できるる、無負荷ならほぼ比例する。
Ea=電源電圧を変えるのは面倒なのと、負荷の変化に素早く対応するには、 電源電圧を変えるよりON/OFFした方が早いし、
2個以上のモータを繋ぐにはこの手しかない。
ソフト設計
どう処理するべきかかんがえていたところ、かつて試みた。
ピエゾブザーを駆動するのだが、どうせなら音量もソフトで可変できるように考えた。

ソフトによるPWM
のようにパターンを読み出して、出すだけの手口でうまくいく事がわかった。
A/B相が同時に駆動される時に磁力が√2倍になってしまい、うまい回転磁界にならない。
A/B相が同時駆動の時は1/√2で駆動すればいい訳だが、これにはPWMを使うのが良い。
擬似正弦波をもっと本物ぽく演じる訳だ。

モーター駆動実験
簡単に実験する方法
ハードディスク(HDD)を分解するとDC三相ブラシレスモーターが出てくる。
これは無負荷なら5Vでも回る、そこでドライバーICなしで実験できるように考えた。
DI/O直結でも動くと思うが74HC125を入れた方がいい、LSタイプはうまくないでしょう。
この場合AC端子は無電圧区間でオープンとする。
EaCPUのDI/Oから74125でモーターを動かす

三相モータの駆動
三相では下図のように接続、駆動する(電圧の中点はハイインピーダンス)

駆動回路 DriverCirkit



矩形波駆動
は120度駆動、180度駆動があるが、センサーレスのための逆起電力の検出が容易な120度駆動で考える
120度駆動では
 設定値は0x0がマイナス、0xFFがプラス 0x77がHiZとする HIZの時、逆起電力を見る
0xFF
0xFF
0x77
0x0
0x0
0x77
これを相によってずらしながら読み出せばいい訳だ。
Max 6000rpmとして100*6回/秒の切り替えが必要。
上のテーブルでは3値論理になってしまうので、ON/OFF(offは中性点から見るとマイナス)と3Stateの組み合わせでジェネレータを作って見た。
3Fase 120Deg Drive Table

速度を可変するには電源電圧と周波数を同時に変える(と言うより極性は回転するに応じて適切に切り替える訳で、速度制御は電源電圧=PWM側に掛ける、周波数は結果的に変わるが当然慣性のため遅れが出る)。
前記のように電源電圧を可変する代わりに、PWMを使う方法が一般的。
回路に下記図の追加を行えば良い。
PWM

マイコンの中でAND演算が出来れば良いが処理に時間がかかるようになる。
PWM波形自体はマイコン内臓のタイマーで簡単に出来る。

マイコンの回路 MicrocomputerCirkit
MC9S08G8を使用 pwmはPTA0/B5しか出せないのでA0を使用


手作り基板 モニター用LEDを追加している
部品配置が分かる

ドライバ(プロトタイプ)driver_Cirkit
P&Eのデバッガが調子わるいので、動作確認を
TWR-S08LL64で試した見た、Furtos必要
LED2~4をABCとして使用、LED1はPTM0と兼用なのでPWMを試して見るつもり。

動きませんな、電流がすくなすぎました。
ドライバーICを使っても良いのですが、三相用は機能満載で動作の学習用としてはいま一つです。
ディスクリートで組みましょう。
74HC03+TRCirkit
どちらでも良いが右はICが一種類で済む、実用には短絡電流防止の追加が必要。

SLA5064
ICを使う 三相用は機能満載と思っていたらこんなのを発見、アキバAにある、
サンケンSLA5064はFETアレーのような原始的なIC

MOS−FETは

短絡に強いので好都合、配線も多少減らせる

3Fase Motor Driver
PWM_Driver

ソフトは少し面倒だがハードを簡単にする方向で考えて見た。
短絡電流防止もソフトで入れる、高速回転ができるか?
 必要なら高速なCPUに変えよう。

HC32 一個で
トランジスタは2sc1815 2sa1815
7432は74HC32、VCCを5Vにして3V―>5V変換をしている
PWMはUPのみに掛けているがキックバック電流の流れ方は実物で確認するのかな、どこかに検出抵抗が必要かもしれない。
これで回った、モータによってはトランジスタを一回り大きい物を使う必要がある
保護はRとHfeで決まる最大電流によるためRの選定には注意が必要。

いまのところ位置検出が出来ていないので、ドッドッとぎこちなく回る。
センサーレスはここいらがむずかしいらしく、位置検出がうまく行く速さまでうまくもって行くのにコツが必要らしい。

変更後、ソース Furtos必要
3Fase Motor Driver_new
基本的にはパターンを入れ替えただけだが、動作確認済み。
もとのソフトにあったバグを修正してある。

より高電圧にするには
東芝のドライバICの参考回路
モータの下の三本の抵抗は、仮想中性点、これでも良いらしい。
左隣の1Ωは電流検出用、120°駆動ではハイサイド、ローサイドとも同時には1個駆動されているだけなのでこれでOK。
OUT_xPと名前が付けられた13,15,17端子からnpnのエミッタに接続されてこのTransistorはベースフォローアで動作し、
電流増幅率は≒1で電圧レベルのみシフトしていることになる。
ドライバ参考回路
この回路のDriverをSLA5064にしたドライバー基板を製作中、乞うご期待。
回路図
SLA5064 HighVolt Driver Cirkit


水魚堂さんのmbeで基板を設計 部品面よりの透視図
5064基板
SLA5064のところはベタになっていて放熱を良くしている。
シルクはとくに必要ないので、趣味の基板やさんに発注した。

出来上がって来た基板
基板とIC実装の感じ
SLA5064の実装はOK、大電流を流すのは一層では厳しいか
基板が出来てからで、前後するがベース接地を使うのは初めてなのと定数を決める必要もあり、シュミレーション。
回路シュミレータは今回はLinux上ではなくWin7で行う、簡単に使用開始できそうで制限の少ないものを探した結果
TINA-Ti(アナログ専用、Windowsのみ動作)にした。
Tiのパーツのみと言う制限は大きいが互換品でも問題ないし、サンプルをもらってもいい訳だTiは小物ならサンプルがもらえる。
P-Cannelの方がゲート容量が大きいのでこっちがOKならよしとする。シュミレーション回路は下記
P-CannelTestCirkit
10KHZでの動作は問題なさそうだ、赤がVM1=OUTの波形
10KHZ動作のシュミレーション
定数が決まったので組配
部品面、、ジャンパ多数
部品面、、ジャンパ多数
半田面、主要なSLA5064がある、もう一つはLM317タイプのレギュレータ5Vを作っている
SLA5064がある
テスト
SLA5064はFET以外なにもなく保護回路も無いので、全てソフトの責任で動作させる。
貫通電流はまず抑えたいところ。
電流センサー0.3Ωはとりつけてしまったがこれを外して貫通電流が流れても最大規格を超えない値にする。
この回路で最小の電源電圧は9Vなので3Ω以上が必要。
CPU基板が出来たのでドッキング、電解コンが少し干渉したがOKとしよう。
基板は上下に繋ぐ

モーター?
マイルドハイブリッド
外観

じつはこのプロジェクトのターゲットはこれなのだ
発電機(オルタネータ)=モーターなはずなので、OLDCARの補助動力にならないかやって見る。

マイルドハイブリッド車が注目されている
オルタネータがエンジンが600rpmから12V発電すると仮定すると、48Vになるのは2400rpm。これ以上になるとモーターとして機能しない。
少し物足りないがここいらの回転数のトルクを高めると使いやすく省エネな車になる。
最近の車はもつと低回転から充電する、なので利用可能な最高回転はさらに下がる。

ローター位置の検出
中性点(COM)とYUWの間の電圧波形を見るため下の図のような簡単な回路を追加した。

波形を見てみる、黄色の⇔の間が非駆動区間

手で触ってブレーキをかけると
波形に変化
なんとか検出できそうだ。

データ化して見た

A/Dの出力はこんな風になるだろう
アルゴリズム
非駆動区間だけA/Dコンバータを動かしゼロクロス?点をさがす

本来なら波形の最大点を見るべきなんだろうが、微分を使うとノイズの影響が大きくなるのでこちらでやって見る
非駆動区間の平均
をゼロとする、
 
非駆動区間の平均とのクロス点を求める、これを次の切り替えタイミングに利用する。
まず最低限の性能を満たすか
600RPM
->10RPS
1degの分解能では
360*10=3600/Sec
サンプルする
1/3600=2.7*10~4

270us
の変換速度が必要
MC9S08では

10
ビットの単独変換または連続変換の最初の変換
 
43ADCK サイル+5 バス・クロック・サイクル
10ビットの連続変換の2回目以降の変換
 40ADCK サイクルADCK8MHZまで可
 40/8M=5
/10~-6
 
5usでOK
 
6000RPMまで行けるか

切り替えタイミング
下の画像ホールICセンサー・ブラシレスモータを見るとHole-ICの位置が微妙な配置になっている
Hole-ICの磁界がN→S Nと変化する時が駆動開始、終了となるので位置は微妙になるのか、
動作モードが最大効率、最大トルクで違う気がする。

実験用ブラシレスモーター
ハードディスク(HDD)を分解するのが近道
ほとんどのHDDはトルクスネジを使っている。
まず2mmていどのトルクスレンチを入手するDIT店にある、これより細いものは簡単には手に入らない。
自前の不要HDDをもっとも完全に消去できる。
無ければ、PCショップでジャンクを売っている店でこのトルクスレンチに合うジャンクHDDを買う、
3.5インチの古いものなら合うものがあるはずだ、ジャンクで100円くらいか?。
2.5インチの物でも出来る、ただモーターだけを取り出すことは出来なかっかかた、ディスクをはずせばアームの抵抗はないのでこのままても実験出来る。
トルクスネジの小さいのを使っていたが、マイナスドライバーを鑢で整形してネジに合わせることで外せた。
メーカーはIBM-HITACHI他社の物はネジが硬く外す事が出来なかった。
2.5インチHDDの中身
センサー付きならCDドライブを分解すると出てくる、ホールICが見える(3個の黒いIC)
端子もそのまま出ているので実験には最適

ホールICセンサー・ブラシレスモータ
ホールIC付きモータ
CD-Driveを分解したら出てきた、FFCケーブルのコネクタさえなんとかなればこちらの方が近道、
 Aテンドウあたりで変換基板があればもうけもの

ホール素子、ホールIC
朝日化成の資料ホール素子の使い方PDF
半導体の性質上、温度係数が大きく、定電流駆動が必要

速度制御

比例制御とその改良型PID制御
PID 制御とは
のようなことだそうな
電子回路では、負帰還回路になる。
歪を補正する作用があるため、パワーアンプには大抵使われている。
機械系では少し面倒だ、それは
@モータ自身も、負荷もモーメントをもっている。
Aけっこう直線性が悪い負荷もある。
モータは電圧と回転が直線比例するので無負荷では簡単だ。
しかし制御対象から擾乱がはいったりすると制御そのものが破綻することになりそうだ。
かつてPLLを設計ちゅうにこんな思いをしたものだ。
VCOの直線性が悪いため感度の高い所で発信状態になり制御電圧を変えても引き込めない周波数になったりするのだ。
そこで
@比例制御をかける前に開回路の状態で安定にする
A制御対象の特性を把握して、打ち消す制御入力を発生させる
などの対策をしておく。
とりあえず、空転時で不安定なのは回転位置検出になるのかな。
VVVF
速度制御でよく出てくる言葉
可変電圧可変周波数制御のことで正弦波インバータの出力を周波数、電圧とも可変できるものでACモーターを速度制御するのに使われる=AC-Srvo
DCモータもブラシレスは原理的には同じなので使えないはずは無いが、製品では検出回路を持っている物はないと思う。
電車はほとんどこの方式でACモータを駆動している。

ベクトル制御

となにやらむずかしい
実際には回転子に対し、回転磁界は進んでいないと力がでないし、進みすぎるとスリップしてしまう。
遅れると発電機になり、同じであるとコギングをおこす。
この辺をうまく調整するのに直流指示値=正の実数で出来るようにすることを言うらしい
当然回転磁界なので実際の動きは正弦波駆動以外ないし、速度を上げるには電圧を上げることに変わりない。
 がPIDのような常に変化する物を扱うには単純明快な物が必要と言うことらしい。
実際の2相正弦波を界磁コイルと回転子の直流励磁電流で表せるような制御をするのだがこの辺の変換は数学的に確立しているので、公式に当てはめればよいらしい。
2相正弦波から3相正弦波への変換はたやすい。

モータの効率
一定ではない、かなり低い回転で最高になる、このため車で使う時はギァとセットが良いらしい、アマチュアがガソリン車をEVに改造する時にはそうする事が多い。

資料
2006/8月号からCQトランジスタ技術に 
実践講座 小型モータの選定とその制御技術〈第1回〉
が掲載されています
 2007/11まで連載

InterFace 2014/4
 ワンチップでなめらか!最新モータ制御

ブラシレスモーターの実用技術
 谷腰 欣司 電波新聞社

グリーン・エレクトロニクス No.4
 モータの動かしかた早分かり
  CQ出版

InterFace 2016/5
5000円キットで初体験、トルク自由自在最新モーター制御

リンク
アニメブラシレスモータの作動原理
電子技術者が知っておくべきモーターと制御
 いろいろな形式のモーターの特徴が書かれている。
TO TOP
TO RTOS