2008/04/18 ス テッピングモーターを回す。
EPSONのインクジェットプリンタのインクが詰まって出なくなり捨てようと思いましたが、ばらして見ました。
ハードオフ等のジャンク屋にも100円位の捨て値で出ています。
中からはヘッド移動用と紙送り用の2個のステッピングモーターが出てきました。
本体の大きさ42*42*25と42*42*31です。
コイル抵抗8オーム、5V掛けて600mA位でしょうか?
モーターにはEPSONの表示があります(型番EM-293)
他の1個はEM-288 shinano kenshi co ltd china
残念なことに線は4本コイル2個のバイ ポーラ型のモーターです。


ギヤは圧入してあるので道具を使ってはずします
自分でも精度良く加工できれば圧入できると思うのですが、なかなかぴたりに加工できません。


簡単に回らないかとネットを見ましたが、あまり情報はありませんでした。
何事も好きな私 挑戦して見ました。
ジャンク基板からはずしたIC MC3479  が2個ありましたので使って作って見ました。
通販で400円くらいのようです。

• Single Supply Operation: 7.2 to 16.5 V
• 350 mA/Coil Drive Capability
• Clamp Diodes Provided for Back−EMF Suppression
• Selectable CW/CCW and Full/Half Step Operation
• Selectable High/Low Output Impedance (Half Step Mode)
• TTL/CMOS Compatible Inputs
• Input Hysteresis: 400 mV Minimum
• Phase Logic Can Be Initialized to Phase A
• Phase A Output Drive State Indication (Open−Collector)
• Pb−Free Package is Available*



基板設計して CNCで切削 穴あけ


少々電流容量が少ないですが、ゆっくり回せばそこそこに
利点はパソコンのプリンターポートに直結可能です。

資料を読むと電流調整やってくれるようですが、12V8オームでは電流流れすぎて回りますがちんちんになってしまいました。
IC壊したかと思いましたが、冷えたところ元に戻りました。
仕方ないので22オームの抵抗をコイルに直列に入れて電流調整しました。これで12V30オーム400mAのはずなんですが、
電流はこんなに流れません。?


このほうが高速回転させたときには自動的に電圧上がってよい方向になります。
回路図250kになっていますが、実際は100k使いました。

一軸分足りないのでPIC16F88で回路を追加しました。SOFT制御ハーフステップでユニポーラステッピングモーターを回しています。




;PC-CNC ユニポーラステッピングモーター駆動    2008/04/10
;RA0,1,2,3 OUT    ;RB0 step INT    ;RB6 DIR
    LIST         P=PIC16F88 ;
    INCLUDE     "P16f88.inc"
    __CONFIG  _CONFIG1, _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _PWRTE_OFF & _WDT_OFF & _INTRC_IO & _PWRTE_ON   
    __CONFIG  _CONFIG2, _IESO_OFF & _FCMEN_OFF
CNT       EQU   20H ;カウンタ   PICによって違いますが、16F88はRAMは20Hから始まっています 
    ORG    0          ;Reset Start 電源を入れると此処からスタートします
    goto    init
    org    4      ;割込みがかかった場合のスタート番地
    goto      init    ;Initialize
;  入出力ピン初期化
init    BCF     INTCON,GIE  ;割り込み禁止
    BSF    STATUS,RP0    ; Bank 1 へ切替
    MOVLW    B'01110000'    ;内蔵クロック 8MHz
    MOVWF    OSCCON   
    MOVLW    B'11111111'    ;PortB inモード
    MOVWF    TRISB   
    MOVLW    B'00000000'    ;PortA 出力モードに設定
    MOVWF    TRISA   
    clrf    ANSEL        ;デジタル   
    bcf    OPTION_REG,NOT_RBPU    ;PortB PU on
    movlw    b'00000111'    ;コンパレーターoff
    movwf    CMCON
    BCF    STATUS,RP0    ; Bank 0 へ戻す
    movLW    B'00000000'    ;all off 初期出力
    movwf    PORTA
     MOVLW     0H   ;COUNTERリセット
     MOVWF     CNT
LOOP1    BTFSC      PORTB,0 ;stepが0なら進む
     GOTO      LOOP1
