1、精品word文档 值得下载 值得拥有---------------------------------------------- 实验1 光电传感器测小车转速 1 实验目的 1. 观察了解光电传感器。 2. 测试光电传感器的应变输出。 3. 计数公式:轮子直径*3.14/20格码盘=6.5Cm*3.14/20约=1cm 2 实验原理 本实验说明光电传感器的原理和工作情况。 光电传感器由敏感元件、转换元件、基本转换电路三部分组成。它把光型号转换成为电信号,直接检测来自物体的辐射信息,也可以转换其
2、它物理量成为光信号。其主要的原理是光电效应。当光照射到物质上的时候,物质上的电效应发生改变,这里的电效应宝库奥电子发射、电导率和电位电流等。然后通过类似光敏电阻这样的器件把光能转化成为电能,然后通过放大和去噪声处理就得到了所需要的输出信号。这里的输出电信号和原始的光信号接近线性的关系。 光电传感器电路图 1 3 实验所需部件 超声波传感器,L298驱动模块,光电传感器,单片机控制模块等 超声波传感器 1 光电传感器 1 L298电机驱动模块
3、 单片机芯片 1
4 实验步骤:
1.测试。先让点击空转显示小车转速,然后与理论计算相比。
2.按图(4)将实验部件用实验线连接成测试桥路。桥路中R1、R2、R3和WD为电桥中的固定电阻和直流调平衡电位器,R为应变片(可任选上、下梁中的一片工作片)。直流激励电源为 士4v。测微头装于悬臂梁前端的永久磁钢上,并调节使应变梁处于基本水平状态。
小车测速程序如下:
#include
4、moto_back {P1_0=0,P1_1=1,P1_2=0,P1_3=1;} #define Left_moto_Stop {P1_0=0,P1_1=0,P1_2=0,P1_3=0;} #define Right_moto_go {P1_4=1,P1_5=0,P1_6=1,P1_7=0;} #define Right_moto_back {P1_4=0,P1_5=1,P1_6=0,P1_7=1;} #define Right_moto_Stop {P1_4=0,P1_5=0,P1_6=0,P1_7=
5、0;} sbit led1 =P2^0; sbit led2 =P2^1; sbit led3 =P2^2; sbit led4 =P2^3; Unsigned code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned code dis[] ={0xfe,0xfd,0xfb,0xf7}; unsigned char disbuff[5]={0}; unsigned ch
6、ar time=0; unsigned char i =0;
unsigned int count1=0;
unsigned int V=0;
/************************************************************************/
//延时函数
void delay(unsigned int k)
{
unsigned int x,y;
for(x=0;x 7、y++);
}
/************************************************************************/
//显示数码管字程序
void Display_SMG(void)
{
if(++i>=4)i=0;
P0=table[disbuff[i]];
P2=dis[i];
}
/************************************************************************/
///*TIMER0中断服务子函数产生2MS定 8、时扫描数码管与产生0。5S*/
void timer0()interrupt 1 using 2
{
TH0=(65536-2000)/256; //2MS定时
TL0=(65536-2000)%256;
time++;
Display_SMG();
if(time>=250) //250次即是,0。5S
{
time=0;
V=count1*2; //计数公式:轮子直径*3.14/20格码盘=6.5Cm*3.14/20约=1cm 即一个脉冲走1CM距离 ((count1*1))/0.5S= (count1* 9、2)CM/S
count1=0; //清计数
disbuff[0]=V/1000; //更新显示
disbuff[1]=V%1000/100;
disbuff[2]=V%1000%100/10;
disbuff[3]=V %1000%100%10;
}
}
/***************************************************/
//外部0中断用于计算左轮的脉冲
void inters 10、vr1(void) interrupt 0 using 1
{
count1++;
}
void run(void)
{
Left_moto_go ;
Right_moto_go ;
}
void backrun(void)
{
Left_moto_back ;
Right_moto_back ;
}
void leftrun(void)
{
Left_moto_back ;
Right_moto_go ;
}
void rig 11、htrun(void)
{
Left_moto_go ;
Right_moto_back ;
}
void stoprun(void)
{
Left_moto_Stop ;
Right_moto_Stop ;
}
/*********************************************************************/
/*--主函数--*/
void main(void)
{
TMOD=0X01;
TH0=(65536-2000)/256; //2MS定时
12、
TL0=(65536-2000)%256;
TR0= 1;
ET0= 1;
EX0=1;
IT0=1;
IE0=0;
EA = 1;
run();
while(1)
{
if(Left_2_led==0&&Right_1_led==0)
run();
else
{
if(Right_1_led==1&&Left_2_led==0)
{
Left_moto_go;
13、
Right_moto_back;
}
if(Left_2_led==1&&Right_1_led==0)
{
Right_moto_go;
Left_moto_back;
}
}
}
5 实验心得
在过去几周里,我非常幸运参加杨淑珍老师组织的实验课程。在实验中,我遇到很多问题。从选材开始,我们就开始查资料,从光电传感器的工作电压、传感模式、工作模式、传感范围、安装方式等一点点查起。 14、先是光电测速码盘,安装到4个电机上,电机转动时光电测速码盘会走有晃动。最后我们选择一个相对较平稳的电机装上光电测速码盘。因为我们组选用的小车底盘高度太矮,光电传感器安装还是出了问题。为了使光电传感器的安装更稳定,刚开始选择的是卡在小车上底盘,结果小车跑起来数据偏差较大。杨老师建议我们固定光电传感器,我们为了省事,直接用胶带粘,结果还是不行。最后改为用双面胶彻底固定光电传感器,数据显示正常。在杨老师刚开始给我们建议的时候,我还自大地以为不是那个问题,一直在其他方面找原因。现在终于明白自己跟杨老师差距太大,在实验过程中还发现了自己很是粗心大意的毛病,跟杨老师认真细致比起来,我要学的还很多。
----------------------------精品word文档 值得下载 值得拥有----------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------






