« 2008年11月9日 - 2008年11月15日 | トップページ | 2008年11月23日 - 2008年11月29日 »

2008年11月16日 - 2008年11月22日の2件の記事

2008年11月17日 (月)

秋月キットを使ったLCD周波数表示付きFG完成

最後の最後でつまづく(11/15/08)Pict0788
 実装のため、ブレッドボードから部品を取り出そうとして、大事なテストをするのを忘れていたのに気づいた。10Mhz以上測るため、4分周した直接計時入力と、レシプロカル方式で測る入力を分離して測るテストである。

 これまでは、同じT1(PD5)ピンで動かしている。別のピンで受けても関係ないはずだが、念のためということもある。プリスケーラーとMCUのピンの間に100Ωの抵抗を入れて、パルスがなまり(オシロで確認)、悩まされていた測定値のふらつきが劇的に改善された例もある。ハードのテストは環境の自由なブレッドボードでしておくに限る。

 確認テストくらいのつもりで気楽に、ピンの設定をソフトで換え、ジャンパーコードを1本追加して動かしてみた。ややや、動かない。レシプロカル方式は計測を入力の立ち上がりパルスに同期させるため、ピンにパルスが来るまでいつまでもループして待つ方式である。オシロで入力波形をみてみる。ちゃんと波形が入っている。しかし、波形が小さい。そうか。2つの入力に同時に入れたために、出力が下がってパルスにならなくなってしまったのか。

 これは大問題である。MCUに入れる前に、増幅するか、デジタル化する必要が出てきた。思わぬところに落とし穴があった。しかし、これだけのためにインバーターICを使うのも芸がない。ましてや増幅するオペアンプは高周波用が必要だ。で、思いついたのが例のトランジスターによるスイッチングである。レシプロカル方式はそもそも500Khzまでしか測らない。

 早速、トランジスタを持ち出した。この前のアナログと違って飽和領域を使うデジタルなので簡単である。動かしてみた。オシロで出力波形を見る。ははは、アナログアンプになっている。抵抗を替え、めでたくパルス波形になった。レシプロカル方式の入力に入れる。うむ、やっと周波数カウンターが動き始めた。これで実装だと、念のため高い周波数に切り替えてみた。何と、今度は直接計測が動いていない。オシロを見るとパルスがでていない。

 やれやれ、トランジスタを飽和領域まで動かそうとすると電流が流れて、FGの出力が下がってしまい、バイナリカウンターそのものが動かなくなるのだ。試行錯誤しているうち、オシロの画面をみていて、ふっと気がついた。波形出力が下がっているのではないのだ。中位電圧が下がっているだけなのである。

 あわてて中位電圧を作っている分圧抵抗の抵抗値を確認する。ありゃりゃ100KΩだ。これはいくらなんでも高すぎる。マイクロアンペアのオーダーで中間が崩れるはずだ。これを5Kにする。おー、バイナリーカウンターが動き始めた。待てよ。もしかしたらトランジスタも必要ないかもしれない。785fctr

 そのとおりだった。トランジスタでパルス波形にしなくても、普通の正弦波で何事もなくレシプロカル計測は動き始めた。しかし、ノイズが多く、周波数表示にばらつきが多い。色々やっているうちに、このあいだ入れた100Ωの抵抗をとるとぱったりノイズがなくなることを発見した。抵抗を入れるとまたノイズ。雑音発生器になっている。結局、最終的に安定した回路は、トランジスタもなし、抵抗もなしの一番単純な回路であった。替えたところは分圧抵抗値だけ。いやあ、アナログは難しい。

