デジタルピンのみでRaspberry Pi用低コスト赤外線近接センサーを構築
Raspberry PiボードはBroadcom BCM2835プロセッサー上で動作し、26の汎用入出力(GPIO)ピンを提供します。RPi.GPIOなどのPythonライブラリでこれらのピン制御は簡単ですが、Arduinoと比較して真のアナログ入力がないという顕著な制限があります。GPIOピンは厳密にデジタルです:出力に設定されたピンは0V(LOW)または3.3V(HIGH)のみを供給できます。入力に設定された場合、約0.8V未満はLOW、約1.3V以上はHIGHと解釈されます。
温度監視、距離測定、光強度検知など多くの実用用途では、基盤となる信号は本質的に連続的です。バイナリ「オン/オフ」出力に頼るだけでは不十分なことがよくあります。典型的な回避策は、MCP3008、TLC549、MCP23017などの外部アナログ-デジタルコンバーター(ADC)を追加することです。これらはSPIやI²Cで通信します。これらのチップは個別に安価ですが、市販センサーと組み合わせると総コストが20-30ドルになり、組み立てが大型化します—複数センサーを必要とするロボティクスプロジェクトでは問題です。
幸い、外部ADCを必要としないシンプルかつ効果的なアプローチが存在します。アナログ測定を時間ベースの信号に変換することで、Raspberry Piのデジタルピンで間接的に連続データをサンプリングできます。時間は本質的にアナログな量であり、この技術は古典的なRC(抵抗-コンデンサ)充電原理に依存します。
DIY赤外線近接センサー設計
回路は安価なコンポーネントのみを使用: 赤外線LED数個、フォトトランジスタ、2N3904 NPNトランジスタ、100nFセラミックコンデンサ、低電力抵抗。正確な部品番号は交換可能で、重要なのは正しい電気的特性を維持することです。
主要コンポーネント注記: 100nFコンデンサは、最適な安定性のために低プロファイルセラミックまたはクラス1セラミック/フィルムコンデンサにできます。
ハードウェアセットアップ
- 電源: +5VとGNDリードを外部5V電源に接続。GNDをRaspberry Piのグラウンドに接続。
- GPIO割り当て: 1つのGPIOピン(例:
PIN_A)をトリガー出力、もう1つ(例:PIN_B)を測定入力として選択。
測定原理
PIN_AをHIGHに駆動すると、赤外線LEDがターゲット面を照らします。反射光がフォトトランジスタを活性化し、反射強度に比例した電流を生成。この電流が2N3904トランジスタ経由でコンデンサを充電します。PIN_BでRaspberry Piのデジタル閾値をコンデンサ電圧が超えるまでの時間は、フォトトランジスタ電流と逆相関し、したがって反射物体までの距離に直接比例します。
Python制御フロー
# 1. コンデンサが完全に放電されていることを確認
GPIO.setup(PIN_B, GPIO.OUT)
GPIO.output(PIN_B, 0)
time.sleep(0.01) # 10msで200×RC(≈0.00005s)を超える
# 2. PIN_Bを入力モードに切り替え
GPIO.setup(PIN_B, GPIO.IN)
# 3. IR LEDをトリガー
GPIO.setup(PIN_A, GPIO.OUT)
GPIO.output(PIN_A, 1)
# 4. PIN_Bのロー持続時間を測定
counter = 0
start_time = time.time() * 1000 # ミリ秒
while GPIO.input(PIN_B) == 0 and counter < 1e4:
counter += 1
elapsed = time.time() * 1000 - start_time # elapsed(ms)≈ k × distance
4.3kΩ抵抗と100nFコンデンサで、RC時定数は0.43msです。2N3904がフォトトランジスタ電流を約150倍増幅し、活性化時に各LEDが約50mAを消費できるようにします。結果として得られる時間遅延elapsedは距離に線形にスケールし、専用ADCハードウェアなしでシンプルなアナログ-時間変換を提供します。
この手法は、従来のADCベース近接センサーに代わるコンパクトで低コストな代替手段を提供し、組み込みロボティクス、ホビイストプロジェクト、教育デモンストレーションに最適です。
製造プロセス
- 複数DS18B20 1-WireセンサーをRaspberry Pi接続で精密温度監視
- DS1820ワンワイヤー温度センサーをGPIOでRaspberry Piに接続する方法
- センサーデータをRaspberry Piに統合:実践ガイド
- HC-SR04超音波距離センサーをRaspberry Pi 3に接続 – 完全ガイド
- Raspberry Piでライントラッキングセンサー – シンプルなKY-033ドア/ライン検出器
- Raspberry Piで単一GPIOピンを使ってアナログセンサーを測定
- Raspberry Pi用DIY赤外線モーションセンサー構築 - ステップバイステップガイド
- ネイティブADCなしでRaspberry Pi上のアナログセンサーを測定
- DS18B20ワンワイヤーデジタル温度計をRaspberry Piに接続 - ステップバイステップガイド
- Raspberry Piでリニアホールセンサーを読み取り: JavaガイドとADC0832の知見
- Raspberry Piガイガーカウンター構築 - オープンハードウェア放射線センサーチュートリアル