カテゴリー「趣味の電子工作」の150件の記事

2016年3月 8日 (火)

PICで作る100MHz周波数カウンタ検証用XOR(エクスクルーシブオア)逓倍器

前記事PICで作った100MHz周波数カウンターの動作検証で不思議な現象で周波数カウンタの動作検証をしました。水晶発振器の出力とそれを(二)逓倍器に入力したときの出力の倍数関係を確認するというものでした。

逓倍器にはいろいろ作り方があると思います。C級増幅器+同調回路とか私が大好きな四象限アナログ乗算器EL4083CNとか。

こういうのはアナログ回路ですから、つい最近までJJY・40kHzあたりで生きてきた私には荷が重そうです。そこでデジタル回路的手法でやってみました。

XORを考えます。
Cm00

AとBに位相の異なる(90度違った)信号を入れます。
Cm00a

これで入力信号の2倍の周波数の(=パルス数が二倍の)出力が得られます。念のために書いておきますが、上の例はBが90度遅れています。でもAがBに対して270度遅れているとか、BがAに対して450度遅れているとか解釈は自由です。そう考えると作り方の自由度が上がります。

ここで問題になるのはどうやって位相が異なる信号を作るかです。

今48MHzの信号源ですから周期は20.8ns、パルス幅は10.4nsということになります。つまりBの方をAに対して5.2ns遅らせばいいことになります。最初に考えたのはリングオッシレーターのとき出てきたゲート回路での遅延です(PICのタイマー(T1CKI)の使用可能最大周波数 - あるいはリングオッシレーターの発振周波数

試しにTC74HC86APでリングオッシレーター(1段)を作り発振周波数を調べてみたら78MHzでした。ということは遅延時間は6.4nsです。5.2nsとはちょっと違いますが遅延回路として使えないことはなさそうです。

続きを読む "PICで作る100MHz周波数カウンタ検証用XOR(エクスクルーシブオア)逓倍器" »

2016年3月 6日 (日)

150MHz(~200MHz?)周波数カウンター用プリスケーラー(1/4分周器)

インバーターSN74HC04N で作ったリングオッシレーターは1段だと100MHz近い周波数の出力になります。さらにディレイの小さいインバーターで試してみようと思うのですが、そうなると周波数が測れません。PIC18F26K22 で作った周波数カウンターも測定対象が100MHzあたりになるとなんとなくあやしくなるからです。

そこでより高い周波数が測れるようにプリスケーラーを作ってみました。ほんとうは300MHzくらいまで測れるようにできたらいいのですが、ひとまず手近にある材料で作ってみることにします。プリスケーラーですから1/10分周あたりが使いやすいと思いますが、今回はDフリップフロップを2個使った1/;4分周器です。PICなんかで周波数カウンターを作っている場合カウント数を左に2ビットシフトするだけですから別に問題はないと思います。

とうぜん74HC74 あたりだとあんまり期待できないと思うので今回はTC74LCX74F(Dフリップフロップ:2個入り)を使います。

  3.3Vで動作(動作条件は1.7V~3.6Vくらいです)
  最高動作可能周波数の最小値は(所定の条件で)150MHz。
    (あくまで“最小”が150MHzです)
  3.3V動作でも入力信号は5VまでOK、VCC=0Vで信号を与えてもOK。
    (これはデータシートに動作条件として示されているものです)
  千石電商で一個 84円
    (マルツは一個 60円ですが、在庫なさそうです)

と使いやすくて性能のいいDフリップフロップです。動作可能周波数は最小だけ記載されており標準、最大は示されていません。最小が150MHzとすると常識的(?)に考えて170MHz~180MHzくらいは問題なく動きそうですし、データシートの測定条件はたいていちょっと厳しめな印象なので注意して使えば200MHzくらい行くんじゃなかろうかという期待もあります(タイトルの“~200MHz?”というのはそういう意味です)

それから型番が似ているものに TC74LCX74FT というのがありますが,、これは上級者向けです。

回路はいたって簡単でこれだけです。
Tc74lcx74fcm

他に /CLRと/PRがありますが、これらはVCCに接続します。

続きを読む "150MHz(~200MHz?)周波数カウンター用プリスケーラー(1/4分周器)" »

2016年3月 1日 (火)

測温抵抗体(Pt100、白金薄膜温度センサー)の抵抗値を温度に変換する(平方根を使わない)計算式

まず、悲しいお知らせから。秋月電子通商での白金薄膜温度センサの取り扱いがなくなったようです。正確な温度を知りたいというニーズはあんまりないんでしょうか。RS-Onlineはだいじょうぶだと思いますが....

--------

“平方根を使わない”とわざわざ断っているのはPICでmath.hをインクルードしたくない方向けとの意味合いです。もっとも0℃以下の式は(以前、三次式と誤解していたのですが)四次式で解析的に解くのはけっこう面倒なんじゃないかと思います。

------

この記事の式は

  (白金)測温抵抗体(白金薄膜抵抗)の使い方 - 基礎編というか入門編というか....

に書いたものをもとにしています。(0℃以上の場合で平方根を使う計算式もこの記事にあります)が、今回プログラム向きに直したところもあります。

基準抵抗値は100Ωで温度係数が3850ppm/℃(0℃~100℃)のものを対象にしています(入手しやすいものはたいていこれに該当すると思います)

以下を基準抵抗値R0の測温抵抗体の温度Tのときの抵抗値Rを求める計算式と抵抗値Rから温度Tを求める計算式です。温度はすべて摂氏です。

続きを読む "測温抵抗体(Pt100、白金薄膜温度センサー)の抵抗値を温度に変換する(平方根を使わない)計算式" »

2016年2月27日 (土)

GPS/JJY(標準電波)を基準周波数源とするためのPLLの詳細

最近GPSやJJYを基準周波数源として測定を行うという記事を書いています。どのような方法で測定しているかはブロックダイアグラムを示しているのですが、特に重要と思われるPLLの部分について回路やプログラムを含めて詳しく書きたいと思います。

基本JJY用なのですが、GPS受信モジュール(というかu-bloxの)TIME PULSE出力にもそのまま使っています。

まずPLL部分ブロックダイアグラムから
(全体のブロックダイアグラムは続・GPS/1PPSで標準電波/JJYの位相変動(周波数変動)を調べてみたにあります)

Bdpll

PFDに使っているCD4046BEはPLL用ICであってVCOも内蔵しています。しかし今回の目的には使えないので、PFDの部分だけ利用しVCOにはVM39S5G(「超高精度・温度補償型水晶発振器VCTCXO・VM39S5G」を使ってみる - 1)を使用します。

ふつう位相検波出力(PFD出力)をCR-LPF(あるいはアクティブフィルター)で構成されたループフィルターを通してVCOの入力とするわけですが、図にあるようにPFD出力をいったんPICで処理してからVCOに与えています。

CD4046BEにはPFD出力が二つあります。Phase Comparator I OutPhase Comparator II Out です。今回はPhase Comparator II Outの方を使っています。

Phase angle between signal and comparator inputs Always 0 degrees in lock となるからです。位相差を正確に比較するという意味ではこれはとても重要です。

参考までに書いておくとPhase Comparator I Outには

enables a PLL system to remain in lock in spite of high amounts of noise in the input signal

という利点があります。これ以外にもそれぞれいろいろ特徴(利点・欠点)があり、目的に応じて適当な方を選びます(じつはこれまでの実験結果は Phase Comparator I Out を使ったものが多いです)

続きを読む "GPS/JJY(標準電波)を基準周波数源とするためのPLLの詳細" »

2016年2月21日 (日)

GPS受信モジュール1PPS対決 - GE-612T vs GM-5157A

セット優先(リセット優先)RSフリップフロップのテストを兼ねてGPS受信モジュールGE-612T/1PSとDS3234/1PPSの比較を前記事(超高精度SPIバスRTC(リアルタイムクロック)DS3234Sは一ヶ月に0.2秒進む)で行いました。これはGPS受信モジュールの1PPS出力が正しいという前提です。

今回はおそらく同程度の確度があるだろうと思われるGPS受信モジュール同士の比較です。ただタイトルには“対決”と書いてしまったのですが今のところどちらが正しいか判定するための材料がなくて単に比較してみましたというだけの記事になっています。

それから今回の比較ではGM-5157Aの出力にコンパレーターが入っています。コンパレータはゲートとは違って遅延が大きいのでフェア(?)ではないのですが、ぎしぎしに組んであって外すのが難しいことと、片方がちょっと遅延していた方が比較しやすいということでそのままにしてあります。ほんとうはコンパレータを入れる場所を交換して測定するというのが測りやすくまた正確な結果が得られると思います。

ブロックダイアグラム
Bd2

続きを読む "GPS受信モジュール1PPS対決 - GE-612T vs GM-5157A" »

超高精度SPIバスRTC(リアルタイムクロック)DS3234Sは一ヶ月に0.2秒進む

秋月電子通商で製品タイトルに「超高精度」が付いている二つの製品のうちの一つ「超高精度SPIバスRTC(リアルタイムクロック)DS3234S」がどの程度「超高精度」か確かめてみました(キャリブレーションはたぶん一年くらい前に行いました。そのときのAging Offsetの設定値は23、0x17で、これまで一度も変えていません。)

セット優先RSフリップフロップとリセット優先RSフリップフロップ(RS-FF)を作ったのでそのテストを兼ねています。

--------

次のようなブロックダイアグラムで測定しています。途中で面倒になったのでかなり省略してあります。

Bd

続きを読む "超高精度SPIバスRTC(リアルタイムクロック)DS3234Sは一ヶ月に0.2秒進む" »

2016年2月20日 (土)

セット優先RSフリップフロップとリセット優先RSフリップフロップ(RS-FF)

二つのGPS受信モジュールの1PPSの出力タイミングがどのくらい違うとか、GPS/1PPSとJJY/秒信号のタイミングの差を調べたいということがあります。

Test_2

ここでt1を知りたいわけです。

続きを読む "セット優先RSフリップフロップとリセット優先RSフリップフロップ(RS-FF)" »

2016年2月 4日 (木)

GPS受信モジュールNEO6M-ANT-4PのTIMEPULSE出力の周波数安定度

これは何度か記事にしたのですが、ちょっと消化不良だったので再度実験してみました。

GPS受信モジュールの1PPS・TIMEPULSE出力は積分時間を長くすればそれに比例して確度が向上すると思われます。これは疑う理由は考えられず、それを否定するような実験結果もありません。

だから、TIMEPULSEを基準にPLLでVCOをロックすれば高精度の発振器ができるはずだ、となるのですが、短時間でのTIMEPULSEの安定度には若干疑問があります。そこで実際にどんな感じなのか確かめようというのがこの実験です。

-------

GPS受信モジュールはGPS受信モジュールNEO6M-ANT-4Pはまじおすすめ、でももう在庫切れ (^^;;に書いたNEO-6Mです。1PPS(TIMEPULSE80kHz)端子に80kHzを出力させこれを4分周した20kHzを基準周波数に使っています。

VCOはVM39S5Gを使っており12.8MHzを640分周して20kHzにしています。

PFDはCD4046BEのものを使っています。出力が安定してそうな Phase Comparator I Out の方を使っていますが、後で出てくるグラフで位相差が時間とともに変化しているのはこれが原因と思われます。もう一つPhase Comparator II Out というのがあってこちらは位相差が常にゼロになるようです。

ループフィルターは時定数が100秒程度のものですがPFD出力はADコンバータで毎秒1回測定し、これを平滑化した上でループフィルターに入れています。

なぜ20kHzと低い周波数にするのかとか、なぜS&Hや平滑化が必要なのかと思われるかもしれませんが、雑音や秒信号+狭帯域フィルターの影響が避けられないJJYの40kHzを基準にPLLを使うことを考えているのでこういう方式にしています。40kHzでなく20kHzにしているのは現在のJJY受信機の方式では得られる40kHzの矩形波のデューティー比が50%にならないことと40kHzの信号を引き回すとアンテナに回り込んでしまうためです(20kHzは矩形波なら40kHzの成分はほとんどありません)

---------

まずPFD出力とVCO入力電圧のグラフです。
Neo6mvsvm39s5gpfdvco

続きを読む "GPS受信モジュールNEO6M-ANT-4PのTIMEPULSE出力の周波数安定度" »

2016年1月29日 (金)

分解能0.1mmの超音波距離計(ノギス)の製作 - 原理とその検証

超音波距離計の製作記事はいろいろありますが、超音波の反射に要する時間を測って距離を求めるというタイプが多いように思います。 (説明が詳しくわかりやすいものから)一例をあげると

 「きむ茶工房ガレージハウス  - PICの動かせ方入門  - 超音波センサーで物体の距離を測ってみます
 「
きむ茶工房ガレージハウス  - Arduinoの動かせ方入門  - 超音波センサーで物体の距離を測ってみます

------

今回はそれとは違った位相差を使って距離を測る方法です。位相差(干渉)を利用する方法は(音ではなく光ですが)重力波望遠鏡KAGRAでも使われていますが、分解能がとても高いです。タイトルには0.1mmと書きましたがしっかり作れば条件次第では0.01㎜も可能なんじゃないかというような気がしてきました。

ただ(距離を測るためのものなので距離計には違いないのですが)距離計というよりノギスやマイクロメーターの代わりに使うようなものです。

なお干渉を使う方法というと疑問を持つ方もいらっしゃると思います。

 1. 波長より長い長さは測れないのではないか?
 2. 温度や湿度の影響で音速が変化し分解能に見合う不確かさが確保できないのではないか?

このどちらにも解決する方法はいくつかあると思います。

これらは原理的な問題ですが、実装上の問題もあります。例えば

 3. 超音波送受信ユニットの位相特性の温度による変化の影響はないか?

というようなものです。こういうのは実際に作ってみないとなんとも言えません。

-------

位相差の測定は干渉を使ってもいいと思いますが、ここでは直接的に位相差を測定する方法を採用します。超音波送信器に送る信号を基準に超音波受信器から得られた信号をベクトル電圧計で測る方法です。

具体的な方法は複素数としての電圧・電流を測る方法 - 原理ベクトル電圧計の製作に向けて - 交流電圧計(ミリバル)に書きましたが、今回は測定方法の検証という意味で単一の位相でのみ電圧を測定しています。

Photo

今回もアナログ乗算器としてEL4083CNを使っています。これは秋月でも扱っているのでそんなに特殊なものでもないのですが、ちょっとお高めです。この部分は同じく秋月で扱っているバランスド・変調/復調回路NJM1496Dで実現できないか検討中です。NJM1496Dだと一個100円です。

続きを読む "分解能0.1mmの超音波距離計(ノギス)の製作 - 原理とその検証" »

2016年1月25日 (月)

FMステレオトランスミッタの製作 - マトリックス回路は半分だけ作る

1kHz~30MHzオシレータ LTC1799で作る簡単FMトランスミッタから始めたFMトランスミッタですが、いつの間にかコルピッツ発振回路を使ったFMステレオトランスミッタになってきました。

現在こんな状況です。
Fmstereoprot1000_3

ブレッドボード上で動かすと動作がけっこう微妙(敏感?)なところもあり、そろそろ基板にちゃんとはんだ付けした方がいいと思うのですが、回路的にヘンなんじゃないかと気になるところもまた多くそのままになっています。

じつはこれまで38kHz/19kHzはGPS受信モジュール(NEO-6M)の出力を使っていました。面倒くさくなって今回からLMC555を使った発振器の出力を使うことにしました。

受信機側では検波出力に含まれる19kHzのパイロット信号を基準にして復調を行うので少しくらい(数十Hz~百数十Hz?、どこまでだいじょうぶかは受信機によると思います)違っていてもかまわないのですが、限度というものはあるわけで、さすがにLMC555ではつらいです。こうなってくるとどっちが面倒くさいのかよくわかりません。

おそらくコンデンサの温度特性が悪いのが原因だと思います。そういえばPETとPPSを組み合わせて温度係数をゼロにする構想がありました (^^;;

  「フイルムコンデンサ・静電容量の温度特性 - PPS(ポリフェニレンスルフィド)とPET(ポリエステル)
  「
メタライズドポリエステルフィルムコンデンサの温度係数を測ってみた

続きを読む "FMステレオトランスミッタの製作 - マトリックス回路は半分だけ作る" »

より以前の記事一覧

フォト

サイト内検索

  • 記事を探されるんでしたらこれがいちばん早くて確実です。私も使ってます (^^;; 検索窓が表示されるのにちょっと時間がかかるのはどうにかしてほしいです。

新着記事

リンク元別アクセス数

  • (アクセス元≒リンク元、原則PCのみ・ドメイン別、サイト内等除く)

人気記事ランキング

  • (原則PCのみ、直近2週間)
無料ブログはココログ