全体表示

[ リスト | 詳細 ]

記事検索
検索

モータードライブICを使うとこんなに簡単!!感激!!

イメージ 1

イメージ 2

モータードライブIC 東芝 TOSHIBA TA7291P(単価約400円)を使って

マブチモーターをまわしてみました♪

トランジスタでもまあまあ簡単に回りましたが

モータードライブICを使うともっと簡単に廻せます♪

それに、停止や逆回転も出来て感激です!!


接続は、前のページにも書いてありますが
ICの欠けているいるほうを左にして
左から1,2,3略10番ピンまであり
それぞれ
1 グランド
2 と 10 が モーター本体
5 と 6 がマイコン出力ポート 今回はP1.0 と P1.1を使いました
4 と 8 を直結して +5V
7 もう一方の +5V
3,9は結線なし

ポート制御は
5番ピン(P1.0)   6番ピン(P1.1)
  0         0      OFF
  1         0      正回転
  0         1      逆回転
  1         1      ブレーキ



//sample21_1.c
//モータードライブ TOSHIBA TA7291P

#pragma sfr

void main(){
  short i,ii;
  PM1.0 = 0;//output set
  PM1.1 = 0;//output set

  P1.0 = 0x01; //pin5 正回転
  P1.1 = 0x00; //pin6
   for(ii=0;ii<30;ii++){
    for(i=0;i<32000;i++){}
   }

  P1.0 = 0x01; //pin5 停止
  P1.1 = 0x01; //pin6
   for(ii=0;ii<7;ii++){
    for(i=0;i<32000;i++){}
   }

  P1.0 = 0x00; //pin5 逆回転
  P1.1 = 0x01; //pin6
   for(ii=0;ii<30;ii++){
    for(i=0;i<32000;i++){}
   }
   
  P1.0 = 0x01; //pin5 停止
  P1.1 = 0x01; //pin6
   
}


トラ技8月号執筆者のなひたふさんのページより
http://www.nahitech.com/nahitafu/trg78k/timerint.html

イメージ 1


必要?に迫られてタイマー割り込みを覚えた♪
なひたふさんのページに詳しく掲載されているし
トラ技8月号のP159にごく簡素化した
タイマー割り込みの例が載っていたので幸いだった♪


一番のコア部分は下の部分!
●まず、main側で、割り込み処理の準備を以下のとおり行う
  trg_regintsrv(TRG_INTID_BSITM000,intsrv_tim);// 割り込みハンドラ登録
  PRM00 = 1;      //   4MHz  [0]なら16MHZ
  CR000 = 0xffff; // 割り込み周期 65535*0.25us=16ms
  TMC00 = 0x0C;   // カウント開始
  MK0H.6 = 0;     // TM000割り込み許可

