差分
このページの2つのバージョン間の差分を表示します。
| 次のリビジョン | 前のリビジョン | ||
| elechobby:picdic:pic16f88:64 [2020/04/29 18:06] – 外部編集 127.0.0.1 | elechobby:picdic:pic16f88:64 [2025/10/17 14:29] (現在) – 外部編集 127.0.0.1 | ||
|---|---|---|---|
| 行 4: | 行 4: | ||
| 周波数をカウントするには、大きく二つの方式があります。 | 周波数をカウントするには、大きく二つの方式があります。 | ||
| * 直接計数方式\\ 一定の時間に何回のパルスが入力されたかをカウントする方式です。(一般的) | * 直接計数方式\\ 一定の時間に何回のパルスが入力されたかをカウントする方式です。(一般的) | ||
| - | * レシプロカル方式\\ 被測定パルスの立ち上がりから、次の立ち上がりまでの時間を計測パルスでカウントし、このカウント値を | + | * レシプロカル方式\\ 被測定パルスの立ち上がりから、次の立ち上がりまでの時間を計測パルスでカウントし、このカウント値を「時間→周波数変換」の式で計算する方式です。 |
| - | \\ 「時間→周波数変換」の式で計算する方式です。 | + | 直接計数方式では低い周期の測定の精度を高めるには時間がかかりますが、レシプロカル方式ですと、最低1周期分の測定で結果が得られます。 |
| - | 直接計数方式では低い周期の測定の精度を高めるには時間がかかりますが、レシプロカル方式ですと、 | + | |
| - | 最低1周期分の測定で結果が得られます。 | + | |
| ===== 動作原理 ===== | ===== 動作原理 ===== | ||
| PICのキャプチャ機能は、CCP1ピンの信号をトリガにして、その瞬間のタイマ1の値を記憶するものです。 | PICのキャプチャ機能は、CCP1ピンの信号をトリガにして、その瞬間のタイマ1の値を記憶するものです。 | ||
| これを利用して、波形の周期を測定します。 | これを利用して、波形の周期を測定します。 | ||
| - | CCP1ピンの入力のエッジがプリスケーラ指定回数入力されたことをトリガにして、16ビットカウンタのタイマ1 | + | CCP1ピンの入力のエッジがプリスケーラ指定回数入力されたことをトリガにして、16ビットカウンタのタイマ1の内容をコンパレータレジスタである、CCPRに取り込んで記憶します。 |
| - | の内容をコンパレータレジスタである、CCPRに取り込んで記憶します。 | + | |
| それと同時に割り込み信号CCP1IFをセットします。 | それと同時に割り込み信号CCP1IFをセットします。 | ||
| この時のCCPRの値より周波数へ換算します。 | この時のCCPRの値より周波数へ換算します。 | ||
| 行 30: | 行 27: | ||
| * 100Hzの時の精度→【小数点1桁】タイマ1のプリスケール値=1\\ 100.0000=1÷((5000× 2.0 )÷1000000)\\ 99.9800=1÷((5001× 2.0 )÷1000000)\\ 99.9600=1÷((5002× 2.0 )÷1000000) | * 100Hzの時の精度→【小数点1桁】タイマ1のプリスケール値=1\\ 100.0000=1÷((5000× 2.0 )÷1000000)\\ 99.9800=1÷((5001× 2.0 )÷1000000)\\ 99.9600=1÷((5002× 2.0 )÷1000000) | ||
| - | プログラム上で少し工夫をしてみました。タイマ1のオーバーフローを検出し、プリスケール値を自動的に最適 | + | プログラム上で少し工夫をしてみました。タイマ1のオーバーフローを検出し、プリスケール値を自動的に最適な値に設定します。 |
| - | な値に設定します。 | + | 例えば、3Hzを測定する場合に、プリスケール値が、1および2ではタイマーがオーバーフローしてしまいますが、これを自動的にプリスケール値を4に設定します。 |
| - | 例えば、3Hzを測定する場合に、プリスケール値が、1および2ではタイマーがオーバーフローしてしまいます | + | |
| - | が、これを自動的にプリスケール値を4に設定します。 | + | |
| ===== 回路図 ===== | ===== 回路図 ===== | ||
| 行 244: | 行 239: | ||
| いつものブレッドボードで確認しました。 | いつものブレッドボードで確認しました。 | ||
| {{: | {{: | ||
| + | |||
| 1Hzの信号を測定してみました。< | 1Hzの信号を測定してみました。< | ||
| {{: | {{: | ||
| {{: | {{: | ||
| + | |||
| 10Hzの信号を測定してみました。< | 10Hzの信号を測定してみました。< | ||
| {{: | {{: | ||
| + | |||
| 50Hzの信号を測定してみました。< | 50Hzの信号を測定してみました。< | ||
| {{: | {{: | ||
| + | |||
| 100Hzの信号を測定してみました。< | 100Hzの信号を測定してみました。< | ||
| {{: | {{: | ||
| + | <callout type=" | ||
| + | このページは稲崎様の閉鎖したHPのコピーで、著作権は稲崎様にあります。[[elechobby: | ||
| + | This page is a copy of Mr. Inasaki' | ||
| + | </ | ||