pwm2 - 熊本大学

8
2012/11/18 1 CPU 初期設定すれば CPUと独立にカウ ント動作を続ける ポート端子 内部モジュール群 メモリー タイマー PWM出力 M1_IN1出力 M1_IN2出力 M2_IN1出力 M2_IN2出力 直流モーターの正転と逆転の切換えの原理 Hブリッジ回路のしくみ モーターの回転速度の制御方法 PWM制御の原理 プログラムでモータを制御する方法 ディジタル出力ポートの設定 Hブリッジ トランジスタをスイッチにしたHブリッジ OFF ON ON OFF H H L L

Upload: others

Post on 14-May-2022

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PWM2 - 熊本大学

2012/11/18

1

CPU

初期設定すればCPUと独立にカウント動作を続ける

ポート端子 内部モジュール群

メモリー

タイマー

PWM出力

M1_IN1出力 M1_IN2出力 M2_IN1出力 M2_IN2出力

• 直流モーターの正転と逆転の切換えの原理

– Hブリッジ回路のしくみ

• モーターの回転速度の制御方法

– PWM制御の原理

• プログラムでモータを制御する方法

–ディジタル出力ポートの設定

Hブリッジ トランジスタをスイッチにしたHブリッジ

OFF

ON

ON

OFF

H

H L

L

Page 2: PWM2 - 熊本大学

2012/11/18

2

H

L

L

H

IN1, IN2 端子に加わる

電圧で正転・逆転・停止が切り換わる。

ドライバーに加える電圧を高速でON/OFFした場合の実効電流

高速回転

低速回転

中速回転

最高速回転

M1_IN1

M1_IN2

H

L

L のまま

PWM出力波形 (HとLの周期的繰り返し)

波形

1. トランジスタでの電力損失が少ない – Tr がON(C-E間電流が飽和状態)/OFF(C-E間電流は遮断)の2状態だけをとり中間状態にならない

– ONの期間は C-E間の抵抗が最小の状態。同じ電流を流す場合にTrでの損失(I2R)が最も少ない。

– OFFの期間は C-E間がほぼ絶縁された状態。電流が流れないので損失がない。

– ON:OFFが1:1に相当する中間状態(R=2Rmin)では電力損失はPWMの場合の4倍になる。

2. ディジタル信号で回転数が制御できる

Page 3: PWM2 - 熊本大学

2012/11/18

3

PWM2ch

J1, J2, J3 をすべてB側にすること

J1, J2, J3 をすべてB側にすること J1, J2, J3 をすべてB側にすること

Page 4: PWM2 - 熊本大学

2012/11/18

4

サンプル01のmain.c でコメント(注釈)を除いた部分

(1)ヘッダファイルのインクルード(自動生成される)

#include "JRT102.h" // Hardware definition

#include "RoboDesigner.h"// RD Hardware definition

#include "TiCollaLib.h" // Library definition

#include "vectors.h" // Interruption vector definition

#include "initialize.h" // Ininitalize

#include "interrupt.h" // Interruption

※これらの内容を変更したり削除したりしないこと

(関数の呼び方はRDP-904説明書51ページ参照)

void // 注意:規格Cではint型が正しい main(void) { init(); // Initialization MOTOR_SETSPD(PWM_SIDE_CN6, 32767); // M1 MOTOR_SETSPD(PWM_SIDE_CN11, 32767); //M2 while (1) {...

MOTOR_SETSPD(byte port_number, word speed )

• port_number: PWM信号出力ポート指定 – MOTOR_SPD関数の第一引数と同じ

– PWM_SIDE_CN11 M2または両方の速さを指定する場合

– PWM_SIDE_CN6 M1の速さを独立に指定する場合

• speed: 速度値の直接指定 – 0~65534 (0x0000 ~ 0xfffe) の値を指定する

– 0は停止の指定 (デューティー比 0%に相当)

– 65534 (0xfffe)は最高速の指定 (デューティー比 100%)

– 値はPWM波形のデューティー比であり速度と比例するとは限らないことに注意

