车检测器使用说明
环形线圈检测器是传统的交通检测器,车辆通过埋设在路面 的环形
线圈,引起线圈磁场的变化,检测器据此计算出车辆的流量、速度、
时间占有率和长度等交通参数,并上传给中央控制系统,以满足交通
控制系统的需要。此种方法技术成熟,易于掌握,并有成本较低的优
点。
技术参数:
继电器输出功能
继电器 2 提供车辆存在的信号
继电器 1 车辆经过后延时 150ms 输出 300Ms 脉冲
方向识别功能(需要两个线圈)
车辆从探测环 1 进过探测环 2 时 继电器 1 输出 1s 脉冲信号。
车辆从探测环 2 进过探测环 1 时 继电器 2 输出 1s 脉冲信号。
线圈安装
1 根据所需周长对应表 1-1 确定匝数
2 例:线圈为周长 6 米,线圈匝数为 4 安装如图 2-0 所示
注意:
线圈大小可根据具体情况调整一般线圈周长越小匝数越多。
线圈缠绕部分需要保证线圈间距离不能过大,不需要绞合。
线圈多出部分需要绞合每米扭绞 20 次。
缠绕部分
多出部分
图 2-0
表 1-1
检测器接线
编号 引脚定义
1
2
3
4
5
6
7
11
A1
14
12
22
21
24
电源
电源
继电器 2 常开
继电器 2 公共
继电器 1 常开
继电器 1 公共
探测环公共
8
9
10
11
32
34
A2
31
探测环 1
探测环 2
继电器 1 常闭
继电器 2 常闭
表 1-2
1 接 220V 电源接至 11 和 A1 接口
2 线圈多出部分双绞线分别连接至 探测环 1(32)和 探测环公共
端(24)
3 将控制端连接到继电器 2 公共(14)和继电器 2 常开(12)
图 2-1
控制端代码
实现功能:当线圈上来车时通过串口发送#0*,当车辆离开时发送#1*(串口波特率 9600)
#include //包含头文件,
#include
/*------------------------------------------------
函数声明
------------------------------------------------*/
void SendStr(unsigned char *s);
void delayed(unsigned int x);
sbit jdG=P1^0;
sbit jdK=P2^4;
sbit jdKb=P2^5;
static int i=0;
int csb[4];
int j;
int flag=0;
int flag2=0;
int c=0;
int d=0;
int us[]={1,1,1,1,1};
/*------------------------------------------------
串口初始化
------------------------------------------------*/
void InitUART (void)
{
SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收
TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重装
TH1 = 0xFD; // TH1: 重装值 9600 波特率 晶振 11.0592MHz
TR1 = 1; // TR1: timer 1 打开
EA = 1; //打开总中断
//ES = 1; //打开串口中断
}
/*------------------------------------------------
主函数
------------------------------------------------*/
void main (void)
{
InitUART();
jdG=0;//12 白线
jdK=1;//14 黑线
//jdKb=0;
while (1)
{
if(jdK)
{//SendStr("666");
csb[i]=1;
i++;
}
if(!jdK)
{
csb[i]=0;
i++;
}
if(i==4)//数组比较
{
i=0;
for(j=0;j<5;j++){
if(csb[j]==us[j])
{
flag2++;
}
}
flag=1;
}
if(flag==1)
{
flag=0;
if(flag2==4)
{
}
{
else
c++;
flag2=0;
memset(csb,0,sizeof(csb));
d=0;
if(c==1){
SendStr("#");
delayed(10);
SendStr("#1*");
delayed(10);
}
d++;
c=0;
flag2=0;
if(d==1)
{
SendStr("#");
delayed(10);
SendStr("#0*");
delayed(10);
}
//USART_SendData(USART1, b);//′??ú·¢?í?T3μ
memset(csb,0,sizeof(csb));
}
}
}
}
/*------------------------------------------------
发送一个字节
------------------------------------------------*/
void SendByte(unsigned char dat)
{
SBUF = dat;
while(!TI);
TI = 0;
}
/*------------------------------------------------
发送一个字符串
------------------------------------------------*/
void SendStr(unsigned char *s)
{
while(*s!='\0')// \0 表示字符串结束标志,
//通过检测是否字符串末尾
{
SendByte(*s);
s++;
}
}
void delayed(unsigned int x) //延时 xmS
{
unsigned int i,j;
for(i = x; i > 0; i--)
for(j = 113; j >0; j--);
{
}
}