D7200自動撮像装置のハード&ファームウェア
5.改正版回路図と部品配置図、ファームウェア
 とある筋でお知り合いになったNさん(仮称)から、幾つか先に提示した回路に関していくつもの示唆を頂きました。私自身は設計法をきちんと勉強していた訳ではないので、「ああ、こういう訳だったのか!」という事ばかりでした。今回の変更点は、
  1. 直流成分をカットするコンデンサを入力に入れる事
  2. 入力インピーダンスを落とすために10kΩ位の抵抗を入力のところにアンプと並列に入れると回路が安定して良い
  3. オペアンプからトランジスタに入力するとき、低電圧なら良いが、本来なら抵抗がある方がトランジスタの保護になるので良い
 と言ったところです。あと、4.のところで部品配置図は正しいけど回路図が間違ってますよ、という事や他に動作していることを示すLEDを入れては?トランジスタの代わりにFETを使うのもいいでしょう、とかもありました。
 と言う訳で新たに作った回路と部品配置図をUpしました。実は回路図は良いのだけど、いざ組み立て、という時に部品配置図に間違いを発見し、焦りつつ、結局作ってしまいました。
 作ってみたら、上手く動いたので、万々歳、が、基盤をバッテリトレイに収めて動作チェック中上手く行かず、リチウムイオン電池が過熱していることを発見、外した時はすでに遅く、炸裂音と共に電池の正極が弁になって吹っ飛びました。テスターで計ると電池ホルダの正極と負極は導通していました。回路を探ると、出力になる端子部分を裏面からリード線で取り出してバッテリトレイの端子にはんだ付けしたのしたときに、7番と8番が微妙に短絡してしまったようでした。盛り上がっていた半田を少し減らし、再度配線しました。その後バッテリトレイに取り付けて、電池ホルダの端子の抵抗を見て大丈夫だろう・・・という事としました。音信号を起点にLEDの点滅による動作チェックも行い、後はバッテリグリップの改造です。
↑回路図 ↓部品配置図表面と裏面図
   