LOOP2    BTFSS      PORTB,0 ;stepが1なら進む
     GOTO      LOOP2
     BTFSS      PORTB,6 ;dir(正逆)チェック
     GOTO      FWD
    GOTO    RVS        ;逆転
FWD     MOVF      CNT,W    ;正転カウント処理
     SUBLW      07H
     BTFSC      STATUS,Z
     GOTO      SET0        ;C=7 なら 0 に
     INCF       CNT,F
     GOTO       P_OUT
SET0      CLRF     CNT
    GOTO      P_OUT
RVS        ;逆転カウント処理
     MOVF      CNT,W
     SUBLW      0H
     BTFSC      STATUS,Z
     GOTO      SET7        ;C=0 なら 7 に
     DECF       CNT,F
     GOTO       P_OUT
SET7      MOVLW     07H
     MOVWF     CNT
P_OUT    MOVF      CNT,W
     CALL       TABLE
     MOVWF     PORTA        ;TABLEから持ち帰ったデータを出力する
     GOTO       LOOP1
TABLE  ;CNT値をPCLに+しでJMP,データを持ってretする
     ANDLW    07H    ;下位3ビット
    ADDWF PCL,F
     RETLW B'11111000'        ;0下位4bitが有効
     RETLW B'11111010'    ;1
     RETLW B'11110010'    ;2
     RETLW B'11110110'    ;3
     RETLW B'11110100'    ;4
     RETLW B'11110101'    ;5
     RETLW B'11110001'    ;6
     RETLW B'11111001'    ;7
    END

あちこちのサイトを参考にコピーしまくって作りました。ありがとうございます。動けばOK
MPLAB を使ってコンパイル、デバッグ  icprog を使ってICに書き込みました。
やる時々に使い方を忘れてしまいます。
Debugger Stimulus コマンドでPINの値を変化させてデバッグします。


電流調整はモーターコイルに抵抗を入れてください。


とりあえず回りました。
基板切削用ではこの程度のモーターで十分で格安簡易CNCが作れそうです。


2008/04/19
TA7774F   面実装 チップ  

オークションで30個900円で購入  
秋 月では2個300円   6線式のユニポーラステッピングモーターも中点線をフリーにして回せます。
バイポーラ駆動による1 チップモータドライバ(ブリッジドライバ2 組内蔵)
 パワーセーブ機能、 スタンバイ機能を有する。
 励磁切り替え時の貫通電流保護回路内蔵
 入力TTL コンパチブル IN A、IN B、PS 端子
 IO (START) 350mA (MAX.) : VS1 ENABLE 時
 IO (HOLD) 100mA (MAX.) : VS2 ENABLE 時
ピンのピッチは1mmですが、私のCNCの切削可能最小ピッチです。

放熱はピンを使って基板に逃がすタイプですのでパターンを大きくとって半田たっぷり盛って放熱します。





このIC出力OFFができないようなのでハーフステップができません

回路は簡単なんですが!!
問題は入力がDIR・STEP入力ではないのでPICを使って信号変換する必要があります。

JWWによる基板設計


08/04/22
基板切削して見ました。切削直後の写真です。ICは1mmピッチ 足の太さは0.5mm 空けてある穴は0.9mmです。
切削幅は0.5mm位です。バリも出ず、きれいに切れています。 
CNCの性能としては、先の細い刃物が手に入ればもっと細く加工することは可能かと思います。

この後ごみを掃除して表面にフラックスを塗って使います。


ところで話し変わりますが古い基板から部品をはずす時に便利に使っているバーナーです。
燃料は使い捨てライター。1300度の炎でスルーホールのメーカー基板から簡単に部品がはずせますのでお勧めです。


ヒシチューブを収縮させる時にもライターは使いやすいです。

MACHのDIR,STEP信号をINA,INBに変換するプログラムです。
;PC-CNC バイポーラステッピングモーター駆動    TA7774F 2008/04/20
;RA2 DIR RA3 step    RB7 PS RB5,6 OUT
    LIST         P=PIC16F88 ;
    INCLUDE     "P16f88.inc"
    __CONFIG  _CONFIG1, _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _PWRTE_OFF & _WDT_OFF & _INTRC_IO & _PWRTE_ON   
    __CONFIG  _CONFIG2, _IESO_OFF & _FCMEN_OFF
