Arduinoを使用して自動車速測定を行う

参考記事:https://blog.csdn.net/qq_39097425/article/details/85245668

速度測定の原理:同じ特性を持つリードスイッチまたはホールセンサーを使用すると、磁石が近づくとトリガーされ、高レベルと低レベルの信号が生成されます。センサーをフレームにバインドし、ホイールに磁石を取り付けます。磁石を1回トリガーすると、1回回転したと見なされ、小学校の数学の知識を使用して1時間あたりの速度を取得することにより、ホイールの周囲長を取得できます。

リードパイプ:ここに画像の説明を挿入

ホールセンサ:ここに画像の説明を挿入

リードスイッチやホールセンサーなどの近接スイッチに加えて、振動スイッチを使用することができます。ペダルの内側にデバイスを固定し、ケイデンスを使用して速度を計算します(この方法は回転にのみ適しています)。また、ライダーのケイデンスも使用できます。

バイブレーションスイッチ:バイブレーションスイッチ

Arduinoコードは次のとおりです。

long lastturn;
float SPEED = 0;
float DIST;
float w_length = 2.050;
boolean isRun = false;

void setup() {
    
    
  pinMode(2, INPUT_PULLUP);
  Serial.begin(9600);               
  attachInterrupt(digitalPinToInterrupt(2), sens, FALLING);  
  lastturn = millis();
}

void sens() {
    
    
  if (millis() - lastturn > 50) {
    
    
    isRun = true;
    SPEED = w_length / ((float)(millis() - lastturn) / 1000) * 3.6;   
    lastturn = millis();                                              
    Serial.print("速度: ");
    Serial.print(SPEED);
    Serial.println(" km/h");
    isRun = false;
  }
}

void loop() {
    
    
  if ((millis() - lastturn) > 2000 && !isRun) {
    
        
    SPEED = 0;                             
    Serial.println("无速度");
    delay(1000);
  }
}

現在、既知の問題があります。低速走行時に2秒以上信号が得られない場合は、「速度なし」と表示されます。フロントエンドプログラムを作成することで、この問題を解消できます。

実際の効果は次のとおりです。ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/hp150119/article/details/110432134