寻线式电脑鼠的设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、任务和总体设计

1、任务要求

要求设计一个寻线型电脑鼠,能够在8×8的迷宫中搜索路径并且根据所搜寻的路线走出最短路径。其中迷宫由25cm的黑线组成。电脑鼠第

一次进入迷宫和返回迷宫时,可以循着黑线走到终点并记录迷宫信息,

第二次进入迷宫时,根据第一次所记录的迷宫信息选择最短路径冲刺到

终点。

2、总体设计

硬件部分主要由传感器,单片机,电机所组成。传感器采用红外传感器,由发射管和接收管组成,可以探测迷宫中黑线。单片机采用

STC15W413AS芯片,用于编写程序。电机由单片机产生的PWM以及L9110

芯片进行驱动。

软件部分主要由产生占空比函数,电脑鼠在迷宫中搜寻路径法则,记录迷宫信息,测速盘计数组成。电脑鼠搜寻迷宫时按照左手法则进行

搜寻,根据测速盘的计数得到迷宫坐标,用8×8的数组对迷宫信息进行

储存。第一次搜寻时,对死路和走得通的路进行标定,第二次走时,仍

然按照左手法则进行,但不走第一次标定的死路。由此达到在迷宫中走

最短路径的目的。

二、硬件设计

1、设计步骤

设计原理图后生成PCB板后进行布线。根据PCB板将元件焊上。

将轮子,轴,轴承以及电机,齿轮进行组装,调整传感器角度。测试

电路。

2、主控模块

包括STC15W413AS芯片以及连接电脑的下载部分。

原理图:

STC15W413AS芯片中包括中央处理器(CPU)、程序存储(Flash)、数

据存储器(SRAM)、定时器/计数器、掉电唤醒专用计时器、I/O口、高速A/D转换(30万次/秒)、比较器、看门狗、高速异步串行通信端UART、CCP/PWM/PCA、高速同步串行端口SPI、片内高精度R/C时钟以及高可靠复位等模块。

单片机内部结构:

管脚图:

3、电机驱动模块

主要运用L9110芯片和两个74HC00芯片进行电机驱动。

原理图:

(1)L9110:

L9110 是为控制和驱动电机设计的两通道推挽式功率放大专用集成电路器件,将分立电路集成在单片IC 之中,使外围器件成本降低,整机可靠性提高。该芯片有两个TTL/CMOS兼容电平的输入,具有良好的抗干扰性;两个输出端能直接驱动电机的正反向运动,它具有较大的电流驱动能力,每通道能通过800mA 的持续电流,峰值电流能力可达1.5A;同时它具有较低的输出饱和压降;内置的钳位二极管能释放感性负载的反向冲击电流,使它在驱动继电器、直流电机、步进电机或开关功率管的使用上安全可靠。

应用电路:

管脚图:

(2)74HC00:

该芯片是输入端四与非门。

4、测速模块

运用测速盘和两个侧向发射接收管。

原理图:

实物图:

5、传感器模块

运用五个LED红外发射管和LM339和LM393芯片。

原理图:

实物图:

(1)LM339

LM393是四电压比较器集成电路。

该电路的特点如下:

工作电源电压范围宽,单电源、双电源均可工作,单电源: 2~36V,双电源:±1~±18V;

消耗电流小, Icc=1.3mA;

输入失调电压小,VIO=±2mV;

共模输入电压范围宽, Vic=0~Vcc-1.5V;

输出与TTL,DTL,MOS,CMOS 等兼容;

输出可以用开路集电极连接“或”门;

采用双列直插14 脚塑料封装(DIP14)和微形的双列14 脚塑料(SOP14)

内部结构:

(2)LM393

与LM339类似。内部结构:

三、软件设计程序总流程图:

软件部分主要是由以下三个部分组成。

(1)、电机驱动部分

PWM产生函数驱动电机,通过调节占空比进行调速,通过控制四个I/O口来控制电机的正反转以及停转。根据芯片以及PCB板控制单片机的CCP_S0,CCP_S1为0X20和0X10。电脑鼠转弯和直走时用不同速度进行控制。同时在转弯和直线时,采用不同的占空比调速,使得电脑鼠在行走过程中速度能在快的同时达到稳定的效果。

//------------------PWM初始化函数---------------------//

void PWM_Init()

{ ACC = P_SW1;

ACC &= ~(CCP_S0|CCP_S1);

ACC |= CCP_S0;

P_SW1 = ACC;

CCON = 0;

CL = 0;

CH = 0;

CMOD = 0x02;

CR=1;

}

//------调整速度函数-----------//

void speed(bit a,bit b,bit c,bit d)

{ I1=a;

I2=b;

I3=c;

I4=d;

PCA_PWM0 = 0X00;

CCAP0H = CCAP0L =46;

CCAPM0 = 0x42;

PCA_PWM1 = 0X00;

CCAP1H = CCAP1L =51;

CCAPM1 = 0x42;

}

(2)、中断产生部分

中断用于测速盘测速,用两个中断源进行控制,分别用于左轮计数和右轮计数。根据测速盘转过的圈数,中断计数的数字判断电脑鼠是否走过一格,根据走过的格子进行坐标的加减。

//----------------外部中断初始化函数---------------//

void Exti_InterruptInit()

{//----------INT0--------------------------//

IT0=1;

EX0=1;

//----------INT1-------------------------//

IT1=1;

相关文档
最新文档