ステッピングモーター制御

多摩川精機製のステッピングモーター「TS3103N124」を秋月電子通商で購入いたしました。
早速、これをPICで制御してみました。
TS3103N124の規格は、以下のとおりです。

  • 2相ユニポーラ型
  • ステップ数200(1.8度)
  • 駆動電圧(12V)
  • コイル電流140mA
  • コイル抵抗86Ω/相

本来なら、12Vが必要なのですが、今回は、PICの電圧(+5V)をそのまま使ってみました。


今回は、正転と逆転を360°繰り返すだけのものです。
TS3103N124では、正転と逆転に対して各々200パルス加えるだけの単純なものです。

StepMotor.c
//********************************************************************** 
 
/*
	<ステッピングモーター制御>
 
	TS3103N124
 
	白: 電源(9~15V)
	緑: X1:PORTB.F2  0 1 1 0
	赤: Y1:PORTB.F4  0 0 1 1
	黄: X2:PORTB.F5  1 0 0 1
	青: Y2:PORTB.F3  1 1 0 0
 
*/
 
//********************************************************************** 
 
void	interrupt()
{
	if (INTCON.T0IF == 1) {
		INTCON.T0IF = 0;
	}
	if (PIR1.TMR1IF == 1) {
		PIR1.TMR1IF = 0;
	}
	if (INTCON.INTF == 1) {
		INTCON.INTF = 0;
		PORTB.F1 = ~PORTB.F1;
	}
}
 
//********************************************************************** 
 
void	Pwm_Change_DutyEx(unsigned int duty_ratio)
{
    CCPR1L = duty_ratio >> 2;
    CCP1CON.F6 = duty_ratio & 0b00000001;
    CCP1CON.F7 = (duty_ratio & 0b00000010) >> 1; 
}
 
//********************************************************************** 
 
void	main()
{
	unsigned	int		ad1, cnt;
	unsigned	char	table[] = {
		0b00101000,
		0b00001100,
		0b00010100,
		0b00110000
	};
	unsigned	int	i, j;
	//
	CMCON = 0b00000111;			// コンパレータは使用しない。 
	ANSEL = 0b00000010;			// AN1を使用する。 
	TRISA = 0b11111111;			// ポートAを設定する。 
	TRISB = 0b00000001;			// ポートBを設定する。 
	OSCCON = 0b01110000;		// クッロクを8Mhzに設定する。 
	OPTION_REG = 0b00000111;	// ポートBをプルアップする。Timer0のプリスケーラは1/256に設定する。
	T1CON = 0b00110001;			// Timer1のプリスケーラは1/8に設定する。
	OPTION_REG.INTEDG = 1;		// INTピン(PORTB.F0)の立ち上がりエッジで割り込みをかける。 
	INTCON.GIE = 0;				// 割り込みを無効にする。 
	INTCON.PEIE = 1;			// Peripheral Interrupt Enable
	INTCON.TMR0IE = 1;			// TMR0 Overflow Interrupt Enable
	INTCON.TMR0IF = 0;			// TMR0 Overflow Interrupt Flag
	INTCON.INTE = 1;			// RB0/INT External Interrupt Enable
	PIE1.TMR1IE = 1;			// TMR1 Overflow Interrupt Enable
	PIR1.TMR1IF = 0;			// TMR1 Overflow Interrupt Flag
	//
	Pwm_Init(3000);	// 3Khz
	Pwm_Change_DutyEx(1024 / 2);
	//
//	INTCON.GIE = 1;	// これ以降の処理で割り込みを許可する。 
	//
	while (1) {
		for (i = 0; i < 50; i++) {		// 正転 
			for (j = 0; j < 4; j++) {
				PORTB = table[j];
				Delay_ms(50);
			}
		}
		for (i = 0; i < 50; i++) {		// 逆転
			for (j = 0; j < 4; j++) {
				PORTB = table[3 - j];
				Delay_ms(50);
			}
		}
	}
}
 
//**********************************************************************

PICとFETと抵抗が少々のとても簡単な構成です。

ステッピングモーターを接続してみました。

ステッピングモーターの電源は、PICに供給している+5Vをそのまま使用しました。
赤色のミノムシクリップがステッピングモーターの電源です。本来は、ここに+12Vを加えます。

これでも正常に動作するものですね。
将来的にはこれでバリコンやボリュームを廻すのも一興かなと考えております。
オートアンテナチューナとか…

著作権表示 copyright notice

このページは稲崎様の閉鎖したHPのコピーで、著作権は稲崎様にあります。詳細
This page is a copy of Mr. Inasaki's closed website, and the copyright is held by him.Details
  • elechobby/picdic/pic16f88/50.txt
  • 最終更新: 2025/10/17 14:29
  • by 127.0.0.1