点滴报警器——滴数控制模块

对于点滴报警器,我们除了希望它具有当液体输完的时候进行报警的功能,还希望具有即使关闭输液管的功能并且具有控制滴数的功能。
从一些资料中我们可以知道一些人采用了一种类似继电器开关的装置,当输液输完就及时关闭输液管,这模块虽然简单,但是功能却很单一,而且装置也是定制型,也不具有控制滴数的功能。我们想既然需要控制滴数,那么必然也就可以使滴数为0,从而达到关闭输液管的功能。于是想到利用步进电机来进行控制。
步进电机是将脉冲信号转变为角位移或线位移的开环控制元件。
利用以上原理,我们可以设计一种装置,利用步进电机来控制滴数。步进电机的驱动是单片机通过对每组线圈的电流的顺序切换来使电机作步进式旋转,而改变个相脉冲的先后顺序,就可以改变电机的旋转方向。
步进电机驱动方式可以采用双四拍(AB——BC——CD——DA——AB)方式,也可以采用单四拍的方式(A——B——C——D——A)方式。为了使步进电机旋转平稳,还可以采用单,双八拍方式(A——AB——B——BC——C——CD——D——DA——A)。
于是我们设计了一个简单的电路来验证其功能。

电路图

这里写图片描述
其中值得一说的是步进电机的控制芯片——ULN2003A。ULN2003A是高耐压,大电流达林顿阵列系列产品,由7个NPN达林顿管组成,多用于单片机,智能仪表,PLC等控制电路中。在5V的工作电压下能与TTL和CMOS电路直接相连,可直接驱动继电器等负载。还具有电流增益高,工作电压高,温度范围宽,带负载能力强等特点。输入为5V的TTL电平,输出可达500mA/5V。适应于各类高速大功率驱动的系统。

代码

#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
#define out P2
sbit pos=P0^0;
sbit neg=P0^1;
void delayms(uint);
uchar code turn[]={0x02,0x06,0x04,0x0c,0x08,0x09,0x01,0x03};
void main()
{
    uchar i;
    out=0x03;
    while(1)
    {
        if(!pos)
        {
            i=i<8?i+1:0;
            out=turn[i];
            delayms(50);
        }
        else if(!neg)
        {
            i=i>0?i-1:7;
            out=turn[i];
            delayms(50);
        }
    }
}
void delayms(uint j)
{
    uchar i;
    for(;j>0;j--)
    {
        i=250;
        while(--i);
        i=249;
        while(--i);
    }
}

猜你喜欢

转载自blog.csdn.net/Caoyang_He/article/details/81565455