- 必要なコンポーネント
- PCF8591 ADC / DACモジュール
- RaspberryPiのI2Cピン
- PCF8591 ADC / DACモジュールとRaspberryPiのインターフェース
- アナログ-デジタル変換(ADC)用のPythonプログラム
アナログからデジタルへの変換は、組み込み電子機器では非常に重要なタスクです。ほとんどのセンサーはアナログ値として出力を提供し、バイナリ値のみを理解するマイクロコントローラーにそれらを供給するため、デジタル値に変換する必要があります。したがって、アナログデータを処理できるようにするには、マイクロコントローラーにアナログ-デジタルコンバーターが必要です。
一部のマイクロコントローラーにはArduino、MSP430、PIC16F877AなどのADCが組み込まれていますが、8051、Raspberry Piなどの一部のマイクロコントローラーにはADCがなく、ADC0804、ADC0808などの外部アナログ-デジタルコンバーターICを使用する必要があります。以下に、さまざまなマイクロコントローラーを使用したADCのさまざまな例を示します。
- Arduino UnoでADCを使用する方法は?
- Raspberry PiADCチュートリアル
- ADC0808と8051マイクロコントローラーのインターフェース
- AVRマイクロコントローラーを使用した0-25Vデジタル電圧計
- STM32F103C8でADCを使用する方法
- MSP430G2でADCを使用する方法
- ARM7LPC2148でADCを使用する方法
- MPLABおよびXC8でPICマイクロコントローラのADCモジュールを使用する
このチュートリアルでは、PCF8591 ADC / DACモジュールをRaspberryPiとインターフェースする方法を学習します。
必要なコンポーネント
- ラズベリーパイ
- PCF8591ADCモジュール
- 100Kポット
- ジャンパーケーブル
最新のRaspbianOSがインストールされたRaspberryPiがあり、パテなどのターミナルソフトウェアを使用してPiにSSH接続する方法を知っていることを前提としています。Raspberry Piを初めて使用する場合は、この記事に従ってRaspberryPiの使用を開始してください。それでも問題が発生した場合は、役立つRaspberryPiチュートリアルがたくさんあります。
PCF8591 ADC / DACモジュール
PCF8591は、8ビットのアナログ-デジタルまたは8ビットのデジタル-アナログコンバータモジュールです。つまり、各ピンは最大256のアナログ値を読み取ることができます。ボードにはLDRとサーミスタ回路も備わっています。このモジュールには、4つのアナログ入力と1つのアナログ出力があります。 I 2 C通信で動作するため、シリアルクロックとシリアルデータアドレス用のSCLピンとSDAピンがあります。2.5〜6Vの電源電圧が必要で、スタンバイ電流が低くなっています。モジュールのポテンショメータのノブを調整することにより、入力電圧を操作することもできます。ボードには3つのジャンパーもあります。 J4はサーミスタアクセス回路を選択するために接続され、J5はLDR /フォトレジスタアクセス回路を選択するために接続されますJ6は、調整可能な電圧アクセス回路を選択するために接続されています。ボードD1とD2には2つのLEDがあります。D1は出力電圧の強度を示し、D2は供給電圧の強度を示します。出力または供給電圧が高いほど、LEDD1またはD2の強度が高くなります。VCCまたはAOUTピンのポテンショメータを使用してこれらのLEDをテストすることもできます。
RaspberryPiのI2Cピン
PCF8591をRaspberryPiで使用するには、最初にRaspberry Pi I2Cポートピンを認識し、RaspberrypiでI2Cポートを構成する必要があります。
以下はRaspberryPi3モデルB +のピン図であり 、このチュートリアルではI2CピンGPIO2(SDA)とGPIO3(SCL)が使用されています。
RaspberryPiでのI2Cの構成
デフォルトでは、I2CはRaspberryPiでは無効になっています。したがって、最初に有効にする必要があります。RaspberryPiでI2Cを有効にするには
1.ターミナルに移動し、sudoraspi-configと入力し ます。
2.これで、RaspberryPiソフトウェア構成ツールが表示されます。
3. [インターフェイスオプション] を選択して 、I2Cを有効にします。
4. I2Cを有効にした後、Piを再起動します。
RaspberryPiを使用してPCF8591のI2Cアドレスをスキャンする
PCF8591 ICとの通信を開始するには、RaspberryPiがそのI2Cアドレスを知っている必要があります。アドレスを見つけるには、最初にPCF8591のSDAおよびSCLピンをRaspberryPiのSDAおよびSCLピンに接続します。+ 5VピンとGNDピンも接続します。
次に、ターミナルを開き、以下のコマンドを入力して、接続されているI2Cデバイスのアドレスを確認します。
sudo i2cdetect –y1またはsudoi2cdetect –y 0
I2Cアドレスを見つけたら、回路を構築し、RaspberryPiでPCF8591を使用するために必要なライブラリをインストールします 。
PCF8591 ADC / DACモジュールとRaspberryPiのインターフェース
PCF8591とRaspberryPiのインターフェースの回路図は単純です。このインターフェースの例では、任意のアナログピンからアナログ値を読み取り、RaspberryPiターミナルに表示します。100Kポットを使用して値を変更できます。
VCCとGNDをRaspberryPiのGPIO2とGPIOに接続します。次に、SDAとSCLをそれぞれのGPIO3とGPIO5に接続します。最後に、100KポットをAIN0に接続します。ターミナルに表示する代わりに、16x2LCDを追加してADC値を表示することもできます。16x2LCDとRaspberryPiのインターフェースについて詳しくは、こちらをご覧ください。
アナログ-デジタル変換(ADC)用のPythonプログラム
完全なプログラム及び作業映像は、このチュートリアルの最後に与えられています。
まず、I 2 Cバス通信用の smbus ライブラリとタイムライブラリをインポートして、値を出力する間のスリープ時間を指定します。
インポートsmbus インポート時間
次に、いくつかの変数を定義します。最初の変数iのアドレスを含んでいる2 Cバスおよび第2の可変は、第1のアナログ入力ピンのアドレスを含みます。
アドレス= 0x48 A0 = 0x40
次に、ライブラリsmbusの関数SMBus(1)のオブジェクトを作成しました。
バス= smbus.SMBus(1)
今、中 ながら 最初の行は、第1のアナログ入力ピンにアナログ測定を行うためにICに伝えます。2行目は、アナログピンで読み取られたアドレスを変 数値に 格納します。最後に値を出力します。
Trueの場合: bus.write_byte(address、A0) value = bus.read_byte(address) print(value) time.sleep(0.1)
最後に、Pythonコードを.py entensionを含むファイルに保存し、以下のコマンドを使用してラズベリーパイターミナルでコードを実行します。」
python filename.py
コードを実行する前に、I 2 C通信が有効になっていて、すべてのピンが図に示すように接続されていることを確認してください。そうでない場合、エラーが表示されます。アナログ値は、以下のように端末に表示され始める必要があります。ポットのノブを調整すると、値が徐々に変化します。プログラムの実行の詳細については、
完全なPythonコードとビデオを以下に示します。