入门三 让机器人动起来Word格式文档下载.docx
《入门三 让机器人动起来Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《入门三 让机器人动起来Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
其内部的一个H桥原理图如图3-5所示。
ENABLEA是控制使能端,控制OUTPUTl和OUTPUT2之间电机的停转,INPUT1、INPUT2脚接入控制电平,控制OUTPUTl和OUTPUT2之间电机的转向。
当使能端ENABLEA有效,INPUT1为低电平INPUT2为高电平时,三极管2,3导通,1,4截止,电机反转。
当INPUT1和INPUT2电平相同时,电机停转。
表3-1是其使能引脚,输入引脚和输出引脚之间的逻辑关系。
图3-5H桥原理图
表3-1逻辑关系表
ENABLEA
INPUT1
INPUT2
电机转向
H
(1)
L(0)
正转
反转
同IN2
同IN1
停止
X(0、1)
说明:
H----高电平L----低电平X----任意(低电平或高电平)
另一个H桥的工作原理同上。
由ENABLEB控制OUTPUT3和OUTPUT4之间电机的停转,根据INPUT3、INPUT4脚的输入电平情况控制OUTPUT3和OUTPUT4之间电机的转向。
2.电机驱动电路图
如图3-6所示,为12V直流电机的驱动电路图。
图3-612V直流电机驱动电路图
L298N电机驱动芯片的电机控制引脚INPUT1,INPUT2,INPUT3,INPUT4分别接到了PIC16F873A单片机的PORTB通用输入/输出口上的RB0,RB1,RB2,RB3位,而电机控制的使能引脚ENABLEA和ENABLEB连接在了一起接到了PIC16F873A单片机的PORTB输入/输出口上的RB4位。
OUTPUT1和OUTPUT2接左侧的电机,OUTPUT3和OUTPUT4接右侧电机。
通过对PIC16F873A单片机PORTB输入/输出口进行编程,可以实现左右侧12V电机的正反转控制,进而控制机器人的运动状态。
如表3-2所示为PIC16F873A单片机PORTB口上RB0-RB4位为不同值时,左右侧电机和机器人的运行状态。
表3-2电机控制逻辑关系表
RB4
RB3
RB2
RB1
RB0
左侧电机
右侧电机
机器人运动状态
H
L
前进
后退
左转
右转
X
在用QBasic语言所编写的程序里,单片机PORTB口上的RB0-RB4位的功能和程序里的pin0-pin4位变量的功能是一一对应的。
二、程序设计
(一)QBasic语言基本语句
(一)
1.专用变量
(1)dirb0、dirb1专用字节变量
【格式】
dirb0=<
变量值>
dirb1=<
【功能】
对PIC16F873A的通用I/O口的方向进行控制。
dirb0和dirb1为字节变量,每个字节变量有8个位变量,每一个位变量对应于PIC16F873A上的一个输入/输出引脚。
dirb0字节变量中8个位变量分别设置pin0~pin7位变量所对应的输入/输出引脚的方向,dirb1字节变量中8个位变量分别设置pin8~pin15位变量所对应的输入/输出引脚的方向,如图3-7所示。
对其中的某位变量写入1,对应的PIC16F873A单片机上的引脚就被设定为输入,反之为输出。
说明:
%的含义――-说明%后面的数据为二进制数据,每一位只能是0或者1。
图3-7dirb0、dirb1专用字节变量说明
【说明】
一般情况下,输入/输出口上连接的是传感器、开关等设备时,该输入/输出口应定义为输入口。
机器人主板输入/输出口上连接的是电机、扬声器、电风扇、液晶显示屏、发光二极管等设备时,该输入/输出口应被定义为输出口。
【应用】
例1:
dirb0=%11100000
%——代表后面的数据为二进制数;
由于位变量pin0~pin4所对应的引脚是电机控制引脚,电机为输出设备,因此从右向左,将位变量pin0~pin4所对应的五个引脚设为输出,位变量pin5~pin7所对应的三个引脚设为输入。
例2:
dirb1=%00001111
从右向左,将位变量pin8~pin11所对应的四个引脚设为输入,位变量pin12~pin15所对应的四个引脚设为输出。
(2)pinb0、pinb1专用变量
【格式】pinb0=<
变量>
Pinb1=<
【功能】给每一个输出端口赋值,pinb0控制I/O口的pin0~pin7引脚,pinb1控制I/O口的pin8~pin15引脚
pin0~pin4五个位变量所对应的是单片机输入/输出端口的B口上的RB0~RB4引脚,也就是用于电机控制的5个引脚。
5个位变量为不同值时电机的运转情况如表3-3所示。
表3-3电机控制逻辑关系表
位变量
功能
pin4
pin3
pin2
pin1
pin0
1
1----H(高电平)0----L(低电平)X----任意0、1(高电平、低电平)
变量值可以是二进制、十进制、十六进制的具体数值,其具体数值是按照打开不同的管脚而确定的。
例:
100十进制100
$64十六进制64,相当于十进制100
%01100100二进制01100100,相当于十进制100
“A"
字符A,相当于A的ASCII码65
$AA十六进制数AA,相当于十进制170
pinb0=%00010101;
从右向左,将位变量pin0、pin2、pin4所对应的三个引脚赋值为高电平,位变量pin1、pin3、pin5、pin6、pin7所对应的五个引脚赋值为低电平。
此时电机使能端有效(pin4=1),左电机正转(pin0=1,pin1=0),右电机正转(pin2=1,pin3=0),从表3-3中,可以看出此时机器人前进。
PINB0=%00000101;
从右向左,将位变量pin0、pin2所对应的两个引脚赋值为高电平,位变量pin1、pin3、pin4、pin5、pin6、pin7所对应的六个引脚赋值为低电平。
此时电机使能端无效(pin4=0),左电机停止,右电机停止,从表3-3中,可以看出机器人原地不动。
3.延时语句(pause)
【格式】pause时间
【功能】延迟一段时间。
【说明】
在让机器人运动时,是通过时间的长短来控制机器人前进、后退的距离,以及左、右转动的角度。
时间的具体值就是指时间的长短,它可以精确到毫秒。
【应用】pause1000此语句的意思是延时时间为1000毫秒。
4.无条件转移语句(goto)
【格式】goto行标号
【功能】无条件地转向指定的行标号去执行程序。
(1)标号是表示某一地址的符号。
(2)标号以冒号结束,并且出现在执行语句的前面,而不能出现在不可执行语句前。
标号的命名规则:
为字母开头的任意长度的字母与数字的组合,长度256为限。
但不能使用作为命令的关键字例如goto,pause等。
例1:
机器人前进程序
dirb0=%11100000
dirb1=%11110001
begin:
pinb0=%00010101
pause1000
gotobegin
end
在上面程序中,begin为行标号,当机器人前进1S后,开始执行无条件跳转指令,跳转到begin这个行标号后,开始继续执行行标号后的程序,重复前进1S,导致了这个程序形成了一个死循环,无休止的在执行前进1S的程序,也就是说机器人一直在前进。
5.结束语句(end)
【格式】end
【功能】终止运行
6.注释语句(rem)
【格式】rem字符串
【功能】释语句的主要作用是为了增强程序的可读性,在程序执行中并不被执行,即rem”后的语句只是起到说明作用。
为了提高程序的可读性,可以在程序的适当位置加上一些注释,注释可以放在程序的任何位置。
rem后面可以是任何内容。
rem可以用单引号代替“´
”。
【应用】
REM机器人走图形
(二)程序清单
1.机器人前进500ms程序及流程图
机器人前进主要是靠左右侧的电机带动轮子转动,从而让机器人前进。
因此,我们主要是通过编写程序来控制左右侧的电机转动,来达到控制机器人前进的目的。
下面是机器人前进500ms后停止的程序及流程图。
(1)流程图
(2)程序
2.机器人后退500ms程序及流程图
3.机器人左转200ms程序及流程图
4.机器人右转200ms程序及流程图
5.机器人调速前进流程图及程序
机器人采用的调速方法是把电机驱动芯片的使能端ENABLEA和ENABLEB两个引脚连接在了一起接到了PIC16F873A的RB4通用输入/输出口上,在用QBasic语言编写的程序里,相当于pin4这个输入/输出引脚,当pin4=0(低电平)时,电机使能端无效,电机不转动,机器人不动作,当pin4=1(高电平时)时,电机使能端有效,电机开始转动,机器人动作。
就这样,通过编写程序控制机器人运动的时间和停止的时间来调整机器人运动的速度,程序及流程图如下:
三、调试与运行
(一)调试方法
1.程序下载方法
(1)将机器人前进500ms后停止的程序输入到程序编辑窗口,如图3-8所示
图3-8程序编辑窗口
(2)进行语法检查,如果有语法错误就进行调试程序,如果没有语法错误,进行连接机器人下载程序,如图3-9所示。
图3-9连接机器人界面
(3)把机器人下载线一端连接PC机串口,一端连接机器人主板上的下载口,打开机器人的5V的电源,“下传”两个字会由灰色变为黑色,如图3-10所示,代表着PC和机器人主板通讯成功,然后点击“下传”按钮,进行程序下传,屏幕对话框中出现流动的下载线,同时可以看到下传的过程中,通讯下载线中部小盒中的绿色指示灯点亮。
图3-10下传程序界面
下传成功后,屏幕上会出现“程序下传正确”的提示和程序占用空间的百分比(如图3-11所示),单击“OK”按钮,完成程序下载。
图3-11下传成功界面
(4)完成下传后,断开机器人电源开关,拔下机器人通讯下载线,把机器人放到场地,机器人会前进500ms后停止。
(5)将其它的程序按照上述的方法下载到机器人里,调整时间参数,观察机器人的运动情况。
2.运行过程
机器人前进500ms后停止的机器人运行视频见光盘视频3-1
机器人后退500ms后停止的机器人运行视频见光盘视频3-2
机器人左转200mS后停止的机器人运行视频见光盘视频3-3
机器人右转200mS后停止的机器人运行视频见光盘视频3-4
机器人调速前进的机器人运行视频见光盘视频3-5
(二)故障排除方法:
1.程序无法下载的原因及解决办法:
原因
解决办法
下载口的问题
将下载线的插头拔下来在重新插一下
CPU有问题
更换CPU
主板有问题
更换主板
程序有非法字符
检查程序是否有语法错误
2.程序运行混乱的原因及解决办法:
程序过大
优化程序
3.机器人打开电源开关后,机器人无动静的原因和解决办法:
电池电量低
充电或者更换电池
接线有问题
检查接口位置是否接触良好
电源开关损坏
更换电源开关
四、技能训练
1.任务要求:
机器人前进500mS后,旋转180度,后退500ms,回到起始点停止;
编写相应的程序并进行下载调试,最终达到任务要求。
2.任务要求:
机器人左转90度,前进500ms,右转90度,前进500ms,机器人停止运动。
编写相应的程序并进行下载调试,最终达到任务要求。
3.任务要求:
控制机器人走一个正方形。