ほとんどすべての電子愛好家は、時計、カウンター、またはタイマーによって生成される信号の周波数を測定しなければならないというシナリオに直面したに違いありません。オシロスコープを使用して作業を行うことはできますが、すべての人がオシロスコープを購入できるわけではありません。周波数を測定するための機器を購入することはできますが、これらのデバイスはすべて高価であり、すべての人に適しているわけではありません。そのことを念頭に置いて、ArduinoUnoとSchmittトリガーゲートを使用して、シンプルでありながら効率的な周波数カウンターを設計します。
このArduino周波数カウンターは費用効果が高く簡単に作成できます。信号の周波数の測定にはARDUINOUNOを使用します。UNOはここでのプロジェクトの中心です。
周波数計をテストするために、ダミーの信号発生器を作成します。このダミー信号発生器は、555タイマーチップを使用して作成されます。タイマー回路は方形波を生成し、それがテストのためにUNOに提供されます。
すべてが整ったら、Arduino周波数計と方形波発生器を用意します。Arduinoは、正弦波、のこぎり波などの他の種類の波形を生成するためにも使用できます。
必要なコンポーネント:
- 555タイマーICおよび74LS14シュミットトリガーゲートまたはNOTゲート。
- 1KΩ抵抗(2個)、100Ω抵抗
- 100nFコンデンサ(2個)、1000µFコンデンサ
- 16 * 2 LCD、
- 47KΩポット、
- ブレッドボードといくつかのコネクタ。
回路の説明:
Arduinoを使用した周波数測定の回路図を下図に示します。回路はシンプルで、LCDはArduinoとインターフェースして、測定された信号周波数を表示します。「波入力」は信号発生器回路に送られ、そこからArduinoに信号を送ります。シュミットトリガーゲート(IC 74LS14)を使用して、方形波のみがArduinoに供給されるようにします。ノイズをフィルタリングするために、電力全体にいくつかのコンデンサを追加しました。この周波数計は、最大1MHzの周波数を測定できます。
信号発生回路とシュミットトリガについて以下に説明します。
555タイマーICを使用した信号発生器:
まず、555 ICベースの方形波発生器について説明します。つまり、555 AstableMultivibratorについて説明します。この回路が必要なのは、周波数計を設置した状態で、周波数がわかっている信号が必要だからです。その信号がなければ、周波数計の動作を知ることはできません。既知の周波数の正方形がある場合は、その信号を使用してArduino Uno周波数計をテストし、偏差がある場合は精度を調整するために調整できます。555タイマーICを使用した信号発生器の写真を 以下に示します。
非安定モードでの555の典型的な回路を以下に示します。これから、上記の信号発生器回路を導き出しました。
出力信号の周波数は、RA、RB抵抗、およびコンデンサCに依存します。式は次のように与えられます。
頻度(F)= 1 /(期間)= 1.44 /((RA + RB * 2)* C)。
ここで、RAとRBは抵抗値、Cは静電容量値です。上記の式に抵抗と静電容量の値を入れることにより、出力方形波の周波数が得られます。
上の図のRBは、信号発生器回路のポットに置き換えられていることがわかります。これは、より良いテストのために出力で可変周波数の方形波を取得できるようにするために行われます。簡単にするために、ポットを単純な抵抗器に置き換えることができます。
シュミットトリガーゲート:
すべてのテスト信号が方形波または長方形波ではないことはわかっています。三角波、歯波、正弦波などがあります。 UNOは正方形または長方形の波しか検出できないため、信号を長方形の波に変更できるデバイスが必要です。そのため、シュミットトリガーゲートを使用します。シュミットトリガーゲートは、算術演算および論理演算用に設計されたデジタル論理ゲートです。
このゲートは、入力電圧レベルに基づいて出力を提供します。シュミットトリガーの電圧レベルはTHERSHOLDであり、ゲートに印加されるINPUT信号の電圧レベルが論理ゲートのTHRESHOLDよりも高い場合、OUTPUTはHIGHになります。INPUT電圧信号レベルがTHRESHOLDより低い場合、ゲートのOUTPUTはLOWになります。通常、シュミットトリガーを個別に取得することはありません。常に、シュミットトリガーの後にNOTゲートがあります。シュミットトリガーの動作については、こちらで説明しています:シュミットトリガーゲート
74LS14チップを使用します。このチップには、6つのシュミットトリガーゲートがあります。これらのSIXゲートは、下図に示すように内部で接続されています。
反転シュミットトリガーゲートの真理値表を下の図に示します。これにより、端子で正と負の期間を反転するようにUNOをプログラムする必要があります。
ここで、任意のタイプの信号をSTゲートに供給し、出力に逆周期の矩形波を与え、この信号をUNOに供給します。
Arduino周波数カウンターコード説明:
arduinoを使用したこの周波数測定のコード は非常にシンプルで簡単に理解できます。ここでは、主に周波数の測定を担当する pulseIn 関数について説明します。Unoには特別な関数 pulseIn が あり、特定の矩形波の正の状態の持続時間または負の状態の持続時間を決定できます。
Htime = pulseIn(8、HIGH); Ltime = pulseIn(8、LOW);
与えられた関数は、宇野のPIN8に高レベルまたは低レベルが存在する時間を測定します。したがって、波の1サイクルで、正と負のレベルの持続時間がマイクロ秒単位になります。 pulseInの 機能は、マイクロ秒単位の時間を測定します。与えられた信号では、高い時間= 10mS、低い時間= 30ms(周波数25 HZ)があります。したがって、30000はLtime整数に格納され、10000はHtimeに格納されます。それらを合計すると、サイクル期間が得られ、それを反転することにより、頻度が得られます。
Arduinoを使用したこの周波数計の完全なコードとビデオを 以下に示します。