あとは順調。遂にケースに入れた実装版が動く(11/16/09)
 周波数カウンターを作り始めてちょうど3週間、秋月のFGキットを使ったLCD表示付きのファンクションジェネレーターの実装版がやっと完成した。いやいや今回も楽しませてもらった。沢山の勉強をして、また経験値が上がったと思う。写真をとり、散らかった机の上を片付ける。プロジェクトの完了したときの気分はいつも同じだ。心は充実感で一杯なのだけど、ちょっと片隅に、何となくさびしい気分がよぎるのは私だけだろうか。

 ケースのレイアウトは、保守性を高めるため、構造に工夫がしてある。すべてのパーツをケースの下半分に固定し、しかも容易に分解できるよう、コネクターを4つも使って、LCD、VR、電源スイッチ、ロータリースイッチの間をつないでいる。上蓋は穴が開いているだけ(まだ開けていないが)で、部品は全くつけない。このあたりが、アマチュアと言えども、ちょっとこだわっているところである。

 実装版の配線は、久しぶりの完全試合で電源を入れるとすぐ動いた。FGからの出力をプリスケーラに接続する最後の半田付けを忘れていたから、完全試合でなくノーヒットノーランくらいかもしれないが、このところ凡ミスが続いていたので、最初電源を入れてLCDが表示されたときは、正直、本当にほっとした。MCUはちゃんと動いている。786fctr

 しかし、FGの方は動いていない。いじったところは、秋月FGの外部抵抗の設定ピンだけである。説明書を読み返し正しい設定にしたら元通り動き始め、ちゃんと周波数が表示された。万歳。これまでドライバーでちまちま変えていた周波数がつまみひとつで自由に変えられる。素晴らしい。

 波形選択はどうだ。おや、方形波が出ないぞ。これはソフトの疑いが強い。LEDが点くようにしただけで、正確な仕様を確認していない。説明書を読み返す。やっぱりそうだった。正論理と負論理を間違えている。始めつけないつもりであとで念のためにつけたISPピンが早速役に立つ。コンパイルし直したファームをISPを通して流し込む。これは便利だ。今度のレイアウトではLCDがMCUチップの上に乗っているので、もしこれをいちいちチップを外してライターなどに書き込む石だったら、とんでもない手間がかかっているところだ。

 ファームをとりかえて無事、方形波も出るようになった。LCDのコントラストが少し強すぎ見づらいが、これで周波数表示付き秋月FGキットの完成である。MCUのTiny2313のフラッシュサイズはプッシュスイッチで波形を選択できるロジックを入れて、ぎりぎりの2016バイト。分解能は、400khz以上が10hzである。それ以下はレシプロカル方式で測るため1hz以下(1khz以下は小数点2位まで)、レシプロカルは500khzまで動くがたまに不正確になることがあるため、安全のため400khzを境界にした。外部抵抗にしたためか最高周波数は24Mhzまで下がったが特に問題ない。そこそこのスペックに納まったと自己満足する。

 次の日、最後の工作、上蓋の穴明けに着手する。一番の難物は、LCDのスクリーンの窓明けである。このあいだのプラスチック工作ではマイクだけでなく、スクリーンも少し大きく開けすぎている。今度は慎重にノギスで何度も測って位置決めし、例のピラニア糸鋸で開ける。プラスチックほど楽ではないが、この糸鋸はアルミの1ミリの板でも快調に切れる。ハンドニプラーを買おうかと思ったが、これで今のところ十分なようだ。思ったより簡単に切り取ることができた。あとはやすりで整形する。

 これが済むとあとは、リーマでBNC出力と、DCアダプターの丸穴を広げるだけである。位置決めを丁寧にやったおかげで、誤差が少なく穴あけが楽だ。いやいや会心の出来だ。工作技術も大分腕が上がってきた。勢いに乗って、LCDのコントラストが強すぎる修正までやってしまう。始め半固定抵抗でコントラストの最適位置を測って、1Kと10Kの固定抵抗で分圧する。このあいだのLCDは電池で電圧が4.5Vだったので必要なかったが、5Vだと0.5Vくらいかけてやるとちょうど良いコントラストとなった。
Akifg_ctr_3
 秋月のFGキットを買ってきてから2ヶ月、カウンターの開発を始めてから3週間、遂に、ケースに入った周波数表示付のファンクションジェネレーターの完成である。ソースコードと回路図を公開することにする。ただ、ソースコードはともかく回路図は余り自信がない。少なくとも、こちらでは無事に動いているが何か基本的な誤りがあるかもしれない。自己責任でお使いください。

