2009年11月29日日曜日

万能作業台の購入


予定していたとおり作業台を購入した。

Compact Bench Vice(BV-920)という型番。MADE IN CHINA。
近くのオリンピックで2980円だった。

Compactと書いてあるように、高さが63センチで、少し低い感じ。


組み立ててみた。

左右にハンドルがついていて、まわすとテーブルの片側がスライドするはず・・・なのに、右側がバカになっていて、空回りしている。

はずれを買ってしまったようだ。
値段安いし、中国品質だからしょうがないか。
交換のため店に持っていくのも面倒だなぁ。

これもカルマだろうから、仕方ないがこのまま使うことにしよう。

2009年11月23日月曜日

CNCフライス自作の下調べ

ホームセンターをまわって工具や部品などを下調べした。

調べているうちに、少しずつ作ろうとしているもののイメージが膨らんでくる。

とりあえず、木製で安くしようと思う。

先ずは作業台を買うところから。
でも今日は調査だから買わない。

パルスジェネレータ&カウンタの設計

パルスジェネレータ&カウンタを作るにあたり、まずは設計からはじめる。とりあえず、仕様は以下のような感じ。

■パルスジェネレータ部
  1. パルス出力は3チャンネル
  2. パルス幅は100nsec~100msec、パルス幅刻みは100nsec、デューティー範囲は1~100%、デューティー刻みは100nsec
  3. 出力電圧は3.3V、74AC04でバッファ
■周波数カウンタ部
  1. RF入力とUHF入力の2入力を切り替えてカウント
  2. RFの周波数測定範囲は1~100MHz、UHFはプリスケーラ(uPB1507GV)入力で、周波数測定範囲は500MHz~3GHz
周波数の測定範囲で100MHz~500MHzは、測定対象外とするが、実際のところ入力信号のレベルなどに左右されるため、カタログの値よりも少し広い範囲もカバーできると思われる。
UHF帯は、高周波を意識する必要があるので入力を独立させた。

■その他
  1. CPUはPIC24F、CPLDはMAXⅡを使う
  2. インターフェースは、LCD16文字×2行と、タクトスイッチ4つ、ロータリーエンコーダ1、圧電スピーカー1個とLED6個
  3. RF入力は2SK241と2SC1815で作るアンプ、UHF入力はプリスケーラuPB1507GVへ信号を入力
  4. ケースはダイソーのはがき入れケースとする。
  5. 006P電池と外部9V電源を利用可能

次に、回路図を作っていて、あちこちのサイトの情報を寄せ集め状態で作るとPICのIOピンが足りなくなるということに気が付いた。

そこで、IOへの出力はいったんCPLD側で受けて、PICはIOを操作するための仮想レジスタへREAD/WRITEで対応することにした。機能を欲張ったらつくりが大変になるということか。今までに作った回路をそのまま使う訳にはいかないので、ここが今回の製作上の課題となりそうだ。

2日かけてようやく図面の第1版が出来上がった。

2009年11月21日土曜日

秋葉でパーツを買ってきた


今日はパルスジェネレーターを作るために必要なパーツを買ってきた。

今回、MAXⅡというCPLDを使って作る予定なのだが、MAXⅡの570ものロジックエレメントの大半が使われないままではもったいないので、周波数カウンターも一緒に組み込んでしまう予定。パルスジェネレーターとカウンターは同時に使うこともなかろうという想定だ。そして2IN1にすることでPICを1つで済ませようというわけ。

周波数カウンターは、去年MAX038というファンクションジェネレータICとセットにしたものをPIC16F648Aで作った。だから2作品目になる。この周波数カウンター1号は、プリスケーラーなしで20MHz程度までカウントできている。50MHzまで使えるかも知れないという情報があるけれど試していない。

周波数カウンター2作目は、秋月で売っていたuPB1507GVという500MHz~3GHzのプリスケーラーをつける予定。200MHzぐらいまで測定できたという情報もあるので、MAXⅡと組み合わせて、1Hz~3GHzまでシームレスに測定出来るものになったらいいなぁと思う。MAXⅡで作るカウンターがどこまでパフォーマンスが出るかということになる。



