コメを噛め

コメを噛め

rerofumi の電子工作メモ

Archive for 2006


hatena bookmark


オープンソースマガジンの 9月号と 10月号 2回にわけて、当Blog「コメを噛め」での制作物を元とした原稿を書かせてもらった。
9月号の方には記事内で使っている PIC テストボードのプリント基板を読者プレゼントとしているが、これは記事だけでは実際に作ってみようというには敷居が高すぎるのでなんとか低くできないかと考えての事。
記事自体とはあまり関係が無く、私が勝手に暴走して行っていたことなのだけれども、編集の方には読者プレゼントとして快諾して頂けた。
正直プレゼント応募者が居なかったらどうしようと小心者の私は思っていたりしたのだが、応募者はそれなりにいて当選した 3名も決まった様だ。

まあ、せっかく作ったものなので成果として公開する次第。
添付の制作マニュアルは私にしては珍しく手順を追って説明してあると思う。(原稿本文よりページ数多かったりするし)

・プリント基板パターン(PDF)
pic16f876_testboard.pdf
・プリント基板パターン(PCBEデータ)
pic16f876_testboard_master_rev2.pcb

PIC実験ボード組み立てマニュアル(PDF 16.7MB)


PIC実験ボード自体は以前作った物と同じで、それをプリント基板に起こした物。
配線の都合で I/O コネクタの順番が変わっていたりするけれども、言わなきゃわかるまい。
—–


hatena bookmark

CPLD ボードができたので、当初の目的であったカップラーメンタイマーのロジック作成を行う。

カップラーメンタイマーと言っても、3分とかが計測できるというだけで要はスタート値固定のダウンカウンターである。
7セグメントは同時に1つしか点灯できないので、高速で表示位置を切り替えていくダイナミックドライブ方式を用いる。後は10進数カウンターを桁数だけ繋げるのと、ボタンが押されたときに規定値にセットされるような仕組みがあればよいはず。
ボタンは 3つ用意してあるのでそれぞれ「180秒」「240秒」「300秒」のスタートとする。これで大抵のカップラーメンに対応できるだろう。


ま、なんとか完成。
単純なカウンターだけなら 6桁も余裕なんだけれども、カップラーメンタイマーとして作り込んでいったら CPLD のロジックが足りなくなったので 5桁に落としている。
まあ、それでも 10ms 単位で表示できているわけだから十分かと。

オシレーターの出力が可変にできない問題の関係で分周カウンターに結構レジスタが食われているので、このへん修正すればもちょっとマクロブロックが空くかもしれない。後わりと無駄な部分も多いからなあ。

VHDL ソースコード
cpld_ramen_timer.zip

基板制作もロジック作成も適度に難しくて良いトレーニングになりました。
—–


hatena bookmark

制作編。
プリント基板もできた事だし、さっそく作成。
一番の問題は、片面基板で作った事によるジャンパー線。ジャンパー線を作るのに普通のスルホール&表面配線でつくってあるというのは前回記述したとおり。それ自体は問題ないのだけれども、なんせスルホール扱いなのでパッドが 0.8mm のホールが 0.5mm とかなり小さい。ドリルでの穴あけは慣れたこともありまあなんとかなるのだけれども、小さなパッドとぎゅうぎゅうに押し込まれたパターンへのハンダ付けが困難を極める。ちと気を抜くと隣のパターンとブリッジするのでハンダ吸い取り線大活躍で少しずつ事を進める。


ジャンパー完了した基板表面はこんな感じ。
ここまで終わったらテスターとルーペでブリッジショートしていないか地味にチェック。案の定問題点がみつかり無事修復、一箇所だけだけど。

後は普通に部品のハンダ付け。


ジャンパー線のハンダ付けに比べれば CPLD の QFP ハンダ付けなぞ楽勝ですよ。


ドリル穴を減らすためにできるだけ面実装部品を使用したので、表はほとんど何もない感じ。

JTAGダウンローダでチップが見えていることを確認できて、これにて完成。
—–


hatena bookmark

