FPGA活用回路&サンプル記述集(2) ―― モータやLEDを駆動するパワー回路

浅井 剛

● ステッピング・モータとの接続

 FPGAの出力ポートはそのままステッピング・モータを駆動できません.図5-2のように三洋半導体製「2SD1828」などのトランジスタをドライバとして使用します.また,ステッピング・モータのコイルの逆起電力を吸収するために,必要に応じてCRスナバや,例えば米国ON Semiconductor社の「1N5822」などのダイオードをコイルに並列に入れます.

zu05_02.gif
図5-2 ステッピング・モータの駆動回路

 ステッピング・モータのコイルへの電源およびグラウンドはFPGAと別系統とし,FPGA側にノイズが流れないように注意することも大切です.フォトカプラなどでFPGAからの制御信号を分離する方法もあります.ただし,コストに影響するため,やみくもにフォトカプラを使用するのは得策ではありません.

● 駆動信号の生成

 今回は2相駆動を採用します.この場合,各相の制御信号は図5-3のようになります.A相とA相,B相とB相はおのおの反転された信号です.また,A相とB相は位相が90°ずれた信号と考えられます.

zu05_03.gif
図5-3 ステッピング・モータの駆動パルス

 従って,図5-4のような回路で実現できます.ところが,この回路のままではフリップフロップのクロックがFPGAのグローバル・クロックとは異なったものになってしまうので,グローバル・クロックに同期させたものがリスト5-1の記述です.表記上,A相をap,B相をbp,A相をan,B相をbnとしています.

zu05_04.gif
図5-4 駆動パルスを生成するための回路

module step(stp, cw, ap, an, bp, bn, clk, nreset) ;
    input    stp ; ←stpが1パルスが入るたびに1ステップ回転する
    input    cw ;
    input    clk ; ←回転の向きを指定する
    input    nreset ;
    output   ap, an, bp, bn ;
 
    wire     stp ;
    reg      stp_i, stp_ii ;
    reg      a, b ;
 
    assign   ap = a ;←※4
    assign   bp = b ;
    assign   an = !a ;
    assign   bn = !b ;
 
    always @( posedge clk or negedge nreset )
    begin
        if( nreset<= 0 ) begin
            stp_i <= 0 ;←※5
            stp_ii <= 0 ;
            a <= 0 ;
            b <= 0 ;
        end 
        else begin
            stp_i <= stp ;←※6
            stp_ii <= stp_i ;
            if ( stp_i ==1 && stp_ii ==0 )
            begin
                a <= (cw)? !b : b ;←※7
                b <= (cw)? a : !a ;
            end
        end
    end
endmodule
リスト5-1 ステッピング・モータの駆動パルスを生成するためのVerilog HDL記述

注4;A相,B相は,内部のレジスタの状態をそのまま,A相 B相は内部のレジスタの状態を反転してアサインする
注5;リセット時の内部レジスタの初期化
注6;stp信号をclkの1クロック分に整形する
注7;内部レジスタa,bを1ステップ分cwで指定した方向に変化させる


もりた・はじめ
Column もう一つの制御プログラム

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日