左がNLC、右がROWAのトレイのバッテリ端子、ROWAは使えない 全体を組みこんだモノ
トグルスイッチを入れるためにトレイを大きく切り取りました スイッチ下、右が電源、左が信号で光るLED
E:\Mshi_Lab\MPLABXProjects\D7100Sequencer_V1.X\Sequence.c
  1     /*
  2      * File:   D7200_Ctrl.c
  3      * Author: M_shi
  4      *
  5      */
  6
  7     #include <stdio.h>
  8     #include <stdlib.h>
  9     #include <xc.h>
 10     #define _XTAL_FREQ 1000000;
 11
 12     /*****Configuration********/
 13     #pragma config FOSC=INTOSCIO, WDTE=OFF, PWRTE=ON, BOREN=ON, MCLRE=OFF, CP=OFF, IESO=OFF//, FCMEN=OFF; 
 14
 15     int i,j,k; 
 16
 17     int main(void){ 
 18
 19         ANSEL=0x00;     //all digital
 20         CMCON0=0x07;    //Comperlator off
 21         WPU=0x14;       //set pull up bit on
 22         nGPPU=0;        //pull up activate
 23         TRISIO0=0;  //GP0 output
 24         TRISIO1=0;  //GP1 output
 25         TRISIO2=0;  //GP2 output
 26         TRISIO3=1;  //GP3 input
 27         TRISIO4=0;  //GP4 output
 28         TRISIO5=0;  //GP5 output 29
 30             GP0 = 1;    //Speed down
 31             GP1 = 1;    //Shutter
 32             GP2 = 1;    //Speed up
 33             GP4 = 1;    //Focus
 34             GP3 = 1;    //Start Swich
 35             GP5 = 1; 
 36
 37     while(1){
 38         if(GP3 == 0){
 39             goto Start;
 40         }
 41         else
 42         {
 43             GP0 = 1;
 44             GP1 = 1;
 45             GP2 = 1;
 46             GP4 = 1;
 47             GP5 = 1;
 48             GP3 = 1;
 49         }
 50     }
 51         Start:
 52         //Indicator LED On
 53         GP5 = 0;
 54         //Diamond ring before C2 set SS=1/2000, CL=2 shot per sec.  
 55                 _delay(25000);      //wait 25ms
 56             GP4 = 0;                //Focus on
 57                 _delay(25000);       //wait 25ms
 58             GP1 = 0;                //Shutter release
 59                 _delay(14000000);   //wait 14sec
 60             GP1 = 1;                //Shutter off
 61                 _delay(25000);      //wait 25ms
 62             GP4 = 1;                 //Focus off
 63                 _delay(25000);       //wait 25ms 
 64
 65         GP2 = 0;            //Preconfig
 66         _delay(25000);      //wait 25ms
 67         for(j=1;j<=6;j++){  //Speed up from 1/2000 to 1/8000+alpha
 68                 GP0 = 0;
 69                 _delay(25000);
 70                 GP0 = 1;
 71                 _delay(25000);
 72             }
 73         GP2 = 1;
 74             _delay(25000); 
 75
 76         while(1){
 77             for(i=1; i<=5; i++){        //1/8000-1/8sec
 78                 Shutter();              // Shutter Release
 79                     _delay(250000);     // wait 250ms
 80                 GP0 = 0;                //Preconfig.
 81                     _delay(25000);      //wait 250ms
 82                 for(j=1; j<=4; j++){    //Speed Down 2EV
 83                     GP2 = 0;
 84                     _delay(25000);
 85                     GP2 = 1;
 86                     _delay(25000);
 87                 }
 88                 GP0 = 1;
 89                     _delay(25000);      //Speed down quit
 90 } 
 91
 92             for(i=1; i<=2; i++){
 93                 Shutter();
 94                     _delay(400000);     //waite 400ms
 95 } 
 96
 97             for(i=1; i<=5; i++){        //SS up from 1/8 to 1/8000sec
 98                 GP2 = 0;                //Preconfig
 99                     _delay(25000);
100                 for(j=1; j<=4; j++){    //SS speed up
101                     GP0 = 0;
102                     _delay(25000);
103                     GP0 = 1;
104                     _delay(25000);
105                 }
106                 GP2 = 1;
107                     _delay(25000);
108                 Shutter();
109                     _delay(250000);     //waite 250ms
110             }
111                 //Simply shutter speed up
112                 GP2 = 0;                //Preconfig
113                     _delay(15000);
114                 for(j=1; j<=2; j++){    //SS speed up 1EV
115                     GP0 = 0;
116                     _delay(15000);
117                     GP0 = 1;
118                     _delay(15000);
119                 }
120                 GP2 = 1;
121                     _delay(15000);
122                 //Counter
123                 k++ ;
124                 if (k >= 19)
125                 {
126                     goto Multi ;    //After shoot 24 set, goto Caputure C3 Diamond ring
127                 }
128         }
129     Multi:
130     GP0 = 0;                    //Preconfig.
131         _delay(25000);          //wait 25ms
132     for(j=1; j<=4; j++){        //Speed down to 1/2000
133         GP2 = 0;
134         _delay(25000);
135         GP2 = 1;
136         _delay(25000);
137     }
138     GP0 = 1;                    //Capture C3 Diamond ring
139         _delay(25000);          //wait 25ms
140         GP4 = 0;                //Focus on
141             _delay(25000);      //wait 25ms
142         GP1 = 0;                //Shutter release
143             _delay(16000000);   //wait 16sec
144         GP1 = 1;                //Shutter off
145             _delay(25000);      //wait 25ms
146         GP4 = 1;                //Focus off
147             _delay(25000);      //wait 25ms
148         GP5 = 1;                //Indicator LED off
149 } 
150
151 int Shutter(void){
152         GP4 = 0;            //Focus on
153             _delay(25000);     //wait 25ms
154         GP1 = 0;            //Shutter release
155             _delay(25000);     //wait 25ms
156         GP1 = 1;            //Shutter off
157             _delay(25000);     //wait 25ms
158         GP4 = 1;            //Focus off
159             _delay(25000);     //wait 25ms
160     return 0;
161 } 
 
inserted by FC2 system