设为首页 - 加入收藏
您的当前位置:主页 > 工学论文 > 电子机械论文 > 正文

移动机器小车的控制

来源:www.37lw.cn 编辑:admin 时间:2017-08-11
1 移动机器小车的基础知识 
  移动机器小车即使用伺服电机根据软件编程的设定,发出脉冲控制机器小车完成运动、避障、跟随等任务的机器。 
  1.1 软件介绍 
  BASIC Stamp是由美国Parallax公司自1992年起所提创的一种微控制器,此种微控制器与其他微控制器不同的地方在于:微控制器中的ROM内存内建了一套小型、特有的BASIC编程语言直译器,称为:PBASIC。 
  1.2 硬件介绍 
  伺服电机:伺服系统是使物体的位置、方位、状态等输出被控量能够跟随输入目标(或给定值)的任意变化的自动控制系统。 
  面包板:面包板是由于板子上有很多小插孔,专为电子电路的无焊接实验设计制造的。电子元器件可根据需要随意插入或拔出。 
  1.3 指令和循环语句 
  伺服电机在收到某一特定的信号时,处于静止状态。本次使用的伺服电机在收到脉冲宽度为1.5ms的脉冲信号时,处于静止状态。在计算机上,将使用一个PULSOUT指令。PAUSE是低电平,PULSOUT输出的是高电平。 
  PULSOUT指令:PULSOUT Pin,Time。Time是用来计算脉冲宽度的时间单位数,时间单位是2/μs,则零点脉冲宽度为Time=0.0015s/0.000002s=750。 
  要控制脉冲之间的间隔则需要使用PAUSE指令。 
  PAUSE指令:PAUSE T。T是PAUSE的值,它表示微控制器在执行下一条指令之前要等待多久。T的单位是1ms。如要等待0.5秒,则给T赋值为500:PAUSE 500。 
  要持续产生脉冲信号,则还需要用到DO…LOOP循环语句当中。 
  DO…LOOP语句: 
  DO 
  PULSOUT 1,750 
  PAUSE 500 
  LOOP 
  如此则可以循环运行指令。 
  还有一种FOR…NEXT的语句适用于有限次数的循环: 
  C VAR Word 
  FOR C=1 TO 200 
  C=C+1 
  PULSOUT 1,850 
  PULSOUT 2,650 
  PAUSE 20 
  NEXT 
  根据计算,循环一次的时间大概为23ms,循环200次,则为4.6秒。 
  1.4 匀速运动和匀变速运动的原理以及执行方法 
  匀速运动:当Time参数的值大于750时,会使伺服电机逆时针旋转,而当Time的值为850时,则会全速逆时针旋转。顺时针反之亦然。当要匀速运动时,可以使用PULSOUT指令使两个伺服电机同时旋转。由于两个电机对应方向相反,则一个电机顺时针输出,一个电机逆时针输出可以完成匀速运动。表1。 
  DO 
  PULSOUT 1,850 
  PULSOUT 2,650 
  PAUSE 20 
  LOOP 
  如果测量出不同脉冲宽度下行走的距离,可以计算出小车的行驶速度。 
  匀变速运动:当Time输出的参数逐渐变化时,速度也会由此变化,则依据此可以进行匀变速运动代码的编写: 
  C VAR Word 
  For C=1 To 100 
  Pulse out 1,750+1 
  Pulse out 2,750-1 
  PAUSE 20 
  NEXT 
  在100次循环后,速度逐渐增加到最大值,完成了一次匀变速运动。根据加减的数值大小算出加速度的大小。 
  2 被动避障 
  被动避障是机器小车进行的被动行为。当机器小车被障碍阻碍从而被动接受到障碍的信号时,做出转动和避让。 
  2.1 被动避障的原理 
  可以通过一个感受障碍的装置,将障碍信号转化为电信号。本次使用了一個类似胡须的装置来完成这个任务。 
  胡须是类似一个触角的金属丝,弯曲形成一个环形,在前面感测障碍,胡须如同一个开关,控制着机器小车。胡须开关的状态值1或0储存在IN7的变量中。当没有被按下时存储值为1,胡须被按下时存储值为0。机器小车在行走中,一旦胡须被按下,就代表有障碍物,根据胡须的不同情况使机器小车进行不同的动作,从而完成被动避障。 
  2.2 被动避障使用的代码以及程序的设计 
  为了使机器小车进行判断,需要使用IF…THEN语句: 
  IF(cundition)THEN…{ELSEIF(CONDITION)}…{ELSE}…ENDIF 
  可以提前编制一些动作的代码,在程序中使用GOSUB来进行子函数,这样在写程序中就简洁许多。(IN5为左胡须的存储器,IN7为右胡须的存储器)
