RC回路を使って最も簡単にFPGAにセンサーを接続する方法注目デバイスで組み込み開発をアップグレード(23)(1/3 ページ)

注目デバイスの活用で組み込み開発の幅を広げることが狙いの本連載。今回は、RC回路を用いることで、FPGAに簡単にセンサーを接続する方法を紹介する。

» 2024年05月14日 07時00分 公開
[今岡通博MONOist]

はじめに

 筆者は「Sechack365」という若手セキュリティ高度人材育成事業にトレーナーという立場で関わっています。約1年を通してオンラインと対面を交えてトレーニングを行うのですが、実のところ教える立場であるトレーナーがトレーニーに育成されることも多々あります。

 今回のテーマは、Sechack365のトレーニーの質問からヒントを得たものであり、最も簡単にFPGAにセンサーを接続する方法となります。FPGAにセンサーを接続する場合、A-Dコンバーターを用いたり、SPI、I2C、UARTなどのインタフェースを使ったりするのが一般的ですが、今回は抵抗とコンデンサーから成るRC回路でセンサーのアナログ値を取得します。

⇒連載「注目デバイスで組み込み開発をアップグレード」のバックナンバー

用意するもの

 連載第18回第19回では、ブレッドボードにFPGA評価ボードの「Tang Nano 9K」とLEDドットマトリクス、十字キー、Aボタン、Bボタンを搭載したガジェット「dpad2」を紹介しました。

 今回はこのdpad2を用いますが、ガジェットの特徴である十字キー、Aボタン、Bボタンは使いません。別途用意する、後述のアナログセンサー、そして473k 16V 0.047μFのコンデンサーを使用します(図1)。

図1 図1 「dpad2」を用いて、FPGAのRC回路によるセンサーのアナログ値の取得を試す[クリックで拡大]

RC回路でアナログセンサー値を取得する仕組み

 RC回路のRとCは、抵抗とキャパシター(コンデンサー)に由来しています。英語では“A resistor-capacitor circuit”となります。

 図2に示すのが典型的な直列RC回路です。この回路のVinから電圧の入力があると、抵抗Rを通じてコンデンサーCに充電されます。コンデンサーへの充電が進むに従ってVcの電圧は上がっていきます。つまり、この回路はVinに入力した電圧がVcに出力されるまでには多少時間差が生じるという回路というわけです。これを応用して、ローパスフィルターやノイズ除去、またサージなどから高インピーダンス系の半導体の入力回路を保護する用途などに使われています。また、PWM(パルス幅変調)、要はD級アンプの波形整形にもこの回路が使われていますね。

図2 図2 RC回路[クリックで拡大] 出所:Wikipediaより、パブリックドメイン

 このRC回路は、抵抗Rの抵抗値とコンデンサーCの静電容量によって、Vinの入力電圧がVcに出てくるまでの遅延時間が決まります。もし、コンデンサーCの容量が一定であれば、抵抗Rの抵抗値が大きくなるほど遅延時間が大きくなります。また、抵抗Rの抵抗値が一定であれば、コンデンサーCの静電容量が大きくなるほど遅延時間が大きくなります。

 このRC回路の性質を利用して、アナログセンサーを抵抗RあるいはコンデンサーCに置き換えて、遅延時間をFPGAで計測することでアナログセンサーの値を同定する、というのが今回の試みになります。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.