出産前後の痔にはご注意!

手元に、PIC18F2550を使って周波数をカウントする装置があります。
これの基準クロックに16MHzのクリスタルオシレータが使われているのですが、これの安定性や精度を上げるのはどうすればよいでしょうか。
今使っているのは、16.000と書いてありますが、これを16.000000などというように、精度を上げることは意味がありますでしょうか。
また、そもそもの周波数がPICは48MHzまで対応しているので、水晶の発振周波数を40MHzなどにすることも意味がありますでしょうか?

設計の考え方について、教えていただけませんでしょうか。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

部品仕様としては、周波数偏差(ずれ、Frequency Tolerance)が小さい物を選ぶことです。


16.000でも16.00000でも、仕様としてのずれが大きければ同じです。
通常この仕様の単位はppmで、一般的な電子機器に組み込む用途であれば、
発振器(発振回路込みの部品)で3~20ppm程度、
振動子(水晶のみがパッケージされた物)では10~100ppm程度をよく見ます。
ppmは100万分の1を示し、16MHzの20ppmでは、16×20÷1000000= 0.00032MHz= 320Hzまでのずれが
部品としての仕様となります。

周波数が安定しない(ずれる)外的要因の一つとしては温度があります。
水晶にも温度特性があり、低温~常温~高温では数ppm~数十ppmのずれが発生する可能性があります。
温度による影響は次に述べるコンデンサなどの構成部品による影響もあります。
この対策として出来ることは、温度特性の良い(温度による影響の少ない物)を選ぶか、
保証温度範囲の広い部品を選ぶことです。


また、水晶振動子では特に回路の構成部品の影響を強く受けます。
水晶の回路では一般的に数pF~数十pFのセラミックコンデンサをクロック回路に入れます。
このコンデンサの容量が周波数にてきめんに影響し、平気で100ppmくらい変わります。
通常はIC側に水晶容量が記載されいてその通りにすれば良いのですが、
基板やパターン、ICピンの浮遊容量の影響があるため、
ずれを小さくするためには細かい調整が必要です。

また、コンデンサ以外にEMI対策としてダンピング抵抗やインダクタを入れる場合もあります。
こちらは周波数というよりも波形に影響しますが、
RC,LCフィルタによって変な動きになる事もあります。

この回答への補足

とても細かで丁寧な説明、本当にありがとうございます。とても参考&勉強になりました。

私の説明が不足していたように思いますので、補足させていただきます。
周波数をカウントする装置、と書きましたが、絶対値を計測しようとして
いるわけではなく、センサー部品がはき出す周波数を、安定して表示して
いればそれでokなのです。1000Hzをカウントしたときに、1005Hzと表示さ
れるのは問題がなく、それがずっと1005Hzであってほしい、ということな
のです。

まずは、私が理解できて、とれる対策として「温度保証範囲の広い」水晶
を探してみます。

本当にありがとうございますm(..)m

補足日時:2010/04/16 19:45
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qクロック周波数の計算問題について

クロック周波数に関する問題を解こうとしているのですが、
公式がどうも覚えづらくて仕方ないのですが・・・ 何か良い解き方はないものでしょうか?

【問題】基本情報処理 平成19年 秋
 「 1GHzで動作するCPUがある。このCPUは,機械語の1命令を平均0.8クロックで実行できることが分かっている。このCPUは1秒間に約何万命令実行できるか。 」


【公式】
  (1) 1クロックの時間 = 1÷クロック周波数
  (2) 1命令の実行時間 = 1命令の実行に必要なクロック数×1クロックの時間
  (3) 1秒間の命令実行回数 = 1÷1命令の実行時間(命令)

---------------------------------------------------------------
【考え】
 公式より、
  (3)の答えを出したければ (2)が必要であり
  (2)の答えを出したければ (1)が必要である。
  
 であるから、先に(1)を求め (2)を求め (3)を最終的に求める。
 という風に解いてはいるのですが、教科書を見ながらだと解ける状態ですが、いざ時間を空けると公式を忘れてしまって、この手の問題が解けないことがあり、困っています。

  何か逆算みたいで、覚えづらいので一度覚えてもすぐに忘れしまうのですが・・・
 
  この問題をとく方法としては、一旦、解き方の流れを把握して、求め方を覚えるしかないでしょうか?


【ふとした疑問】
  この問題をしてふと思ったのですが、クロック周波数の計算事態は、実際にどこでどういう場面で使われるものなのでしょうか? 何だか、ただ問題を解いているようで、ちょっとイメージが浮いている感じがしているのです・・・(汗)
  

クロック周波数に関する問題を解こうとしているのですが、
公式がどうも覚えづらくて仕方ないのですが・・・ 何か良い解き方はないものでしょうか?

