1100709_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

1100709_ja-JP

1100709_ja-JP

KE02に基づくステッピングモータ制御<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

1 概要

ステッピングモーターは、オープンループシステムを備えた電気パルス信号で制御でき、電気パルス信号を使用して角運動または直線運動を実現します。ステッピングモーターの速度と位置は、パルスの頻度とパルス数によって決まります。ステッピングモーターは、低速エリアのアプリケーションで使用することができ、作業効率が高く、騒音が少ないです。

KE02は5V kinetis EシリーズMCUで、ARM Cortex M0+コアをベースとしており、KEシリーズは複雑な電気ノイズ環境と高信頼性アプリケーションに対して高い堅牢性を維持するように設計されています。これらの利点から、KE02はステッピングモータ制御アプリケーションに適合します。

このドキュメントでは、主にKE02を使用してステッピングモーターの速度、ステップ、および方向の制御を実現する方法について説明します。PCのUARTを使用して、ステッピングモーターの速度を制御できます。次の図は制御図です。

3.jpg

図1

2.モーター制御パラメータの計算

     図1に示すように、KE02はモータードライバーへのEN、DIR、PWM信号を制御してから、ステッピングモーター制御を実現する必要があります。ENはモータードライバーのイネーブル信号、0はイネーブル、1はディセーブルです。DIRはステッピングモーターの方向制御、0、時計回り、1反時計回りです。PWMは、ステッピングモーターのステップと速度を制御するためのパルス信号です。

ステッピングモーターは1.8'で、ラウンドが360'/1.8'=であることを意味します200ステップ。しかし、モータードライバーには仕切りがあるため、32であるため、1つのステッピングモーターラウンドは200 * 32 = 6400ステップである必要があります。

KE02システムは、外部10Mhzクリスタルを使用し、コアとバスの両方を頻繁に20Mhzに構成し、モーターパルス生成モジュールとしてFTM0モジュールを使用し、FTM0クロックソースとして使用される32プリスケールのバスクロックは、カウンターを選択します。モーターの速度と制御ステップを変更する必要がある場合は、FTMPWMの頻繁な操作とPWMカウンターを制御するだけです。

ステッピングモーターの場合、1FTM周期は1モーターステップを意味します。KE02のリファレンスマニュアルから、アップカウントモードでのFTM期間は、(MOD-CNTIN+1)* FTMカウンタークロックの周期、モーターの頻度を変更したい場合は、FTMのMODを計算するだけでOKです、次にFTMサイクルの数を数え、CNTIN = 0を仮定します。

Tftm= (32/20Mhz)*(MOD+1)

ステッピングモーターとそのドライバーから、1ステップの時間は次のとおりです。

Tmstep= 60 /(V * 6400)

Vはモーターの速度で、単位は丸/分です。

Tftm=Tmstepなので、次のことが分かります。

MOD= (60/(V*6400))*(20Mhz/32)-1 (F1)

このドキュメントでは、(F1)に従って150ラウンド/分、110ラウンド/分、80ラウンド/分、50ラウンド/分、0.1ラウンド/分の速度を計算し、次のように各速度のMODを取得できます。

  • 150発/分 MOD=38
  • 110ラウンド/分 MOD=52
  • 80ラウンド/分 MOD=72
  • 50ラウンド/分 MOD=116
  • 0.1ラウンド/分 MOD=58592

各速度が10ステッピングモーターラウンドを行う必要がある場合は、速度カウンター番号を10 * 6400 = 64000に制御するだけです。

3. MCUピンアサイン

PTF0 : DIR

PTF1 : EN

PTA0 : PWM

PTC6 : UART1_RX

PTC7 : UART1_TX

4. コードライティング

(1)FTM 初期コード

void STEEPMOTOR_PWM_Init(uint16 MODdata)

{

  

                SIM_SCGC |= SIM_SCGC_FTM0_MASK;

                FTM0_SC = 0;

                FTM0_C0SC = 0 ;

                FTM0_C0SC = FTM_CnSC_MSB_MASK |FTM_CnSC_ELSA_MASK ;

                FTM0_C0V = 0;

                FTM0_C0V = MODdata>>1;

                FTM0_MOD=MODdata;

FTM0_SC |=FTM_SC_CLKS(1) |FTM_SC_PS(5) |FTM_SC_TOIE_MASK

enable_irq(17);割り込みの有効化

}

MODdataは、150ラウンド/分、MODdataは38など、さまざまなステッピングモーター速度を選択できます。

(2) 割り込みサービス機能

void FTM0_IRQHandler(void)

{

FTM0_SC &= ~FTM_SC_TOF_MASK;//TOF フラグをクリアします。

ラウンドカウント++;

if(roundcount >= 64000) {FTM0_C0SC = 0x00;FTM0_SC &= ~(FTM_SC_TOIE_MASK);}

}

ステップカウンターに使用でき、10roundに達するとモーターを停止します(FTM出力を停止します)。

(3)UART入力による速度選択

ボイドMotor_Speed_GPIO_CTRL_30round(ボイド)

{

                char motormode=0;

                uint32 COMPDATA=0;

               

printf("\n 1 で 150 ラウンド/分\n\r");

printf("\n 2 で 110 ラウンド/分\n\r");

printf("\n 3 で 80 ラウンド/分\n\r");

printf("\n 4 で 50 ラウンド/分\n\r");

printf("\n 5 で 0.1 ラウンド/分\n\r");

              motormode = UART_getchar(PC_TERM_PORT);

   

                                switch(motormode)

{

                                   case '1':

STEEPMOTOR_PWM_Init(38);//150ラウンド/分

                                                        break;

                                  case '2':

STEEPMOTOR_PWM_Init(52);//110ラウンド/分

                                                        break;

                                  case '3':

STEEPMOTOR_PWM_Init(72);//80ラウンド/分

                                                         break;

                                  case '4':

STEEPMOTOR_PWM_Init(116);//50ラウンド/分

                                                        break;

                                  case '5':

STEEPMOTOR_PWM_Init(58592);//0.1ラウンド/分

                                                        break;                                             

デフォルト: break;

}

while( roundcount < 64000 ) {} //10 ラウンド

Disable_PWM;

printf("\n %c 10round PWMが終了しました", motormode);

ラウンドカウント=0;

}

5 デモ

2.jpg

テストコードについては、添付資料から探してください。

Kinetis Eシリーズ・マイクロコントローラ
Tags (1)
No ratings
Version history
Last update:
‎01-05-2026 02:13 AM
Updated by: