Pickit3もどきの制作

Pickit3とはマイクロチップ社のマイコン、PICシリーズ専用の純正ライタです。
何と回路図がマニュアルに付属しており、パーツとPICのライタさえあればクローンを作る事が出来ます。
どちらもそろえる事が出来たので、オリジナルのPickit3を参考にしてクローンを作ってみました。

回路構成
Zoom Zoom Zoom
PICに書きこむ装置をPICで構成しています。
オリジナルの回路をパクっただけです。
その辺にあったパーツを代わりに使ったり、どうでもよさそうな部分は下記の通り排除しました。
規模を小さくでき、コストも下がるので一石二鳥です。

EEPROM周辺のプルアップ/プルダウン抵抗は排除しました。
プリント基板制作時に邪魔になったからです。
また、PIC24のSPIモジュール使用例とEEPROMの回路例にそのような物が無かったのも理由です。
もしかしたらEEPROM自体無くても動くかもしれません。
ですが、オリジナルの動作を調べてみるとファームウエアをダウンロードする際やUSB接続時に何かしらアクセスしているので、正直良く分かりません(爆

LEDとスイッチは配線上邪魔なので排除しました。
オリジナルは何回も使った事があるのですが、スイッチは何のためにあるのか知らないです(説明書を読んでないだけ
LEDを見ずともパソコン上で様子をうかがう事が出来るので飾りと思っていいでしょう。

電源回路や出力に付いているポリスイッチとツェナーダイオードも排除しました。
過電流と過電圧保護が目的ですが、そのような事は経験上無いので不要と考えました。

VBUS-VBUS_DEVICE間のダイオード(D2)の役割は謎です。
PIC24の34番ピンはUSBホストに接続されたか(バスパワーが接続されたか)を検知するピンです。
汎用ポートなど他の役割は無いので、VBUS_DEVICE→VBUSへ電流が流れる事はあり得ません。
内部回路を見るとプルアップがかかる仕組みになっていますが、内部回路(コンデンサのチャージ?)用なのであまり関係ないと思います。
なぜなら出力と化す間は一瞬であると予想され、5 Vではなく3.3 Vが出力されるからです。
PIC24のUSB使用例にもそのような記述はありませんし、同系統のPIC32でもそのように使ったことはありません。
使用例通り、100 kΩ程度の抵抗に変えるか、直結しても問題無いでしょう。
ですが、念のため変更はしていません。

トランジスタは全てスイッチング領域で使っているので特に考える必要はありません。
考えるとしたら最大コレクタ電流程度です。オリジナルと似たような物を使えばいいです。

MOSFETも同様にQ2、Q8をハイサイドスイッチとして使っているだけです。
オリジナル回路図にあるNch MOSFETは隅に書かれている通り、ターゲットの電源を急速放電するだけの役割をしています。
正直ありがたみが感じられなく、MOSFETとそのドライバを増やす羽目になるので丸ごと排除しました。

+5Vを制御するハイサイドスイッチも簡略化しました。
ゲート-GND間に付いていたコンデンサと、ゲート-エミッタ間に付いていた抵抗は無くても動きます。
ハイサイドスイッチ側トランジスタのベース電圧調整、ターンオン時にローサイド側電圧がゆっくり上がる、程度の役割です。
電流容量の大きなトランジスタが無かったので、代わりにMOSFETを使っています。
MOSFETに換装してしまったので元あった抵抗とコンデンサはどちらの役にも立ちません。

ここまでは簡単なのですが、オペアンプ(U2)とMOSFET(Q7)が組み合わさっている部分が問題です。
この部分はターゲットの電源の代わりを果たす部分です。
オペアンプだけでは出力電流容量が足らないのでQ7をオペアンプの最終段として動作させています。
つまりU2とQ7で一つのオペアンプを構成しているのです。
これはオペアンプの出力容量が不足する際によく見られる回路です。
Pickit3の回路図には型番が書かれていないので、Pickit2にある同じ回路から持ってきました。
本来ならMOSFETの特性を考えないと、入出力の関係が非線形になることが多いです。
オペアンプの入力についている抵抗とコンデンサは、PWM復調用のパッシブLPFですので定数を変えてはいけません。
MOSFETのゲートにある抵抗(R4)は突入電流防止用ですので、排除するとMOSFETかオペアンプが壊れるかもしれません。

トランジスタ(Q3)とコイル(L1)はVpp用のポンプ回路です。
マイコンからパルスが入力され、Q3がオンの時はL1へ電流が流れL1内に磁力がたまっていきます。
Q3がオフになった瞬間、L1にたまっていた磁力が電圧として放出され、C16へたまっていきます。
Q3がオンになると、L1へ磁力がたまると同時にC16から電荷が放出されます。ダイオード(D1)がある事によりC16からQ3には電流が流れません。
Q3がオフの時はL1から電圧が供給され、C16へ電荷がさらにたまっていきます。
L1の出力はパルス状なので、C16で出力を平滑し直流に変換します。
まとめると、L1に磁力が蓄積し、C16で直流に変換することにより元より高い電圧が発生します。

ICについて
PIC24FJ256GB106はUSBトランシーバを搭載した16ビットマイコンです。
これでないと動作しないどころか、ファームウエアを書きこむ事もできません。

AD8531は以前も使った単電源、レールツーレール出力のCMOSオペアンプです。
動作を考えての通り、MOSFETを駆動できる単電源のオペアンプなら何でもいいでしょう。

25LC256とAT25DF041は共にEEPROMです。
オリジナル回路図には型番は書かれていないので、Pickit3の基板に実装されている物から型番を得ました。
25LC256はPICと同じマイクロチップ社製ですが、AT25DF041は何故かマイクロチップ社のライバルであるアトメル社の製品です・・・。

MCP1525は2.5 Vの参照電圧源です。
マイコン内ADCの基準電圧として使われています。
わざわざ2.5 Vを使っているのは分解能を上げるためだと思われます。
もしくは、ADCへ入力される最大電圧が2.5 V(ターゲット5 V、抵抗分圧で1/2)だからだと思われます。

MCP1727-3302は3.3 V出力の電源レギュレータです。
他の物でもよさそうですが、一応オリジナルと同じ物を使いました。

SN74LVC1T45DBVRは1回路入りのバストランシーバです。
ターゲット側の電圧が必ずしもライタ側と同じ3.3 Vでないので、このICを使って電圧レベルを変換しています。

部品について
できるだけ小さくしたかったのでほぼ全てチップ素子を使いました。
しかし、回路が複雑で片面基板では表現できず、両面基板としました。
両面基板のビアはリード線を使って両面を繋ぎ表現しています。

MOSFETはオン抵抗が低いものを使いましょう。
さもないと電圧降下が発生して正しく動作しないかもしれません。

肝心の出力コネクタはちょうどいい物が見つからず、ごく普通の横向きピンヘッダを使いました。

種類 型番/規格 個数 備考
IC PIC24FJ256GB106 1 マイコン
AD8531 1 オペアンプ
25LC256 1 EEPROM
AT25DF041A 1 EEPROM
MCP1525 1 参照電圧源
MCP1727-3302 1 電源レギュレータ
SN74LVC1T45DBVR 3 バストランシーバ
トランジスタ 2SA1162 1  
2SC3325 4  
MOSFET IRLML6402 3  
ショットキーバリアダイオード 1GW43 2  
1N4148 1 1GW43でもOK
セラミック発振子 12 MHz 1  
抵抗 100 Ω 2
330 Ω 4  
1 kΩ 1
2 kΩ 2  
2.2 kΩ 3  
2.7 kΩ 1  
3.9 kΩ 1  
4.7 kΩ 3  
10 kΩ 14  
100 kΩ 1  
積層セラミックコンデンサ 0.01 μF 1
0.1 μF 19  
1 μF 2
10 μF 6
チップタンタルコンデンサ 47 μF 1 電解コンデンサでもOK
チップインダクタ 680 μH 1
USB端子 Bタイプ 1 ミニBタイプなど
ピンヘッダ 6ピン分 2 出力側はコネクタを推奨

EEPROMのフットプリントが違う?
プリント基板を作り上げ、いざハンダ付けしようとEEPROM(AT25LC041)を取り出した時の事です。
オペアンプと同じSOIC8パッケージだと思っていたのが、一回りほど大きく見えました。
プリント基板に載せたのですが、やはり幅が違っているため乗りませんでした。
よくよくデータシートを見ると馴染みのあるSOIC8(JEDEC SOIC)の他に、幅広のEIAJ SOICがありました。
確認をせずに注文したのが原因でした。
仕方が無いので足を無理やり曲げ、プリント基板のフットプリントに合わせてしまいました。

ファームウエアについて
マイコンの中には何もプログラムが無いので、USBを繋いでも電源が入るだけで何も起きません。
Microchip社からPickit3の初期ファームウエアが出ています。これを利用しましょう。
もう一つライタを用意し、MPLAB IDEのImportからDLしたhexファイルを選び、ファームウエアを書き込めばOKです。
これでUSBを繋げばパソコンはPickit3として認識します。
MPLAB IDEでPickit3を選択すれば、自動的にファームウエアがアップデートされる・・・はずでした。

Connecting...でフリーズ?
Pickit3として認識はされていたのですが、MPLAB IDEの表示が「Connecting...」から進まずにフリーズしてしまいました。
代わりにMPLAB Xで使ってみると今度は「シリアル番号不明」の文字が・・・。
明らかにソフト/ファーム系のトラブルなのですが、ファームウエアは正しく書きこめています。
藁をも掴む思いでバージョンの古いMPLAB IDEに繋ぐと、「Downloading RS」→「Comleted」のループに陥りました。
何かしらアップデートが完了したと見て、元の新しいMPLAB IDEに接続。
同じ操作をすると、先ほどのループが発生、MPLAB Xでも同じでした。
またMPLAB IDEに戻り、同じ操作をしようとしたのですが、「Programmer」と間違えて「Debugger」を選択してしまいました。
すると何事も無くアップデートとセルフチェックが終わり接続が断たれました。
USBを再接続すると見事動作。プログラマとしても動作しました。

なぜ接続出来なかったのか、なぜ直ったのかは全く見当がつきません(爆
シリアル番号は不明のままです。おそらく製造時に書きこまれているのでしょう。
再接続の失敗は単純にソフトウエアリセットがかからなかったただけと見ています。

過電流を検知?
Pickit3には自身から電源を供給する機能があります。
早速使って見ると、何も繋いでいないのに「過電流を検知しました」の文字が。
回路を見直しても電流検知らしき要素はありません。
MPLAB IDEからVdd電圧を見てみると、設定電圧から0.8 Vほど降下しているのを発見しました。
お分かりでしょう、一般的なPN接合間の電位差に近いです。
オリジナルで使われているダイオードを調べてみると、順方向降下電圧(Vf)が最大0.4Vと低いZHCS1000が使われていました。
最初使っていたのは手持ちの1N4148です。これのVfは最大1Vです。
Pickit3は順方向電流(If)が上がるつれてVfも上がる事を利用して過電流を検知しているようです。
そして、設定電圧と出力電圧の差(Vf)が一定値を超えたとき、過電流とするようです。
ならば解決は簡単です。If-Vf特性がよく似たダイオードを使えばいいのです。
今回使った1GW13に限らず、特性が似ていれば他の物でも十分です。

筐体について
タカチのプラスチックケースを利用しました。
オリジナルと比べるとかなり大きいですが、ビアが大きいので仕方のない事です。
強引に加工したせいで傷だらけになってしまいました・・・。
ZoomZoom
ZoomZoom
インタフェースはすべて排除したので、入出力コネクタしかありません。

裏技(?)
オプティマイズからPIC24FJ256GB106を使ったUSB開発ボードが出ています。
必要なポートは全て引き出されており、マイコンをはんだ付けしたくない人は使えるかもしれません。
ただし、搭載されている発振子が16 MHzなので12 MHzに、負荷コンデンサを適切な物に換装する必要があります。
また、電源レギュレータが別の物なので周辺回路も変形する必要があります。

戻る
inserted by FC2 system