基板編。
CPLD でカップラーメンタイマーが作れるようなトレーニングボードを作ろうとか言い出して月日は流れ。
当初は PCBE を使ってちょびちょび手作業でプリント基板のアートワークを作成していたのだけれども、あまりの難しさに遅々として進まず。それよりも、絶対どっかでミスが入るだろコレ、という危機感に苛まれて CAD を EAGLE free 版に乗り換えてみる。
オートルーター目当てではあるけれども、回路図とアートワークにずれが無いことを検出してくれるあたりを頼っての事。

EAGLE は確かにライブラリから部品を探し出すのが難しすぎる。検索機能とかないんかね。とはいってもそんなに苦労もせず回路図をひきなおせた。


オシレーターの出力は 5V だけれども XC9572XL は 5V の入力に耐えるのでそのままつっこんでいる。
ここで ERRATA。完成した後でわかったのだけれども、オシレーターの分周比設定を 5V に繋いでいるけれども GND が正解らしい。この回路図の通りに作ると、どんなにスイッチを設定しても 78.125khz しか出てきません。

この回路を片面基板で作ろうというのが今回の無謀な企画。


当然ながらオートルーティングは途中でギブアップをする。上の図は 79%のルートを張り終えたところでギブアップしている。これでも部品の配置を最適化したり、色々と手を入れた後での結果。何も考えないで部品配置すると、60%くらいしかオートでひけなかったりした。
後は手作業でちょびちょび修正して、できるだけ最低限のジャンパーで済むように組み立てていく。


赤い線が部品面のラインで通常は両面基板なのだが、今回はこの部品面の線をジャンパー線としてスズメッキ線の実装で作ろうという作戦。


なんとか完成。

これを感光基板に焼き付けて作成。
CPLD の足は 0.5mm だし、線間は 0.3mm 程度と細かいアートワークなのだけれども、ずいぶんと慣れたもので焼き付けとエッチングに問題なし。


完成。うむうむ。
が、部品を挿して確認していたりしたら妙な違和感が……。
orz 鏡反転のものを作ってしまった。
穴開けし終えてから気づくなよ……。
(この間数日が経過)


気を取り直して再度作成。
今度こそ完成。

最終的なプリントパターンはこんな。参考までに。
cpld_led_circuit_pattern.pdf

プリント基板作成ってそんじょそこらの脳トレーニングとは比較にならないくらい頭を使うよなあ。パズル的に楽しめる範囲であれば面白いのだけれども。
—–


hatena bookmark

おー、これまでICしか扱っていなかった秋月電子で、PSoC の MINIPROG とコンパイラライセンスの販売が始まっているなあ。
MINIPROG は簡単な EVAL が付いてくる奴で、私が所有しているのと同じ奴。
Cypress 本社通販や Digikey でも在庫が少なくて直ぐ売り切れるアイテムだった(そしてなかなか入荷しない)から、欲しい人はお早めに入手した方がよいかも。

もちょっとちゃんとした開発実験をしたいなら 7000円くらいの EVAL kit の方がオススメですけれどもねー。
あのちっこいブレッドボード部分が中々に便利なのですよ。

みんなも PSoC で遊ぼうよ。
—–


hatena bookmark

久々に PIC をいじっていて MPLAB を最新にしてみようかと Microchip をのぞいたら MPLAB 7.41 になっていた。
よく見てみると。
MPLAB IDE now includes a free copy of the CCS PCB C Compiler.
とか書いてある。
なんと。

実際にインストールしてみたら実際に PCB 版だけだけれども本当に C コンパイラが同梱されていた。
もっとも CCS PCB C Compiler って 12bit 命令長の PIC 専用のバージョンで、今あるラインナップのうちもっとも低級なものである。
PIC10 とか PIC12F509 とかが対象ね。
最もこの辺は機能が低く制限が多いためアセンブラで書いた方が断然よいチップだとおもうので Cコンパイラがどれくらい使い物になるかわからん。

CCS でも PCB 版は単品売りしていなかったし、誰が使うのかわからないだけに大放出的な感じか。
PIC12F509 のプチブームでもくるかな。

私はもう二度と手を出さないであろうチップだけれども。


hatena bookmark

なんか以前からオシロスコープは憧れの計測器なのである。あれで波形観測をしている姿にあこがれるというかなんというか。
大学にいた頃実習で何度も使ってはいたんだけれども、それでも自宅にオシロスコープがある姿に憧れるといういささか変な固執があってみたり。

