文章目录
- 0 简介
- 1 系统说明
- 2 背景意义
- 3 系统设计
-
- 3.1 总体方案
- 3.2 硬件设计
-
- 3.2.1 STC89C52
- 3.2.2 CLS150TD舵机
- 3.2.3 压力传感器
- 3.2.4 HX711 A/D模块
- 3.2.5 供电及稳压
- 3.2.6 TLN104/TLP104 红外对管光电传感器模块介绍
- 3.2.7 其他硬件模块
- 3.3 软件实现
-
- 3.3.1 主程序逻辑
- 3.3.2 按键监听模块
- 3.3.3 温度数据读取
- 3.3.4 超声波检测水位
- 3.3.5 LCD1 602 显示模块
- 4 实现效果
- 5 关键代码
- 6 最后
0 简介
Hi,大家好,这里是丹成学长,今天向大家介绍一个 单片机项目
基于stm32的宠物自动喂食系统
大家可用于 课程设计 或 毕业设计
单片机-嵌入式毕设选题大全及项目分享:
https://blog.csdn.net/m0_71572576/article/details/125409052
1 系统说明
为了解决主人不在家而无法正常对宠物进行饮水喂食, 导致宠物身体不健康这一情况, 为此学长设计了宠物自动饮水喂食器。
宠物自动饮水喂食器主要由单片机最小系统、 水位检测系统、 温度检测系统、 饲料检测系统、 按键控制系统、 LCD1602 液晶显示系统组成。
单片机系统需要正常工作必须保证最小系统工作正常, 宠物自动饮水喂食器的饮水过程是通过超声波检测水位, 若检测到的水位低于设定水位就开启加水功能;
通过 DS18B20 温度传感器检测当前温度, 若检测到的温度低于设定温度则开启加温功能; 液晶屏显示当前水位及温度和设定水位及温度。 喂食过程是通过光电传感器检测饲料是否存在, 若检测到饲料不存在, 则开启加饲料功能。
2 背景意义
随着我国 会经济水平的快速发展以及城市化进程的不断加速, 很明显我国国民的生活水平不断得到提高, 而宠物业也因此得到飞速的发展。 现如今家庭宠物的饲养已经成为城市居民生活消遣的新方式, 而且饲养宠物的观念也与以往大不相同, 其中宠物的喂养就是人们最为关心的问题。 不过目前宠物主要还是依靠人工进行喂养。 而且随着人们生活水平不断的提高, 人们开始侧重于精神的追求, 很多年轻人和老年人都会收养自己的宠物, 但是年轻人大多时间都忙于工作, 老年人可能由于记忆或者身体不便等原因, 有时候可能顾及不到自己的宠物, 那么宠物很有可能因为缺水或者饥饿而导致不健康成长或者死亡。 如果是这样的话对于宠物的伤害是非常大的。 因此就急需一种能自动加水喂食的装置, 以保证宠物饮食正常。 人们可以在对宠物喂水和喂料上无需发费多余的时间即可很好的照顾自己的宠物, 具有极大的市场价值和经济效益。
3 系统设计
学长设计的是宠物自动饮水喂食器, 它主要要实现自动加水加温喂食功能。 即检测到的水位与温度低于我的设定值, 就开启加水加温喂食功能, 还能按键调整设定水位与温度, 并能显示设定与检测水位与温度值。 在电路设计中, 系统主要由主控器,测温模块, 水位检测模块, 食物检测模块, 显示模块, 按键模块和加温加水喂食模块组成。
3.2 硬件设计
3.2.1 STC89C52
单片机 STC89C52 是从传统 MCS51 基础上进行升级过来, 在内部资源分布上更加丰富, 比如时钟模块, 单片机管脚第 2 功能等。使用其他的芯片也是ok的。
3.2.5 供电及稳压
供电使用3S锂电池作为整体装置的供电,3S锂电池可以提供11.1v的电压。3S锂电池实物如图所示。
3.2.7 其他硬件模块
DS18B20和LCD本片文章学长不在复述
3.3 软件实现
3.3.1 主程序逻辑
首先先给单片机上电, 系统软件设计需先对 LCD1602 与 T0、 T1 先初始化, 然后进行温度与水位读取转换, 其次按键扫描, 再完成对宠物自动饮水喂食器的温度和水位检测以及判断是否含有食物。 如果当检测的温度或者水位低于设定值 29 ℃ 或 15cm或者没有检测到食物, 将使喂食器自动实现加温加水以及喂食功能, 以此不断运行。主函数的功能就是对程序设计中使用的变量及模块初始化并将各功能子模块进行调用。
3.3.3 温度数据读取
硬件电路中使用了单总线接口的数字温度传感器 DS18B20 作为喂食器的温度检测装置, 由于我们使用的单片机没有单总线接口, 必须通过管脚来模拟时序通信。 根据温度传感器的初始化及读写时序图可以模拟, 温度传感器在读写数据的时候是先读写低位, 然后再是高位。 所以需要一个循环函数及移位操作来读写 8 次。 然后通过发送温度转换及读取命令就可以读取到温度数据, 读取到的温度数据还需要对其进行处理才能转换为实际的温度。 温度转换读取流程图如图
3.3.5 LCD1 602 显示模块
在对 LCD 液晶初始化的时候我们需要了解其具有步骤, 根据数据手册可以知道,要对 LCD1602 液晶初始化, 首先需要一段时间的延时, 然后根据个人要求选择具体的显示模式, 可以选择显示光标或者光标闪烁等, 最后需要对 LCD 进行一次清屏, 将内部 RAM 的数据全部清除, 等待下一次的显示。 初始化结束以后根据时序编写写命令函数和写数据函数, 最后就是使用这 2 个函数来进行数据显示, 流程图如图
当用 HC-RC04 超声波传感器检测到的水位低于设定水位 15mm 时, 就驱动加水电路, 即加水绿灯亮起, 液晶屏显示检测到的水位值; 当用 DS18B20 检测到的温度低于设定温度 29℃时, 驱动加温电路, 即加温红灯亮起, 液晶屏显示检测到的温度值。
通过按键可设置水位上下限范围为 0cm—20cm; 温度上下限范围 0℃~+125℃,根据用户需求可通过按键去调整设定水位与温度值

5 关键代码
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!