wsNak製基板 

#168 ATmega168 USB DIPモジュール TeraTerm入力を表示 2007.09.10
#173 COMポートSPI Bridge ライタ プログラムライタ と ライティングソフト にあります
#176 I/O Expander Nakさんのtiny2313マスタでLEDバイナリカウントアップ 2007.09.15



#168 ATmega168 USB DIPモジュール       
TOPページへもどる
 senshuさんの提案でwsNakさんがUSBに直接つなげるmega168の基板を作られました。以下は制作と使用(予定)の記録です。 最新の項目へ

2007.07.03
とりあえず基板の表裏です。基板は50×25mmで可愛い大きさです。

スルーホールがきれいな両面基板でシルク印刷がされていますので、慣れない人にも親切な基板だと感じました。
ホームページに丁寧なPDFマニュアルがありますので、それにしたがって組み立てることに します。基板が小さく、部品がやや込み合いますから順序を間違えると付けにくくなるようで、そのところもマニュアルのとおりにしました。
日頃は万能基板にUEW配線ですから回路図を追って、あるいはICのピン配置を考えながら進めるのですが、プリント基板では配線が済んでいるわけで、ほとんどシルク印刷 にしたがって部品を付けていくことになります。ただ、間違うと困りますので、これから付けるRやCなどはどの働きをするものかを確認しながら付けました。

完成した基板です。クリックで大きくなります。
 

まずはじめにFT232RLを付けました。年齢のため老眼鏡と2種類のルーペは必需品です。常用している\100卓上バイスにクリップをくわえて、そのクリップに基板を 挟んで安定させます。低倍率の大きなルーペの下に置きます。
FT232RLを使うのは2回目です。0.65mmピッチですから0.5に比べると楽ですが、0.8のmega168よりは気を遣います。念のためフラックスを脚に塗っておきました。半田 鏝はgoodのCVR-40(30w)ですが、鏝先は付属の0.2Rは細すぎるので0.5Rのものに換えています。(0.65ピッチに0.5Rを持って行くと太く感じます)

1番ピンマークに注意しながら位置決めをして左手指でICを押さえ、半田がついていない鏝で端の脚を押さえると、基板についているわずかの半田で軽く付きました。 高倍率のルーペで確認して本付けに入ります。ひとそれぞれに方法がありますが、@鏝先をスポンジで拭いて、A半田を少し付けて(細いものを持っていません)、B半田 ペースト(約40年前に買ったもの)に一瞬付けて酸化物と余分な半田をを落とし、C鏝を持った手首を机に当てて鏝先の半田をとばします。これで少量の半田が先端に付いて いますので、ねらいを定めて(右手首を机に付けて固定して)ICの脚とパターンの接点をねらいます。ルーペ越しに一瞬光ると成功です。高倍率ルーペで確認します。
多量に流して吸い取り線で処理する方法もあるようですが感覚的に好みではありません。私はFT232RLを先に付けましたが、0.8mmのmega168を先に付ける方がいいかもしれ ません。もしブリッジしたら、フラックスを付けて、基板を上に、鏝を下に(難しい?)半田を溶かすと重力で鏝に下りてきます。
ICは一度付けると取り外しができませんので向きに十分注意する(1番ピン)とともにずれがないように注意しています。

正確なクロックが好きなので、水晶振動子を付けました。注意にあるように厚紙を挟んでショートを避けています。負荷コンデンサ20pFは裏面にベタ付けしますが、 パターンに予備半田をしておくと付けやすくなります。発光ダイオードはリードの長さを信用せず、5V電源に数100Ωを付けて実際に点灯し、AKの区別をしています。
ピンポストは丸ピンソケットをジグにすると直角を出しやすいとありますが、ソケットに熱を加えるな、と注意があります。手持ちの万能基板を3枚重ねたものに ピンポストを挿入すると結構いい感じでしたので使いました。熱の心配がありません。多ピンのデバイスを付けるときは一部の仮止めをして歪んでいないか注意する ことにしています。

部品の取り付けが終わったら、火入れ式を行うのですが、この基板ではジャンパピンの設定が必要です。ピン配置が3,4,5,1,2の順になっているのでよく読まねばな りません(電源が123でUARTを45にしたらどうだろう)。バスパワー、UART ON に設定しました。テスターでVccとGNDがショートしていないことを確認しています。
コンピュータ(私はXPです)のマイコンピュータ→右クリック→プロパティ→ハードウエア→デバイスマネージャと進めて、さらに、ポートの+記号をクリックして ポートが見えるようにしておきます。ここで、完成品にUSBをつなぎます。LEDが点灯して、ポートに「USB serial Port(COM3)」のように表示があれば成功です。 COM3は場合によって3〜7などになります。この数字はメモしておきましょう(忘れたらまた見ればいい)。

プログラマアダプタ:
手持ちのプログラマはすべてAtmel標準の6ピンです。ここはシングルラインですからアダプタが必要になります。いつものやり方−−あり合わせで間に合わせる −−で両面生基板にプラカッターでパターン(?)を書いてヘッダピンを切ったり、ハードディスクケーブルのコネクタをちぎったりしながら作りました。

常用のavrsp.exeでデバイスの認識ができました。ヒューズを20MHz水晶発振に変更しました。

USBコネクタとコード:
最近はUSBを使うことも多いのですが、太くて堅いコードとボードに比べて大きなコネクタが扱いにくい存在です。そこで、あちらこちらに書いていますが、コード の外皮とシールドを取り去りました。ロースピードでは大丈夫です。しなやかに、扱いやすくなりました。コネクタはピンヘッダとピンソケットを4Pにちぎって使います。 挿抜が楽で嵩も低くなります(やすい)。我が机上のスタンダードになっています。適当に決めてしまったピン配置ですが、便利だから統一しています。

