ブラシレスモーター回すよ の補足

最終更新日(2012/01/08)


写真等。


たまたま要らなくなったHDDがモーターを取り外せるようになってたので作ってみました。
「ブラシレスモーターを回す」という課題は実は6,7年前からの因縁があって、最近になってようやく回せた次第です。始動出来てませんが。
当時はLED点灯させるくらいしか作れなかったんです。
そっからちまちま独学と調べ物で…。色々横道それたりして…(´;ω;`)ウッ…


ブラシレスモーターについて。

わかりや~~すく説明してくださってるサイト様が結構ありますのでそちらをご参照のこと(一番下)。
センサを使う位置検出には磁気センサを 使います。秋月電子で最近になって売られるようになりました。
今回はセンサレス制御です。


回路図(試作段階)



とても難があります。ミスもちらほら。あくまでこんな感じ、ということで。
まず作って分かったことはAVRのISPがこのままだと動作しません。FETの入力なら問題ないだろう と、高をくくってたら、ダメでした。
PWM制御や回転方向、速度制御までするつもりで引きましたが。まだ未実装の部分も。
ドライブ段はパワーMOSFETを使っています。
動かして分かったことは、
  1. 波形が結構なまる。特にPch側のFETのゲート端子と、回路図右下のオペアンプ(ホントはオープンコレクタ出力のコンパレータが良かったけど部品が なかった^^;)につながってるトランジスタのコレクタ。
  2. MOSFETのオン抵抗。 PchとNchに差があると、抵抗が高い方に偏って電力消費する。かたっぽだけ熱くなる。
    また、コンパレータの反転入力に入れている基準電圧が1/2Vmでなく、オン抵抗による分圧で偏る。調整が要る。(↑写真の基板上に半固定抵抗が見えてる のはコレ。)
    ついでに調整にはオシロがあったほうが良い。

要所要所に汎用ロジックIC挟むだけで結構改善するかもしれない。
モーターが小さいので放熱が必要なほど熱くはなりませんでした。というかこのFETの定格がでかい…。

もしPWMを使うのならサージ対策しっかりとして下さい。配線を工夫して別電源にするだけでだいぶ効くはずですが。
回りこんだらマイコン死にます普通に。(涙目
コメントで、ラジコン飛行機のESC(Electronic Speed Controller)もこんなもん?という質問がありましたが、だいたいこんなもんだと思います。


おソース

#include<avr/io.h>
#include<util/delay.h>

/*
    stage| W| V| U|
    ---------------
        1|00|10|01|
        2|10|00|01|
        3|10|01|00|
        4|00|01|10|
        5|01|00|10|
        6|01|10|00|
    ---------------
    01:push
    10:pull
    00:hz
*/

unsigned char stage[6] = {0b010010,
                          0b100010,
                          0b100100,
                          0b000101,
                          0b001001,
                          0b011000};

int main(void){
    short int i;
    int j;

    PORTB = 0;
    PORTC = 0;
    DDRB  = 0x3F;
    DDRC = 0;

    _delay_ms(1000);

    for(j=0;j<50;j++){
        PORTB = stage[i];
        _delay_ms(10);
    }

    j = 1;
    i = 0;

    while(1){
        if(((PINC>>2) & 1) == j) {
            PORTB = stage[i];
            i++;
            if (i == 6){
                i = 0;
            }
            if (j == 1)
                j = 0;
            else
                j = 1;
        }
    } 
    return 0;
}

ちょっと(というかかなり)恥ずかしいんですが。まあこのくらいのものでも、始動はともかく回るということで。
PC2の立ち上がりエッジもしくは立ち下がりエッジを検出したら次のパターンを出力。という内容です。

始動の方法はいくつか特許があるようです。


参考にしたサイト等


ブラシレスモーター協会  様

10 代からできる自作ブラシレスモーター!! 様

花夢電科雑多猫 様の ハー ドディスクのモータを arduinoで制御


ブラシレスモータードライバICのデータシート等
あとはパナソニック電工に論文pdfがあったのですが今調べたら消えてました(-_-;)計算式とか色々あったんだけども。