それから、左の画像のものも、ついでに買ってしまった。
秋月で購入したステッピングモーター3つ。一番大きなやつ。

さて、これはいったい何に使うのでしょうか?




これは、CNCフライスを自作しようと考えていて、そのパーツの一部になる予定。

プリント基板の製造をCADから自動化したいと前々から思っていて、CNCフライスがそういう目的に使えることが分かってきた。
プリント基板のエッチングとか、その前のパターンの転写とか、結構手間がかかるのだ。高周波用になると、パーツは小さいし、パターンでフィルターを描いたりしなければならない。それに廃液の処理とか考えると、削ったほうが環境にも良さそう。だから、CNCの方が良いという結論に至った。
それから、レーザー光線を使うと、消耗品のエンドミルが不要になるので、その方面も調査中。

でも、市販のものはどれも値段が高い。ホビー向けの小さなものが9万円台からあるが、それでも高い。せいぜい4~5万円程度に抑えたい。だから、自作。

今はまだ構想段階だけれど、こうやって実際にものを少しずつ集め始めて、今後作るもののイメージを具体化していきたいと思っている。

ドットインパクトプリンターのヘッドを載せてスライドさせている部分のシャフトがほしいなぁと思って、今日は、ジャンク屋も探して歩いたが、掘り出し物は見つからず。いまどき、ドットインパクトプリンターなんてどの店にも置いてないようだった。となると、別な方法になるか。

CNCフライス本体は、剛性をだすためにアルミでベースを作っている方が多いのだけど、中にはMDFなどの集成材をつかったものもYouTubeなどでたくさん見かける。特に海外に木製が多い。日本人は精度に細かいという国民性がでているのかもしれない。
どちらのタイプにするのかはまだ迷っている。はじめは安上がりのMDFでも良いかと思うのだが、どちらにしても、家にはボール盤しかなくフレームを加工するための道具や計測道具は持っていない。だから道具の購入からスタートだ。

【CNCフライスの参考】
きゃのん・えんじにありんぐ
やりくりアクロフライヤー
CNCおもちゃの掲示板
CNCプリント基板作製機の自作に挑戦
オリジナルマインド
NCフライスへの道
「工房モコ」NCマシン
PCB Drill
CNC Router
weblog_seyo


CNCの件はこの程度にして、パルスジェネレーター&周波数カウンターをつくるとするか。。。

2009年11月19日木曜日

三相信号発生器の改造(その2)


昨日、今日と、仕事から戻ってから信号が出力されない問題を修正して、ようやく出力が得られた。

結果として、出力波形はSin波形には程遠いものだ。LPFの出来が悪いのかもしれない。

信号が出力されなかったのは、ひとつは追加したリセット回路。RCで作った簡易な回路だったため、また調整が不十分なのもあるかもしれないが、リセットが解除されない状態だった。リセットは専用ICにするのがいいのかもしれない。とりあえず、リセットなしでも動くので問題はなさそうだけれど。

もうひとつ問題だったのは、FPGAのデータ入力ピンの指定が間違っていたため、データが伝送されなかった。これはかなり初歩的なミスだった。

以上の問題を解決し、PICから希望する周波数を設定すると、周波数が変わることをオシロスコープにて確認。周波数は正確に測ったわけではなく、波形の周期から大まかな状態を確認した程度。

これで一応基本的な部分は出来たようなので、あとは電子ボリュームの実装とLPFを含めて出力波形の検討だ。PDM方式だと、取り出せる周波数はCLOCKの1/10ぐらいかと思ったが、もっと低くしたほうがいいのかもしれない。これはLPFとの組み合わせなど調整が必要に思う。

それから、PICでつくったI/F部は、他にも流用できるので、次に製作予定のパルスジェネレーターなどにも使おうかと思う。

