センサレスブラシレスモータを回そう【ソフトウェア】
まずは前項の最初の回路で、スイッチング速度2sにして極数とかを確認する。もう書いてあるけども3相4極、なんだこの変態
Y結線+中点の(U-V、V-W、W-U)か、(U、V、W)のどっちかが選べるけどとりあえず
(U、V、W)の方でスイッチングを頑張る。
7200rpmを達成しようとするには、120rps、1回転あたり8.3ms、1極あたりだと694us。これを達成できたらとりあえず満足しようかな。
本来のHDDのモータドライバならどんな挙動を示すのか知りたかったけど、どこにも書いてない・・・・まじかよ・・・まあでもPWMでいけるっしょ。1パルスで。
Arduinoを使うわけだけど、16MHzが動作クロック、1サイクル0.0625us。おもったより早いのか遅いのかわからないけども、あまり長々とかけないな。digitalWriteじゃなく、avr/ioのPORTBで操作する。数サイクルは早いっぽいからね。
方針はたったから試行錯誤しつつプログラムを組み上げる。
ソースコード貼れないんだけどどうしたものか・・・・わざわざGitHub使ってもいいけども・・・
とりあえずやったことは、
・可変抵抗使った可変速(加速の速度のみ。原則は即停止)
・速度によって加速度の変化(これが重要で、これやらないとモータが回転に追いつかず脱調する)
・必要回数分だけasm("NOP") (delay関数の自作)
ですね。これ以上も以下も難しいことは思いつかなかった。
パルスを少しかぶせる制御方法もあるようですけど(参照)うまく動かなかった。
家にこれも学校から拾ってきたアナログオシロがあるから信号波形を測定して見ると約700us、回転数にして7140rpmくらい。まあまあ回ったんじゃないかな。
正直、7000rpm超えたあたりくらいからお祈りゲーだった。
でもこんだけ早く回ったから満足。次は(U-V、V-W、W-U)にチャレンジするのと、もっと高速で回せないから検討してみる。
0コメント