●割り込み処理の関数側の記述
  void intsrv_tim(void){
    P6.1 ^= 0x01;//処理を書く
    IF0H.6 = 0;//タイマ割り込みフラグをクリア

●再び、main側で、後処理
  TMC00 = 0x00;//カウント停止
  MK0H.6 = 1;//TM000割り込み禁止(マスク)


以上が、割り込みの基本



//sample20_1.c
//timer_int
#pragma sfr
#include "trgbios.h"

void intsrv_tim(void){
    P6.1 ^= 0x01;
    IF0H.6 = 0;
}

void main(){
    PM6.1 = 0;
    trg_puts("hellow LED \n");
    trg_regintsrv(TRG_INTID_BSITM000,intsrv_tim);// 割り込みハンドラ登録
    PRM00 = 1;      //   4MHz
    CR000 = 0xffff;  // 割り込み周期
    TMC00 = 0x0C;   // カウント開始
    MK0H.6 = 0;     // TM000割り込み許可

    while(1){
	char c = trg_getc();
	trg_senddata(&c,1);
	if(c == 'x') break;
	}

   TMC00 = 0x00;
   MK0H.6 = 1;
}
イメージ 1

電子回路シミュレーターというものが

世の中にはある、、、ってことを

昨日、本屋で初めて知った


TINAという名前のソフト

お使いの方、、、


是非、インプレお願いしますぅ♪

yahooblog で「TINA 電子回路」で検索しても、1件しか記事がなーーい♪



下が、webページ

http://www.ilink.co.jp/index.html

イメージ 2

78k0マイコンで7セグLED2桁表示成功!!
やっと、できた!

どうやら、あちこちかまっているうちに
ポートを一部壊したのかもしれない

7セグLEDの[e」の表示をポートP1.4でやってたのですが
どうしても、表示しないので
かわりに、P0.0をつかってみたらすんなりいった♪

まだ、同時2桁表示ではありませんが
一応、完成ということに♪♪


//sample18_04.c
//7segLED 2桁
#pragma sfr

void main(){
	unsigned char x[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe4,0xfe,0xe6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e};
	unsigned char a = 0x00;
	short i,ii;//wait
	
	PM3.0 = 0;//スイッチトランジスタポートセット
	PM6.1 = 0;
	
	
	PM1.0 = 0;//出力モード
	PM1.1 = 0;
	PM1.2 = 0;
	PM1.3 = 0;
	PM0.0 = 0;
	PM1.5 = 0;
	PM1.6 = 0;
		
	P3.0 = 0; //トランジスタ一桁目ON 「0点灯」
	P6.1 = 1; //二桁目off

	for(a=0;a<16;a++){       //変数a 0から0fまで loop
	
	P1.0 = (x[a] ^ 0x80) >> 7; //第7BITから順に反転させて各ポートへ
	P1.1 = (x[a] ^ 0x40) >> 6;
	P1.2 = (x[a] ^ 0x20) >> 5;
	P1.3 = (x[a] ^ 0x10) >> 4;
	P0.0 = (x[a] ^ 0x08) >> 3;
	P1.5 = (x[a] ^ 0x04) >> 2;
	P1.6 = (x[a] ^ 0x02) >> 1;
	
	for(ii=0;ii<4;ii++){
	for(i=0;i<30000;i++){}
	}
	}
	
	P1.0  = 1;//一旦消去
	P1.1  = 1;
	P1.2  = 1;
	P1.3  = 1;
	P0.0  = 1;
	P1.5  = 1;
	P1.6  = 1;
	
	P3.0 = 1;//一桁目消灯
	P6.1 = 0;//二桁目点灯
    
	for(a=0;a<16;a++){       //変数a 0から0fまで loop
	
	P1.0 = (x[a] ^ 0x80) >> 7; //第7BITから順に反転させて各ポートへ
	P1.1 = (x[a] ^ 0x40) >> 6;
	P1.2 = (x[a] ^ 0x20) >> 5;
	P1.3 = (x[a] ^ 0x10) >> 4;
	P0.0 = (x[a] ^ 0x08) >> 3;
	P1.5 = (x[a] ^ 0x04) >> 2;
	P1.6 = (x[a] ^ 0x02) >> 1;
	
	for(ii=0;ii<4;ii++){
	for(i=0;i<30000;i++){}
	}
	}
	
	P1.0  = 1;//一旦消去
	P1.1  = 1;
	P1.2  = 1;
	P1.3  = 1;
	P0.0  = 1;
	P1.5  = 1;
	P1.6  = 1;
       

}



78k0のポート6を使って

トランジスタ
2sa1015を利用し

モータードライブICを使わずに
ダイレクトに
マブチモーターを廻してみました

はじめの5秒ほどは、間欠回転
あとは、連続です

これも、PWMなんだろうか??
//sample19_03.c
//間欠回転
#pragma sfr

void main(){

short i,ii;

PM6.1 = 0;//output mode set


  for(ii=0;ii<20;ii++){
    for(i=0;i<15000;i++){}
    P6.1 = 1;//swich on
    
    for(i=0;i<32000;i++){}
    P6.1 = 0;//swich off
   }
  for(ii=0;ii<20;ii++){
    for(i=0;i<32000;i++){}
    P6.1 = 0;//swich on
   }
}



.


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事