2014年10月24日金曜日

1500円でArduinoのISPプログラマ・シールドを作ろう。

今回のお題は、タイトルのとおり、Arduinoのシールドとして使えるISP(In-system programmer)シールド基板を作る、というものです。結構簡単に作れちゃって、新しいATMega88/168/328のチップを買ってきたときに即Arduino bootloaderを焼きこめるので便利ですよ(*^-^*)

作成手順







まずコンセプト図を描きます。Arduinoの上にシールドとして作成する予定です。



ブートローダーを書き込むICソケットはホントはZIFタイプのものがいいのですが、結構高さがあるし、例によって
貧乏なのでソケットは精いっぱいの高級ソケット、丸ピンICソケットで代用です。本家Arduinoが安っぽい板バネ式ソケットを採用している点から比べると、こちらの方が格段に品質は良いと思われます。

#本家ArduinoのICソケットを換装したいけどピン数が多い+多層基板の破壊が怖くてできない
写真左側の連結用の長ーいピンは基板が仕上がった最後に取り付けましょう。



0.1uFの積層セラミックコンデンサを用意します。ブレッドボード上のはTDKの0.1uF品です。中の素子はチップコンデンサという噂が・・・w



左がmuRata、右がTDKです。TDKのは200milピッチですが


根本あたりを折り曲げる(リードフォーミングする)と100milに出来ます。(上の写真では出来てないけど)


ArduinoISPの回路になるように基板に部品を配置していきます。まずICソケットで位置決めしてから抵抗、積セラ、LEDを配置しました。
LEDはICソケット側から順に、Heartbeat(正常稼働), Error(エラー), Writing(焼込み中)となっています。



部品のジャンパ部分にはジャンパー線を使ってもよかったのですが、出来上がりの配線が曲がってラリったような電子工作になりそうだったので0Ω抵抗を使いました。


ほら、すっきりしたでしょ?
Arduinoバニラシールド基板のDigital 11ピンの位置とICソケットの17番ピンを出来るだけ最短距離で配線できるようにICソケットを配置するとジャンパの配線が真っ直ぐになって爽快感倍増です。
上の写真、ちょっと間違ってます。Digital 10ピンは書き込まれるAVRの*RSTに接続して10kΩで5Vにプルアップしてください。


発振子は16MHz水晶、負荷容量コンデンサは22pFを使います。筆者は発振子回路ブレイクアウト・ボードを作っていたので、それを流用しました。
あとは電源を配置して、最後にピンソケットを付けて完成です。






5VとGndの間に10uFの電解コンデンサを噛ませます。
生憎筆者は手持ちがなかったので100uFのこれ


を使いました。


裏面はこんな感じです。少しは綺麗に出来たかな?



回路図。



価格は使用したパーツの合計金額です。これから作る方のためにも、若干盛ってます。すでに材料がある方なら<1kで出来そうですね。
Arduino IDEからスケッチ>スケッチの例>ArduinoISPを選択、転送して、書き込み装置にArduino as ISPを選択、その後このシールドを取り付けターゲットAVRを差し込み、IDE上のオプション>ブートローダーを書き込む で書き込みが始まります。
おつかれちゃ~ん!
おつかれちゃ~ん!


こんな画面が出たら成功です、お疲れ様でした。


利点

Bootloaderを書き込む際、いちいちブレッドボード上に部品配置して配線を施さなくてよい
こんな感じの配線を毎回施さずに済む。
外部水晶発振子の採用で中古ATmega88/168/328にも書き込みできて便利

欠点

電解コンデンサのスペックが合致していないのか、TDK積セラが-85~+20%誤差というとんでもない製品を買って使用してしまったからかどうかは知らないが、たまに焼き込みに失敗する(リセットしたりシールド再装着で正常に動作するようになるから、良しとしよう。)
冒頭に書いたシールド切り離しスライドスイッチを実装するのを忘れた。(IGN側で電解コンデンサ切り離し、WRT側で接続する…予定でした(^^;))












0 件のコメント:

コメントを投稿