pwm2 - 熊本大学
TRANSCRIPT
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
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. ディジタル信号で回転数が制御できる
2012/11/18
3
PWM2ch
J1, J2, J3 をすべてB側にすること
J1, J2, J3 をすべてB側にすること J1, J2, J3 をすべてB側にすること
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波形のデューティー比であり速度と比例するとは限らないことに注意
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出力
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
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 にする。
2012/11/18
8