Raspberry Pi は、電子エンジニアや愛好家向けに設計されたARMアーキテクチャプロセッサベースのボードです。PIは、現在最も信頼されているプロジェクト開発プラットフォームの1つです。より高速なプロセッサ速度と1GBのRAMを備えたPIは、画像処理やモノのインターネットなどの多くの注目を集めるプロジェクトに使用できます。
注目を集めるプロジェクトを行うには、PIの基本的な機能を理解する必要があります。 これらのチュートリアルでは、RaspberryPiのすべての 基本機能について説明します。各チュートリアルでは、PIの機能の1つについて説明します。このRaspberryPiチュートリアルシリーズの終わりまでに 、あなたは自分で注目を集めるプロジェクトを行うことができるようになります。以下のチュートリアルを実行してください。
- RaspberryPi入門
- RaspberryPiの構成
- LED点滅
- ラズベリーパイボタンインターフェース
- Raspberry PiPWM生成
- RaspberryPiを使用したDCモーターの制御
- RaspberryPiによるステッピングモーター制御
- シフトレジスタとRaspberryPiのインターフェース
このチュートリアルでは、ADC(アナログ-デジタル変換)チップをRaspberryPiにインターフェースします。私たちはアナログのすべてのパラメータを知っています。つまり、時間の経過とともに継続的に変化します。部屋のインスタンス温度を例にとると、室温は時間とともに連続的に変化します。この温度には10進数が付いています。しかし、デジタルの世界では10進数がないため、アナログ値をデジタル値に変換する必要があります。この変換プロセスはADC技術によって行われます。ADCの詳細についてはこちらをご覧ください:ADC0804の概要
ADC0804とRaspberryPi:
通常のコントローラーにはADCチャネルがありますが、PIの場合、内部にADCチャネルはありません。したがって、アナログセンサーをインターフェースする場合は、ADC変換ユニットが必要です。そのために、ADC0804をRaspberryPiとインターフェースします。
ADC0804は、アナログ信号を8ビットのデジタルデータに変換するように設計されたチップです。このチップは、ADCの人気シリーズの1つです。これは8ビットの変換単位であるため、値または0〜255の値があります。最大5Vの測定電圧で、19.5mVごとに変化します。以下はADC0804の ピン配置です:
ここでもう1つ重要なことは、ADC0804は5Vで動作するため、5Vロジック信号で出力を提供することです。8ピン出力(8ビットを表す)では、すべてのピンが論理「1」を表す+ 5V出力を提供します。したがって、問題はPIロジックが+ 3.3vであるため、PIの+ 3.3VGPIOピンに+ 5Vロジックを与えることができないことです。PIのGPIOピンに+ 5Vを与えると、ボードが損傷します。
したがって、ロジックレベルを+ 5Vから降圧するには、分圧回路を使用します。分圧回路については以前に説明しましたが、さらに明確にするために調べます。2つの抵抗を使用して、+ 5Vロジックを2 * 2.5Vロジックに分割します。したがって、除算後、PIに+ 2.5vロジックを与えます。したがって、ロジック「1」がADC0804によって提示される場合は常に、PIGPIOピンに+ 5Vではなく+ 2.5Vが表示されます。
Raspberry PiのGPIOピンについて詳しくは、こちらをご覧ください。以前のチュートリアルもご覧ください。
必要なコンポーネント:
ここでは 、Raspbian JessieOSでRaspberryPi2モデルB を使用しています。ハードウェアとソフトウェアの基本的な要件はすべて前に説明しましたが、必要なものを除いて、RaspberryPiの概要で調べることができます。
- 接続ピン
- 220Ωまたは1KΩ抵抗(17個)
- 10Kポット
- 0.1µFコンデンサ(2個)
- ADC0804 IC
- ブレッドボード
回路の説明:
+ 5vの電源電圧で動作し、0〜5Vの範囲の可変電圧範囲を測定できます。
ADC0804をRaspberryPIに接続するための接続は、上の回路図に示されています。
ADCには常に多くのノイズがあり、このノイズはパフォーマンスに大きな影響を与える可能性があるため、ノイズフィルタリングには0.1uFのコンデンサを使用します。これがないと、出力に多くの変動が生じます。
チップはRC(抵抗-コンデンサ)発振器クロックで動作します。回路図に示すように、C2とR20はクロックを形成します。ここで覚えておくべき重要なことは、ADC変換率を上げるためにコンデンサC2を低い値に変更できることです。ただし、速度が上がると精度が低下します。したがって、アプリケーションでより高い精度が必要な場合は、より高い値のコンデンサを選択し、より高速の場合は、より低い値のコンデンサを選択します。
プログラミングの説明:
回路図に従ってすべてが接続されたら、PIをオンにしてプログラムをPYHTONで作成できます。
PYHTONプログラムで使用するいくつかのコマンドについて説明します。
ライブラリからGPIOファイルをインポートします。以下の関数を使用すると、PIのGPIOピンをプログラムできます。また、「GPIO」の名前を「IO」に変更しているため、プログラムでGPIOピンを参照する場合は常に、「IO」という単語を使用します。
RPi.GPIOをIOとしてインポートします
時々、私たちが使おうとしているGPIOピンが他の機能をしているかもしれません。その場合、プログラムの実行中に警告が表示されます。以下のコマンドは、PIに警告を無視して、プログラムを続行するように指示します。
IO.setwarnings(False)
PIのGPIOピンは、ボード上のピン番号または機能番号のいずれかで参照できます。ボード上の「PIN29」のように「GPIO5」です。したがって、ここでは、ピンを「29」または「5」で表すことにします。
IO.setmode(IO.BCM)
入力ピンとして8ピンを設定しています。これらのピンで8ビットのADCデータを検出します。
IO.setup(4、IO.IN)IO.setup(17、IO.IN)IO.setup(27、IO.IN)IO.setup(22、IO.IN)IO.setup(5、IO.IN) IO.setup(6、IO.IN)IO.setup(13、IO.IN)IO.setup(19、IO.IN)
中括弧内の条件が真の場合、ループ内のステートメントは1回実行されます。したがって、GPIOピン19がハイになると、IFループ内のステートメントが1回実行されます。GPIOピン19がハイにならない場合、IFループ内のステートメントは実行されません。
if(IO.input(19)== True):
以下のコマンドは永久ループとして使用され、このコマンドを使用すると、このループ内のステートメントが継続的に実行されます。
一方1:
プログラムの詳細については、以下のコードセクションを参照してください。
ワーキング:
プログラムを作成して実行すると、画面に「0」が表示されます。「0」は入力で0ボルトを意味します。
チップに接続されている10Kポットを調整すると、画面に値の変化が表示されます。画面上の値は継続的にスクロールし続けます。これらはPIによって読み取られたデジタル値です。
ポットを中間点に到達すると、ADC0804入力に+ 2.5Vがあるとします。したがって、以下に示すように、画面に128が表示されます。
+ 5Vアナログ値の場合、255になります。
したがって、ポットを変更することにより、ADC0804入力の電圧を0から+ 5Vまで変更します。このPIを使用して、0〜255の値を読み取ります。値は画面に印刷されます。
これで、ADC0804をRaspberryPiにインターフェースしました。