上の裏面写真でB型コネクタの固定用脚の半田が付いていないのは、どうしようかためらっているためです。この写真を公開することがなければ、4Pピンヘッダを貼り付け て済まします。変更できるように半田を控えています(挿抜には注意しています)。

2007.07.04
試運転:
試運転の定石はLEDピコピコですが、今回は通信機能がありますのでtera termを使ったPCとの通信をしてみました。内容は簡単なもので、PCからアスキーコードの1文字 を送ると、その文字と次の文字と復帰改行をmcuから送り返すものです。uartのボーレートは常識的な9600bpsとしています。
まず、20MHzの水晶を付けましたから発振モード変更のためヒューズビットを書き換えます。
  fl=11010111 fh=11011100 (fextは変更しません)
デバイスマネージャでFT232RLがCOMポートの何番になっているか調べておきます。私の場合はCOM7になっていました。
tera termを準備しておきます。「ハイパーターミナル」より使いやすいと言われて、これを使っています。 確かにハイパーターミナルは使いにくいと思います。
テストプログラムはここを見てください。
tera termの設定を確認してください。ここが正しければ送った文字と次の文字が表示されて改行されるはずです。


2007.07.06
試運転その2: 7セグLED
 7セグメントLEDを上記の試運転1に追加して、点灯してみました。

接続はセグメントa〜gを PC0〜PC5とPD2に接続しています。アノードコモン型なのでアノードはVccに直結し、カソードは560Ωを通じて、ポートに接続しています。
mega168は高機能ですが、各種機能IOと重なるために連続した8ビットのIOを確保できないのが難点です。
なお、PC3にはUARTの受信割込毎にトグルで点滅するLEDを、H点灯で、付けています。(回路図は省略しています)

点灯だけではおもしろくないのでゲーム性を持たせてみました。スタートでLEDが高速で0〜9を繰り返します。そこでPCの数字キーを押すとUARTを通じて、LEDにその 数値を表示します。
高速で繰り返している0〜9の数字と、PCから伝えた数字が同じものなら点滅することとしましたので、そのとき、ラッキーだったら数字が点滅します。確率的には1/10 ですが、実際にしてみると1回目の時もあれば40回目の時もありました。

消費電流の制限を大きくするためと、流れている電流を知るためにセルフパワーに変更しました。消費電流は60mA位です。
PCからUSBを通じて各出力ポートをコントロールするのが動作試験2の目的です。プログラム



#176  I/O Expander       
TOPページへもどる
 I2C制御でI/Oポートの数を増やせるボードです。16ビットのポートかまたは8ビットポート×2として使うことができます。I2C受信専用のICであるマイクロチップ・テクノロジ社のMCP23017(SOIC)を使用しています。
ボードはBB対応でなく2×10のピンコネクタ用になっています。けれども、BBで使える方が実験には便利なので、生基板を加工してBB仕様にしています。(BBタイプの発売が予定されています)


使うときはこんな感じです。

制作は指示通りにはなっていません。
1つしか現在は使う予定がないのでアドレスを設定するジャンパピンを実装していません。したがって7ビットアドレスは0x27になります。ライト時のアドレス+W(8ビット)は0x4e、リード時のアドレス+R(8ビット)は0x4fとなります。
(次のような考え方はまあ違っているのかもしれませんが、7ビットから8ビットへの計算を省略するために7ビットを左シフトした8ビット値がWアドレス、それに+1した8ビット値がRアドレスと考えるとプログラムを考えるときに間違いが少ないのです。それで、自分の頭の中ではアドレスは8ビット値で、偶数がWアドレス、LSBが1の奇数がRアドレスとして扱っています。)
リセット回路のコンデンサは「リセット回路内蔵」とのことですから取り外しました。ダイオードはそのまま残っています。
I2Cコネクタは自分流の2×2のピンコネクタを臨時に付けています。
バス回路のプルアップ抵抗はBBに実装するので付けていません。

テスト用のマスタはNakさんにあるサンプルプログラム I2Cマスタ送信 #176 MCP23017制御 (07/08/13)「test5.zip」を使いました。もちろんアドレスが変わっていますから、2ヶ所にある0x40は0x4eに変更してアセンブルしました。
 アセンブラの使い方がわからないので少々苦労をしています。
 サンプルのアドレスを変更して、DOS窓に avrasm32.exe をDDして、
 適当なフォルダ<日本字やスペースを含まない>に置いてある、変更したプログラムをDDして、-fI オプションで....
 ところが、"String expected"エラーが出てくるので、8行目の<tn2313def.inc>を"tn2313def.inc"に変更して....
 またまた、'tn2313def.inc'がないというので C:\Program Files\Atmel\AVR Tools\AvrAssembler\Appnotes から
 プログラムのあるフォルダに置いて、やっと成功しました。
 
 追記です(2007.09.17)。 senshuさんに教えていただきました。wsNakさんのアセンブリプログラムは新しいアセンブラ avrasm2.exe
 を使うように書かれているようです。
 そこで、DOS窓に C:\Program Files\Atmel\AVR Tools\AvrAssembler2 のフォルダから avrasm2.exe をドラッグ&ドロップ(DD)して、
 一文字開けて .asm ファイルをDDして、-fI オプションを付けるとトラブルなくアセンブルできました。
 avrasm2 では、< > 記号が使えます。

無事、LEDがバイナリのカウントをしてくれました。
余談ながら、電源を再投入しても(立ち上がりの速い電源でも)0からはカウントしてくれません。電源の消費が少ないためになかなか初期状態になれないようです。 写真のBBの右下に小さな10kのRを入れていますが、これで電源off時に放電させると正しく0からカウントするようになりました。





inserted by FC2 system