【問題】基本情報処理 平成19年 秋
 「 1GHzで動作するCPUがある。このCPUは,機械語の1命令を平均0.8クロックで実行できることが分かっている。このCPUは1秒間に約何万命令実行できるか。 」


【公式】
  (1) 1クロックの時間 = 1÷クロック周波数
  (2) 1命令の実行時間 = 1命令の実行に必要なクロック数×1クロックの時間
  (3) 1...続きを読む

Aベストアンサー

単純な問題なので解けた方がいいでしょう。公式で解こうとするから、忘れてしまうとか言っているが、公式の意味を考えた方がいい。
「一箱に1[kg]のひき肉が入っている。ひき肉の一粒が0.8[g]だとすると、一箱の中に何粒のひき肉があるか」という問題と同じだ。こんな問題に公式とか何とか言うか。

【公式】
  (1) 1クロックの時間 = 1÷クロック周波数
  (2) 1命令の実行時間 = 1命令の実行に必要なクロック数×1クロックの時間
  (3) 1秒間の命令実行回数 = 1÷1命令の実行時間(命令)
だね。
(3)に(2)、(1)を代入していけば、
1秒間の命令実行回数 = 1÷1命令の実行時間=1÷(1命令の実行に必要なクロック数×1クロックの時間)=1÷(1命令の実行に必要なクロック数×(1÷クロック周波数))

すなわち、

1秒間の命令実行回数=クロック周波数÷1命令の実行に必要なクロック数

になる。

言葉で書くとわかりにくいので、記号を使うと、

f:クロック周波数
n:1秒間の命令実行回数
t1:1命令の実行時間
c1:1命令の実行に必要なクロック数
t:1クロックの時間


t=1/f・・・(1)
t1=c1*t・・・(2)
n=1/t1・・・(3)
=1/(c1*t)=1/(c1*1/f)=f/c1

ついでに、答えまで書くと、

n=1*10^9/0.8=1.25*10^9

でしょう。

単純な問題なので解けた方がいいでしょう。公式で解こうとするから、忘れてしまうとか言っているが、公式の意味を考えた方がいい。
「一箱に1[kg]のひき肉が入っている。ひき肉の一粒が0.8[g]だとすると、一箱の中に何粒のひき肉があるか」という問題と同じだ。こんな問題に公式とか何とか言うか。

【公式】
  (1) 1クロックの時間 = 1÷クロック周波数
  (2) 1命令の実行時間 = 1命令の実行に必要なクロック数×1クロックの時間
  (3) 1秒間の命令実行回数 = 1÷1命令の実行時間(命令)
だ...続きを読む

Qプルアップ抵抗値の決め方について

ほとんどこの分野に触れたことがないので大変初歩的な質問になると思います。

図1のような回路でプルアップ抵抗の値を決めたいと思っています。
B点での電圧を4.1Vとしたい場合について考えています。その場合、AB間での電圧降下は0.9Vとなります。

抵抗値×電流=0.9Vとなるようにプルアップ抵抗の値を決めるべきだと考えていますが、この抵抗に流れる電流が分からないため、決めるのは不可能ではないでしょうか?

抵抗値を決めてからやっと、V=IRより流れる電流が決まるため、それから再度流れる電流と抵抗を調節していって電圧降下が0.9Vとなるように設定するのでしょうか。どうぞご助力お願いします。



以下、理解の補足です。
・理解その1
ふつう、こういう場合は抵抗値を計算するためには、電圧降下と抵抗に流れる電流が決まっていることが前提だと考えていました。V=IRを計算するためには、この変数のうち2つを知っていなければならないからです。
また、例えば5V/2Aの電源を使った場合、マイコン周りは電源ラインからの分岐が多いため、この抵抗に2A全てが流るわけではないことも理解しています。

電源ラインからは「使う電流」だけ引っ張るイメージだと理解しているのですが、その「使う電流」が分からないため抵抗値を決定できません。(ポート入力電流の最大定格はありますが…)


・理解その2
理解その1で書いたように、抵抗値を計算するためには、電圧降下と抵抗に流れる電流が必要だと理解しています。図2を例に説明します。Rの値を決めたいとします。
CD間の電圧降下が5Vであることと、回路全体を流れる電流が2Aであることから、キルヒホッフの法則より簡単にRの値とそれぞれの抵抗に流れる電流が分かります。今回の例もこれと同じように考えられないのでしょうか。

ほとんどこの分野に触れたことがないので大変初歩的な質問になると思います。

図1のような回路でプルアップ抵抗の値を決めたいと思っています。
B点での電圧を4.1Vとしたい場合について考えています。その場合、AB間での電圧降下は0.9Vとなります。