トップの画像は、1波を表示したもので、この左の画像は2波を重ねたもの。







この3枚目の画像は、3波を重ねたもの。ひとつだけ波が低いのだが、これは、オシロスコープの電圧設定が0.1Vと0.5Vの2つしかなく、しかもプローブの1本が壊れていて、かわりに高圧用の1/100プローブをつないだためにこうなっている。実際は同じ3.3Vの出力レベル。

2009年11月16日月曜日

PIC24Fのコンフィギュレーションが間違っていた

三相信号発生器がうまく動作しないので、その原因を追跡した。

今日はひとつ問題が見つかった。それは、PIC24Fのコンフィギュレーションが間違っていた点。

最初、スパルタンボードへ送る線にノイズが多いせいだろうかとか、信号のレベルがおかしいのだろうかと考えて、ケーブル周りを作りなおしたり、FPGAにパワーオンリセットがかかるように回路を追加してみたり、あるいはラインにプルアップ抵抗をつけてみたりしたが、変化なし。

信号を出しているPIC側に問題があるかもしれないと思って、ロジアナをPICの出力につないでみた。3線で信号を与えるのだが、2線の信号が出力されていないように見えた。MPLAB IDEのデバッグモードで確かめるとファイルレジスタの値はちゃんと変化している。たまたま、ケーブルを作りなおしたときに、出力ピンの担当を入れ替えてみた。すると、RA2とRA3からまったく信号が出ていないことが分かってきた。

このRA2とRA3の2つは外部オシレーター用のピンだった。何か設定忘れがあるかもしれないと思って、マニュアルをチェックした。すると、コンフィギュレーションのところで発信器の設定によってこれらのピンがデジタルI/Oにならなくなることが分かった。

以下のサイトに詳しく書いてあった。
C30コンパイラ(= PIC24 MCUs コンパイラ )でのコンフィギュレーションの設定

やはり、設定が間違っていた。具体的には、発信器関係の設定で、間違って、OSCIOFNC_OFFとPOSCMOD_HSを指定してしまっていた。
これらをOSCIOFNC_ONとPOSCMOD_NONEを指定するとRA2とRA3がI/Oになるのだ。

ついでに、8MHzの内臓オシレーターをx4-PLLを指定して32MHzで動作するように変更する。あわせてRTOSのTICタイムやdelayルーチンの設定なども変更。

リビルドしてPickit2で修正プログラムを書き込んでみた。すると、信号がちゃんと出力されるようになった。それに速度も速くなっている。

コンフィギュレーションは、PICを使い始めた頃によくわからなくて、誰かが書いたソースについていた設定をみようみまねで書いていた。それでも一応動いていたからそれで放置していた訳だが、ここにきて問題が発覚したということだった。当時は分からなかったとはいえ無智だった。

さて、ひとつ問題が解決した訳だが、まだ発信器からの出力が確認できない。PIC側の問題が解決したので次はFPGA側のデバッグや問題発見に集中だ。

2009年11月15日日曜日

三相信号発生器の改造

1年ほど前に購入したSpartan-3Aキット。これで三相信号発生器を作ってあったのだが、ボードむき出しのままだったので、取り扱いが面倒だった。

せっかく豊富なゲートを構成できるにもかかわらず、使い勝手の面倒さのために、あまり使われることなく放置。そして、AlteraのMAXⅡばかりに気をとられていては駄目だと思い、ケースに収め利用率を向上させることにした。

もともと、開発用に購入したボードだったので、きちんとしたケースに入れようという気持ちがあまり起こらなかったせいもあって、結局安いケースにすることにした。

ダイソーに行き、150円のA4書類ケースがちょっと大きめだったけど、とりあえずこれにしてみた。
プラスチック製なので加工は簡単。とは言うものの、それなりに時間がかかってしまった。

しかし、ケースに収めるとなかなかすっきりとしてしまって、使い勝手も良くなりそうだ。もっと早くやっておけばよかったと反省。

