基于单片机的超声波水塔液位测量系统protues仿真 本设计基于单片机的超声波水塔液位测量和智...
基于单片机的超声波水塔液位测量系统protues仿真 本设计基于单片机的超声波水塔液位测量和智能控制系统主要由硬件与软件两部分组成硬件是基于AT89C51芯片为核心的超声波水塔液位测量采用AT89C51单片机进行控制及数据处理给出了超声波发射和接收电路通过盲区的消除以及环境温度的采样提高了测距的精确度。 利用超声波传输中距离与时间的关系设计出了能精确测量两点间距离的超声波水塔液位检测系统。今天来聊聊如何用单片机超声波搞个智能水塔液位检测系统关键还能在Proteus里跑仿真。咱们这个方案用AT89C51当大脑成本低得感人实测精度还能控制在±2cm以内水塔管理员看了直呼内行。先看核心算法部分。超声波测距公式大家都会背距离声速×时间/2。但实际搞起来环境温度这个老六必须安排得明明白白。看这段温度补偿代码float get_real_speed(uint8_t temp) { return 331.4 0.6 * temp; // 温度每升1℃声速涨0.6m/s }是不是比教科书里的复杂公式清爽多了这里直接用线性近似实测25℃环境下误差不到0.3%对水塔这种场景完全够用。硬件设计有个骚操作——双探头消盲区。超声波模块那30cm的探测盲区咱们用高低位双探头错位安装破解。代码里这么处理if(distance 30) { use_high_sensor 0; // 切换低位探头 TR0 0; // 停用当前定时器 }这个状态机切换逻辑像不像玩吃鸡时快速切枪实测盲区直接干到5cm以内比单探头方案强了不是一星半点。基于单片机的超声波水塔液位测量系统protues仿真 本设计基于单片机的超声波水塔液位测量和智能控制系统主要由硬件与软件两部分组成硬件是基于AT89C51芯片为核心的超声波水塔液位测量采用AT89C51单片机进行控制及数据处理给出了超声波发射和接收电路通过盲区的消除以及环境温度的采样提高了测距的精确度。 利用超声波传输中距离与时间的关系设计出了能精确测量两点间距离的超声波水塔液位检测系统。重点说下超声波发射接收的代码实现。注意看这个发射触发序列void send_wave() { TRIG 1; _nop_();_nop_();_nop_();_nop_();_nop_(); // 精准10us脉冲 TRIG 0; while(!ECHO); // 等待回波 TH0 TL0 0; // 定时器清零 TR0 1; // 开始计时 while(ECHO); // 等待回波结束 TR0 0; // 停止计时 }这一串nop()可不是在摸鱼实测少一个nop都会导致发射信号不稳。定时器0配置成16位模式配合12MHz晶振理论最大测距能到3.5米灌满三层楼高的水塔绰绰有余。最后上主控逻辑的骨架代码void main() { init_all(); // 初始化定时器/IO口 while(1) { float temp read_ds18b20(); // 读取温度 float speed get_real_speed(temp); measure_distance(speed); delay_ms(500); // 每0.5秒更新 if(water_level MAX_LEVEL) { pump_control(OFF); // 关水泵 } else if(water_level MIN_LEVEL) { pump_control(ON); // 开水泵 } } }这代码看着清爽吧用状态机代替了繁琐的中断嵌套维护水位就像在if-else里打地鼠。Proteus仿真时记得给超声波模块接上虚拟示波器观察回波信号是否干净有时候软件滤波没做好会出现幽灵回波。实测这套系统成本不到30块钱比市面同类产品便宜至少三倍。最骚的是扩展性极强把水泵控制换成WiFi模块立马变身物联网智能水塔——不过那就是另一个故事了。下次可以聊聊怎么用ESP8266让水塔学会上网冲浪有兴趣的兄弟评论区扣1。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2412617.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!