搜索
您的当前位置:首页正文

机器人检测与显示实验

来源:六九路网
实验二 机器人检测与显示实验

一、实验目的

学习机器人通过几种主要类型的传感器进行数据采集的基本方法,学习LCD的基本知识及其显示与控制方法。

二、实验器材

PC机,组装后的Boe-Bot机器人,USB连接线,PING)))超声波测距传感器,红外线发光管,红外线接收器,220欧姆电阻,1k电阻,光敏电阻,2k电阻,发光二极管,470欧姆电阻,HM55B电子罗盘,连接导线,Parallax 2×16 Serial LCD。

三、实验内容

1. LCD显示实验

2. 超声波测距及LCD显示实验; 3. 红外线传感器检测及LED显示实验; 4. 光敏电阻检测及LED显示实验; 5. 电子罗盘检测及LCD显示实验。

四、实验步骤

1. LCD显示实验

(1) 需要部件:Parallax 2×16 Serial LCD,连接导线。 (2) 关闭电源。

1

(3) 连接部件:

按照图2-1(a)和图2-1(b)所示的原理图及示意图连接LCD显示器。

注意LCD部件的电源及地线连接绝对不能接错!LCD显示部件使用P14口。

图2-1(a) LCD连接原理图

图2-1(b) LCD连接示意图

(4) LCD自检及对比度调节

①按图2-2所示LCD背面图及其设置方法,将LCD背面的SW1和SW2均拨至OFF位置,打开电源。LCD将进行自检。

②调节LCD背面的电位器使显示出的字符清晰可见。 ③关闭电源。 (5) LCD字符串信息显示

①新建程序LCD_ASCII.bs2,输入下述代码。

2

' {$STAMP BS2} ' {$PBASIC 2.5}

SEROUT 14,84,[22,12] PAUSE 5

SEROUT 14,84,[“See this?”,13,“The LCD works!”] END

②连接USB连接线,并打开电源。

③下装、运行程序,并观察运行结果,分析其工作原理。 ④关闭电源

(6) LCD数字信息显示

①新建程序LCD_Number.bs2,输入下述代码。

' {$STAMP BS2} ' {$PBASIC 2.5} counter VAR Byte

SEROUT 14,84,[22,12] PAUSE 5

FOR counter = 0 TO 12

SEROUT 14,84,[DEC counter,“ ”] PAUSE 500 NEXT END

②连接USB连接线,并打开电源。

③下装、运行程序,并观察运行结果,分析其工作原理。 ④关闭电源

2. 超声波测距及LCD显示实验

(1) 需要部件:PING)))超声波测距传感器,连接导线,Parallax 2×16 Serial LCD。 (2) 关闭电源。

3

(3) 连接部件:

分别按照图2-1和图2-2所示的原理图及示意图连接超声波测距传感器及LCD显示器。

注意:LCD部件不能阻挡超声波测距传感器。

超声波测距传感器使用P15口,LCD显示部件使用P14口。

图2-2 超声波测距传感器连接原理图及示意图

(4) 超声波测距传感器检测及显示 ①新建程序PingLCD.bs2,输入下述代码。

' {$STAMP BS2} ' {$PBASIC 2.5}

CmConstant CON 2260 cmDistance VAR Word

time VAR Word

SEROUT 14,84,[22,12] PAUSE 5

DO

PULSOUT 15,5 PULSIN 15,1,time

cmDistance = CmConstant ** time

SEROUT 14,84,[12]

4

SEROUT 14,84,[“Distance=”,DEC cmDistance,“cm”] PAUSE 500 LOOP END

②连接USB连接线,并打开电源。

③下装、运行程序,并通过移动机器人改变与物体间的距离观察运行结果,分析其工作原理。 ④关闭电源

3. 红外线传感器检测及LED显示实验

(1) 需要部件:红外线发光管,红外线接收器,220欧姆电阻,1k电阻,发光二极管,470欧姆电阻,连接导线, (2) 关闭电源。 (3) 连接部件:

①分别按照图2-3(a)和(c)所示的连接原理图和示意图连接红外线发光管、红外线接收器电路。

②分别按照图2-3(b)和(c)所示的连接原理图连接发光二极管电路。

图2-3(a) 红外线发光管、接收器连接原理图

5

图2-3(b) 发光二极管连接原理图

图 2-3(c) 红外线发光管、接收器、发光二极管连接示意图

(4) 红外线传感器检测及显示

①新建程序IRLED.bs2,输入下述代码。

' {$STAMP BS2}

6

' {$PBASIC 2.5} irDetectLeft VAR Bit irDetectRight VAR Bit DO

FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 2, 1, 38500 irDetectRight = IN0 IF (irDetectLeft = 0) THEN HIGH 10 ELSE LOW 10 ENDIF

IF (irDetectRight = 0) THEN HIGH 1 ELSE LOW 1 ENDIF PAUSE 100 LOOP END

②连接USB连接线,并打开电源。

③下装、运行程序,并通过移动机器人改变与物体间的距离观察运行结果,分析其工作原理。 ④关闭电源

4. 光敏电阻检测及LED显示实验

(1) 需要部件:光敏电阻,220欧姆电阻,2k电阻,发光二极管,470欧姆电阻,连接导线。 (2) 关闭电源。 (3) 连接部件:

