Taga_castillo

アマ無線、電子工作、歴史(古代)、ゴルフ、スペイン語、他

電子メトロノーム(簡易版)

2016-11-09 23:03:39 | 電子工作
◎ 電子メトロノーム(簡易版)の製作

0.始めに
 機械式のメトロノームは、持ち運びが大変であり、机等の上に置いて利用す
る必要があります。
 それなら、電子式のメトロノームを作ってみようと言うことで、以前モール
ス発信器として利用したことがある梅澤無線電機の"ICブザー"キットを利用
することにしました。

1.製作
 キットのICブザーはCMOSの4001Bを使っており、トーン発振器とそれを断
続させるための発振器の2つ回路があって、消費電力はごく僅かです。
 キットの回路は、トーン周波数と断続周期は固定となっていますが、今回は
トーン周波数を変更できることとし、メトロノームとして使う範囲は手持ちの
部品(VR)を利用して上限を200[拍/分]程度としました。
 簡単な回路ですが、以下の通りです。


 イアホンで聞くことをメインとしVRで音量調整もできるようにしましたが、
キットに付属している圧電サウンダでも発振の確認ができるようにしたいと思
ったものの、VR(20Ω)を経由して接続するとインピーダンスが低すぎて全く聞
こえません。
 やむなく、ステレオ(2ch)用ジャックを使い、イアホン用のモノプラグを挿入
していないときはVRを経由しないで圧電サウンダに接続する回路としました。

 また、ケース等の制約から、トーン調整と音量調整は半固定VRとしてメトロ
ノームとして使用する断続周期を外から調整できるようにしてあります。
 実測したところ、約100~220拍/分を刻んでくれていますが、VRをも
う少し高抵抗のものにして50拍/分位から聞けるようにした方が良さそうで
す。
 製作したものは以下のようなものです。

LCDの表示Freq=発振Freq±Offset値(その1)

2013-06-03 22:59:13 | 電子工作
1.はじめに
DDS基板で発振周波数をLCD表示することができたものの、表示される周波数は発振周波数そのものなので、受信機のL-OSC等に使うと中間周波数との差分を計算して受信周波数を知る必要があります。そこで、SW等で差分の周波数(中間周波数等)を設定すると、発振周波数(f_osc)と差分の周波数(f_ofst)を加(減)算した周波数をLCDに表示させようと考えました。
できるだけ自分でやってみようと思い、友人に作ってもらったプログラムのソースを追ってみました。C言語は初めてなので全体像は分からないものの、処理を行なっているところはなんとなく分かるような気がしますが、やはりC言語の説明書を参照しないと詳細は分からないようです。
また、マイコン(PIC)については全く分からず、Microchip社のHPから"PIC18F14K50"について書いてある"PIC18F/LF1XK50"のデータシートをダウンロードしました。また、C言語もMicrochip社の"C18 C コンパイラ"のユーザガイドをダウンロードしましたが、両方とも日本語で書かれているものの、私にとっては一読して理解ができるものではありませんでした。

2.製作前の準備
書店に行き、PIC関連の本を探したところ、かなり多くの本が出版されている事が分かりました。ただ、C言語関連は"C18 C"を使ったものが見つからなかったので、友人も推薦していた後閑哲也さんの本で「8ピンPICマイコンの使い方がよくわかる本」と「C言語によるPICプログラミング入門」を購入し目を通しているところです。
PICのデータシートや購入本を拾い読みしてみると、PICは単なる処理装置(MPU)でなくI/O(入出力)等も付加されたコントロール装置(MCU)と言った方が良いことが分かりました。1つの端子に複数機能が割り当てられているので、それをコントロールするためにプログラム(C言語等)による設定が必要である、と言うことのようです。

また、Offset値はディップロータリー(DIP-R)SWを8個使用し8桁分(数十MHz迄)設定し、それをPICで取り込めば良いと考えましたが、PICの端子が足りないことからTTL(最近はCMOSですが)ICでパラレル→シリアル変換を行なわなければならないことが分かり、HP等からCMOS-Dig-ICを探したところ東芝のTC74HC165が見つかったのでこれを使うことにしました。