ソースコードはこちらから。前に公開したソースとファイル名が同じなので注意してください。回路図のハードで動く実装版です
注記:2011/4/29 eNastyさんの指摘でソースコードを直してあります。PD4とPD5が逆さまに
なっていました。回路図はこのとおりで間違っていません(PD4は外部クロックT0で固定)

「AKI_FCTR2313.lzh」をダウンロード

| | コメント (0) | トラックバック (0)

2008年11月16日 (日)

周波数表示付きの秋月FGキット制作も大詰め

ロータリースイッチでも26Mhzが楽々(11/10/08)
 秋月FGキットのケースのレイアウトで一番気を遣ったのが、周波数帯を決めるコンデンサーとロータリースイッチの位置だった。ウェブには、この秋月FGキットの沢山の制作例が紹介されており、凝った例では、リレーを並べて切り替えているものもある。秋月のキットにしては珍しくページの多い説明書には、「コンデンサーは半田付けしろ。スイッチで切り替えるな」とある。インダクタンスと浮遊容量で正しく動かなくなるそうだ。

 しかし、いくら何でも半田付けはないだろう。現に、ソケットにしてコンデンサーを差し込み、全く問題なく動作している。リレーにするのも工作心(ごころ)を刺激するが、それほど大げさにするのも何か抵抗がある。で、出来る限り配線に近づけたロータリースイッチでコンデンサーを切り替えようと考えた。

 基板の固定用の穴を開ける前に、ロータリースイッチに7ヶのコンデンサーを付け、仮配線をして、どれだけ動くかテストすることにした。グランド側が空中配線になってしまうが、うまくコンデンサーがロータリースイッチに固定された。これまでのコンデンサーのソケットがそのまま役に立ち、本体とはピンプラグで接続する。このコードの長さもあとで効いてくるはずだ。なるべく短くする。784

 スイッチを所定の開けた穴に固定し、FG基板をケースに入れて接続する。基板の位置決めも兼ねている。電源を入れる。おおー、これは楽だ。今まで、バラのコンデンサーをひとつひとつ入れ替えていた周波数切り替えが一瞬にしてできる(当たり前だ)。出力も安定している。

 高い周波数帯にロータリーをまわしていく。順調にオシロの波形が細かくなっていく。最高の周波数帯である22pFのところも問題ない。いよいよ最高周波数の挑戦だ。バラックでは、26Mhzが安定して出ていた(仕様上は20Mhzが上限)。微調整可変抵抗器のネジをドライバーで回し(これが結構面倒なのだ)、周波数を上げる。20Mhz、問題ない。何だ、バラックと同じ26Mhzまで軽く出るではないか。暫く様子を見るが、何の問題もない。方形波もオーバーシュートだらけだけどちゃんと出る。

 やれやれ、スイッチを使うなというのは、線を引き回すなということだったのか。心配のしすぎだった。ちなみにロータリーを未接続のところへ回すと(12接点もあるロータリーしかなかったので)、周波数は、29Mhzを示した。ロータリースイッチの浮遊容量分というところだろう。

