====== ステッピングモーター制御 ======
===== 概要 =====
多摩川精機製のステッピングモーター「TS3103N124」を秋月電子通商で購入いたしました。
早速、これをPICで制御してみました。
TS3103N124の規格は、以下のとおりです。
* 2相ユニポーラ型
* ステップ数200(1.8度)
* 駆動電圧(12V)
* コイル電流140mA
* コイル抵抗86Ω/相
本来なら、12Vが必要なのですが、今回は、PICの電圧(+5V)をそのまま使ってみました。
===== 動作原理 =====
{{:imgpaste:202004:htmikan-20200429-162328.png}}
今回は、正転と逆転を360°繰り返すだけのものです。
TS3103N124では、正転と逆転に対して各々200パルス加えるだけの単純なものです。
===== 回路図 =====
{{:imgpaste:202004:htmikan-20200429-162400.png}}
===== ソースコード =====
//**********************************************************************
/*
<ステッピングモーター制御>
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と抵抗が少々のとても簡単な構成です。
{{:imgpaste:202004:htmikan-20200429-162526.png?500}}
ステッピングモーターを接続してみました。
{{:imgpaste:202004:htmikan-20200429-162539.png?500}}
ステッピングモーターの電源は、PICに供給している+5Vをそのまま使用しました。
赤色のミノムシクリップがステッピングモーターの電源です。本来は、ここに+12Vを加えます。
{{:imgpaste:202004:htmikan-20200429-162554.png?500}}
これでも正常に動作するものですね。
将来的にはこれでバリコンやボリュームを廻すのも一興かなと考えております。
オートアンテナチューナとか...
このページは稲崎様の閉鎖したHPのコピーで、著作権は稲崎様にあります。[[elechobby:picdic:picdic|詳細]]
This page is a copy of Mr. Inasaki's closed website, and the copyright is held by him.[[elechobby:picdic:picdic|Details]]