JDMプログラマでの対策(その1)


 JDMプログラマでの対策

 パソコンのシリアルポートの電流不足は、JDMプログラマにとって「弁慶のなきどころ」「アキレス腱」です。なんとかならないものでしょうか? 「だからメーカー製のPICライタを最初から買っておけばよかったのに…」。そういわれると、FENG3は内心で「むかっ」とします。自作しようというのに、「だったら買えば…」は、ないでしょう。

 というわけで、あれこれ試行錯誤のくりかえしです。

 小技編

 シリアルポートの電流不足でも、つぎのようにすると、PICに書きこめるようになるばあいがあります。

 上図は標準のJDMプログラマの回路図の一部です。JDMプログラマのツェナダイオードD6を8.2Vのものから8.7V、9V、10V、11Vなど、数ボルト程度ツェナ電圧の高いものに取り替えると、プログラム書きこみができるようになるばあいがあります。この方法は、通常の8.2Vのツェナダイオードで正常にPICに書きこめているばあいは、ためしてはいけません。PICを破損するおそれがあります。あくまでも、電流不足のばあいのみです。

 ツェナ電圧の高いツェナダイオードに取り替えると、プログラム書きこみに成功するばあいがあるというのは、どういうわけでしょうか? こたえは、電流不足が関係しています。じつは、ツェナダイオードのツェナ電圧は、電流が小さいと、定格よりかなり下回ります。また、ツェナ電圧の小さいツェナダイオードほど、この傾向は大きくなります(くわしくは、ツェナダイオードのメーカー各社のデータシートを参照してください)。

 つまり、シリアルポートの電流不足が、D6のツェナ電圧を引き下げ、PICのプログラミングに必要な電圧をさらに制約していたわけです。定格電圧の少し高い目のツェナダイオードに取り替えると、プログラミングに必要な電圧の範囲内に達することがあるというしだいです。このばあいでも、TxDの出力する電圧-0.6Vを超えることはありませんから、ねんのため。

 つぎの方法として、トランジスタQ1をとりはずして、エミッタ、ベース、コレクタがつながっていた点を1つにする、という、ちょっと乱暴な方法があります。トランジスタQ1は、バッファの役割をしています。このトランジスタによっておよそ0.6Vの電圧降下が生じますので、これをなくせば、0.6Vの電圧がかせげるというわけです。

 禁じ手編

 電流不足にたいする対策で、JDMプログラマにとって「禁じ手」があります。これは、JDMプログラマに外部電源を供給する、というものです。外部電源不要のライタに外部電源をつかってはいけないから「禁じ手」というわけではありません。JDMプログラマに外部電源を供給することの危険性については、JDMプログラマの原作者のホームページでふれられています。かいつまんで説明しますと、JDMプログラマの5Vの基準電圧は、じつはシリアルポートのGNDであり、パソコン本体のGNDなのです。このGNDラインから、ライタのツェナダイオードで5Vの基準電圧がつくられています。ここに外部電源をつなぐと、ツェナダイオードが破損するおそれがありますし、なによりもライタの回路がなんらかの理由でショートしたばあい、ダメージはパソコン本体におよぶ可能性があります。こうした理由から、JDMプログラマでは外部電源を供給することは推奨されておりません。

 ですが、なんでも試してみないと気がすまないたちのFENG3としては、シリアルポートの電流不足を根本的に解消するには、小技ばかりでは無理ですので、この「禁じ手」をためしてみることにしました。普通なら、外部電源を用意して、3端子レギュレータをつかって5Vと13Vのプログラミング電源をつくるところですが、これは上記の理由と、ライタの動作中にシリアルポートの出力が極性反転を頻繁にくりかえすために、なかなかうまくいきません。

 それで、FENG3が試した方法とは、PICのプログラミングでいちばん電流を消費するVppを外部電源で確保する、という方法です。この方法なら、外部電源のGNDをライタの基準電圧につないで、そこからVppを嵩上げすればいいだけなので、面倒な電源回路をくむ必要はありません。具体的には、下図のようにします。

 どうです、かんたんでしょう。これで、MCLR端子に印可する13Vの高電圧は十分な電流で確保されます。FENG3は006P(9V)のマンガン乾電池を使用しました。標準のJDMプログラマではこの図のようにすればOKですが、FENG3のホームページで紹介しているPICライタ5号機以後のライタで、LEDと6.2Vのツェナダイオードを組み合わせてVppの電圧をつくっている回路では、006Pをつないだ時点でLEDに電流がながれて点灯しっぱなしになりますので、LEDと6.2Vのツェナダイオードをとりはずし、かわりに8.2Vのツェナダイオードをとりつけます。

 じっさいにこの追加回路で、PICへのプログラム書きこみテストをおこなってみました。ところがFENG3は電流不足のシリアルポートをもった最新のノートブックパソコンはもっていませんので、書きこみテストには、ラトックのUSB<>シリアル変換アダプタをつかいました。このアダプタは、30ミリアンペア程度の電流しかながせませんので、ライタにつないでもプログラムの書きこみで確実に失敗します。

 この方法でPIC16F84Aにプログラム書きこみのテストをしましたが、あっさりと書きこみOKでした。PIC12F675では、プログラム書きこみのアルゴリズムが複雑で時間がかかりますので、WindowsAPI経由でないとつかえないUSB<>シリアル変換アダプタだと、何倍も時間がかかります。そのせいでしょうか、12F675では16F84Aとおなじ書きこみソフト「IC-Prog」の設定では、ベリファイでエラーがでました。そこで、書きこみソフトの設定で遅延を最大にしてみると、エラーもなくプログラム書きこみに成功しました。ということは、高価なUSB接続のライタでなくても、適当なUSB<>シリアル変換アダプタがあれば、USBポートしかないノートパソコンでもJDMプログラマでPICにプログラム書きこみができるようになるということですね。

 この方法は、電流不足にたいしては、かなり効果がありそうですが、電源の回路をあやまってショートさせないように気をつけないといけません。製作にあたっては、配線を確実におこなってください。みなさんのPC環境で各種PICデバイスで試されたら、結果をおしらせくださるとうれしいです。なにぶん、単純な方法なので、だれも試さなかったのでしょう、インターネットで検索しても、類似の方法をFENG3はみつけることはできませんでした。でも、実地に試してみてうまくいったので、恥を承知で公開することにしました。

 注意事項:PICライタの製作にあたっては、自己責任でおこなってください。このページに記載されている情報をもとに製作された結果、ライタが動作しない、PICが破損した、パソコンが壊れた、家庭不和になった等の損害を被られても、FENG3はいっさい関知しません。

2003年12月2日