西北农林科技大学智能小车实习总结(完整版) - 图文

发布时间 : 星期日 文章西北农林科技大学智能小车实习总结(完整版) - 图文更新完毕开始阅读

P1_1 = 1; delay_nus(1700); P1_1 = 0; P1_0 = 1; delay_nus(1370); P1_0 = 0;

delay_nms(20);

}

void Left_Turn(void) {

int i;

for( i=1;i<=23;i++) { P1_1=1;

delay_nus(1300); P1_1=0; P1_0=1;

delay_nus(1370);

P1_0=0; delay_nms(20);

} }

void Right_Turn(void) {

int i;

for( i=1;i<=23;i++) { P1_1=1;

delay_nus(1700); P1_1=0; P1_0=1;

delay_nus(1700); P1_0=0; delay_nms(20);

}

}

void Backward(void) {

int i;

for( i=1;i<=65;i++) { P1_1=1;

delay_nus(1300); P1_1=0; P1_0=1;

delay_nus(1700); P1_0=0; delay_nms(20);

} }

int main(void) { int

irDetectLeft,irDetectRight;

int counter;

uart_Init();

for(counter=1;counter<=1000;counter++)

{ P1_3=1; delay_nus(1000); P1_3=0;

delay_nus(1000);

}

do {

- 10 -

IRLaunch('R'); irDetectRight IRLaunch('L'); irDetectLeft

{

Backward(); Right_Turn();

= RightIR;

}

else

if((irDetectRight==0)&&(irDetectLeft==1))

{ } else

Backward(); Left_Turn();

= LeftIR;

if((irDetectLeft==0)& &(irDetectRight==0))

{ }

Backward(); Left_Turn(); Left_Turn();

} }

Forward();

while(1);

else

if((irDetectLeft==0)&

&(irDetectRight==1)) 1.3.5舵机小车的方案改进

将触须避障与红外蔽障程序融合,流程图如图1-6所示:

图1-6 触须避障与红外蔽障程序融合流程图

1.4舵机小车小结

这次的小车是舵机小车,对于舵机以前没有接触过,所以要先看舵机的原理。通过此次的舵机小车实习,我认识到基本实习的流程,掌握了舵机小车的组装,以及舵机小车的基本工作原理,掌握了舵机小车的基本编程,并加强了团队

- 11 -

合作意识。

舵机小车要先进行舵机的调零,调零之后我们又进行了小车的组装,在组装的时候接触了面包板,了解了面包板的接线方法。由于前面进行过步进小车的实习,所以这个小车的组装连线很快就弄好了。

下面就是舵机基本运动的调试(前进、后退、左右转弯),因为每个舵机的转速不同,当前进的时候不走直线,因此我们要不断地改写延迟的时间,在不断的实验下最后终于完成了小车的基本运动。

然后进行触须导航的程序调试,我们遇到了触须导航不灵敏的问题,后来发现是两个触须接触短路造成的。

接下来是驱光导航的任务实现,我们遇到了光敏电路单方向不灵敏的问题,但是不清楚是单片机接线错误还是传感器失灵。在老师的指导下,我们将两个光敏电阻对调接入,发现另一边出现问题而原来的一边可以实现驱光导航,所以我们确定了是传感器的损坏影响了驱光导航,随后就完成了此次项任务。

随后就是避障,我们仔细看了电路图,明白了原理,开始程序的调试,在实验过程中,我们的红外蔽障起初没有成功,原因在于接线太多,导致短路。由于小车是靠碰到快要接触到墙壁的时候有红外反射信号,使小车转动,所以要有后退的过程,所以我们在红外接收器检测到信号的时候后退并且右转。旋转角度是90°。避让悬崖的程序调试类似。

最后是舵机小车的寻迹,按照上次步进小车的寻迹经验,很快编号程序。可是转弯的时候由于转弯延迟太大,小车不稳,只有改变小车转弯的延迟,经过几次实验完成了寻迹。

由于舵机小车的面包板容量有限,我们没有实现舵机小车的任务集成。

2.直流电机小车总结

2.1直流电机小车任务

2.1.1熟练掌握单一传感器、单电机在控制器作用下实现具体机械构件的控制; 2.1.2熟练掌握控制器采集多类型、多数量传感器信息并通过复杂电路控制多电机实现对多机械构件的控制;

2.1.3熟练掌握直流电机在控制器作用下,驱动机械构件实现复杂运动。

2.2 直流电机小车控制原理

2.2.1直流电机小车基本运动控制原理

每个直流电机需要三个控制信号EN1、IN1、IN2。EN1是使能信号。选用一路PWM连接EN1引脚,通过调整PWM的占空比可以调整电机的转速,IN1、IN2为电机转动方向控制信号。IN1、IN2分别为1,0时,电机正转;反之电机反转。为节省单片机引脚,可只用一路I/O口,经反向器74HC14分别接IN1和IN2引脚,

- 12 -

控制电机的正反转。电机正反转的逻辑如表2-1所示。

表2-1直流电机正反转逻辑表 IN1 0 0 1 1 0 0 1 1 IN2 0 1 0 1 0 1 0 1 EN1 0 0 0 0 1 1 1 1 电机 不转 不转 不转 不转 不转 正转 反转 不转 小车的四路直流电机,分别用3个控制信号EN1、IN1、IN2控制,然后可实现小车的前进、后退、左转、右转,程序流程图如图2-1所示。

图2-1 直流小车的基本控制

2.2.2直流电机小车测速控制原理

测速程序伴随着小车整个运动过程,把小车的速度不断反馈给主控器。 电路采用槽型对射光电,光电信号通过码盘,即可触发5VTTL电平。采用施密特触发器去抖动脉冲,非常稳定,也可用于小车测转速,测距离等。四针定义为+5、GND、0UT1、OUT2,其中0UT1、OUT2为电平输出,直接接入单片机IO口,每一路带一个LED,指示其输出状态。

测速模块工作电流25ma,工作电压4.0-6.5V,可检测大于2MM的非透明

- 13 -

联系合同范文客服:xxxxx#qq.com(#替换为@)