2015.11.20 走行距離 69,000km 手パ
   手パ、手動パルスジェネレーターと言います。
 マッハ3のJOGモードを、テンキーで操作していましたが、0.01mmの移動となると、ボタンを押す感覚が、アバウトなので、やはり、手パが欲しくなりました。
 でも、手パの情報が少なく、自作となると、困難な状態でした。 そんな中、掲示板仲間の有る方が、手パの製作に入りまして、見事に無線で手パを作りました。
その、ある方に、無理を言って、ご指導を頂きました。 この場で、感謝申し上げます。
ここを参考にしました。
構  成
1、必要な物
2、繋ぎ方
3、マッハ3の設定

4、PIC

5、基板完成(便利品)

6、暫定で動作確認
  手パの送り量調整方法
6、作業を終えて



1、必要な物


先ずは、ロータリースイッチを求めました。
日本開閉器のMRY−106です。 このロータリースイッチのシャフトの長さは、20mmあります。
いざ買ってみてから、つまみを探すと、φ3mmのつまみがなかなか見つかりませんでした。
胴が、φ14mmで、細くていいのですが、使い安そうなつまみは、大抵がφ6mmです。
スイッチ自体は、接点数をスイッチ本体で、変えられるので、使い勝手がいいロータリースイッチであるのですが、 つまみが限定されるので、残念です。


付属のつまみは、事前に操作感を試しましたところ、細くて使いずらいです。 後から、買いなおしました。






手パです。 日本国内では、大変高価な品です。
そこで、AliExpressで購入。
一応、FANUC製の表示とMade In japanの表示があります。 型a860-0203-t001
5V操作です。





2、繋ぎ方

ある方に教わりました。 SSのポート3も、SEC基板も、全て、入力端子です。

フォトカプラは、TLP521−4 2回路入フォトカプラ 赤外LED+フォトトランジスタ TLP621−2
PICは、16F627A

OEMコードは、ここ



    3、マッハ3の設定




4、PICを利用する
ちょっと前から学習を始めたので、先達者の方々に大変お世話になりました。 改めて感謝申し上げます。

/***************************** STEP11_Switch.c *****************************/ #define _LEGACY_HEADERS//旧CONFIG対応 // インクルードファイルの読み込み #include // コンフィギュレーションワードの設定 __CONFIG ( UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS & INTIO ); // プロトタイプ宣言 void WaitTime(int cnt); // メイン関数 void main (void){ // 1,2,17,18端子を入出力端子に設定 CMCON = 0x07; // 電圧レベルの初期設定 PORTA = 0x00; PORTB = 0x00; // 入出力設定 TRISA = 0b11111111;//全部入力 TRISB = 0b10000000;//全部出力 //int 型の sw という変数を宣言 int sw0; int sw1; int sw2; int sw3; int sw4; int sw5; int sw6; // 永久ループ while(1){ //RA0***************************** if(RA0 == 0){ WaitTime (500);// 待ち時間関数の呼び出 if(RA0 == 0){//もう一度確認する。 //PORTB=0x00; RB0 = 1;// LED1点灯 sw0=1;//スイッチがおされた } } else { WaitTime (500);// 待ち時間関数の呼び出し(約10m秒:チャタリング対策) if(sw0==1 && RB0==1){ RB0 = 0;// LED1消灯 sw0=0; } } //RA1******************************************* if(RA1 == 0){ //RB1=1; WaitTime (500);// 待ち時間関数の呼び出 if(RA1 == 0){//もう一度確認する。 //PORTB=0x00; RB1 = 1;// LED2点灯 sw1=1;//スイッチがおされた } } else{ WaitTime (500);// 待ち時間関数の呼び出し(約10m秒:チャタリング対策) if(sw1==1 && RB1==1){ RB1 = 0;// LED2消灯 sw1=0; } } //RA2******************************************* if(RA2 == 0){ //RB2=1; WaitTime (500);// 待ち時間関数の呼び出 if(RA2 == 0){//もう一度確認する。 //PORTB=0x00; RB2 = 1;// LED3点灯 sw2=1;//スイッチがおされた } } else{ WaitTime (500);// 待ち時間関数の呼び出し(約10m秒:チャタリング対策) if(sw2==1 && RB2==1){ RB2 = 0;// LED3消灯 sw2=0; } } //RA3******************************************* if(RA3 == 0){ //RB3=1; WaitTime (500);// 待ち時間関数の呼び出 if(RA3 == 0){//もう一度確認する。 //PORTB=0x00; RB3 = 1;// LED1点灯 sw3=1;//スイッチがおされた } } else{ WaitTime (500);// 待ち時間関数の呼び出し(約10m秒:チャタリング対策) if(sw3==1 && RB3==1){ RB3 = 0;// LED1消灯 sw3=0; } } //RA4******************************************* if(RA4 == 0){ //RB4=1; WaitTime (500);// 待ち時間関数の呼び出 if(RA4 == 0){//もう一度確認する。 //PORTB=0x00; RB4 = 1;// LED1点灯 sw4=1;//スイッチがおされた } } else{ WaitTime (500);// 待ち時間関数の呼び出し(約10m秒:チャタリング対策) if(sw4==1 && RB4==1){ RB4 = 0;// LED1消灯 sw4=0; } } //RA5******************************************* if(RA5 == 0){ //RB5=1; WaitTime (500);// 待ち時間関数の呼び出 if(RA5 == 0){//もう一度確認する。 //PORTB=0x00; RB5 = 1;// LED1点灯 sw5=1;//スイッチがおされた } } else{ WaitTime (500);// 待ち時間関数の呼び出し(約10m秒:チャタリング対策) if(sw5==1 && RB5==1){ RB5 = 0;// LED1消灯 sw5=0; } } //RA6******************************************* if(RA6 == 0){ //RB6=1; WaitTime (500);// 待ち時間関数の呼び出 if(RA6 == 0){//もう一度確認する。 //PORTB=0x00; RB6 = 1;// LED1点灯 sw6=1;//スイッチがおされた } } else{ WaitTime (500);// 待ち時間関数の呼び出し(約10m秒:チャタリング対策) if(sw6==1 && RB6==1){ RB6 = 0;// LED1消灯 sw6=0; } } } } // 待ち時間関数 void WaitTime(int cnt){ while(cnt > 0){ cnt--; } }