Page 5: PWM2 - 熊本大学

2012/11/18

5

void // 注意:規格Cではint型が正しい

main(void) {

init(); // Initialization

// 必ずJ1~J3 ジャンパ設定をB側に変更

MOTOR_SETSPD(PWM_SIDE_CN6, 32767); // M1

MOTOR_SETSPD(PWM_SIDE_CN11,

/* 速度微調整の例 */ 32767 - 1000); // M2

while (1) {...

void // 注: ANSI C では戻り値 int が正しいが、このまま使うこと main(void) { init(); // Initialization MOTOR_SETSPD(PWM_SIDE_CN6, 32767); // M1スピード設定 MOTOR_SETSPD(PWM_SIDE_CN11, 32767); // M2スピード設定 while(1) { // ループの開始 M1_IN1 = 1; // 次の行と必ず対で使う // M1前進設定 (1/2) M1_IN2 = 0; // M1前進設定 (2/2) M2_IN1 = 1; // 次の行と必ず対で使う // M2前進設定 (1/2) M2_IN2 = 0; // M2前進設定 (2/2) COPCTL = 0; // ウオッチドッグタイマクリア。ループの最後に必須

} }

M1_IN1 : モータ1のドライバ入力IN1(ポートCN7)

M1_IN2 : モータ1のドライバ入力IN2(ポートCN8)

M2_IN1 : モータ2のドライバ入力IN1(ポートCN9)

M2_IN2 : モータ2のドライバ入力IN2 (ポートCN10)

• 0か1の値を代入すると出力ポート(CN7~CN10)の状態が`L’ か`H’に変化する。 (たとえば, M1_IN1 = 1 ならば CN7 = ‘H’)

• M1_IN1とM1_IN2を常に対にして扱う。(M2も同様)

• M1_IN1 = 1; /* M1 前進 */ M1_IN2 = 0;

• M1_IN1 = 0; /* M1 後進 */ M1_IN2 = 1;

• M1_IN1 = 0; /* M1 停止 */ M1_IN2 = 0;

• M1_IN2 = 1; /* M1 ブレーキ (使用しない)*/ M1_IN2 = 1;

• 同様に、M2_IN1, M2_IN2 で M2を制御する

CPU

初期設定すればCPUと独立にカウント動作を続ける

ポート端子 内部モジュール群

メモリー

タイマー

PWM出力

M1_IN1出力 M1_IN2出力 M2_IN1出力 M2_IN2出力

Page 6: PWM2 - 熊本大学

2012/11/18

6

M1_IN1 (CN7)

M1_IN2 (CN8)

M2_IN1 (CN9)

M2_IN2 (CN10)

PWM_SIDE_CN11

AD_CN4

AD_CN3

AD _CN6※

Digital I/O (CN1)

Digital I/O (CN2)

Digital I/O (CN13)

Digital I/O (CN12)

ディジタル入出力

アナログ入力

モーター出力

PWM_SIDE_CN6※

※ A/DとPWMの同時使用はできません

Digital I/O (CN5) Digital I/O (CN14)

H

L

L

H

IN1, IN2 端子に加わる

電圧で正転・逆転・停止が切り換わる。

M1 または M2

Page 7: PWM2 - 熊本大学

2012/11/18

7

• USB、シリアルケーブルを接続・設定する – ケーブル選択swは STRAIGHT 側 にすること

• 機器の電源スイッチを OFF にする • モードスイッチを D 側にする • TICOLLAの転送キー(ICのアイコン)を押す • 電源スイッチを ON にする(緑LED1個点灯) • SW3 を押す。(転送開始する、 TICOLLA-CDEの転送ボタン黄LED2個点灯) • 転送終了(緑LED2個点灯、CDEにcomplete表示) • 電源スイッチ OFF にする。

起動方法

• モードスイッチを R 側にする。

• 電源スイッチを ON にする。

• SW3 を押すと直ちに起動する。

終了方法

• 電源スイッチを OFF にする。

Page 8: PWM2 - 熊本大学

2012/11/18

8