3.試作
最初からDIP-R-SWを8個とTC74HC165を4個取り付けてもうまく動作するかどうか分からないので、DIP-R-SWを3個、TC74HC165を2個使い、ブレッドボードで試してみることにしました。
DDS発振器(AD9834)を除いたコントロール側(PIC)をブレッドボードに組み、友人に作ってもらったソースプログラムに機能を追加すれば良いのではないかと考えました。プログラムは実際に動いており、PICに対する全体的な設定は既に記述されているので、追加する機能のところだけを考えれば良さそうです。
ただ、ブレッドボードに部品を配置しジャンパしようとするとジャンパしなければならない個所が多数あります。当初ジャンパ線が足りずに手持ちの線の被覆を剥いて作ったのですが接触不良の個所が出てしまい、結局ジャンパ線を購入しなければなりませんでした。

以下の写真のようにかなり込み入っています。



見にくいのですが、上部のボードの左端にUP/DWN-SWがあり、続いてのDIP-ICが"PIC18F14K50"、"TC74HC165"x2個、そしてLCDとなっています。またPICの下にはロータリーエンコーダあります。下部のボードにはDIP-R-SWが3個とトグルSWを置いています。
DIP-R-SWは右から"1","5","8"とセットしており、その値がLCDに1,580Hzと表示されています。これは、発振周波数を0Hz(!?)としてOffset値を表示させているのですが、受信機では10Hz未満のOffset値は必要ないだろうと考えて、その値は"0"に固定してあります。
そして受信機のL-OSCとして使う場合、受信周波数より中間周波数が高い場合と低い場合が考えられるので、この最下位(Hz単位)の4bit中の2bitを利用して、発振周波数からOffset値を減じてLCDに表示するか、あるいは加えて表示するかの判断ビットとし、トグルSWで変えられるようにしています。

プログラムとしては、DIP-R-SWの設定をTC74HC165を介して読み込む関数(30数行)を追加し、後は必要な所に追加・修正した行が20行弱となっています。
ただ、DIP-R-SWの設定を読み込めるようになったのですが、ロータリーエンコーダを回すと周波数の変化が一定にならなかったり飛んだりする場合が多発するので、おそらくDIP-R-SWを読み込むための関数を入れるところがまずいのかな等と思っていました。友人に相談したところ、ビット数が多ければ(今回は16bit)シリアルデータの読み込みは時間がかかるので、分割して読み込む等の工夫が必要だろうとのことでした。

まだまだ前途は多難なようです。


DDS基板による発振器

2013-05-03 16:17:04 | 電子工作
1.製作に至るまで
2012年夏にCQ出版社から「ディジタル周波数シンセサイザ基板」が発売され、"夢の発振器誕生! 20MHzまで1Hzきざみでピターッ! ほしい波形が一発で!"と説明されていました。素晴らしいと思ってHPを見たのですが、「USBマイコンが実装されており、パソコンに接続するだけで、すぐに使い始めることができます」と書いてあり、単独で動作させるのは難しいなと考えていました。
3.5MHzの受信機の製作が一段落した時、友人から「基板上のマイコンのソフトを書き換えると、LCD表示器とエンコーダーを追加するだけで発振器として動作する」と聞き、さっそく「ディジタル周波数シンセサイザ基板」(以降、"DDS基板"と呼びます)を購入してきました。

2.製作
本をざっと見てみましたが、DDS基板としては完成しており、どの様に使うか(使えるか)と言うことが書いてあるような気がしました。
DDS基板の配線図を見てみると、マイコンの"PIC18F14K50"とDDS-ICの"AD9834CRUZ"は(私としては)ブラックボックスですが、OP-Amp(ここでは"AD8051A")は3.5MHzの受信機で使ったので動作が分かります。
そこで、このDDS基板にLCD、エンコーダー、SW、そして出力用BNCを付け加えた回路図を教えてもらいましたが、追加部品が少なく配線は難しくないようです。

その回路図は以下の通りです(DDS基板内は、JP1、JP2への結線以外は簡略に記入しています)。



