MAKE21.INC
 
サイトマップ | お問い合わせ
トップ > 製品案内 > サーボモータ学習キット > プログラム解説
PIDサーボ学習キット   概要 | ハードウェア | ソフトウェア | プログラム解説 | Q&A
PIDサーボモータ学習キットのプログラム解説

 PICに書き込んであるPID制御のプログラムを解説します。PID制御のプログラムは一見難しいそうですが、古来より数学的に求められた理論をPICに適したプログラムにするだけなので、簡単に作ることができます。
 ここで、PID制御の簡単な理論式とプログラムを理解してください。

 ここからサーボモータ学習キットに使用されているPICのプログラムをダウンロードすることができます。
PICマイコンの開発環境

  今回使用するマイコンは「PIC18F1320」というPIC-8bitマイコンの中では、ハイエンドなものを使用しています。PIC18Fシリーズは乗算回路を持っているため、PID制御をするためのかけ算を素早く行うことができます。
  PICのプログラムはC言語で書いてあります。コンパイラにはCCSコンパイラのPCHバージョンを使用しています。
 
PID制御:モータの操作量の計算(数式)


  PID制御とは、目標位置に対してモータの現在位置を近づけるため数学的な根拠を持って、スムーズにモータの制御量をコントロールする制御です。PID制御は古典制御の一つであり、とてもシンプルな制御方法です。
PID制御では、 PIDの3つの制御を組み合わせて制御を行います。

P制御 Proportinal(比例)
I制御 Integral(積分)
D制御 Differential(微分)


PID制御の離散値(デジタル)の式を以下に示します。

MVn=MVn-1 + ΔMVn

  上の式においてMVnはモータの操作量です。




 それぞれの記号は、以下の通りです。
 今回のPICではdt=240[uS]となります。dtはプログラムルーチンが1周する時間です。

MVn MVn-1 ΔMVn
今回の操作量 前回の操作量 今回の操作量差分
en en-1 en-2
今回の偏差(目標値ー現在地) 前回の偏差 前々回の偏差
Kp Ti Td
比例定数 積分時間 微分時間

 
PICマイコンでのモータ制御方法

プログラムリスト
//// AD値の入力 ////
//ポテンショメータの値
set_adc_channel(ADC_CH_CTL);
delay_us(50);
ctrl_input = read_adc();
// モータの値 //
set_adc_channel(ADC_CH_MTR);
delay_us(50);
motor_input = read_adc();
/// 偏差の計算 ///
e2 = e1;
e1 = e0;
e0 = motor_input - ctrl_input;
 基板上のポテンショメータとモータに取り付けたポテンショメータからAD変換を用いて現在の位置を取得し、偏差を求めます。
//// 各成分の計算 ////
// Pパラメータ //
p_out = (signed long)(Kp*(float)(e0-e1));
// Iパラメータ //
i_out = (signed long)(Kp*(dt/Ti)*((float)e0));
// Dパラメータ //
d_out = (signed long)(Kp*(Td/dt)*(float)(e0-2*e1+e2));
//// モータ出力 ////
dMVn = p_out+i_out+d_out;
MVn0 = MVn1 + dMVn;
MVn1 = MVn0;
 P,I,Dの各パラメータを求め、モータの操作量を計算します。
//回転方向//
if(MVn0>0){
output_low(PIN_MotorA);
output_high(PIN_MotorB);
}
else{
output_high(PIN_MotorA);
output_low(PIN_MotorB);
}
//PWMの量//
if(MVn0>0){
motor_output = (unsigned long)MVn0;
}
else{
motor_output = (unsigned long)(-MVn0);
}
//PWMの上限を設定
if(motor_output > 0x3ff) motor_output = 0x3ff;
//PWMを設定
set_pwm1_duty(motor_output);
 本キットの回路ではリレーの対によってモータの回転方向を切り替え、FETのPWM制御によってモータの操作量を調節しています。
 まず、操作量の符号を判断し、モータの回転方向を決めます。その後に、モータの操作量であるPWMの値を変更します。
 


(株)秋月電子通商様にて好評発売中!

組立マニュアルのダウンロード | 制御ソフトのダウンロード

 

プライバシーポリシー | サイトのご利用について | リンク集
Copyright © 2009 MAKE21.inc All rights reserved.