【问题标题】:Speed measurement with arduino and ultrasonic hc-sr04 sensor?使用 arduino 和超声波 hc-sr04 传感器进行速度测量?
【发布时间】:2014-01-20 13:02:45
【问题描述】:

我想使用 Arduino 和两个超声波 hc-sr04 like this link 制作速度检测“设备”。但我想用超声波代替 LDR。

来自该链接。激光和 ldr 是如何工作的,就像这样

电阻器用作下拉电阻器,我将传感器接线并将它们放在一个盒子里,以避免它们检测到周围的光。对于每种情况,都钻了一个孔,以便激光束可以照亮传感器,而环境光不会影响传感器。 工作原理很简单:经过的物体会“切断”激光束,这意味着 LDR 传感器会检测到这种光强度的突然下降。首先,我定义了一个阈值,在该阈值下传感器被认为是触发的,一旦该值低于第一个传感器的阈值,Arduino 就会等待第二个传感器被触发。在此等待时间内,它计算两个事件之间经过的时间。当第二道光束被中断时,计时器停止,现在只是简单的数学运算。两个传感器之间的距离是已知的,两个事件之间的时间是已知的,速度可以计算为速度 = 距离/时间。

Arduino 代码下方:

/* 
by Claudiu Cristian 
*/ 

unsigned long time1; 
int photocellPin_1 = 0; // 1st sensor is connected to a0 
int photocellReading_1; // the analog reading from the analog port 
int photocellPin_2 = 1; // 2nd sensor is connected to a1 
int photocellReading_2; // the analog reading from the analog port 
int threshold = 700; //value below sensors are trigerd 
float Speed; // declaration of Speed variable 
float timing; 
unsigned long int calcTimeout = 0; // initialisation of timeout variable 

void setup(void) { 
// We'll send debugging information via the Serial monitor 
Serial.begin(9600); 
} 

void loop(void) { 
photocellReading_1 = analogRead(photocellPin_1); //read out values for sensor 1 
photocellReading_2 = analogRead(photocellPin_2); //read out values for sensor 2 
// if reading of first sensor is smaller than threshold starts time count and moves to             calculation function 
if (photocellReading_1 < threshold) { 
time1 = millis(); 
startCalculation(); 
} 
} 

// calculation function 
void startCalculation() { 
calcTimeout = millis(); // asign time to timeout variable 
//we wait for trigger of sensor 2 to start calculation - otherwise timeout 
while (!(photocellReading_2 < threshold)) { 
photocellReading_2 = analogRead(photocellPin_2); 
if (millis() - calcTimeout > 5000) return; 
} 
timing = ((float) millis() - (float) time1) / 1000.0; //computes time in seconds 
Speed = 0.115 / timing; //speed in m/s given a separation distance of 11.5 cm 
delay(100); 
Serial.print(Speed); 
Serial.print("\n"); 
} 

如何使用超声波 HC-SR04 传感器实现代码? 编码对我来说是个问题。希望有人可以帮助我...... :( 请原谅我的英语不好!

【问题讨论】:

标签: arduino sensors arduino-ide


【解决方案1】:

网上已经有很多例子了,如果你只想复制,google arduino sr04

但是如果你想知道怎么做... sr04 有 4 个引脚,vin、gnd、trigger 和 echo。 将 vin 和接地连接到 +5 和 gnd 将触发器连接到数字输出引脚 将 echo 连接到数字输入引脚

低电平 2 微秒 (us) 然后高电平 10 us 然后再次低电平触发 然后从 echo 引脚获取带有 pulseIn 的结果

阅读数据表了解更多信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 2013-07-01
    相关资源
    最近更新 更多