7

①按照图2-4(a)所示连接原理图和图2-4(b)所示连接示意图,连接光敏电阻检测电路。

图2-4(a) 光敏电阻连接原理图

图2-4(b) 光敏电阻连接示意图

②按照图2-3(b)所示发光二极管连接原理图连接发光二极管电路。 (4) 光敏电阻检测及LED显示

①新建程序PhotoResistor.bs2,输入下述代码。

' {$STAMP BS2}

8

' {$PBASIC 2.5} DO

IF (IN6 = 0) THEN HIGH 10 ELSE LOW 10 ENDIF

IF (IN3=0) THEN HIGH 1 ELSE LOW 1 ENDIF PAUSE 100 LOOP END

②连接USB连接线,并打开电源。

③下装、运行程序,并通过移动机器人改变与物体间的距离使机器人进入、退出物体所形成的阴影部分,观察运行结果,分析其工作原理。 ④关闭电源

5. 电子罗盘检测及LCD显示实验

(1) 需要部件:HM55B电子罗盘,Parallax 2×16 Serial LCD,连接导线。 (2) 关闭电源。 (3) 连接部件:

分别按照图2-5和图2-1所示的原理图及示意图连接HM55B电子罗盘及LCD显示器。电子罗盘使用P4,P5,P6口,LCD使用P14口。

9

图2-5 HM55B电子罗盘连接原理图

(4) 热敏电阻检测及LED显示

①新建程序HM55B_LCD.bs2,输入下述代码。 ' {$STAMP BS2px} ' {$PBASIC 2.5}

DinDout PIN 6 ' P6 transceives to/from Din/Dout Clk PIN 5 ' P5 sends pulses to HM55B's Clk En PIN 4 ' P4 controls HM55B's /EN(ABLE) Reset CON %0000 ' Reset command for HM55B Measure CON %1000 ' Start measurement command Report CON %1100 ' Get status/axis values command Ready CON %1100 ' 11 -> Done, 00 -> no errors

NegMask CON %1111100000000000 ' For 11-bit negative to 16-bits x VAR Word ' x-axis data y VAR Word ' y-axis data status VAR Nib ' Status flags

angle VAR Word ' Store angle measurement ' -----[ Main Routine ]------------------------------------------------------- SEROUT 14,84,[22,12] PAUSE 5

10

DO ' Main loop GOSUB Get_Compass_Axes ' Get x, and y values angle = x ATN -y ' Convert x and y to brads angle = angle */ 360 ' Convert brads to degrees SEROUT 14,84,[12]

SEROUT 14,84,[“Angle=”,DEC angle]

PAUSE 150 ' Debug delay for slower PCs LOOP ' Repeat main loop ' -----[ Subroutines ]--------------------------------------------------------

Get_Compass_Axes: ' Compass module subroutine HIGH En: LOW En ' Send reset command to HM55B SHIFTOUT DinDout,clk,MSBFIRST,[Reset\\4]

HIGH En: LOW En ' HM55B start measurement command SHIFTOUT DinDout,clk,MSBFIRST,[Measure\\4]

status = 0 ' Clear previous status flags DO ' Status flag checking loop HIGH En: LOW En ' Measurement status command SHIFTOUT DinDout,clk,MSBFIRST,[Report\\4]

SHIFTIN DinDout,clk,MSBPOST,[Status\\4] ' Get Status

LOOP UNTIL status = Ready ' Exit loop when status is ready SHIFTIN DinDout,clk,MSBPOST,[x\\11,y\\11] ' Get x & y axis values HIGH En ' Disable module IF (y.BIT10 = 1) THEN y = y | NegMask ' Store 11-bits as signed word IF (x.BIT10 = 1) THEN x = x | NegMask ' Repeat for other axis RETURN

②连接USB连接线,并打开电源。

③下装、运行程序,并通过转动机器人改变其方位角,观察运行结果,分析其工作原理。 ④关闭电源

11

五、思考与练习

1 如何通过添加机器人运动控制指令,利用超声波测距传感器、红外线传感器、光敏电阻实现机器人避撞功能?

2 如何通过添加机器人运动控制指令,利用红外线传感器和光敏电阻实现边缘检测和躲避?

3 如何利用超声波测距传感器和红外线传感器同时实现避撞和边缘检测与躲避两项功能?

4 如何通过添加机器人运动控制指令,利用电子罗盘实现机器人的方位角控制,使其始终朝向某个指定方向?

5 SEROUT的控制命令包含哪些参数?分别说明其含义。

12

附件:机器人运动控制子程序

cPausePeriod CON 20

Move_Forward:

FOR counter = 1 TO 6

PULSOUT 13,850 PULSOUT 12,650 PAUSE cPausePeriod NEXT RETURN

Move_Back:

FOR counter = 1 TO 6

PULSOUT 13,650 PULSOUT 12,850 PAUSE cPausePeriod NEXT RETURN

Turn_Left:

FOR counter = 1 TO 6

PULSOUT 13,650 PULSOUT 12,650 PAUSE cPausePeriod NEXT RETURN

Turn_Right:

FOR counter = 1 TO 6

PULSOUT 13,850 PULSOUT 12,850 PAUSE cPausePeriod NEXT RETURN

13

因篇幅问题不能全部显示,请点此查看更多更全内容

Top