摘要:目前在超声波测速技术中,通常采用单一的时差法或频差法测速,当被测物体的速度变化范围较大时,单一的测速方法会引入较大的测量误差。系统以单片机AT89C51为,将时差法测速和频差法测速集成在同一套系统中,实现了两种方法的同时测量。分析表明该方法的测量误差小,测量精度高,在近距离实时测速方面有一定的理论价值和应用前景。  关键词:时差法测速;频差法测速;AT89C51;超声波发射电路;超声波接收电路  超声波测速设备可以在雨、雪、雾等各种恶劣环境下工作,并且系统制作简便、成本低。超声波测速分为时差法和频差法,时差法多用于低速测量,而频差法则多用于高速测量。现有的超声波测速系统中,要么是单一的时
1
用霍尔传感器,在车轮上固定一个小磁铁,旁边安装一个霍尔传感器,车轮每转一周,经过一次霍尔传感器,产生一个脉冲,将脉冲接到中断0上(仿真中采用一个数字码盘代替),开启定时器0计时,这样就可以计算自行车路程和速度了。
2021-03-26 13:32:27 51KB protues仿真
1
自行车里程测速系统 课程设计 proutes仿真通过 有源代码
2019-12-21 21:25:30 575KB 自行车 测速系统
1
关于单片机的超声波测速系统的设计以及单片机AT89S52管脚的说明
2019-12-21 20:38:40 73KB 单片机
1
毕业设计 基于单片机的测速系统毕业设计 基于单片机的测速系统
2019-12-21 20:14:05 161KB 毕业设计 单片机 测速
1
光电编码器具有无接触、高转速、高分辨率、高可靠性等优点=在自动控制和自动检测技术领域得到越来越广泛的应用。本系统以8031单片机为核心,采用9位绝对式光电编码器作传感器,组成转速及转角测试系统。能同时输出转速、转角及转动圈数的控制信号
2019-12-21 18:53:56 92KB 单片机 光电编码
1
#include #define uchar unsigned char #define uint unsigned int #define ulong unsigned long #define LED_DAT P0 sbit LED_SEG0 = P2^7; sbit LED_SEG1 = P2^6; sbit LED_SEG2 = P2^5; sbit LED_SEG3 = P2^4; #define TIME_CYLC 100 //12M晶振,定时器10ms 中断一次 我们1秒计算一次转速 // 1000ms/10ms = 100 #define PLUS_PER 10 //码盘的齿数 ,这里假定码盘上有10个齿,即传感器检测到10个脉冲,认为1圈 #define K 1.65 //校准系数 unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar data Disbuf[4];// 显示缓冲区 uint Tcounter = 0; //时间计数器 bit Flag_Fresh = 0; // 刷新标志 bit Flag_clac = 0; //计算转速标志 bit Flag_Err = 0; //超量程标志 void DisplayFresh();//在数码管上显示一个四位数 void ClacSpeed();//计算转速,并把结果放入数码管缓冲区 void init_timer();//初始化定时器T0\T1 void Delay(uint ms);//延时函数 void it_timer0() interrupt 1 /* interrupt address is 0x000b */ { TF0 = 0; //定时器 T0用于数码管的动态刷新 TH0 = 0xC0; TL0 = 0x00; Flag_Fresh = 1; Tcounter++; if(Tcounter>TIME_CYLC) { Flag_clac = 1;//周期到,该重新计算转速了 } } void it_timer1() interrupt 3 /* interrupt address is 0x001b */ { TF1 = 0; //定时器T1用于单位时间内收到的脉冲数 //要速度不是很快,T1永远不会益处 Flag_Err = 1; //如果速度很高,我们应考虑另外一种测速方法:T测速法 } void main(void) { Disbuf[0] = 0; //开机时,初始化为0000 Disbuf[1] = 0; Disbuf[2] = 0; Disbuf[3] = 0; init_timer(); while(1) { if(Flag_Fresh) { Flag_Fresh = 0; DisplayFresh(); // 定时刷新数码管显示 } if(Flag_clac) { Flag_clac = 0; ClacSpeed(); //计算转速,并把结果放入数码管缓冲区 Tcounter = 0;//周期定时 清零 TH1=TL1 = 0x00;//脉冲计数清零 } if(Flag_Err) //超量程处理 { Disbuf[0] = 0x9e; //开机时,初始化为0000 Disbuf[1] = 0x9e; Disbuf[2] = 0x9e; Disbuf[3] = 0x9e; while(1) { DisplayFresh();//不再测速 等待复位i } } } } //在数码管上显示一个四位数 void DisplayFresh() { P2 |= 0xF0; LED_SEG0 = 0; LED_DAT = table[Disbuf[0]]; Delay(1); P2 |= 0xF0; LED_SEG1 = 0; LED_DAT = table[Disbuf[1]]; Delay(1); P2 |= 0xF0; LED_SEG2 = 0; LED_DAT = table[Disbuf[2]]; Delay(1); P2 |= 0xF0; LED_SEG3 = 0; LED_DAT = table[Disbuf[3]]; Delay(1); P2 |= 0xF0; } //计算转速,并
2010-07-25 00:00:00 400KB 光电传感器、测速、protus、pcb
1