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