使用Arduino制作自动车测速

参考的文章:https://blog.csdn.net/qq_39097425/article/details/85245668

测速原理:使用干簧管或霍尔传感器,两个性质相同,有磁铁接近时进行触发,产生高低电平信号。将传感器绑定在车架上,车轮上放上磁铁。当磁铁触发一次后,即视为车轮转动一圈,使用小学数学知识求得车轮周长,即可求出时速。

干簧管:在这里插入图片描述

霍尔传感器:在这里插入图片描述

除了干簧管和霍尔传感器这一类的接近开关之外,可以使用震动开关。将设备固定在脚踏板内侧,使用踏频来计算速度(此方法只适合动感单车),还可以骑行者的踏频。

振动开关:振动开关

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