本设计由STC89C52单片机电路+红外对管模块电路+蓝牙模块电路+ULN2003步进电机驱动电路+电源电路组成。
1、输液瓶体积单位默认mL。每一滴的液滴的体积默认1mL。
2、通过红外对管模块实时检测液滴的滴速,并通过蓝牙将滴速和液体的剩余容量实时上传到手机APP。
3、可以通过手机APP设置滴速,如果设置的滴速超过当前滴速,则步进电机正转一周,如果设置的滴速不超过当前滴速,则步进电机反转1周。
4、可以通过手机APP设置输液瓶的体积(量程为0-1500mL)。
5、当输液瓶的体积为0时,蜂鸣器长鸣报警。
蓝牙发送命令:
#Q1234#//设置容量为1234ml
#S0050# //设置滴速为50ml/min
完整版 电路图和程序代码 下载地址
https://pan.baidu.com/s/1p23afjeUioIh3PrG9Nfy3Q?pwd=8888
部分代码展示
#define TIMELATERNUM 2000 //步进电机旋转时间
sbit A1=P1^0; //定义步进电机连接端口
sbit B1=P1^1;
sbit C1=P1^2;
sbit D1=P1^3;
#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电
#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电
#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电
#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电
sbit buzzer=P2^0; //蜂鸣器
unsigned char firstin =0; //首次接收到标志
unsigned char tab[20]; //串口数据暂存
unsigned char Count=0; //串口接收计数
unsigned char uartbusy =0; //串口判忙
bit setOk = 0; //设置成功标志
unsigned long PluNum=0; //检测速度转化来的脉冲量
unsigned long time_ms; //定时器计数
xdata unsigned char dis0[40]; //暂存
unsigned char dealFlag=0; //处理速度标志
unsigned char zfFlag = 0 ; //正反转标志
unsigned int timeLater = 0; //时间延时
xdata unsigned int zdQ = 250 ; //总体容量
xdata unsigned int syQ = 250 ; //剩余容量
xdata unsigned int disu = 0; //滴速
xdata unsigned int setDs = 10;
void Init_Timer0(void); //函数声明
void UART_Init(void);
void uartSendByte(unsigned char dat);
void uartSendStr(unsigned char *s,unsigned char length);
void main (void)
{
Init_Timer0(); //定时器0初始化
EX0=1; //外部中断0开
IT0=1; //边沿触发
EA=1; //全局中断开
UART_Init ();
buzzer=1; //关闭蜂鸣器
uartSendStr("ready ok!",9);
DelayMs(10);
while (1) //主循环
{
if(setOk == 1) //设置成功
{
setOk = 0;
uartSendStr("set ok! ",7);
}
}
}
完整版 电路图和程序代码 下载地址