M氏の幸福実験室
New Profile Travel PC Photos Experiment Mail

日食撮像自動化プロジェクト 2017年バージョン

3-2-1'.PICによるパルスモータ駆動の前実験

 Lチカで目指す信号の出し方が分かったので、今度はステッピングモーターを動かしてみました。回路はブレッドボード上に組み立て、動作確認。Delayは6~4ms位だと脱調せず、きちんと回転します。Delayが余りに長くても、短くても脱調するので要注意です。
   1:  /*************************************************
   2:   *  PIC16F88 ステッピングモータ駆動の実験用
   3:   *  2017/02/05開始->2017/6/21完了
   4:   * 90度回転して1秒止まり、また90度回転する
   5:   * made by M氏 @M氏の幸福実験室
   6:  *************************************************/
   7:   
   8:  #pragma config FOSC = INTOSCCLK//HS//
   9:  #pragma config WDTE = OFF
  10:  #pragma config PWRTE = ON
  11:  #pragma config MCLRE = ON
  12:  #pragma config BOREN = ON
  13:  #pragma config LVP = OFF
  14:  #pragma config CPD = OFF
  15:  #pragma config WRT = OFF
  16:  #pragma config CCPMX = RB3
  17:  #pragma config CP = OFF
  18:   
  19:  // CONFIG2
  20:  #pragma config FCMEN = OFF
  21:  #pragma config IESO = OFF
  22:  //#include <pic16f88.h>
  23:  #include <stdio.h>
  24:  #include <stdlib.h>
  25:  #include <xc.h>
  26:  #define _XTAL_FREQ 8000000
  27:   
  28:  void main(void)
  29:  {   
  30:      OSCCON = 0b01110000;    // 内蔵クロックの周波数を8MHzに設定
  31:      ANSEL = 0; 
  32:      TRISB = 0b00000000;
  33:      TRISA = 0b00000000;
  34:      PORTB = 0b00000000;
  35:      PORTA = 0b00000000;
  36:      
  37:      int i, j;
  38:  //ステッピングモータの駆動部分、1周200ステップなので、90度は50ステップなので、
  39:      while(1)    
  40:      {
  41:          __delay_ms(1000);   //本チャンでは多段階撮像のシャッター操作を行うサブルーチンを呼ぶ
  42:          for(i=1;i<=12;i++)     //4ステップを12周させて48ステップ回します
  43:          {
  44:              PORTBbits.RB7 = 0;
  45:              PORTBbits.RB6 = 1;
  46:              PORTBbits.RB5 = 0;
  47:              PORTBbits.RB4 = 1;
  48:                      __delay_ms(6);   //これで1ステップとなります
  49:              PORTBbits.RB7 = 0;
  50:              PORTBbits.RB6 = 1;
  51:              PORTBbits.RB5 = 1;
  52:              PORTBbits.RB4 = 0;
  53:                      __delay_ms(6);
  54:              PORTBbits.RB7 = 1;
  55:              PORTBbits.RB6 = 0;
  56:              PORTBbits.RB5 = 1; 
  57:              PORTBbits.RB4 = 0;
  58:                      __delay_ms(6);
  59:              PORTBbits.RB7 = 1;
  60:              PORTBbits.RB6 = 0;
  61:              PORTBbits.RB5 = 0;
  62:              PORTBbits.RB4 = 1;
  63:                      __delay_ms(6);
  64:          }              //残り2ステップを実行
  65:          PORTBbits.RB7 = 0;
  66:          PORTBbits.RB6 = 1;
  67:          PORTBbits.RB5 = 0;
  68:          PORTBbits.RB4 = 1;
  69:                  __delay_ms(6);
  70:          PORTBbits.RB7 = 0;
  71:          PORTBbits.RB6 = 1;
  72:          PORTBbits.RB5 = 1;
  73:          PORTBbits.RB4 = 0;
  74:                  __delay_ms(6);
  75:   
  76:          __delay_ms(1000);   //本チャンでは多段階撮像のシャッター操作を行うサブルーチンを呼ぶ
  77:   
  78:          PORTBbits.RB7 = 1;      //先ず2ステップの続きを回します
  79:          PORTBbits.RB6 = 0;
  80:          PORTBbits.RB5 = 1; 
  81:          PORTBbits.RB4 = 0;
  82:                  __delay_ms(6);
  83:          PORTBbits.RB7 = 1;
  84:          PORTBbits.RB6 = 0;
  85:          PORTBbits.RB5 = 0;
  86:          PORTBbits.RB4 = 1;
  87:                      __delay_ms(6);
  88:          for(i=1;i<=12;i++)      //4ステップ12周で48ステップ回します
  89:          {
  90:              PORTBbits.RB7 = 0;
  91:              PORTBbits.RB6 = 1;
  92:              PORTBbits.RB5 = 0;
  93:              PORTBbits.RB4 = 1;
  94:                      __delay_ms(6);   
  95:              PORTBbits.RB7 = 0;
  96:              PORTBbits.RB6 = 1;
  97:              PORTBbits.RB5 = 1;
  98:              PORTBbits.RB4 = 0;
  99:                      __delay_ms(6);
 100:              PORTBbits.RB7 = 1;
 101:              PORTBbits.RB6 = 0;
 102:              PORTBbits.RB5 = 1; 
 103:              PORTBbits.RB4 = 0;
 104:                      __delay_ms(6);
 105:              PORTBbits.RB7 = 1;
 106:              PORTBbits.RB6 = 0;
 107:              PORTBbits.RB5 = 0;
 108:              PORTBbits.RB4 = 1;
 109:                      __delay_ms(6);
 110:          }
 111:      }
 112:  }
 モーターに供給する9V電源はモバイルバッテリから昇圧回路を介して供給しました。12V駆動ですが、とてつもなく加熱するので、9V程度が良い、と秋月電商のアドバイスがありましたが、9VでもST42BYG0506H-4811は結構熱くなります。回るなら、もっと電圧を下げたほうが良いようです。

回路の全景

ステッピングモータとの結線はこんな感じです。
inserted by FC2 system