3 主动避障 
  主动避障是机器小车进行的主动行为。当机器小车在还未接触到障碍时主动接收到障碍的信号时,做出转动和避让。 
  3.1 主动避障的原理 
  可以通过一个红外感应装置,将障碍信号转化为电信号。我使用了红外线探测器完成这项任务。机器小车上使用了红外线二极管LED作为发射源,如果有障碍物,则会对红外线进行阻碍和反射,如此则机器小车上的红外线探测器便可以测得反射回来的红外线。为了排除普通光源的干扰,红外线探测器内部的光滤波器只允许980nm波长的红外线通过,并且红外线探测器的电子滤波器只允许38500Hz的电信号通过,即只寻找每秒闪烁38500次的红外线。 
  3.2 主动避障使用的代码以及程序的设计 
  为了让红外线二极管LED发出所需的和声信号,需使用FREQOUT指令。如: 
  FREQOUT 8,1,38500 
  这句代码的指令就是连接到8号引脚的红外线二极管LED电路发送1ms频率为38500Hz的和声信号。 
  当红外线探测器接收到红外信号时会产生存储值,没发现物体显示1,发现物体显示0。IRDL和IRDR是左右两个红外线探测器的存储值。使用下面代码即可将存储值储存到存储器当中。 
  IRD VARL Bit 
  IRD=IN9 
  则主动避障的程序代码为 
  (定义变量) 
  IRDL VAR Bit 
  IRDR VAR Bit 
  C VAR Byte 
  (主程序) 
  DO 
  FREQOUT8,8,1,38500 
  IRDL=IN9 
  FREQOUT8,2,1,38500 
  IRDL=IN0 
  IF(IN9=0)AND(IN0=0) THEN ’表示前方有障碍 
  GOSUB BACK 
  GOSUB LEFT 
  GOSUB LEFT 
  ELSEIF(IN9=0) THEN ’表示左边有障碍 
  GOSUB BACK 
  GOSUB RIGHT 
  ELSEIF(IN0=0) THEN ’表示右边有障碍 
  GOSUB BACK 
  GOSUB LEFT 
  ELSE GOSUB GO ’无障碍则持续前进 
  ENDIF 
  LOOP 
  (子函数) 
  GO: ’表示前进的子函数 
  PULSOUT 1,850 
  PULSOUT 2,650 
  PAUSE 20 
  RETURN 
  LEFT: ’表示左转的子函数 
  FOR C=0 TO 20 
  PULSOUT 1,650 
  PULSOUT 2,650 
  PAUSE 20 
  NEXT 
  RETURN 
  RIGHT:’表示右转的子函数 
  FOR C=0 TO 20 
  PULSOUT 1,850 
  PULSOUT 2,850 
  PAUSE 20 
  NEXT 
  RETURN 
  BACK: ’表示后退的子函数 
  FOR C=0 TO 40 
  PULSOUT 1,650 
  PULSOUT 2,850 
  PAUSE 20 
  NEXT 
  RETURN 
  3.3 主动避障和被动避障的区别与优缺点 
  主动避障没有直接接触到障碍,是提前预知障碍进行避让;被动避障是直接接触到障碍,从而进行避让。两种避障方式的原理不同,但它们的目的相同。可根据不同的需要和要求进行两种避障方式之间的选择。主动避障避免的直接的撞击导致的经济损失,但是缺点是通过无线传感器接收到的干扰因素较多,成本高。 
  4 移动机器小车的距离探测和追踪 
  不同频率的和声信号探测的距离远近也不同,可以发射多种频率的和声信号,根据返回的红外线频率探测物体的位置,并使用负反馈控制系统进行追踪。 
  4.1 用频率扫描进行编程做距离探测 
  频率特性使得红外线传感器在不同的频率下有不同的灵敏度,导致红外线探测的距离不同。如图1,物体反射了39500Hz、38250Hz和37500Hz的红外线,根据接收情况,可以得知物体在区域2。划分区域越多则精度越高,定位也更加准确,但会增大计算量,带来不必要的麻烦。由于本次研究目的在于追踪,不需要过高的精度,所以以1000hz为最小分度值,划分为6个区域。 
  当信号反馈时,有一种频率的信号反馈则储存的数字是0,无信号反馈则为1。如在图1中物体在区域2时,接收到了3种信号的反馈,而另外两种信号的反馈则接受不到,即为3个0,2个1,求和的出数字2,而数字2对应的便是区域2。 
  为了对红外线频率进行扫描,要用FREQOUT指令发送6种不同频率的红外线信号,使用LOOKUP命令可以简便的写出。LOOKUP命令的用法定义如下: 
  LOOKUP Index,[Value0,Value1,…ValueN],Variable 
  则代码可为 
  IRF VAR Nib 
  IRD VAR Bit 
  FOR IRF=1 TO 4 
  LOOKUP IRF,[37500,38250,39500,40500,41500],IRF 
  FREQOUT8,1,IRF 
  IRD=IN9 
  NEXT 
  4.2 移动机器小车的追踪控制 
  这个任务是要让机器小车跟随一个移动的物体。根据闭环控制系统的控制,在落后较远时,机器小车能进行加速;当距离太近的时候,它也能察觉并减速。如果距离合适,那么它会等待直到测量距离变远或者变进。 
  如图2,我们需要机器小车保持2个区域的距离,相差4区域的距离接下来对机器小车进行编程。 
  由此得出右边伺服电机的输出方程为: 
  Right servo output=(Right distance set point-Measured right distance)*Kp+Center pulse width 
  pulseLeft=(SetPoint-distanceLeft)*Kpl+CenterPulse 
  pulseRight=(SetPoint-distanceRight)*Kpl+CenterPulse 
  將右边距离设置为2,测量距离由变量distanceRight存储,Kp为35(比例常数是根据伺服电机特性得出来的常数),脉冲宽度为750。 
  pulseLeft=(2-distanceRight)*35+750 
  5 结论 
  在移动机器小车的制作与探究中,我学到了被动避障和主动避障的原理与设计,体会研究追踪移动机器小车的原理,学会了使用BASIC stamp 软件,了解了红外线二极管LED和红外线探测器。我相信在未来,移动机器小车的使用会更加的广泛,涉及到更多的领域,也将会有更多的功能。我也要紧跟时代脚步,在机器小车的领域中继续探索。 
  参考文献 
  [1]秦志强,侯肖霞,王文斌.基础机器小车制作与编程[M].第二版.北京:电子工业出版社.

网友评论:

无法在这个位置找到: ajaxfeedback.htm

毕业论文网 www.37lw.cn 联系QQ:250537075 邮箱:250537075@qq.com

毕业论文网为您提供专业的本科毕业论文,硕士毕业论文,MBA毕业论文,电大毕业论文,自考毕业论文,奥鹏毕业论文代写服务!

Top