復活のCLE

製作編


元の回路の修理はかなり難しそうであるという結論に達したわけですが,後幕の係止を手で押さえてから先幕の係止を手で外し,しばらくしてから後幕の指を離すと「ぱしゃっ」とシャッターが閉じる,という一連の動作を何度かやっていると,やはりなんとしてもCLEを復活させたいなあと思うようになりました。

CLEを中古で買い直すことも考えたのですが,もはや修理が出来ずに困っている個体がある中で,壊れたらはいオシマイ,というカメラに10万円近い値段はどうやっても出せません。(後日36000円でCLEを見つけたので驚きましたが)

ある肌寒い日に風呂につかってぼーっと幸せを満喫していると,

「考えてみればカメラなんて先幕を開けて一定時間カウントし,その後後幕を閉じればいいだけの機械だよなあ・・・それを今時抵抗とコンデンサでやっている回路を苦労して修理するなんてあほらしいよなあ・・・」

などと考えていました。続けて,

「シャッターの駆動回路は既にわかっている,ソレノイドも断線してないし,もちろんメカもちゃんと動いてそう。今復活に必要になっているタイミング生成なんてPICマイコンでやりゃいいんじゃないのか・・・」

と閃いたのです。この閃きは,諦めずにCLEを復活させる一条の光であると共に,苦しい検討生活への逆戻りも意味していて,何となく複雑な思いがありました。

問題はちょっと考えただけでも山積していることがわかります。どうやってその時々に必要とされたシャッター速度をPICマイコンに指示するのか,消費電流が大きくなりすぎて電池がすぐになくなってしまわないか,既存の機構をそのまま流用できるのかどうか,そもそも露光時間の制御がきちんと出来るのか,すべてが未経験の世界ですから,全くの未知数です。

しかし,露出計は動いています。レベルメータICの端子はLEDの点灯によってLowレベルになることがXGの回路図からわかっていますから,これをPICマイコンで読み取ってやれば,なんと絞り優先AEだって可能になるじゃないですか。むむ,これはもうやるしかないです。

・基礎検討

まず,本当にシャッターが制御できるのかバラックで試してみなくては始まりません。

先幕と後幕のソレノイド駆動回路を作ってから,これを使い慣れているPIC16F84AのGPIOにつなぎ,後幕ソレノイドをONにしてから先幕ソレノイドをONにして,0.5秒後に後幕ソレノイドをOFFにするようプログラムを組んでみました。

これで試してみると,見事に0.5秒だけシャッターが開いてくれます。気をよくしていろいろな時間をプログラムしてみると,それぞれある程度の精度でシャッターが開いているようです。高速側はかなり怪しいようですが,とりあえずこの方法で何とかなりそうという感触はつかめました。

余談ですが実はこの時,某巨大掲示板に「CLEが復活できそう」と書き込んだところ,荒らしの方に「諦めろ」と煽られてしまったのです。ちょっとがっかりしたのですが,既に基礎検討でシャッター制御の目処は立っており,普通なら諦めなくてはならないところを,私なら諦めずに済むのだと思うと俄然やる気が出てきました。

・仕様決め

実機への搭載を見越して,仕様決めを始めます。

  1. 露出計のLED表示から信号をもらって絞り優先AEを実現する。変化幅は1EVになってしまうが割り切ってしまう。
  2. シャッター速度ダイアルの回転角から電圧をAD変換して読み取り,マニュアルモードも実装する。1秒から1/1000秒,そしてバルブも可能とする。おそらく世界初のデジタル制御のCLEとなるはず。
  3. 連動範囲を超える明るさの場合には,実機と同様にシャッターが切れないようにする。
  4. セルフタイマーは実機と同様10秒で実装する。
  5. バッテリーチェック機能としては,PICマイコンが動いているかどうかを確かめるだけの機能とする。そもそもPICマイコンが動かなくなれば電池は交換するしかない。
  6. シャッターボタンの半押しで露出計が動作,さらに押し込むとシャッターが切れる。これも実機と同様。ただしタッチスイッチは面倒な上に使いづらいので実装しない。
  7. 実機から流用する回路は測光系のみとし,シャッター駆動回路を含め作り直す。またスイッチやダイアルはすべて流用してオリジナルの操作系を可能な限り踏襲する。
  8. マイコンには入手性,開発コスト,消費電力や動作電圧範囲,使い慣れていることからPICマイコンを使う。GPIOの本数とADコンバータが必要で,かつ小型のパッケージが入手可能でなければならないので,PIC16F877を使うことにする。開発はDIPで,実装はQFPで行えばデバッグも楽なはず。
  9. クロックは入手の都合もありとりあえず6MHzとする。高速だとタイミングの精度も上がるしタイムラグも減るが消費電流が増えてしまうのと数を数えるプログラムが面倒臭い。かといって低速だと精度が下がり最終的な調整でシャッター速度を追い込めない可能性もあるため,6MHzあたりが適当と考えた。
  10. 露光中にフィルムの反射光を測定するダイレクト測光は面倒なのとそれほど必要性を感じないため,実装しない。シャッターボタンを押した瞬間の測光値で露光時間を決めてしまう,一眼レフと同じ方式とする。(だって一眼レフと違って絞り込み測光だからレンズの差による精度のバラツキは相殺されるし,結局シャッター幕とフィルムの反射率の差くらいしか差が出ないなら1EV単位でしか連動しないこのシステムではどう考えても必要ない)
  11. ホットシュー,レリーズケーブルの対応については後で考える。最初から欲張るとろくな事がない。

