注釈
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
参加する理由は?
エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
特別割引:最新製品の独占割引をお楽しみください。
祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[ここ]をクリックして今すぐ参加しましょう!
赤外線速度センサモジュール(LM393)
概要
LM393モジュールは、赤外線(IR)トランスミッターと受信機を備えたIRカウンタです。これらのセンサーの間に何らかの障害物が置かれると、マイクロコントローラに信号が送られます。このモジュールは、モーターの速度検出、パルスカウント、位置制限など、マイクロコントローラと連携して使用することができます。
原理
LM393モジュールは、H2010フォトセルを1つ備えています。このフォトセルは、フォトトランジスタと赤外線発光ダイオードが一体になっていて、幅10cmの黒いプラスチックハウジングに収められています。
動作時には、赤外線発光ダイオードが連続して赤外線(目に見えない光)を発生させ、この光を受けた場合、感光性トライオードが導通します。
使い方
使用する電子部品
Arduino Uno R4 または R3 ボード * 1
赤外線速度センサモジュール * 1
ジャンパーワイヤー
回路の組み立て
コード
コードの説明
ピンの設定と変数の初期化。ここでは、モーターと速度センサーのピンを定義し、モーターの速度を測定および計算するために使用する変数も初期化します。
// Define the sensor and motor pins const int sensorPin = 11; const int motorB_1A = 9; const int motorB_2A = 10; // Define variables for measuring speed unsigned long start_time = 0; unsigned long end_time = 0; int steps = 0; float steps_old = 0; float temp = 0; float rps = 0;
setup()関数内での初期設定。ここではシリアル通信を設定し、ピンのモードを設定し、初期のモーター速度も設定します。void setup() { Serial.begin(9600); pinMode(sensorPin, INPUT); pinMode(motorB_1A, OUTPUT); pinMode(motorB_2A, OUTPUT); analogWrite(motorB_1A, 160); analogWrite(motorB_2A, 0); }
loop()関数内でモーターの速度を測定します。この部分では、1秒間におけるモーターのステップを測定します。それらのステップは、回転数(rps)を計算するために使用され、シリアルモニターに出力されます。void loop() { start_time = millis(); end_time = start_time + 1000; while (millis() < end_time) { if (digitalRead(sensorPin)) { steps = steps + 1; while (digitalRead(sensorPin)) ; } } temp = steps - steps_old; steps_old = steps; rps = (temp / 20); Serial.print("rps:"); Serial.println(rps); }
追加のアイデア
rpsをLCDスクリーンに表示して、よりユーザーフレンドリーなインターフェースを提供する。