意外にもろい3端子レギュレーター(11/12/08)
 久しぶりの事故である。それもお恥ずかしいことに、半田ごての熱で7805をおしゃかにしてしまった。これまで半田付けの熱でICを壊したことは一度もない。昔のトランジスタは熱に弱く、ピンセットでリード線を押さえて熱を逃がしたり、相当気を遣っていたが、最近は強くなったというし、半田ごてのパワーも小さいので殆ど気にしていなかった。まあ単価の高いCPUチップやICはソケットにして熱が直接かからないようにしてはいるが、3端子レギュレーターあたりは電源用で熱に強そうだしあまり気にとめていなかった。

 ちょうどグランド線が混んできて、非力な基板配線用の半田ごてではうまく半田が流れないので、30Wの電気配線用の半田ごてを持ち出したのが良くなかった。こいつは強力だが、こて先が太い。うっかりしてレギュレータの隣の端子と半田ブリッジをしてしまった。このブリッジを吸い取り線でとる作業が思いのほか時間がかかったのが致命傷になったのだろう。組み立てて通電したが7805なのに4Vしか出てこない。

 ちょっとショックだった。どうも3端子レギュレーターとは相性が悪い。前は逆接続して淡い煙とともに昇天させたし、こんどは初心者のやる半田ごてのあてすぎの破壊だ。原因は、はっきりしている。「レギュレーターを軽く見ている」からである。自戒。自戒。

 気を取り直して、部品箱をかきまわして予備の7805を探す、これがない!このあいだまでゴロゴロしていたのにどうして?あった。いやこれは負電源用の7905だ。そうか沢山あったと思ったのはこの7905だったのだ。これは困った。7805ひとつのために秋葉原に行くわけにはいかない。このまま作業を中断するのも気分が悪い。と思い出したのが、このまえに雑誌付録基板の時に買った電圧が可変できるレギュレーターLM317(秋月で4ヶ¥100)である。3個も残っている。このレギュレーターは、電圧が任意に変えられるのは便利だが、がた老AVR研究所は今のところ、5Vと3.3Vしか使用しておらず、抵抗器2つとはいえ、部品が余計に必要なので使っていなかった。

 これこれ、早速データシートをとりだし必要な抵抗値を計算する。3倍比の抵抗の組み合わせで5Vがでるようだ。こういうデータシートで困るのが絶対値が書いていないことだ。3倍の組み合わせは無数にある。雑誌の記事を参考に、手持ちの330Ωと1kΩにする。秋月で100個入り¥100という袋で買ってきてある定数のところである。ちょうど良い機会なので前からやりたかった、5%抵抗のバラつき調査をやることにする。仕事なら「この忙しいときに」と叱られるが、これがアマチュアの特権である。

 330Ωをやってみた。ロットで袋に入れていくのだろう。ばらつきは±5%に均等に散らばってはいない。つまり330Ωを中心に正規分布していない。私の買った袋は、320Ωあたりに平均値があり、分布は5%より狭い。結果として5%の中に納まっている。しかし、平均値が下に行っているので、欲しい333Ωは見つからない。331Ωで我慢する。

 電源部が少し広がってしまったが、LM317は何事もなく納まった。電気を入れてみる。ややや、0Vだ。何い、さっき出ていた負電源も0Vだぞ。顔が青ざめる。ショートさせたか。色々な部品を触って発熱を確かめる。問題ない。そのときテスターに手が触れて、一瞬、電圧が出た! いやいや悪いことは重なるものである。テスターのリード線が断線してついたり消えたりする。

 そういえば、このあいだからどうもテスターの調子が悪く、電池を取り替えたが、そのあとも導通テストが時々動かないときがあった。テスター棒の付け根で断線をしているようだ。まあ¥2000少々のテスター(これも秋月製)で耐久性を求めるのも酷な話だ。テスター棒は一体成型でコードだけの取替えは出来ない。今度の秋葉原に行ったときに棒ごと買ってこよう。

 テスターの導通を確かめて、もういちど通電。出た。4.997V。1KΩのところは990Ωを選んだお陰で、0.1%以内の精度の5Vである。いや思い通りに出ると嬉しい。いやなことを忘れさせてくれる。