CNT       EQU   20H ;カウンタ
    ORG    0          ;Reset Start
    goto    init
    org    4
    goto      init    ;Initialize
;  入出力ピン初期化
init    BCF     INTCON,GIE  ;割り込み禁止
    BSF    STATUS,RP0    ; Bank 1 へ切替
    MOVLW    B'01110000'    ;内蔵クロック 8MHz
    MOVWF    OSCCON   
    MOVLW    B'11111111'    ;PortA inモード
    MOVWF    TRISA   
    MOVLW    B'00000000'    ;PortB 出力モードに設定
    MOVWF    TRISB   
    clrf    ANSEL        ;デジタル   
    bcf    OPTION_REG,NOT_RBPU    ;PortB PU on
    movlw    b'00000111'    ;コンパレーターoff
    movwf    CMCON
    BCF    STATUS,RP0    ; Bank 0 へ戻す
    movLW    B'00000000'    ;all off
    movwf    PORTB
     MOVLW     0H   ;COUNTERリセット
     MOVWF     CNT
LOOP1    BTFSC      PORTA,3 ;stepが0なら進む
     GOTO      LOOP1
LOOP2    BTFSS      PORTA,3 ;stepが1なら進む
     GOTO      LOOP2
     BTFSS      PORTA,2 ;dir(正逆)チェック
     GOTO      FWD
    GOTO    RVS        ;逆転
FWD     MOVF      CNT,W    ;正転カウント処理
     SUBLW      03H
     BTFSC      STATUS,Z
     GOTO      SET0        ;C=3 なら 0 に
     INCF       CNT,F
     GOTO       P_OUT
SET0      CLRF     CNT
    GOTO      P_OUT
RVS        ;逆転カウント処理
     MOVF      CNT,W
     SUBLW      0H
     BTFSC      STATUS,Z
     GOTO      SET3        ;C=0 なら 3 に
     DECF       CNT,F
     GOTO       P_OUT
SET3      MOVLW     03H
     MOVWF     CNT
P_OUT    MOVF      CNT,W
     CALL       TABLE
     MOVWF     PORTB        ;TABLEから持ち帰ったデータを出力する
     GOTO       LOOP1
TABLE  ;CNT値をPCLに+しでJMP,データを持ってretする
     ANDLW    B'00000011'    ;下位2ビット
    ADDWF     PCL,F
     RETLW     B'01100000'        ;0下位2bitが有効
     RETLW     B'01000000'    ;1
     RETLW     B'00000000'    ;2
     RETLW     B'00100000'    ;3
END

あまり細かいことは気にせず、とりあえず回りました。

2008/4/30

PIC16F88を使って考えて見ました。
せっかくPICを使うのでカレントダウン機能も持たせました。
16ビットのタイマー1を使って1/8プリスケーラーを使いました。
STEPクロックが切れてから1/8M*4*8*256*256=0.26秒後にカレントダウンに入ります。

;PC-CNC バイポーラステッピングモーター駆動    2008/04/28
;RA2 DIR RA3 step    RB7 PS RB5,6 OUT
    LIST         P=PIC16F88 ;
    INCLUDE     "P16f88.inc"
    __CONFIG  _CONFIG1, _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _WDT_OFF & _INTRC_IO & _PWRTE_ON   
    __CONFIG  _CONFIG2, _IESO_OFF & _FCMEN_OFF
  CNT1       EQU   20H ;カウンタ
  W_TEMP    equ    21h
  ST_TEMP    equ    22h
    ORG    0          ;Reset Start
    goto    init
    org    4
    goto      INTR    ;Initialize