付け加えたハードを簡単に説明します。
・LCD表示器:上下2行にそれぞれ16文字を表示でき、"I2Cインターフェイス"と呼ばれるSCL(Serial Clock Input)とSDA(Serial Data Input)を使って文字を受取ります(蛇足ですが、I2は本来Iの2乗と書くそうですが、表示の都合でI2としています)。バックライト付なので、VRでコントラスト調整が行なえます。
・ロータリーエンコーダー:回転させることにより、A端子とB端子に90度位相差がある矩形波を出力し、マイコンがこの矩形波をカウントすることで周波数の変化分を決定します。
・SW:UPとDWNがあります。ロータリーエンコーダーで矩形波を出力して周波数を変化させますが、周波数のどの桁を変化させるかSWにより1桁ずつ上下させるものです(変化する桁が分かるようにLCD表示器にカーソルを表示します)。

なお、LCD表示器用の電源は入力DC5.0VからSiダイオード3個を経由し、約3.2Vを得ています(Siダイオードの種類により順方向降下電圧が微妙に違うので調整が必要です)。

ケースはタカチのYM-150を使い以下のように組んでみました。



アナログ回路は1つの信号が流れて行くイメージで配線して行くのですが、デジタル回路は複数の信号の行き来があるので配線にまとまりがなくなってしまいました。フラットケーブルやコネクタを上手に使った方が良さそうです。

さてソフトですが、私は30年程前にCOBOLに似た言語を使ったことはあるものの、その後Fujitsu等の8ビットパソコンでBASICを触った程度なので、今回は全く手が出ず全面的に友人にお願いしました。
当初からSWやエンコーダーによる発振周波数の変化は可能だったのですが、どうしてもLCD表示がうまく行きませんでした。何日もかけて試行錯誤を繰り返してもらった結果、SCLとSDAを経由してLCDへデータを送る時タイミング(ウエイト)等を調整してやっと周波数の表示が可能となりました。

次の写真は、発振周波数が9MHzちょうどを示しており、カーソルは1Hzの桁にあります。



3.応用
この位までの精度で周波数が分かれば様々な用途が考えられそうです。
まず3.5MHzの受信機のL-OSCに使えれば、無理をしてVXOの発振周波数を下げてドリフトがある状況から逃げられそうです。もっとも想定していなかったので、どの程度の手直しが必要かまだ分かりません。また、X-talフィルタの特性も、周波数をある程度細かく設定して出力を読んで行けば可能となりそうです。

特に受信機のL-OSCとして使う場合は、受信周波数をいちいち計算して出さなくても済むように、差分(IF周波数分)を差し引いた(ヘテロダイン方式によっては"加えた")周波数を表示させた方が良さそうです。
ソフト作りでいつまでも友人に迷惑を掛けるわけには行かないので、差分をSW等で設定すればLCDに表示される周波数が受信周波数になるようにソフトを追加・修正しようと思っていますが、ハードルはかなり高そうなのであせらずにやってみようと思っています。


過放電(前)アラーム装置

2013-01-12 22:10:47 | 電子工作
鉛バッテリの充電に太陽電池を使っており、"phocos"(充電コントローラ)を経由しています。ただ、使い続けていて過放電になってしまう可能性があるので、一定電圧以下になるとアラームが鳴動する装置を考えてみました。以前、6Vと12V兼用のものを作ったのですが、今回は12V専用として回路も簡単にし、そして低消費電力のものを製作してみました。
回路図は以下のようになっています(UM66T:メロディIC、圧電式サウンダを使用)。



トランジスタ(Tr)はNPN型(2SC945)を2個使っています。Trのベース(B)とエミッタ(E)間の電圧(V-BE)がほぼ0.6Vと一定であり、V-BEが0.6Vを超えるとTrは"ON"(コレクタ電流が流れる)となり、0.6Vより下がるとTrは"OFF"(コレクタ電流が流れない)ことを利用しています。