2015/12/08


この日初めて、実験段階で、満足できる結果となりました。

タクトスイッチを押すと、PICの出力端子のポートBからの信号を受けて、SEC基板の入力端子に見立てた右側に有る 黒色のPICに繋いだ発光LEDが点灯します。

しかし、ここまで来るには、先達者の方から、自分的には、高度なプログラムを進められて、悪戦苦闘の連続


*configの設定を1カ所、      MCLREN→MCLRDIS
アドウインの基板は、リセットスイッチがあります。 テキストにあるコンフィグは、リセットスイッチありの場合ですので、 リセット無しの場合の設定にしなければなりません。


PICを理解するには、初心者の自分には、ここが向いていました。



覚書

それと、RA5の機能、627Aのデータシート 頁98 ↓
1、RA
2、MCLA ← MCLRE:RA5/ MCLR/ VPPピン機能選択ビット
1= RA5/ MCLR/ VPPピン機能はMCLRです
0= RA5/ MCLR/ VPP端子機能は、デジタル入力、MCLRは内部でVDDに接続されています

そして、
__CONFIG(MCLRDIS):外部リセット信号は使用しない、RA5がデジタル入出力で使えます。
              リセット信号を使用する場合は、MCLRENとします。 ↓
https://sites.google.com/site/rakucho119/home/mplab-ide/config-wado-no-settei/16f648a

◆ Master clear reset pin function
    MCLREN   : 有効
    MCLRDIS   : 無効





Out put端子の使い方

写真のように2通りの電流の流れ方がある。
合成写真右と左である。
左側は、Aに流れる。
右:左と比べると、GNDの流れる線と、フォトカプラーも要らない。

但し、最大で流せる通電量は、フォトカプラには、トランジスターがあるので、かなわない。

プログラムを以下のように変える必要がある。

//RA0***************************** if(RA0 == 0){ WaitTime (500);// 待ち時間関数の呼び出 if(RA0 == 0){//もう一度確認する。 //PORTB=0x00; RB0 = 0;// LED1点灯 sw0=1;//スイッチがOFF } }




4、基板完成(便利品)
いざ、基板を作ろうとすると、大変さを感じました。
PICの足数が多いので、配線も密になります。
秋月のテクノペンがあります。

* 乾燥しないと導通しません。

それと、
協和ハーモテックの2UEWエナメル線(2種ポリウレタン銅線)
ウレタン樹脂のワニスで被覆されているので、導線と接触しても、ショートしません。
* 加熱時間を多めにしないと、被覆されている樹脂が落ちません。


↓  ↓



合成写真右:テクノペンで線を引いたのは、上側の左右2か所です。




5、暫定で動作確認
2015/12/23 この日初めて動作を確認できた!!


最初基盤を配線と繋いだ時、また動かない〜。
でも、自作基板は、動作を確認済みでしたので、 配線を見直しました。
原因は、ソケットでした。
初めて動作した時の、嬉しさは、何度か味わってきましたが、 今までにない嬉しさでした!!
チョーhappy(^^♪(^^♪ です(笑

思わず、万歳三唱しました!!!

基板も配線が多く、自作基盤と配線とを分けて、テストした方が過ちを早く見つけられました



動作確認中の写真です。 導通すると、ピン番号のチェックが外れます。 外れたら、導通した証拠です。これで確認できます。


送り量の調整

 自分の手パは、デフォルトの状態では、×1の時に、送り量は4mmでした。
 そこである方にお聞きしたら、ヒントを頂きました。
手パ動作の為に、一度は設定した、OEMコードを265から268にし、手パを回すと送り量が1mmになりました。 で、良く分からないのですが、
その後、OEMコードを元の265に戻しても、送り量は1mmのままでした。
写真は、1mmに変更後の写真です。


6、作業を終えて

2015/12/23 この日は、一度は、動作しなかった手パですが、配線に使われているカプラーの不良を見つけて直したら、あっけなく動作しました。
調子に乗って、Stopも設けまして、ついでに操作ボックスの製作をしつつ様子を見ました。
問題がなかったので、とりあえず、我サイトにアップすることにした。

冒頭に述べたように、テンキーで×100を操作するのは、難しく感じていました。
そういったことから、手パを画策した訳です。
手パ本体は、中華FANACですが、激安でしたし、特に問題はなさそうです。

自作で、悪戦苦闘でしたが、うまく動作して、その分、大感激でした。
これも、先達者様方のお蔭です。自分一人でしたら、途中で投げていたでしょう。
本当に、先達者は凄い。
これからは、老後の楽しみの一つに加えられそうです。 自作万歳ですね(^^♪。


【このページのTOPに戻る】 inserted by FC2 system