init    BSF    STATUS,RP0    ; Bank 1 へ切替
    MOVLW    b'01110000'    ;内蔵クロック 8MHz
    MOVWF    OSCCON   
    MOVLW    b'11111111'    ;PortA in=1 out=0 モード
    MOVWF    TRISA   
    MOVLW    b'00000000'    ;PortB 出力モードに設定
    MOVWF    TRISB   
    clrf    ANSEL        ;デジタル   
    bcf    OPTION_REG,NOT_RBPU    ;PortB PU on
    movlw    b'00000111'    ;コンパレーターoff
    movwf    CMCON
    BSF    PIE1,TMR1IE ;TMRオーバーフロー割込許可
    BCF    STATUS,RP0    ; Bank 0 へ戻す
    MOVLW    b'00110000'
    MOVWF    T1CON     ;T CONレジスタ プリスケーラ1:8
    BCF    T1CON,T1OSCEN
    BCF    T1CON,TMR1CS    ;int osc
    CLRF    CNT1    ;CNT1変数を00Hにクリア
    BSF    INTCON,PEIE ;周辺割込の許可
    BSF    INTCON,GIE ;全体割込の許可
    BSF    T1CON,TMR1ON ;TMRのTMR ONビットをセット カウント開始
LOOP1    BTFSC      PORTA,3 ;stepが0なら進む
     GOTO      LOOP1
LOOP2    BTFSS      PORTA,3 ;stepが1なら進む
     GOTO      LOOP2
    CLRF    TMR1H    ;タイマー=0
    BCF    PORTB,7    ;PS=0    power UP
     BTFSS      PORTA,2 ;dir(正逆)チェック
     GOTO      FWD
    GOTO    RVS        ;逆転
FWD     MOVF      CNT1,W    ;正転カウント処理
     SUBLW      03H
     BTFSC      STATUS,Z
     GOTO      SET0        ;C=3 なら 0 に
     INCF       CNT1,F
     GOTO       P_OUT
SET0      CLRF     CNT1
    GOTO      P_OUT
RVS        MOVF      CNT1,W         ;逆転カウント処理
     SUBLW      0H
     BTFSC      STATUS,Z
     GOTO      SET3        ;C=0 なら 3 に
     DECF       CNT1,F
     GOTO       P_OUT
SET3      MOVLW     03H
     MOVWF     CNT1
P_OUT    MOVF      CNT1,W
     CALL       TABLE
     MOVWF     PORTB        ;TABLEから持ち帰ったデータを出力する
     GOTO       LOOP1
TABLE  ;CNT値をPCLに+しでJMP,データを持ってretする
     ANDLW    B'00000011'    ;下位2ビット
    ADDWF     PCL,F
     RETLW     B'01100000'        ;0下位2bitが有効
     RETLW     B'01000000'    ;1
     RETLW     B'00000000'    ;2
     RETLW     B'00100000'    ;3
INTR     ;割込処理
PUSH    MOVWF    W_TEMP        ;Wレジスタ待避
    SWAPF    STATUS,W    ;STATUS取出
    MOVWF    ST_TEMP        ;STATUS待避
    BCF    PIR1,TMR1IF    ;オーバーフローフラグのクリア
    BSF    STATUS,RP0    ;メモリーバンクを1にセット
    BSF    PIE1,TMR1IE    ;オーバーフロー割込許可
    BCF    STATUS,RP0    ;メモリーバンクを0にセット
    BSF    PORTB,7        ;PS=1
pop    SWAPF    ST_TEMP,W    ;STATUSを戻す
    MOVWF    STATUS   
    SWAPF    W_TEMP,F    ;Wレジスタを戻す
    SWAPF    W_TEMP,W
    RETFIE        ;割込を許可してリターン
    END

基板裏側の面実装ICの状況




当たり前ですが、ICの規格のとおり電流350mAが限度のようです。結構熱を持ちます。
今回の反省
    当初何気なく BSF    T1CON,TMR1CS  とタイマー用の内蔵OSC回路をONにしてしまいました。
これは12,13番PINに32Kのクリスタルを付けて使う時計などの発振回路でした。
MPALBのシュミレーターを使って十分にバグ取りしたつもりだったのですが、モーターが動かず悩みました。
12,13番ピンはOUT端子に使っていたので余計です。
結局 BCF    T1CON,TMR1CS で動きました。


home  CNCの構想   CNCの製作  CNCのSOFT    CNCの作品    ゲストブック