|
在本篇文章中,我们将使用Arduino开发板制作一款自动水位指示器和控制器,本文将使用超声波传感器来测量水位。当水箱中的水位变低时,会自动打开电机泵进行补水。
所需的组件 ● Arduino UNO开发板 ● 超声波传感器模块 ● Adafruit RGB背光LCD显示屏 ● 步进电机 ● 9伏电池
超声波传感器 超声波传感器HC-SR04模块可以测量大约2cm-400cm范围内的距离,精度为3mm。传感器模块包括超声波发射器、接收器和控制电路。
信号在遇到障碍物后会返回并且被接收器捕获。因此,障碍物与传感器的距离通常由以下公式估计: 距离=(时间x速度)/2 我们使用了一个超声波传感器模块,它在水箱中发送声波并识别回声波的反射。首先,我们需要使用Arduino触发超声波传感器模块发射信号,然后等待接收ECHO回波。 Arduino计算触发和接收ECHO之间的时间。我们知道声速约为 340 m/s。所以我们可以借助公式来测量距离: 距离=(行程时间/2)*声速 其中声速约为每秒340m。
借助这种方法,我们可以得到传感器到水面的距离。之后,接下来就是测量水位。
现在我们计算水箱的总长度。然后可以通过从水箱的总长度中减去超声波产生的距离来测量水位。我们将收到水位距离。可以将该水位更改为百分比,然后在LCD上显示。
代码 - #include <LiquidCrystal.h>
-
- #define trigger 10
- #define echo 11
- #define motor 8
- #define buzzer 12
-
- LiquidCrystal lcd(7,6,5,4,3,2);
-
- float time=0,distance=0;
- int temp=0;
- void setup()
- {
- lcd.begin(16,2);
- pinMode(trigger,OUTPUT);
- pinMode(echo,INPUT);
- pinMode(motor, OUTPUT);
- pinMode(buzzer, OUTPUT);
- lcd.print(" Water Level ");
- lcd.setCursor(0,1);
- lcd.print(" Indicator ");
- delay(2000);
- }
-
- void loop()
- {
- lcd.clear();
- digitalWrite(trigger,LOW);
- delayMicroseconds(2);
- digitalWrite(trigger,HIGH);
- delayMicroseconds(10);
- digitalWrite(trigger,LOW);
- delayMicroseconds(2);
- time=pulseIn(echo,HIGH);
- distance=time*340/20000;
- lcd.clear();
- lcd.print("Water Space In ");
- lcd.setCursor(0,1);
- lcd.print("Tank is: ");
- lcd.print(distance);
- lcd.print("Cm");
- delay(2000);
- if(distance<12 && temp==0)
- {
- digitalWrite(motor, LOW);
- digitalWrite(buzzer, HIGH);
- lcd.clear();
- lcd.print("Water Tank Full ");
- lcd.setCursor(0,1);
- lcd.print("Motor Turned OFF");
- delay(2000);
- digitalWrite(buzzer, LOW);
- delay(3000);
- temp=1;
- }
-
- else if(distance<12 && temp==1)
- {
- digitalWrite(motor, LOW);
- lcd.clear();
- lcd.print("Water Tank Full ");
- lcd.setCursor(0,1);
- lcd.print("Motor Turned OFF");
- delay(5000);
- }
-
- else if(distance>30)
- {
- digitalWrite(motor, HIGH);
- lcd.clear();
- lcd.print("LOW Water Level");
- lcd.setCursor(0,1);
- lcd.print("Motor Turned ON");
- delay(5000);
- temp=0;
- }
- }
复制代码
|