・回路設計

図が最終的な回路です。レベルメータICからシャッター速度をもらうため,12本のGPIOがレベルメータに繋がります。LEDはLowレベルで点灯するので,LEDが点灯していないときに確実にHighになるように100kΩでプルアップしておきます。

cle.bmp(59022 byte)

マニュアルモードのシャッター速度の可変は,ダイアルが可変抵抗になっていることを利用して,回転角によって出てくる電圧の大小をAD変換して読み取り,シャッター速度を設定します。消費電流を押さえるため,一応ダイアルにかける電圧をGPIOで入り切りするようにしてあったのですが,露出計と同時に電源を入れれば済むことだと後で分かり,この機能を使うことはありませんでした。

AEとマニュアルの切り替えはGPIOで検出します。Lowでマニュアルモードになるようにするのですが,果たしてそんな信号が取り出せるのかどうか・・・まあ後で考えることにしましょう。

クロックは結局6MHzで十分という結論になりました。低速シャッターでの誤差が大きくなるため,けちらず水晶発振子を使うことにしました。組み込みを考えなくてはならないので,小さいものを探すのに苦労しました。

電源スイッチをONするとPICマイコンに電源が入ります。しかし露出計には半押しをしないと電源が入らないようになっているので,電源の切り忘れがあっても余計な電池の消費が防げます。一定時間経過したらスリープモードに入るような仕組みも入れるべきだったかも知れませんが,これはなにかと面倒なので実装しませんでした。

厳密に言うとレベルメータに電源が入っていない状態でプルアップがなされているため,最悪レベルメータICが壊れてしまうこともあり得るのですが,100kΩと大きめのプルアップですのでたぶん大丈夫だろうと,横着しました。

電源スイッチを反対側にスライドさせるとセルフタイマーモードになります。この位置でLowになる接点がありましたので,GPIOにそのまま突っ込みます。Lowでセルフタイマーモードです。

バッテリチェックは元のスイッチを生かすため,Highでチェックモードです。ボタンを押している間0.5秒周期でLEDが点滅します。電源ONの時にも1回だけ点滅が起こるようにしてあります。ただバッテリチェックといいつつ,PICマイコンが動作しているかどうかを確かめるだけのものに過ぎず,厳密な意味でのバッテリチェック機能ではありません。

あと,やっぱりバグも出すだろうし,シャッター速度の微調整もプログラムの変更で行うことにしましたから,インサーキットプログラムが出来るようにしないといけません。そのつもりで書き込みに使うRB6とRB7の2つの端子には何も割り当てないでおきましたが,RB3についてはオープンになっていると通常の動作が不安定になってしまうことがわかり,プルアップしてあります。

・プログラム

いきなりですが,プログラムは恥ずかしいので非公開です。このくらいのプログラムなら,この回路が理解できる人ならさくっと組めてしまうでしょう。それに私の個体に合わせたプログラムでもありますし,そのままでは他の個体で動作することはないでしょう。

やっていることはとても単純で,シャッターボタンが押されたら後幕のソレノイドをONにして先幕のソレノイドをON,一定時間経過後に先幕と後幕のソレノイドをOFFにするだけです。割り込みなども使わず,ループの中でシャッターボタンをポーリングし,押されたら所定の動作をするだけです。タイミングの生成もNOP命令をぐるぐる回して1msと0.67μsを作り,これを何回繰り返すかでトータルの時間を作るという原始的なものです。幸いないことに,この程度のカメラの処理というのはリアルタイム処理は必要なく,順番に処理をしていけば事足ります。

また,連写されても困るので(実際には巻き上げされてないので連写は出来ませんが)ボタンが一度離されないとポーリングされません。

マニュアルモードのシャッター速度ダイアルの位置ですが,ダイアルから出てくる電圧をAD変換し,それによってループカウンタの値を変えてタイミングを作っています。AD変換についても,16F877は10bit精度のADコンバータを持っていますが,たかだか12段階かそこらの判別が出来ればいいだけですので8bit精度でしか使っていません。PICマイコンの場合,こうすると値の読み出しが楽なのです。

セルフタイマーはシャッターボタンが押されてから10秒のタイマをまわし,1秒に一度LEDを点滅させて10秒経ったら通常の処理をするという処理だけです。一応実機に似せて,最後の1秒は早く点滅するようにしてあります。

