注釈

こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!Facebook上で、仲間と一緒にRaspberry Pi、Arduino、ESP32をさらに深く探求しましょう。

なぜ参加するのか?

  • 専門的なサポート:購入後の問題や技術的な課題をコミュニティやチームの助けを借りて解決。

  • 学びと共有:スキルを向上させるためのヒントやチュートリアルを交換。

  • 限定プレビュー:新製品発表や予告編に早期アクセス。

  • 特別割引:最新製品の特別割引を楽しむ。

  • フェスティブプロモーションとプレゼント:プレゼントやホリデープロモーションに参加。

👉 私たちと一緒に探索と創造を始める準備はできましたか?[ここ]をクリックして、今すぐ参加しましょう!

レッスン06: ホールセンサーモジュール

注釈

Raspberry Piにはアナログ入力機能がないため、アナログ信号を処理するには PCF8591 ADC DACコンバータモジュール のようなモジュールが必要です。

このレッスンでは、Raspberry Piを使用してホールセンサーモジュールから読み取る方法を学びます。フォトレジスターモジュールをPCF8591に接続してアナログからデジタルへの変換を行い、Pythonを使用してその出力をリアルタイムで監視する方法を学びます。さらに、アナログ値を読み取り、それらを解釈して磁極の存在と種類を検出する方法も探ります。

必要なコンポーネント

このプロジェクトでは、以下のコンポーネントが必要です。

一式揃ったキットを購入すると便利です。リンクはこちら:

Name

ITEMS IN THIS KIT

LINK

Universal Maker Sensor Kit

94

Universal Maker Sensor Kit

以下のリンクから個別に購入することもできます。

Component Introduction

Purchase Link

Raspberry Pi 5

-

ホールセンサーモジュール

-

PCF8591 ADC DACコンバータモジュール

購入

ブレッドボード

購入

配線

../_images/Lesson_06_Hall_Sensor_Module_pi_bb.png

コード

import PCF8591 as ADC  # Import PCF8591 module
import time  # Import time for delay

ADC.setup(0x48)  # Initialize PCF8591 at address 0x48

try:
    while True:  # Continuously read and print
        sensor_value = ADC.read(1) # Read from hall sensor module at AIN1
        print(sensor_value,end="")  # Print the sensor raw data

        # Determine the polarity of the magnet
        if sensor_value >= 180:
            print(" - South pole detected")   # Determined as South pole.
        elif sensor_value <= 80:
            print(" - North pole detected")   # Determined as North pole.

        time.sleep(0.2)  # Wait for 0.2 seconds before the next read

except KeyboardInterrupt:
    print("Exit")  # Exit on CTRL+C

コード解析

  1. ライブラリのインポート:

    import PCF8591 as ADC  # Import PCF8591 module
    import time  # Import time for delay
    

    必要なライブラリをインポートします。 PCF8591 はADCモジュールとの対話に使用され、 time はループ内で遅延を実装するために使用されます。

  2. ADCモジュールの初期化:

    ADC.setup(0x48)  # Initialize PCF8591 at address 0x48
    

    PCF8591モジュールをセットアップします。 0x48 はPCF8591モジュールのI2Cアドレスです。この行で、Raspberry Piがモジュールと通信できるように準備します。

  3. センサーデータを読み取るメインループ:

    try:
        while True:  # Continuously read and print
            sensor_value = ADC.read(1) # Read from hall sensor module at AIN1
            print(sensor_value, end="")  # Print the sensor raw data
    

    このループでは、 sensor_value がホールセンサー(PCF8591のAIN1に接続)から継続的に読み取られます。 print ステートメントは、生のセンサーデータを出力します。

  4. 磁極の判定:

    # Determine the polarity of the magnet
    if sensor_value >= 180:
        print(" - South pole detected")   # Determined as South pole.
    elif sensor_value <= 80:
        print(" - North pole detected")   # Determined as North pole.
    

    ここでは、磁石の極性を判定します。 sensor_value が180以上の場合は南極と判断され、80以下の場合は北極と見なされます。これらのしきい値は、実際の測定結果に基づいて調整する必要があります。

    ホールセンサーモジュールは49Eリニアホール効果センサーを搭載しており、磁場の北極と南極の極性だけでなく、磁場の相対的な強さも測定できます。49Eと記された側(文字が刻まれている側)に磁石の南極を近づけると、コードが読み取る値は適用された磁場の強さに比例して直線的に増加します。逆に、北極をこの側に近づけると、コードが読み取る値はその磁場の強さに比例して直線的に減少します。詳細については ホールセンサーモジュール を参照してください。

  5. 遅延と例外処理:

    time.sleep(0.2)  # Wait for 0.2 seconds before the next read
    
    except KeyboardInterrupt:
        print("Exit")  # Exit on CTRL+C
    

time.sleep(0.2)``は各ループの反復間に0.2秒の遅延を作り、過剰な読み取り速度を防ぎます。 ``except ブロックはキーボード割り込み(CTRL+C)をキャッチして、プログラムを適切に終了させます。