ロジックは間違っていなかった(11/13/08)
 電源部の実装が終わったので、次はカウンター部の実装である。アマチュアの電子工作は、目的と手段がはっきりしないことで、これを仕事にしている人から見れば、「何という無益なことを」と呆れられることばかりだろうが、これが楽しいのだから仕方がない。

 3端子レギュレーターの分圧抵抗の選択など最たるものだ。 真夜中、袋から100個の抵抗を机にぶちまけて、ひとつひとつ抵抗を測っていく自分が我ながらおかしかった。そう、これまでのシステム開発の仕事は、目的に向かって少しでも前進できる、合理的、かつ効果的な、あらゆる方法を46時中考え続け、それを実行することが使命だったから、その反動ということなのだろう。

 翌日、断線したテスターの接続コードを見ていて、また脱線してしまった。プローブとコードは一体化されているので分解するわけには行かないが、断線した場所の見当はついている。プローブの付け根付近である。このテスターはコードを本体の横に収納できるようになっているので、収納するときここに無理がかかりやすい。

 はじめは、予想が正しいか確かめるだけのつもりで、ニッパーで線を切った。ピンセットで銅線を引っ張ったら、見事に予想通りの長さの断線のかたわれが出てきた。こうなるともう止まらない。プローブ棒がやわらかいプラスチックなので、ナイフで半分に少しづつ裂いて中身がどうなっているか調べ始めた。どうせ新しいのを買えばゴミになる運命である。

 少々裂いても全く変わらず、このプローブ棒は先端のピンをコードにつけたあと、プラスチックを圧着して作っているようだと独り言を言った途端、ひらめいたものがある。そうだここに切ったコードを半田付けしてあとはビニールテープかなにかで巻けば、少し短くなるがまだ使えるのではないか。笑ってください。写真が修復後のプローブである。ビニルテープを巻くまでもない。裂いた部分は、細い銅線で縛ってあるだけである。これで当面しのげる。783

 それはともかく、カウンター部の実装である。ブレッドボードで最後の調整を行った。クロック用のクリスタルの換装である。 この前、較正に使った20Mhzの発振器をMCUクロックにし、より正確にする。まあ、無線をやるわけでもないのでここまで必要ないと思うが、周波数カウンターと言うからには、少し贅沢をして恰好をつけてみた(といっても¥150だが)。

 絶対値の最終的な較正は、先日、秋月で買って来たプロ機並みの精度があるといわれる12.8Mhzの京セラの発振器でやる。周波数精度が1ppm、温度補償があって温度特性も数ppmというから、時計に使えば、月差数秒という高精度なもので、これで値段がたったの¥200。いやいや秋月電子さんには、テスターから何からお世話になりっぱなしである。値段が良心的なのが嬉しい。我々アマチュアの強い味方である。

 ブレッドボードに差し込む。Tiny2313のヒューズビットを切り替え(CKSEL1~3 を000)、まず、MCUを20Mhzの水晶発振器の外部クロックで動かす。 動いた。今度は、京セラの発振器にVccを入れ発振させる。オシロで波形を確認する。波形はあまりきれいではないが、ちゃんと12.8Mhzと表示された。784_2

 カウンターの電源を入れる。LCDに周波数が表示された。おや、6.4Mhzで数百ヘルツ多いぞ。何だ何だ。このまえ補正した分だけ多いじゃないか。ブログの記事にはそれらしく書いたが、実は書いてから、どうも腑に落ちないところがあって自分では納得していなかった。割込みルーチンでタイマーの処理をしている間にも、タイマーそのものは動いているから、最後の端数の調整は、本当なら計算で求めた値から少なめにしないと、その分余計に時間をとってゲート期間が増え、実際より高い周波数が出るはずである。

 ところが、最初の結果は、実際より低い周波数だった。最初の端数値は理論上の数で、遅れを考慮していない。本来なら、ゲートが長くなるので周波数は高くならないとおかしいのに、逆に端数を増やして(実際にはスタートを遅らせる)、ゲートを広げ、周波数を増やしてピッタリにあわせた。従って最初の狂いは、どうも当初の¥50のクロックの発振子の誤差のようである。

 端数を最初の理論値にもどして動かしてみる。ピッタリ6.4Mhzで20 hz以内に納まった。うむ、俺の計算が正しいことが証明された。微調整で1回だけひとつ端数を変えてみたが、50hz近く変動し、これ以上の調整はあきらめる。計算上は3.2μsの違いは0.4秒ゲートを開けているので6.4Mhzで5hz位のはずなのだが、割込みルーチンのロジックが増え、さっきの端数値に効いてくるからだろう。

 これで、カウンター部の構成が確定した。今度はLCDを乗せるため大きめの基板にしたのでスペースに余裕がある。部品も少ないし実装は楽だ。周波数表示付きの秋月FGキット制作もそろそろ大詰めを迎えた。

| | コメント (0) | トラックバック (0)

« 2008年11月9日 - 2008年11月15日 | トップページ | 2008年11月23日 - 2008年11月29日 »