秋月電子の通販部でpico Technology 社の USB 接続 PC オシロスコープが取り扱い開始になっていた。
んまあ簡易オシロとして osziFox を持っている(もう秋月で扱っていないなコレ)わけだけれども。なんか信号が出ているかな、とかいったちょっとした計測には便利しているんだけれども「波形の確認」を行いたいと思ったらちょっときつい。PC接続用のシリアルケーブルもどっかいっちゃってるし。
ちと込み入った計測がしたいときもやっぱりあったりするのでエイやと買ってみた。
一番安い PicoScope 2202 だけれども。
まあ、2ch 2MHz の計測ができれば今のところ十分だし。


なんか思ってたよりでけえ。

pico Technorogy 社はパラレルや USB で PC に接続できる A/Dコンバーターを提供し続けている会社。ちょこっとしたアイテムで 数10kHz レンジの計測や PC でのデータロガーを提供している。
PicoScope はその延長で高速 A/D コンバータとそれなりなバッファを積んで、オシロスコープとして使えるようにしたもの。実のところハードよりもソフトウェアの方が価値が高かったりする。そこは老舗の会社、オシロスコープアプリの他に、データロガーアプリとスペクトラムアナライザアプリも付いてくるし、どれも枯れて安定している。
他の PC オシロスコープよりこれに惹かれたのはそんなソフトウェア面での魅力から。
PicoScope 2202 は low-cost entry モデルである。他はみんな 3000シリーズで、これだけ格下。分解能も 8bit (3000シリーズは 12bit)だし、バッファも 32kb しかないしと制約もあるので用途を考えて選択するが吉。特に 8bit ってのは結構荒いのでアナログの計測が目的だとちょっときついかも。

秋月電子で購入すると 1000円ほどのプローブを 2本付けてくれる。
このプローブに「1kHz の低周矩形波でシュートが出ないよう調整しやがれ」と書いてあったので、PSoC の PWM で 1khz を出力する様な物を作り、それで計測。


あー、この調整って等倍じゃなくて「x10(1/10に減衰)」するときの変形修正なのか。
つつがなく終了。

アプリの機能は満載というわけではないけれども、使い勝手は良くてなにも考えずに普通に使える。
もちろん、画面上の波形で「ここからここまで」と線を引いてその間の時間を計測したり、縦方向で振幅電圧を見たりといったことがサクサクできる。PCオシロスコープのメリットだよね。
トリガーの設定もシンプルながらにまあ悪くない感じで。


2現象なので I2C のチェックにも使える。まあ、3パケットぐらいしか画面に表示できないけれども。

繰り返しになるけれども、サンプル速度が 2MHz というよりも 8bit 階調の方がきつい制限になるのでそれを留意することかな。このエントリーモデルだと USB バスパワードで動くので取り回しの勝手は良い。
4万円という値段なので、この価格帯だと選択肢はたくさんあるのだよな。
—–


hatena bookmark

FPGA を始めたらやってみたかった事がある。
希代の電子工作入門書「CPUの創りかた」の中で作成している CPU を PLD に書くことで、実際に作成して動かしてみることである。
まあ、あれは実際に部品を集めて作成するから楽しいのであって、PLD で作っては面白さが半減してしまうところではあるけれども。でも、この本の中で作成する TD4 はロジック作成の勉強としては非常に手頃なサイズなのだよね。
まあVerilog-HDL で TD4 を CPLD に作成した御仁は既にいるのだけれども、同じ事を繰り返してもよいじゃない。
てなわけで VHDL でふにふにと作成開始。

td4_vhdl.zip

本の中のロジックIC を VHDL に置き換え、ではなくて役割と意味から実装している。
特にオペランドデコード部分は敢えて if 文の塊にしてみた。本の方では真理値表からざくざくと削ってシンプルな論理に落とし込んでいるけれども、こっちはなにも考えていない。どんなロジックが合成されるかと思ってみてみたら、めちゃくちゃでかくてゲンナリするものがはき出されてみたり。
まだまだ色々直せそうだけれども、現状こんなところ。