もう1つ,最初は秋月電子で手に入れることが出来るPIC16F877A(このAが重要)のQFPを使うつもりでいました。一方で基礎検討はPIC16F877のDIPで進めていたため,実機バージョンではプログラムを変更する必要がありました。しかしついうっかり16F877AのQFPを買い忘れてしまい,万が一のために買ってあった16F877のQFPをDIPとして扱える基板から外して使わざるを得ませんでした。幸いだったのはAバージョン用にプログラムの書き換えをする必要が全くなく,そこでのトラブルを全く心配する必要がなかったことです。(後日Aバージョン用にプログラムを移植しましたが,どういうわけだかビルドは通っても動作しませんでした・・・)

・実機への組み込み

実機への組み込みが一番大変でした。自分が作った回路が人工臓器だとして,これを実機に組み込むというのはその人工臓器をきちんと機能するよう人体につないでやり,かつ拒絶反応が出ないようにしてやることと同じです。

人の体のすべてが解明されていないのと同じように,私もCLEのすべてを解明したわけではありません。影響がないと思われた改造が副作用を出して動かなくなったり,おかしな電圧がかかって長い時間をかけて壊れてしまう事だってあるでしょう。そのあたりはもう経験則でやっていくしかなく,まさに外科医の気分です。

組み込み時の問題点は,以下のような感じです。

     
  1. シャッター駆動回路の組み込み。2SC2411という面実装タイプの電力用トランジスタを前板の裏側にある小さな基板上に,先幕と後幕の駆動回路を作り込む。
  2. LEDレベルメータのLEDが繋がる端子をプルアップし,PICマイコンに入力。LEDが点灯したところはLowレベルになる。
  3. led.jpg(33836 byte)レベルメータICから信号を取り出す
  4. シャッター速度ダイアルに繋がった可変抵抗を配線する。可変抵抗の両端を電源とGNDにつないで,中間端子をPICマイコンのアナログ入力につなぐ。可変抵抗は元々のタイミング生成回路と密接な関係があるので,下手にいじると全体が破綻するので注意する。
  5. マニュアルモードとAEモードの切り替えで変化する信号を探す。露出計はマニュアルモードでは動かないように元々なっていたから,この2つのモードを切り替えている部分はどこかにある。幸いAEモードではHigh,マニュアルモードではLowになるような場所を見つけたのでこれをそのままPICマイコンに入力。
  6. シャッターボタンの改造。半押しで露出計に電源供給,全押しでLowになるように接点を改造しなければならないが,半押しの接点はGNDに落ちてしまうタイプ。全押しは2つの端子が閉じるだけなので問題はないが,半押しがGNDになるのはまずい。
    そこで接点を改造し,半押しで接点が閉じるようにした。しかしこのことでシャッターボタンのシャフトが電源に繋がってしまい,GNDに落ちているシャフトの支えの部分と触るとショートしてしまう。シャフトを絶縁して一応解決。
  7. 露出計の動作に関係のない部品を外してマイコンを押し込む場所を確保する。外してしまうと露出計が動かなくなったりするので注意して行うが,幸い大きなコンデンサを外してやると場所が出来たので深追いはしないことにする。
  8. セルフタイマーモードでLowになる部分を探す。セルフタイマースイッチを入れるとLowになるように出来たので,問題なし。
  9. 前板のLEDを配線。このLEDはアノード側が既に電源に繋がっているため電流制限抵抗はカソード側に入れなければならないし,PICマイコンとの接続もこちら側で行う必要がある。このためLowレベルで点灯という形にしなければいけない。
  10. バッテリーチェックのための改造。オリジナルではボタンを押すと電池ケースのプラス側から伸びた接点が基板に接触するようになっているが,接触した先がどこかの回路に繋がっていると壊れるかもしれないのでパターンをカット。どこにも繋がっていない状態にした上でここからPICマイコンに入力。Highでバッテリーチェックモードになる。

・割り切った点

どうしても実機と接続がわからず,割り切った点もあります。  

  1. バルブは未実装。プログラムは実装済みだが,シャッター速度ダイアルをバルブにした場合にHighなりLowなりになる部分が見つけられなかった。またバルブの場合にはダイアルの可変抵抗がオープンになってしまう事がわかった。アナログ制御ならこの状態は好都合だろうが,デジタル制御では非常に面倒臭い。
  2. ホットシューのX接点は未実装。X接点というのは,先幕が完全に開ききったところでONになるようになっているのだが,PICマイコンに実装するとまたシャッター速度が変わってしまう可能性があるし,かといって実機から取り出すことも出来ず,おそらく使わないということで割り切った。
  3. レリーズケーブルの対応も未実装。レリーズケーブルが繋がる接点はシャッターボタンの接点と全く構造が違い,半押しもない。これでは全く使い物にならないだろうし,バルブもないのでおそらく使わないだろうということで割り切った。ただ,マニュアルモードでの低速シャッターでは有利かもしれないので,そのうち実装することにする。

と,ここまでで一応実機内部に組み込むことも出来るようになりました。ただし,スペースの関係もあり空中配線ですので,とても戦場には持って行けません。このあたりが素人の工作レベルです。

まあそんなことをいっていても始まりませんので,元の通り組み立て直し,シャッター速度の測定を始めました。

[測定・調整編に進む]
[戻る]