污水池液位监测器
组件和用品
| | × | 1 | |
| | × | 1 | |
| | × | 1 | |
| | × | 1 | |
| | × | 1 | |
| 电容器 1uf, .01uf, 470pf 所有 SMD | | × | 1 | |
| | × | 1 | |
| | × | 1 | |
关于这个项目
水槽液位监视器设计用于与我女儿家中或我的家庭监视器项目中的 Ecobee RSM-01 输入板配合使用。我添加了一个继电器以使其独立。我想要一种我觉得比超声波传感器更可靠、更容易安装的东西。为此,我开始研究压力传感器,最终遇到了飞思卡尔 MPXV5010DP。它有一个 0-5vdc 输出,适用于 0-10kPa,大约是 1020mm 的水头。
因为我想要局部指示,所以我选择了一个 OLED 模块来在设计中使用。便宜,明亮,这个有两个颜色的屏幕。为了提供接口,我为干接点输出添加了一个继电器。我为 0-5vdc 输出添加了一个 DAC(数模转换器),其功率比 MPXV5010DP 传感器更大,这也将保护传感器免受可能的接线损坏。由于我使用的是 I2C 通信,因此只需要更改软件即可向另一个 Arduino 提供数据。
为了便于连接,我设计并构建了一个定制板。它为不同的配置提供了足够的灵活性。
传感器通过聚乙烯管连接到铜管,铜管向下进入油槽。这允许您自行决定安装显示器的位置并使其远离水。
代码
Sump Level MonitorC/C++
根据需要进行解析,此版本中的额外垃圾继续进行并根据需要进行清理。#include #include #include #include #include #include #define OLED_RESET 4Adafruit_SSD1306 display(OLED_RESET);#if (SSD1306_LCDHEIGHT !=64)#error("高度不正确,请修复 Adafruit_SSD1306.h!");#endac4da2fruit;int 中继引脚 =5; // 用于继电器报警输出int analogPin =0; //测量DAC输出电压int v1 =0; // MPXV5010int v2 =0 的 ADC 输出; // dac 输入的缩放从 PS 输入转换为 dac inputint v3 =0; //用于从 PS inputint v4 =0 的 mm 转换; //对于来自 PS inputint v5 =0 的深度百分比; // arduinoint v6 =0 读取的 dac 输出; //用于从 PS inputfloat v7 =0 进行 mV 转换; //从毫米转换为inchesint v8 =0; // 消除破坏显示的英寸小数点 int offSet =40; //由arduinoint maxSet =1015测量的0 kPa输出; //由arduinoint maxHeight =1020测量的10 kPa输出; // 从正常水位到盖子的水坑深度,单位为 mmint 范围 =(maxHeight * 0.8) + offSet;int alarmHeight =12; // 以英寸为单位的报警高度// 对于 MPXV5010DP 压差传感器int analogPin2 =1;float divisor =25.4; //用于将显示转换为inchesvoid setup() { Serial.begin(9600); Serial.println("带DP传感器的DAC测试"); // 默认情况下,我们将在内部从 3.3v 线生成高压! (整洁!) display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // 使用 I2C addr 0x3D(对于 128x64)进行初始化 // init done // 清除缓冲区。 display.clearDisplay(); // 对于 MCP4725A0,地址是 0x60 或 0x61 dac.begin(0x60); pinMode(relayPin, OUTPUT); digitalWrite(relayPin, HIGH);}void loop() { v1 =analogRead(analogPin2);延迟(1000); if (v1 alarmHeight) { display.invertDisplay(true); digitalWrite(relayPin,LOW);} else { display.invertDisplay(false); digitalWrite(relayPin,HIGH);} display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(0,0); display.println("SUMP LEVEL"); //display.setTextColor(BLACK, WHITE); // '倒置' 文本 display.setTextSize(4); display.setTextColor(WHITE); display.print(v8); display.setTextSize(2); display.println("英寸");显示。显示();延迟(500); }void serial(){ //用于调试和校准Serial.print(" PS模拟输入:"); Serial.print(v1); Serial.print(" 高度:"); Serial.print(v3); Serial.print(" mm "); Serial.print(v4); Serial.print("%"); Serial.print(" 转换电压:"); Serial.print(v6); Serial.println(" mV");}//结束
示意图
使用 Eagle 6.5.0 sump%20level.sch