クロックについては、手元のボードで動くようにひたすら分周して使用しているので注意。また、ソフトウェアROM に関しては VHDL 内に記述してあるので、ソフトを変えたい時はそこを修正して再合成が必要。
td4.ucf
Xilinx の Spartan-3E sterter kit を使っているひとはこのネットリストを使うと、ボード上ですぐに動かせます。south のトグルボタンが reset で SW0〜3 が IN、LD0〜3 が OUT。

これでよいのか自身はないんだけれども、いちお動いているみたい。
XC9536 にも収まるな、これ。33マクロセル使用とかだった、クロックの分周が無ければ半分くらいになるだろう。
—–


hatena bookmark

以前加速度センサーを用いた傾きジョイスティックを作成した。
このとき元としたソースコードはマウスデバイスの物だったので、加速度センサージョイスティックからちょちょいと一部戻して「加速度センサーマウス」を作るのはたやすいことだったりする。
取り敢えず、手始めにハードはそのままで戦闘機型の加速度センサーマウスのファームウェアを作ってみる。傾きでどれくらいの移動量にするかというあたりを上手く作るだけでなかなか快適なアイテムとなる。まあ、静止時でも手で持っているわけだから疲れるけれどもね。
(このときの試作ソースは紛失)

さて、今回のお題となるセンサーは感圧ゴムセンサー。


圧力を知るセンサーを探していて一番安くてそれっぽかったのがこの導電ゴムがたの圧力センサー。先端部分に導電ゴムが入っていて、通常時は電気が流れないけれども押し込むとゴムがつぶれて電気が流れるようになるというアイテム。ゴムの通電性という関係で途中の圧力でアナログ値変化するのだけれどもその幅が小さいので実質 on/off スイッチといったところ。


これをUSB実験ボードに接続。
今回センサーを 5つ買ってあるのでこれをマウスポインターの移動「上」「下」「左」「右」と「左クリックボタン」に割り当てて、そのようなマウスとなるようにPICのファームウェアを記述。
pic_usb_mouce.zip
ソースコード。
一応これでボタン入力型のマウスデバイスとして利用可能。

今回の本当の目的はこちら。


双丘型マウスパット。平たく言って、オッパイマウスパット。


横から見るとこんな。

こいつのそこに穴を開け。


先の感圧センサーをセットする。


樹脂型接着剤で目地止めし、固定すると。


完成。

まあ、センサーの試験時にわかってはいたけれども、操作性はぜんぜんなっていない。
本当は手のひらなりグーでなりで押し込むとか揉むとかすると操作できることを目指していたのだけれども、そううまくはいきませんで。


センサーのあるあたりを上から「ぎゅむ」っと指で押し込むと動作するマウスといった風情。
まあ、バカアイテムに実用性は求めるものではないですが。操作はともかく、押す事が楽しい一品ということにしときましょうか。

このへん、センサー次第でもちょっと良くなりそうなんだけれどもな。
—–


hatena bookmark

面白そうと、秋月で買い物のついでに購入した8×8のLEDマトリクス表示装置が転がっている。


23x23mm の小さい方で 1個90円の代物。
別段ほったらかしていても良かったのだが、気まぐれに光らせて見たくなる。


適当にあり合わせの部品達。
あまりここでは書いていないが最近は PIC よりも PSoC マイコンの方が私的に良くいじる。
まあ、PSoC についてはいずれ改めて。
LED をデコーダーICによらずにマトリクス表示するには 8+8 で16本の GPIO が必要になる。もちろん PIC でもなんとかまかなえる数だけれども、8ビットx2 となると結構面倒だったり。そのてん、PSoC はモジュールを使わないときは 8ビットx3 と素直でリニアな IO として使えるのでこういった実験には丁度良い。


なんとなく小さくまとめてみた。
こういった LED モジュールはピンの並びが変態的なので、ワイヤーで地味にわっしわっしと配線していく。


まあ、それっぽく完成。
見てるとわからないけど、ラスター毎に点灯している LED の数によって明るさが全然違ったりする。単に抵抗(見てわからないけどチップ抵抗が付いている)を付ける位置を間違ってしまっただけなんだけれどもね。まさに orz…
次回は間違えないぞ。
一応表示してスクロールしているムービーをフラッシュムービーとして用意してみた。

さらについで、いらないと思うけれどもプロジェクトファイル。

led_matrix_06.zip

—–