すでに説明したように、発振器は、時計の振り子や音叉などの繰り返しパターンで動く装置です。コンピュータなどの現代のデバイスでは、クロック速度を設定するために、通常数百万、数十億ヘルツ (MHzおよびGHz) 単位のはるかに高速な 発振器 が必要です。また、コンピュータには、Arduino製のものなどの マイクロコントローラ 開発ボードが含まれています。
Arduinoクロック速度
設定に応じて、さまざまな速度設定の開発ボードを見つけることができます。以下にいくつか例を挙げます。
- Arduino Uno: 16MHz
-「クラシック」Arduino Nano: 16 MHz (新世代では速度が異なります)
- MKR Wi-Fi 1010: 48 MHz
- メガ2560: 16 MHz
- 期限: 84 MHz
ほとんどの単純なアプリケーション(センサー入力に基づいて「スイッチ」を切り替えるなど)では、これらの速度のいずれかで十分です。場合によっては、電力を節約するためにクロック速度を低くする方がよいこともあります。
Arduino Uno水晶発振器の構成
Arduinoボードはさまざまな発振器構成を使用します。Unoボードには、USB-Bポートの横に非常に目立つ水晶発振器が搭載されています。上の画像に示されているように、「T16.000」マークは、デバイスが16 MHzで発振することを示しています。興味深いことに、この発振器は、ATmega328Pマイクロコントローラではなく、コンピューターとのインターフェイス時にUSBからシリアルへの変換を実行するデバイスのATmega16マイクロコントローラを制御します。後者のマイクロコントローラは、ボードの使用時にロジックを処理します。ATmega328P発振器の例
セラミック共振器はATmega328Pのクロック信号を生成しますが、この発振器は水晶ベースのものよりも精度が低くなります。この小さなコンポーネントは、上のUno画像の「ITAL」の文字の真下にあり、16 MHzで共振し、定格精度は ±.5% です。
私たちの経験では、これらの仕様は通常の使用には十分であり、特にデバイスまたはアプリケーションが2分ごとに1秒の遅延に悩まされることがない場合は十分です。ただし、ATmega328Pは、高精度のタイミング アプリケーションや、より長い期間にわたって動作する必要がある場合には適さない可能性があります。
さらに詳しく見てみましょう。1日は86,400秒なので、0.5パーセントの偏差は432秒、つまり7.2分になります。搭載されている水晶発振器の偏差はおよそ0.003パーセントで、これは1日あたり約2.6秒になります (ただし、この信号をプログラムのタイミングに使用することはできません)。それ以上の精度が必要な場合は、別のソリューションを検討する必要があります。
RTCモジュールを内蔵したArduino
ATmega328Pの共振器は高精度を誇っていませんが、これはほとんどの通常の状況には影響しません。ATmega328Pの設計は、振動を維持する負荷コンデンサが デバイス内に組み込まれているため、製造コストを節約できるという利点があります。アプリケーションで数週間または数か月にわたるタイミング精度が求められる場合は、リアルタイム クロック モジュール (RTC) と呼ばれるセカンダリ タイミング デバイスを実装する必要があります。前述のMKR Wi-Fi 1010のように、一部のボードにはこの機能が組み込まれているため、ボードを選択する前に要件を考慮してください。
RTCが搭載されていないボードを検討している場合は、RTCを追加するのに比較的安価です。RTCを追加すると、不要な機能に料金を支払うことなく、ニーズに合ったモジュールを選択することもできます。これらのボードには、一時的に電源が切れた場合に備えてバッテリー バックアップが付属しています。GPSモジュールを使用して時間を追跡したり、Wi-Fiに接続している場合はネットワーク設定を使用したりすることもできます。