抵抗値×電流=0.9Vとなるようにプルアップ抵抗の値を決めるべきだと考えていますが、この抵抗に流れる電流が分からないため、決めるのは不可能ではないでしょうか?

抵抗値を決めてからやっと、V=IRより流れる電流が決まるため、それから再度流れる電流と抵抗を調...続きを読む

Aベストアンサー

NO1です。

スイッチがONした時に抵抗に流れる電流というのは、最大入力電流や最大入力電圧
という仕様から読めば良いのでしょうか。
→おそらくマイコンの入力端子の電流はほとんど0なので気にしなくてよいと思われます。
入力電圧は5Vかけても問題ないかは確認必要です。

マイコンの入力電圧として0Vか5Vを入れたいのであれば、抵抗値は、NO3の方が
言われているとおり、ノイズに強くしたいかどうかで決めれば良いです。
あとは、スイッチがONした時の抵抗の許容電力を気にすれば良いです。
例えば、抵抗を10KΩとした場合、抵抗に流れる電流は5V/10kΩ=0.5mAで
抵抗で消費する電力は5V×0.5mA=0.0025Wです。
1/16Wの抵抗を使っても全く余裕があり問題ありません。
しかし、100Ωとかにしてしまうと、1/2Wなどもっと許容電力の大きい抵抗を
使用しなければいけません。
まあ大抵、NO3の方が書かれている範囲の中間の、10kΩ程度付けておけば
問題にはならないのでは?

QPICはアセンブラとC言語のどちらにすればよいですか

PICマイコンをはじめるにあたって、アセンブラかC言語、どちらにしようか迷っていたところ、下記の知恵袋で「まだ、C言語に手を出していないのであれば、絶対にアセンブラーから学んで下さい。」

ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1386032198

と、書いてありました。実は以前よりC言語を勉強していたのですが、どちらにすればよいですか?
詳しくは上のサイトを見て頂きたいのですが、この知恵袋の回答者の方が言う「構造体・ポインター」の直前、アドレス・バイトとビット付近で現在つまずいていて、PICとまとめてC言語の書籍で補おうとしていたのですが、タイミングとしてはちょうど良いでしょうか?

C言語のレベルとしては、プログラミングで必ず出てくる、文章表示と繰り返し・条件分岐・論理演算くらいしかわかりません。

C言語とアセンブラ、現在の自分にどちらの方が適当かご教示ください。

Aベストアンサー

「繰り返し・条件分岐・論理演算」が分かっているならとりあえずプログラミングの入門は済んでいるようですね。この辺でアセンブラに手を出すのは面白いと思います。

ただ、アセンブラを学ぶにあたってPICマイコンは最悪です。
kabasanさんも「苦行以外の何物でもなく」とおっしゃっていますが、PICのアーキテクチャ(構造)は最近の流行から外れており、非常に癖があります。
私もPICはよく使っていますが、パズルとしての楽しさを求めてアセンブラを書いているように思います。
癖の詳細については割愛しますが、ざっと言うと「レジスタが1つのみ」「命令とデータのアドレスが別」「命令数が35個などと少ない」あたり。
なおこれはPICのうち、ベースライン・ミッドレンジ・Enhancedミッドレンジ・ハイエンド(PIC18)に当てはまります。
他の、PIC24・PIC32については上記の癖はありませんが、これらのPICはマイナーなので、あえてそれらを選ぶ理由はないように思います。
(PICを選ぶ理由は情報の多さと入手性のよさが主なので)

命令セットが素直なマイコンとしては、AVRマイコンが良いでしょう。PICに比べて情報が少ないのが難点ですが。
またARM(特にThumb命令セットのCortexM0(+)あたり)もよいですが、こちらも情報が少ないですし高性能なゆえの難解さがあります。
マイコンにかぎらずアセンブラを学びたいならx86という手もなきにしもあらず。命令セットは非常に複雑ですが、その分かゆいところに手が届く便利さがあります。情報が多いのも嬉しいところ。

「繰り返し・条件分岐・論理演算」が分かっているならとりあえずプログラミングの入門は済んでいるようですね。この辺でアセンブラに手を出すのは面白いと思います。

ただ、アセンブラを学ぶにあたってPICマイコンは最悪です。
kabasanさんも「苦行以外の何物でもなく」とおっしゃっていますが、PICのアーキテクチャ(構造)は最近の流行から外れており、非常に癖があります。
私もPICはよく使っていますが、パズルとしての楽しさを求めてアセンブラを書いているように思います。
癖の詳細については割愛しますが、...続きを読む


人気Q&Aランキング