logo资料库

地磁车辆检测器(内附源码).docx

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
车检测器使用说明 环形线圈检测器是传统的交通检测器,车辆通过埋设在路面 的环形 线圈,引起线圈磁场的变化,检测器据此计算出车辆的流量、速度、 时间占有率和长度等交通参数,并上传给中央控制系统,以满足交通 控制系统的需要。此种方法技术成熟,易于掌握,并有成本较低的优 点。 技术参数:
继电器输出功能 继电器 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--); { } }
分享到:
收藏