基于51单片机的智能垃圾桶
1.简介本次主要是利用单片机设计并制作一套智能垃圾箱。要求以单片机为控制核心,通过红外传感器检测是否有人扔垃圾,并自动打开垃圾箱盖,扔完垃圾后再自动关闭。主要内容包括:(1)红外对管传感器检测是否有人扔垃圾(2)垃圾桶满报警(3)步进电机驱动电路的设计2.硬件设计(1)总体硬件设计硬件主要以单片机为核心,通过软件和硬件的结合实现检测到人自动打开垃圾桶盖的效果,并且垃圾桶满了之后有声...
1.简介
本次主要是利用单片机设计并制作一套智能垃圾箱。要求以单片机为控制核心,通过红外传感器检测是否有人扔垃圾,并自动打开垃圾箱盖,扔完垃圾后再自动关闭。
主要内容包括:
(1)红外对管传感器检测是否有人扔垃圾
(2)垃圾桶满报警
(3)步进电机驱动电路的设计
2.硬件设计
(1)总体硬件设计
硬件主要以单片机为核心,通过软件和硬件的结合实现检测到人自动打开垃圾桶盖的效果,并且垃圾桶满了之后有声光提醒。主要通过三大块来设计,包括步进电机驱动电路、检测电路和蜂鸣器报警电路等。
(2)步进电机驱动电路
步进电机驱动电路采用了ULN2003晶体管阵列芯片,它是一个单片高电压、高电流的达林顿晶体管阵列集成电路。它是由7对NPN达林顿管组成的,它的高电压输出特性和阴极箝位二极管可以转换感应负载。单个达林顿对的集电极电流是500mA。
(3)红外检测传感器电路
本次设计采用了两个反射式红外传感器。一个作为周围人体检测,另一个作为检测垃圾是否装满传感器。当红外传感器无检测到目标对象时,传感器为低电平;当传感器检测到目标对象时,传感器为高电平。
(4)硬件电路图
3.软件设计
(1)软件流程图
智能垃圾桶系统的软件需要同时是否有人、垃圾桶是否装满、步进电机驱动等任务。在本设计中,当红外检测到有人时,垃圾桶自动打开,从最后一次检测到无人开始计时,5秒后自动垃圾桶关闭。垃圾桶满了之后会声光报警提醒。
(2)主程序源码
void proc() //正反转函数
{
if(open_flag==1&&!open_flag1) //关
{
P2=zz[loop];
loop=(loop+1)%8;
Delay800us();
m_i++;
if(m_i==1080)
{
m_i=0;
open_flag=0;
open_flag1=1;
}
}
else if(open_flag==2&&open_flag1) //开
{
P2=fz[loop];
loop=(loop+1)%8;
Delay800us();
m_i++;
if(m_i==1080)
{
m_i=0;
open_flag1=0;
open_flag=0;
}
}
}
void dis_pose()
{
if(!HW1)
{
led1=0;
if(!key1)
{
if(key1_flag)
{
key1_flag=0;
if(open_flag1)
{
hand_flag=1;
open_flag=2;
}
else
{
hand_flag=0;
open_flag=1;
}
}
}
else key1_flag=1;
}
else
{
led1=1;
if(!HW2)
{
if(HW2_flag)
{
HW2_flag=0;
if(open_flag1) open_flag=2;
}
}
else
{
HW2_flag=1;
}
}
}
void main()
{
TMOD=0x10; //定时器0,定时器1,16位工作方式
EA=1; //打开总中断0
TH1=0x4c;
TL1=0x00;
TR1=1;
ET1=1;
while(1)
{
if(open_flag==0)
{
P2=P2&0xf0;
m_i=0;
}
else
{
proc();
}
}
}
void time_1() interrupt 3
{
TH1=0x4c;
TL1=0x00;
ms++;
dis_pose();
if(!HW1)
{
p_ms++;
if(p_ms>=200)
{
p_ms=0;
beep_num=8;
}
}
else
{
p_ms=199;
}
if(!open_flag1)
{
if(hand_flag==0)
{
if(HW2)
{
c_ms++;
if(c_ms>=100)
{
c_ms=0;
open_flag=1;
}
}
else
{
c_ms=0;
open_time++;
if(open_time>=200)
{
open_time=0;
beep_num=6;
}
}
}
else
{
if(HW2&&HW1)
{
c_ms++;
if(c_ms>=100)
{
c_ms=0;
open_flag=1;
hand_flag=0;
}
}
else
{
c_ms=0;
}
}
}
else
{
c_ms=0;
open_time=0;
}
if(ms>=2)
{
ms=0;
if(beep_num!=0)
{
beep_num--;
beep=~beep;
}
else
{
beep=1;
}
}
}
源码+PCB+电路图 下载:关注公众号,首页回复“智能垃圾桶”获取资料
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)