基于单片机的智能鱼塘饵料投喂系统设计

1. 系统功能概述

点击链接下载资料:https://download.csdn.net/download/qq_39020934/92091284

本设计题目为《基于单片机的智能鱼塘饵料投喂系统设计》,其核心目标是实现鱼塘饵料投喂的智能化与自动化管理。传统人工投喂方式存在工作量大、时间不规律、饵料浪费严重等问题,且无法精确控制投喂量与距离。为解决这些问题,本系统引入单片机作为核心控制器,结合定时控制、水位检测、距离调节与饵料量控制等功能,实现高效、节能与精准的智能投喂。

系统主要功能包括:

  1. 定时投喂:用户可设定每天的投喂时间,系统在设定时间自动启动投喂机构,保证鱼类摄食的规律性。
  2. 投喂距离自动调节:根据鱼塘大小或投喂区域的不同,系统通过控制电机运行时间自动调节饵料投放的距离,实现均匀撒料。
  3. 水位监测报警:实时检测鱼塘水位高度,当水位低于或高于安全范围时,系统发出报警提示。
  4. 饵料量控制:用户可通过按键设定每次投喂的饵料量,系统自动计算电机运行时间以控制饵料输送量,同时在 LCD1602 显示设定值与实时状态。

本系统具有结构简洁、功能全面、成本低廉、扩展性强等优点,适合应用于中小型养殖场的自动化饵料投喂场景。


2. 系统电路设计

本系统以 STC89C52 单片机 作为核心控制器,外围电路包括:

  • 实时时钟电路(用于定时控制)
  • 水位检测模块
  • 投喂距离控制电机驱动电路
  • 饵料传送带电机控制电路
  • LCD1602 液晶显示模块
  • 按键输入模块
  • 蜂鸣器报警模块
  • 电源电路

2.1 单片机最小系统电路

单片机采用 STC89C52 作为主控芯片。其最小系统由时钟电路、复位电路和电源电路组成。

  • 时钟电路:采用 12MHz 晶振及两个 30pF 电容,为单片机提供稳定的时钟信号。
  • 复位电路:由上拉电阻和电容构成上电复位电路,确保系统上电后能正确进入初始化状态。
  • 电源电路:系统供电电压为 5V,可通过 LM7805 稳压芯片从 12V 电源转换而来,为整个系统提供稳定电压。

该部分为系统的核心部分,保证单片机能正常工作并对外围模块进行统一管理。

2.2 实时时钟电路

为了实现精准的定时投喂功能,系统采用 DS1302 实时时钟模块。DS1302 内部集成时钟振荡器及备用电池接口,可长期保持时间准确性。

  • 单片机通过三线 SPI 接口与 DS1302 通信(SCLK、IO、CE)。
  • 可读取或写入当前的时分秒信息。
  • 当设定时间与当前时间相匹配时,系统启动电机执行投喂任务。

DS1302 的使用大大提高了系统的独立性,即使断电也能保持时间准确,为自动定时投喂提供可靠保障。

2.3 水位监测模块

水位监测模块采用 电极式水位检测,通过检测电阻变化判断水位高度。系统在池塘内设置多个检测点:低水位警戒点、正常水位点和高水位警戒点。

  • 当水位低于最低点时,系统蜂鸣器报警提示“水位过低”;
  • 当水位高于最高点时,提示“水位过高”;
  • 正常水位时,系统处于待机状态。

此模块输出信号经电平转换后输入单片机的 P1 端口,通过逻辑判断控制报警输出。

2.4 投喂距离控制电路

投喂距离由 直流电机 控制,其运行时间决定饵料喷射距离。电机由 L298N 电机驱动模块 控制。

  • 单片机输出 PWM 信号控制电机速度;
  • 通过继电器或 H 桥电路实现正反转控制;
  • 用户可设定鱼塘大小,系统根据设定自动调整电机运行时间与方向。

电机驱动模块保证了系统能在较大功率负载下稳定运行,并能灵活调整投喂范围。

2.5 饵料传送带控制电路

饵料量控制通过传送带电机运行时间实现。

  • 使用小功率直流电机驱动饵料传送带;
  • 电机通断由单片机控制的继电器完成;
  • 当设定的投喂量达到目标时,单片机停止电机运行。

投喂量与时间成正比,系统通过计时函数精准控制投喂时间,保证饵料量稳定一致。

2.6 LCD1602 显示模块

LCD1602 用于实时显示系统运行状态和参数设定。
显示内容包括:

  • 当前时间(由 DS1302 提供);
  • 投喂状态(待机 / 投喂中 / 完成);
  • 水位状态;
  • 当前设定投喂时间与饵料量;
  • 实时提示信息。

LCD1602 采用 4 位数据线模式节省单片机 I/O 口,通过 RS、RW、EN 和 D4~D7 与 P2 口连接。

2.7 按键输入模块

用户通过按键完成投喂时间、投喂量、投喂距离等参数的设定。

  • 使用 4 个独立按键:加、减、确认、模式;
  • 按键采用下拉电阻防抖设计;
  • 单片机通过中断方式检测按键输入,实现参数切换与调整。

