18章:DCモータの制御)

    作成2015.02.11

  1. DCモーター FA−130RA−2270の購入先と価格
    (1)購入先:秋月電子通商
    (2)品名:DCモーター FA−130RA−2270
    (3)価格:¥100
    *オモチャ用のDCモータです。


  2. DCモーター FA−130RA−2270の仕様
    ・電圧範囲:1.5〜3.0VDC(標準1.5V)
    ・無負荷時電流:0.2A(0.26Amax)
    ・無負荷時回転数:9100回転/分(±10%)
    ・定格負荷時電流:0.66A(0.85Amax)
    ・定格負荷時回転数:6990回転/分(±10%)
    ・負荷:6.0g.cm
    ・負荷出力:0.43W
    ・効率:44%
    ・静止電流:2.2A
    ・静止トルク:26g・cm
    *定格負荷時電流:0.66A、静止電流:2.2Aと大きいのが問題です。
    *5V-500mAの電源とトランジスター2SC1815Y(60V150mA)で制御可能か?

     外形仕様は18-1.pdfを参照願います。
    [18-1.pdf]をダウンロードする。


  3. DCモータ制御回路図
     DCモータ制御回路図を以下に示します。

    *2SC1815のコレクタ電圧は5Vですが、ベースに印加される電圧が3.3Vのため、エミッタ電圧は3.3-0.6=2.7Vとなります。
    *コンデンサ220μFはスパイクノイズ低減のため付加しました。
    *コンデンサ220μFはなくても動作します。
    *スパイクノイズ低減には大きな容量のコンデンサが必要となります。


  4. DCモータ制御回路外観
     DCモータ制御回路外観を以下に示します。

    *高速回転中の写真です。


  5. DCモータ制御回路のプログラムコード
     1章:MPLABR X IDE v2.25開発環境の構築、「newmain18.cの内容変更ファイル」をベースに修正しました。
    (1)タイマ0割込み設定関数
    void InitInterTimer0 (void)
    {
        // クロック源を内部クロックに設定
        T0CS = 0;
        // プリスケーラをタイマ0に割り当て
        PSA = 0;
        // プリスケーラ値を16に設定=割込み周波数=48MHz/(4*256*16)=2930Hz
        T0CONbits.T0PS0 = 1;//PIC18F4553
        T0CONbits.T0PS1 = 1;//PIC18F4553
        T0CONbits.T0PS2 = 0;//PIC18F4553
        // TMR0レジスタをクリア
        TMR0 = 0x0000;
        // タイマ0割込みフラグをクリア
        T0IF = 0;
        // タイマ0割込みの許可
        T0IE = 1;
    }
    

    (2)割込み処理
    void interrupt SYS_InterruptHigh(void)
    {
        if(T0IF == 1)
        {
            switch (gM)
            {
    	case 0:
                if(gCTgTN){gCT=0;}
    
            // タイマ0割込みフラグをクリア
            T0IF = 0;
        }
    }
    

    (3)void main(void)
    void main(void)
     {
    	init();
            InitInterTimer0();
    
            // 割込み全体の許可
            GIE = 1;
    
    	n = 20;
    	while(1)
    	{
    		for ( int i = 0; i < n; i++ ) __delay_ms( 2 ); //10mS
    		LED = !LED;
    		if(SW2 == 0)
    		{
                        gM=1;
    			n = n+1;
    			if (n >= 20)
    			{
    				n = 1;
    			}
                            gSP--;
                            if(gSP<0){gSP=0;}
    		}
    		if(SW1 == 0)
    		{
                        gM=0;
    			n = n-1;
    			if (n <= 1)
    			{
    				n = 20;
    			}
                            gSP++;
                            if(gSP>99){gSP=99;}
    		}
                    
    	}
    }
    


  6. 全体プログラム
     詳細は18-1.txtファイルを参照願います。
    [18-1.txt]をダウンロードする。


  7. リセット状態の確認
    (1)モータは一定角度(約±15度)振動状態となります。
    (2)モータ両端の信号波形
     モータ両端の信号波形確認結果を以下に示します。

    *振動周期は69.1mS、正方向34.5ms、逆方向34.5ms
    *両端の電圧差は653mV


  8. 低速回転状態の確認
    (1)モータは低速で回転します。
    (2)モータ両端の信号波形
     モータ両端の信号波形確認結果を以下に示します。

    *振動周期は69.1mS、正方向50ms、逆方向19ms
    *両端の電圧差は607mV


  9. 高速回転状態の確認
    (1)モータは高速で回転します。
    (2)モータ両端の信号波形
     モータ両端の信号波形確認結果を以下に示します。

    *振動周期は69.1mS、正方向63.6ms、逆方向5.5ms
    *両端の電圧差は905mV


  10. DCモータの制御まとめ
    (1)FA-130RA-2270はマブチモーターのオモチャ用DCモータの型番のようです。
    (2)マブチモーターFA-130RA-2270は金属ブラシを使用しているため、摩擦が大きくなる可能性があります。
    (3)MERCURY MOTOR FA-130RA-2270はマブチモーターFA-130RA-2270の互換品と思われます。
    (4)MERCURY MOTOR FA-130RA-2270も無視できない摩擦があるモータです。
    (5)制御性の良いモータとは、摩擦と慣性モーメントは限り無く小さく、大きなトルクのあるモータです。
    (6)また、制御性の良い機構としては、摩擦と慣性モーメントは限り無く小さく、大きな剛性を持つ機構です。
    (7)しかし、どんなに努力しても摩擦と慣性モーメントはゼロにならず、剛性は無限大にはなりません。
    (8)この問題を軽減する方法としては、非線形フィードバック制御があります。
    (9)今回使用したのは、オモチャ用であり、当然のことながら性能は劣ります。
    (10)MERCURY MOTOR FA-130RA-2270は単純なON/OFF制御では、大きな電流を流さないと摩擦力にうちかてず回転を開始しません。
    (11)5V-500mAの電源とトランジスター2SC1815Y(60V150mA)でMERCURY MOTOR FA-130RA-2270を制御するには、振動制御が必要となりました。
    (12)非線形フィードバック制御と振動制御はイコールではありませんが考え方は似ています。
    (13)振動制御により摩擦の影響を大幅に軽減できるということです。
    (14)振動制御は適切な振動周期があり、早すぎても、遅すぎても良くありません。
    (15)5V-500mAの電源とトランジスター2SC1815Y(60V150mA)でMERCURY MOTOR FA-130RA-2270を制御可能ということがわかりました。




19章:ステッピングモーターの制御に行く。

トップページに戻る。