通常のバッテリ電圧(12V前後)の場合、左側のTrのV-BEは0.6Vより高くなるようにしておくとコレクタ電流(I-C)が流れるため(上側の)100kΩの抵抗で電圧降下を生じ、右側のTrのV-BEは0.6V以下となるので右側のTrは"OFF"となります。この場合、右側のTrにはI-Cが流れないため40kΩの抵抗の両端には電圧が生じません。つまり、圧電サウンダからメロディは出ないことになります。
バッテリを使い続けて行くと電圧が下がって行きますが、左側にある200kΩとVR(50kΩ)とで左側TrのV-BEが決まりますので、(例えば)10.8Vになった時にV-BEが0.6Vより低くなるようにVRを調整しておきます。
そうすると、左側のTrが"OFF"となるのでI-Cが流れず、右側のTrのV-BEは200kΩ(=100kΩ+100kΩ)と26kΩで決まることになります。バッテリ電圧が10.8Vとなった場合は約1.2Vとなるので右側のTrが"ON"となり、I-Cが流れるのでメロディICが接続されている40kΩの両端に電圧を生じます。この電圧を利用してメロディICを作動させて、圧電サウンダから音が出るわけです。

つまり、50kΩのVRでメロディが鳴動する電圧を設定しておき、バッテリ電圧がその設定電圧を下回った時にメロディICが動作し圧電サウンダから音が出ることになります。
常にバッテリに接続しておくことになるので、今回はなるべく消費電力を少なくしようとして大きめの抵抗(値)としました。鳴動電圧を10.8Vに設定した場合、消費電力はバッテリ電圧が13.0V(鳴動なし)で約185μA、10.7V(鳴動あり)で約230μAとなり、たまたまですがどちらも約2.5mWという極わずかの電力で動作させることができました。なお、"phocos"の消費電力が約15.6mW(=13.0Vx1.2mA)なので、それの約6分の1と言うことになります。

以下の写真のように組んでいますが、メロディICと圧電サウンダ以外は手持ちのものを使ったので抵抗は大きさもばらばらです。ケースは100円ショップで売っている最っとも小さい60x35x35mmのポリプロピレン製のものを使いました。



Desulfater(鉛バッテリ用)の製作

2013-01-04 00:30:30 | 電子工作
鉛バッテリは長い間放って置くと自己放電してしまい、負電極板上に硫酸鉛(サルフェーション)が付き充電しようとしても充電ができなくなってしまいます。2年程前に友人から6Vのバッテリを2個もらったのですが、1個が充電しようとしても電池容量が増えてくれず、また数年前に手に入れた12Vのバッテリも使わず放っておいたので、同様に充電することができませんでした。
捨てるのは簡単ですが回復させる方法がないかと探したところ、パルスを与えてサルフェーションを除去できる可能性があることが分かりました。"Desulfater"と呼ばれており、発生したパルスをバッテリに与えてサルフェーションを極板から除去するというものです。

さっそくいくつかの回路図を見てみましたが動作が良く分からず、書き直してみてやっとおぼろげながら理解することができました。製作した回路図は以下の通りで、理解するため書きなおした回路、あるいは発振で使うNE555の内部も付記してあります。



NE555で2500Hz程のパルスを発振させ、FETのゲートを"ON"、"OFF"させることでコイルに誘起電圧を発生させます。誘起電圧(逆起電力)e=-L(di/dt)なので結構高い電圧が発生することが予想されますが、実際は抵抗分があるので100V程度の耐圧で間に合うだろうと考えました。また、充電器を接続した上でDesulfaterも接続することになるので、発生したパルスで充電器側に影響を与えないようにパルスを減衰するためのコイルとコンデンサを入れる必要がありそうです。なお、コイルの定格電流は充電電流に耐えられるものが必要となります。

利用する場合、バッテリの劣化度合いにもよりますが、このDesulfaterは数日から数週間接続しておく必要があるようです。バッテリの両端をオシロで見ると最初は20Vを越す高いパルス電圧が見えますが、充電が進むと徐々にパルス電圧が下がって行きます。これはバッテリの内部抵抗が減っていくからだと考えられます。使用した結果ですが、6Vのバッテリは回復しなかったものの、数年放置した12Vのバッテリは定格の1/3程ですが回復しましたので、多少は有効であることが分かりました。

[参考資料、検討事項]
1.HP上のDesulfater回路
2.タイマIC555応用回路集、トラ技2011年1月号別冊付録
3.パワーMOS-FET(2SK2232)のデータシート
4.バッテリへのパルス供給回路