智能小车项目设计(之二)
项目、任务:
①.完成由舵机控制方向的超声波壁障功能
②.完成光电码盘测速功能
考核内容:
①.小车实现壁障功能、用关电码盘控制小车运动的精度
②.完成本章最后的作业提交任务和反馈内容(请在实验前看,以免影响提交作业)
背景材料(必看预习和参考材料):
附件一为超声波模块的使用方法
①.舵机的原理和控制方法:
②.在linux下控制GPIO
任务、步骤:
任务一:
完成超声波壁障功能
步骤:
①.超声波模块的实物图以及引脚说明如下图所示:
VCC供5V电源,GND为地线,Trig为触发控制信号输入端,Echo为回响信号输出端。
②.超声波模块的电气参数:
③.超声波模块的控制时序图:
④.根据时序图完成对超声波模块的控制,并加入之前所完成的小车项目之一中,实现壁障功能(即当车子前进时,如果前面有障碍物,则即使手机端发出向前的指令,小车也会强制的停止不向前运动,简单点讲,就是超声波测到前方有障碍物,这时不接受手机的向前指令,而接受小车左转、右转、后退的指令)
任务二:
完成舵机的控制
步骤:
①.舵机的接口为:
②.简单介绍控制舵机的原理:
控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。
舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的:
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;
③.为了APP能够控制舵机,将在APP上增加一个控件,通过Socket_1向小车发送77,类似上节中的接口定义,学员按照这个指令来编程以控制舵机。
④.根据上面对舵机控制的介绍完成C++编程来控制舵机,我们将把超声波模块固定在舵机上,实现测各个方向的距离。
任务三:
添加光电码盘,实时测量轮子的速度,来调整两个轮子的pwm,来实现小车更加精确的运动
步骤:
①.实物图以及接口:
电机上装有码盘。
②.产品参数:
1、工作电压 3.3V-5.5V 支持3.3和5V的MCU
2、输出电压 低电平0V 高电平VCC
3、产品尺寸 12.3MM*32MM
③,使用方法:
当小车运动时,OUT端将会就会产生脉冲,计算两个轮子的脉冲数,接可以计算小车的速度。
④.学员编程提高运动精度,当你前进或后退时如果左边的轮子比右边的快,那么你应该实时调整相应轮子的pwm以达到两边轮子一样快。目标就是使小车前进和后退时能够走直线。
作业提交:
1.完成任务一,实现超声波壁障功能
2.完成任务二,实现舵机的控制
3.完成任务三,提高小车的运动精度