April 30, 2007
EX.2 PWM(モーター制御) その1
趣味のひとつとしてZゲージ(小さな鉄道模型)で遊んでいます。鉄道模型のコントロール方法には、電圧を変えて速度を制御するものと電圧は一定でパルス状にした電圧波形のパルス幅を制御する(PWM パルス幅変調)ものがあります。
今回は、PWMのプログラムを組上げて見ましょう。
実際の回路として、速度設定用のボリュームと電圧出力用のトランジスタまたはFETが必要となります。実験では、トランジスタの代わりにLEDを点滅させています。
完成したプログラムは、
となります。すごくシンプルですね。
まず、INPUTのVoltage InputからPotentiometerを選び、NameをSpeedとします。これでボリュームの回転角に比例した0から100%までの値(分解能1%)が得られます。
次に、OUTPUTのPWM Variable Duty CycleからVdd,10mA High Sideを選び、NameをPWMとします。なお、Drive Frequencyは1000(1kHz)に設定します。パルスの幅(Duty Cycle)は0から100%で設定します。
さて、PWM右クリックして、Transfer FunctionのStatus Encoderを選びます。
ここで、Ifの欄には「1」、thenの欄には「Speed = PWM」と入力してください。Ifの欄の「1」は常にこの条件が満足されるという意味で、thenの欄の処理が連続して行われるということになります。thenの欄の「Speed = PWM」はPotentiometerの値が直接PWMの設定に使用されろということです。
Simulationを実行してみましょう。Speedを変えるとPWMの値も変わることが判りますね。
では、Buildしてみましょう。ピン配置は、
としてください。PSoCにプログラムを書き込んでください。MiniEval1のLED P20の明るさが、P01のボリュームによって変わることが判りますね。LEDの代わりにトランジスタかFETをつなげば、Zゲージのパワーコントローラの完成です。
Comments
No comments yet
DISALLOWED (TrackBack)