今回、このプラケースに入れるにあたって、FPGAのロジックもいくつか手を加えることにした。

その第一が、外付けだったD/Aコンバータをなくすことだった。
ネットを調べていたら、Neo-Tech-LabさんのサイトでPDM(Pulse Density Modulation)によるD/Aコンバータが紹介されていた。
ちなみに、このサイトを知るきっかけになったのは、MAXⅡを使った自作記事を探しているときだった。

このPDMを使ったDACだが、とてもシンプル、加算器だけでつくれるということで、CPLDやFPGAの中に入れることができるというとても素晴らしいものだった。
原理的に周波数をそれほど高く設定できないという欠点はあるが、外付けDAC回路がなくなるというメリットが魅力的だった。ただし、LPFが必要となるのだけれど、簡単なRC型のフィルターが使えるのでそれほどではない。というわけで、これを試してみることにした。

第二は、三相をより精密に作ること。
以前のヴァージョンは、Sin波テーブルは1/4波形分だけ格納する形にして、データ量を少なくするようにしたのだが、ごくわずかだが位相誤差がどうして出てしまい、正確に同期の取れた三相にはならなかった。
そのため、思い切ってSin波形を3つ用意することにした。あわせて、出力Bit数も6から12にあげてみることにした。

以上の点を踏まえて、VHDLの修正を行った。
PDMの回路は入手できたが、VHDLソースはなかったのでうまく組めるだろうか?という多少の不安がある。

念のためModelSimで動作チェックを行ってみようとしたが、シミュレーションが途中で止まってしまう。どうやら、無料バージョンでは実行できるコード量に制限があり、今回の修正でSin波形をたくさん入れたため動かなくなってしまったようだ。

仕方なく、1相だけにして挑戦してみることに。。。

2009年11月8日日曜日

ByteBlasterⅡでMaxⅡへの書き込みが出来た

自作したByteBlasterⅡのTDIでエラーが出ていたので、それを追跡していた。

ノートPCを一度再起動した後、Dサブ用のケースに収めてあったByteBlasterⅡ基板を取り出して、テスターで回路をチェック。念のため、MaxⅡボード側のJTAGラインも確認。

その後、もう一度QuartusⅡを立ち上げて、ケーブルを手にぶら下げたままProgramerから書き込みスタートをしたら、あっさり動いてくれた。

どうも、空中配線が災いしたようだ。ケースに収めたときに圧迫されてエナメル線がどこかに刺さったか何かでショートしたのかも知れない。