此模块使系统具有较强的人机交互性,操作直观方便。

2.8 蜂鸣器报警模块

蜂鸣器用于报警提示,如:

  • 水位异常
  • 投喂完成提示
  • 参数设置确认

系统采用有源蜂鸣器,单片机控制信号经三极管放大后驱动蜂鸣器。


3. 程序设计

系统的软件设计以模块化结构为主,程序采用 C 语言 编写,在 Keil C51 环境下开发。主程序负责整体流程控制,各功能模块通过独立函数实现。

3.1 主程序设计

主程序负责系统初始化、时间读取、模式判断和任务调度。当系统上电后,初始化各模块,循环检测时间与设定值是否相符,若匹配则执行自动投喂流程。

#include <reg52.h>
#include "lcd1602.h"
#include "ds1302.h"
#include "motor.h"
#include "key.h"
#include "buzzer.h"

void main() {
    LCD_Init();
    DS1302_Init();
    Motor_Init();
    Key_Init();
    Buzzer_Init();

    while(1) {
        Read_Time();         // 读取实时时间
        Display_Info();      // 显示当前信息
        Key_Scan();          // 检测按键输入
        if(Check_Feed_Time()) {  // 判断是否到达设定投喂时间
            Start_Feed();    // 执行投喂
        }
        Water_Level_Check(); // 检测水位
    }
}

主程序结构清晰,所有功能模块均可独立调用,方便后续系统扩展。

3.2 实时时钟模块程序

DS1302 模块负责系统的定时控制。
其程序包括时间读取与写入函数:

void Read_Time() {
    DS1302_ReadTime(&hour, &minute, &second);
}

bit Check_Feed_Time() {
    if(hour == set_hour && minute == set_minute) return 1;
    else return 0;
}

当系统时间与设定时间相符时,返回真值触发投喂过程。

3.3 水位检测程序

通过检测传感器输入电平判断水位状态,并驱动蜂鸣器报警。

void Water_Level_Check() {
    if(Low_Level == 0) {
        Buzzer_On();
        LCD_ShowString(1, 1, "LOW WATER!");
    } else if(High_Level == 0) {
        Buzzer_On();
        LCD_ShowString(1, 1, "HIGH WATER!");
    } else {
        Buzzer_Off();
        LCD_ShowString(1, 1, "Water OK");
    }
}

此程序保证系统运行安全,防止因水位异常导致设备损坏或投喂失误。

3.4 电机控制程序

系统通过控制两个电机实现投喂距离与饵料量调节。

void Start_Feed() {
    Motor_Distance_On();
    DelayMs(distance_time);   // 控制喷射距离
    Motor_Distance_Off();

    Motor_Feed_On();
    DelayMs(feed_time);       // 控制饵料量
    Motor_Feed_Off();

    Buzzer_On();              // 投喂完成提示
    DelayMs(1000);
    Buzzer_Off();
}

两个参数 distance_timefeed_time 可由用户设定,实现不同池塘场景下的个性化控制。

3.5 按键设置程序

按键模块用于修改系统参数,通过模式切换实现不同参数的设定。

void Key_Scan() {
    if(Key1 == 0) { set_hour++; }
    if(Key2 == 0) { set_minute++; }
    if(Key3 == 0) { feed_time += 1000; }
    if(Key4 == 0) { distance_time += 500; }
}

通过简单按键组合即可完成各参数设置,LCD 同步显示更新。

3.6 LCD 显示程序

LCD 模块用于显示当前系统状态、设定时间、水位状态等信息。

void Display_Info() {
    LCD_ShowString(1,1,"Time:");
    LCD_ShowNum(1,7,hour,2);
    LCD_ShowNum(1,10,minute,2);
    LCD_ShowString(2,1,"Feed:");
    LCD_ShowNum(2,7,feed_time/1000,2);
}

显示界面简洁明了,实时反馈系统工作状态。


4. 系统整体运行流程

  1. 系统上电初始化,LCD 显示当前时间与状态;
  2. 用户通过按键设定投喂时间、饵料量与投喂距离;
  3. 系统实时读取 DS1302 时间,当达到设定时刻自动启动投喂;
  4. 投喂过程中,先由电机控制投喂距离,再控制饵料传送带投喂量;
  5. 投喂结束后蜂鸣器提示,LCD 显示“Feed Done”;
  6. 系统持续监测水位,异常时报警;
  7. 系统重新进入待机状态,等待下一次投喂。

5. 总结

本设计的智能鱼塘饵料投喂系统通过单片机对时间、电机、水位等多模块的综合控制,实现了鱼塘饵料的自动化与智能化管理。系统功能完善,硬件结构简单,软件逻辑清晰,具有较高的实用性与扩展性。
未来可进一步增加 WiFi 模块,实现远程监控与参数设置,或接入云平台实现大数据养殖分析,从而构建完整的智能养殖生态系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点灯师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值