MaxⅡボードの疑いも晴れ、2枚買ったMaxⅡを捨てなくて済んだ。ホッとひと安心。(^^;
これでシグナルジェネレータの製作が可能になった。

でも、どうしようか。。。もう一度ByteBlasterⅡをきちんと作り直したほうが良いのかもしれない。

そういえば、ITプラザでMaxⅡと一緒に購入したByteBlasterMVキットだけど、結果的にキットの組み立てに失敗しているということだなぁ。集合抵抗の半田付けに失敗しているのかもしれない。。。

ここ1ヶ月を振り返ると

ちょっと、この1ヶ月ほどの出来事を振り返ってみた。

ここのところ、すっかりAlteraのMaxⅡにハマッている。
でもちょっと待てよ、そもそも、何がきっかけだったんだっけ・・・と振り返ってみたら、Spartan3AボードとPICボードの通信がうまくできないことが原因だった、と思い出した。

随分とわき道に逸れてしまっている。自分自身の性格が発散するタイプなので、いつものことなのだけれど、ちょっと軌道修正しなければいけないようだ。

AlteraのMaxⅡは、使えると便利はいいのだが、目的がほかにあるのでほどほどにしておく必要があるなぁ。。。と反省。こんなところで遊んでいる場合ではなかった。

やるべきことをまとめると、

①まずは、PICからSpartanボードの周波数変更ができるようになること。
②これが終わったら、MOS-FETドライバを作ること。
③スペアナでソリッドステートテスラコイルの特性を測定すること。

だった。

③は、テスラコイルの動作周波数とおそらくたくさん出ているであろう高調波などの存在確認が目的だ。ここで得られた情報をベースに、この後の周波数解析部をつくる予定。
手っ取り早く、壊れたSSTCを修理すれば良いのだが、MOS-FETが燃えたため、回路を作りなおす必要があるのと、電源トランスからウナリ音がでるようになってしまったので不安がある。それに、MOS-FETが燃えないように対策をする必要もある。だから、コイル部分を除いてほとんど作り直しに近いから設計から見直してみようと思っている。

①のSpartanボードがB5サイズぐらいの大きさで扱いにくいから、ついついMaxⅡに心奪われてしまった。FPGAとCPLDは比較にならないぐらい組み込めるロジック量が違うのにかかわらず。
とりあえず、Spartanを簡易ケースにでも入れて使い易くすることにする。

パルスジェネレーターは②で必要なものなので、MaxⅡが駄目なら他の方法も検討することにしよう。100ロジック強ぐらいの規模で良いのでザイリンクスのCPLDチップXA95108でも可能。ただし、ザイリンクスのダウンロードケーブルが必要なので、もう少しMaxⅡで頑張ってみることにする。

パルスジェネレーターの後は、MOS-FETの負荷実験用に0~30V可変で10A程度までの直流電源が必要かもしれない。手持ちの菊水は1~15V、2Aまでなのでちょっと足りない感じ。

あと、出来ればトリガーで波形観測したいので、デジタルストレージオシロが必要になるかも。

ByteBlasterⅡを自作した


AlteraのByteBlasterⅡを作ってみた。

先週からMaxⅡのProgramができないままの状態。ダウンロードケーブルが問題なのか、MaxⅡキットに問題があるのか良くわからない。それで、まず問題の切り分けをしてみようということで、ひとつは、別のダウンロードケーブルを作ってみること、もうひとつはMaxⅡキットをもうひとつ購入することにしてみた。

ByteBlasterMVについては、Altera社がその回路図を公開しているのだが、ByteBlasterⅡは未公開ということだった。ただし、先達たちの努力により、互換性のある回路を幾つか見つけることはできた。

えんぽん研究所さんのところにByteBlasterⅡに関する情報がまとめてあるのを見つけた。ここのリンクから回路図を探したりした。最終的にはALTERA ByteBlasterIIの相互品の作成の回路図を参考にさせて頂いた。

出来上がったものは、写真のとおりかなり見栄えの悪いものになってしまった。早く作り上げて、とりあえず動けばいい、という気持ちで作ったので、基板をつくったりはしなかった。ICの向きが反対だったので、配線が鳥の巣のようになってしまっている。(汗;)

ByteBlasterⅡを作り終えた後、MaxⅡボードも組み立てた。

そして、出来上がった自家製ByteBlasterⅡを動かしてみた。QuartusⅡ側では認識できた。しかし、MaxⅡへの書き込みはエラーだった。これは両方のMaxⅡボードともエラー。
ProgramerからAutoDetectを押下すると、エラーとなり、JTAGのデバッグモード画面が立ち上がる。このとき、ByteBlasterMVでは出てこなかった情報が出てきていた。ByteBlasterⅡの方が少しグレードが高いんだと知る。その情報によると、10pinのJTAGコネクタの9番のTDIがGNDになっているということらしい。

もう少し、追いかける必要がありそうだ。

2009年11月2日月曜日

パルスジェネレーター&ALTERA MAX2

MAX2のキットを組み立てて、QuartusⅡにてVHDLを書いてコンパイル。Programmerを起動してCPLDへの書き込みをしようとすると、画像のエラーメッセージが出る。

ByteBlasterMVの電源はCPLDのボードから供給されるので、CPLDの電源を確認したが、3.3V出ている。

原因はいまだ不明、ただいま調査中。。。