单片机自动往返小车_第1页
单片机自动往返小车_第2页
单片机自动往返小车_第3页
单片机自动往返小车_第4页
单片机自动往返小车_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.word 可编辑 .自动往返电动小汽车( 高级组 )设计报告专业 .专注.word 可编辑 .部门院系:常州大学信息科学与工程学院目录1、设 计任 务 31. 1 基 本要求 31. 2 发挥 部分 32、方案 论证与选择 42. 1、系 统 总 体框 图 42. 2、 各模块硬 件选 择 42. 2. 1、 控制 模块 42. 2. 2、外部传感器模块 52. 2. 3、电机驱动模块. 52. 2. 4、 电源模 块 5专业 .专注.word 可编辑 .2.2.5 、显示模块3、系统硬件原理与实现3.1 、系统总体电路图3.2.1、单片机控制模块73.2.2、外部传感器模块 .83.2.3

2、、电机驱动模块83.2 、系统各模块设计介绍 . 7324 、 L C D 液 晶 显 示 模.94、统软件设计104.1 系统软件设计框图104.2 系统软件设计代码125、设计数据测量191、设计任务设计并制作一个能自动往返于起跑线与终点线间的小汽车。 允许用玩具汽车改装,但不能用人工遥控(包括有线和无线遥控)专业 .专注.word 可编辑 .跑道宽度 0.5m,表面贴有白纸,两侧有挡板,挡板与地面垂直,其高度不 低于 20cm。在跑道的 B、 C、D、 E、F、G各点处画有 2cm宽的黑线,各段的长度 如图 1 所示。1.1 基本要求1)车辆从起跑线出发(出发前,车体不得超出起跑线) ,

3、到达终点线后停留 10 秒,然后自动返回起跑线 (允许倒车返回)。往返一次的时间应力求最短 (从 合上汽车电源开关开始计时) 。2)到达终点线和返回起跑线时,停车位置离起跑线和终点线偏差应最小(以车 辆中心点与终点线或起跑线中心线之间距离作为偏差的测量值) 。3)D E间为限速区,车辆往返均要求以低速通过, 通过时间不得少于 4 秒,但 不允许在限速区内停车。1.2 发挥部分1)自动记录、显示一次往返时间(记录显示装置要求安装在车上) 。2)自动记录、显示行驶距离(记录显示装置要求安装在车上) 。3)其它特色与创新。2、方案论证与选择2.1 、系统总体框图专业 .专注.word 可编辑 .选定

4、自动往返小车的题目后,我们决定购买一台符合尺寸要求的玩具小车, 直接利用上面的直流电机的方法实现要求, 由此节省自行安装和调试小车动力部 分的时间。根据设计任务要求,最终确定的系统设计框图如下:系统分为单片机控制模块、 外部传感器模块、 电机驱动模块、 电源模块和 LCD液晶显示模块2.2 、各模块硬件选择2.2.1 、控制模块控制模块负责接收传感器,控制液晶显示模块和 PWM控制输出。主流方案是 采用 FPGA芯片或者单片机。采用可编程逻辑器件 FPGA作为控制器。 FPGA可以 实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、 IO 资源丰富、 易于进行功能扩展。还可以采用 At

5、mel 公司的 AT89S52单片机作为主控制器 AT89S52是一个低功耗,高性能的 51内核的 CMOS 8位单片机,片内含 8k 空间 的可反复擦些 1000次的 Flash 只读存储器,具有 256 bytes 的随机存取数据存 储器(RAM),32 个 IO 口,2个 16位可编程定时计数器。考虑到本系统不需要复专业 .专注.word 可编辑 .杂的逻辑功能, 对数据的处理速度的要求也不是非常高。 且从使用及经济的角度考虑我们选择较为成熟的方案 2。2.2.2 、外部传感器模块 这里有三个地方需要用到传感器,分别是检测黑线,检测车速,检测障碍物,我 们分别用 TCRT5000检测黑线

6、与检测障碍物,用霍尔元件检测车速。 TCRT5000具 有紧凑的结构发光灯和检测器安排在同一方向上, 利用红外光谱发射对象存在另 一个对象上,操作的波长大约是 950 毫米,调理电路简单,工作性能稳定;利用 霍尔效应,在车轮的内侧装上二条细磁铁,把霍耳传感器同样装在车轮的内侧, 测量霍尔传感器的输出就可以知道车轮转过的圈数,工作原理比较简单易懂。2.2.3 、电机驱动模块 这里我们有两种方案,一种是采用分立元件构成驱动电路;另一种是采用专用芯片 L298N。虽然分立元件构成电机驱动电路,结构简单,价格低廉,在实际 应用中应用广泛。 但是这种电路工作性能不够稳定; 而 L298N是一个具有高电压

7、 大电流的全桥驱动芯片, 它相应频率高,一片 L298N可以分别控制两个直流电机, 而且还带有控制使能端。用该芯片作为电机驱动,操作方便,稳定性好,性能优 良。所以最后决定选用专用芯片 L298N作为电机驱动模块。2.2.4 、电源模块电源模块作用时把外部电压降为 5V,供给单片机和传感器使用2.2.5 、显示模块专业 .专注.word 可编辑 .这里我们有两种方案,一种是采用 LCD1602液晶屏;另一种是采用 8 位 数码管进行显示。采用 LCD1602液晶屏,该液晶屏可以两行显示数字、字母,显 示清晰;采用 8 位数码管进行显示, 数码管只能显示数字。 考虑到我们需要指示 当前数值是小车

8、行驶时间还是距离, 因此决定采用能显示更多内容的 LCD作为显 示模块的主要硬件。3、系统硬件设计与实现3.1 、系统总体电路图专业 .专注.word 可编辑 .89C52单片机P0接 LCD液晶显示屏的 7到 14数据端口P2 口分别接电机驱动模块的 A1,A2,B1,B2,C1,C2,D1,D2P1 口的 P10接 LCD液晶显示屏的数据命令选择端, P11 接 LCD液晶显示屏的读写 选择端, P12 接 LCD液晶显示屏的使能端;P13到P16分别接电机驱动模块的电机 a的使能控制端 pwma,电机 b的使能控制 端 pwmb,电机 c 的使能控制端 pwmc,电机 d 的使能控制端

9、pwmd;P17 接寻迹传感器的 OUT端,用来检测黑线;INT0 接左边壁障模块的输出端。INT1 接右边壁障模块的输出端。专业 .专注.word 可编辑 .T0端接霍尔元件的输出端,设置 T0 为计数模块,根据计数值算出路程3.2 、系统各模块设计介绍3.2.1 、单片机控制模块模块电路图如下:单片机在系统中起控制中心的作用,其内部代码见软件设计部分专业 .专注.word 可编辑 .3.2.2 、外部传感器模块(寻迹电路)1、没有检测到黑线,则 H4发光到白纸,光发射到 H4接受端, H4接收端导通, 则 2 脚比较器反相端 T1 接地=0;3脚比较器同相端为 3v,同相端大雨反相端 ou

10、t1 输出为 1。2、检测到黑线,则 H4发光到黑线,完全被吸收,接受端没有收到任何信号,因 为 H4截止,则 2 脚比较器反相端 T1=VCC.=5v,3 脚比较器同相端为 3v,反相端 大于同相端 out1 输出为 0.3、调试方法:黑色物体遮挡传感器检测 T1 脚电压变化是否正常,调节电位器 R13,使得 3 脚电压介于 T1 电压的最大和最小之间。3.2.3 、电机驱动模块模块电路图如下:专业 .专注.word 可编辑 .电机驱动模块利用电池组供电。单片机的两个端口输出“ 10”和“ 01”分别驱动小车向前和向后动, 另外一个端口输出 PWM波形,通过波形的占空比来控制 直流电机的转速

11、。L298N是 SGS公司的产品,内部同样包含 4 通道逻辑驱动电路。可以方便的 驱动两个直流电机,或一个两相步进电机。 L298N可接受标准 TTL 逻辑电平信号 VSS,VSS可接 457 V电压。4脚 VS接电源电压, VS电压范围 VIH为 25 46 V。输出电流可达 2.5 A,可驱动电感性负载。 1脚和 15脚下管的发射极分别 单独引出以便接入电流采样电阻,形成电流传感信号。 L298可驱动 2 个电动机, OUT1,OUT2和 OUT3,OUT4之间可分别接电动机,本实验装置我们选用驱动一台 电动机。 5,7,10,12 脚接输入控制电平,控制电机的正反转。 EnA,EnB接控

12、 制使能端,控制电机的停转。专业 .专注.word 可编辑 .3.2.4 、LCD液晶显示模块模块电路图如下:LCD1602为工业字符型液晶,能够同时显示 16*02 即 32 个字符。 1602 液晶 模块内部的字符发生存储器 (CGROM已)经存储了 160 个不同的点阵字符图形, 这 些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一 个字符都有一个固定的代码,只要在数据端输入相应的 ASCII 码,即可在 LCD 上显示相应字符。4、系统软件设计4.1 系统软件设计框图专业 .专注.word 可编辑 .开始启动检测路边黑线否有黑线 ?限速是再启动结束限速黑线数量加

13、1是计时 10s黑线数 =3?是停车黑线数 =4?否否结束限速是黑线数 =6?否是黑线数 =9?否是黑线数 =10?否否黑线数 =12?限速停车停止计时显示主界面显示时间是显示时间 ?否否是显示距离 ?显示距离专业 .专注.word 可编辑 .秒每个区间sbit lcdrs=P10;/ sbit lcdrw=P11;/ sbit lcde=P12;/ sbit pwma=P13;/ sbit pwmb=P14;/sbit pwmc=P15;/ sbit pwmd=P16;/ sbit rpr=P17;/4.2 系统软件设计代码#include #define uchar unsigned ch

14、ar#define uint unsigned intuchar code table=DISTANCE : . m;/ 显示距离,单位:米uchar code table1=TIME : s ;/ 显示运行时间,单位:uint code table_pwm=5,17,17,6,17,10,0,5,10,17,6,17,10,0;/ 的 PWM值数据命令选择端读写选择端使能端电机 a 的使能控制端 电机 b 的使能控制端 电机 c 的使能控制端 电机 d 的使能控制端 寻线传感器输入端信号uchar num;uint fx=0;/ 小车行进方向, 0 为前进, 1 为后退uint t=0;/

15、时间系数uint n=0;/ 黑线的个数uint pwm_date;/pwm 值float a1,b1;专业 .专注.word 可编辑 .int a0,a2,a3,a4,b0,b2,b3;void delay(uint m)/ 延迟 n (ms)int i,j;for(i=m;i0;i-)for(j=110;j0;j-);void write_com(uchar com)/ 写命令lcdrs=0;P0=com;delay(5);lcde=1;/ 使能信号端输入高脉冲delay(5);lcde=0;void write_date(uchar date)/ 写数据lcdrs=1;P0=date;d

16、elay(5);lcde=1;/ 使能信号端输入高脉冲专业 .专注.word 可编辑 .delay(5); lcde=0;void lcd_init()/lcdlcdrw=0;初始化lcde=0;write_com(0x38);/设置 16X2显示, 5X7点阵, 8 位数据接口write_com(0x0c);/设置开显示,不显示光标write_com(0x06);/写一个字符后地址指针加 1write_com(0x01);/显示清 0,数据指针清 0void int0_ringht()interrupt 0/ 左边壁障模块检测到信号右转if(rpr=1)/ 检测红外线是否检测到模块检测到黑线

17、n+;if(n=6)/ 到达终点线fx+;P2=0x55;/ 电机反转专业 .专注.word 可编辑 .delay(10000);/ 等待 10sn+;delay(100);if(fx=0)P2=0x2a;/ 前进时右转elseP2=0x15;/ 后退时右转if(n=13)write_com(0x80+0x0a);/a0=TL0;a1=a0*0.102;a2=a1/10;a3=a1-a2*10;write_date(0x30+a2);/write_date(0x30+a3);/write_com(0x80+0x0d);a4=(a1-a2*10-a3)*10;write_date(0x30+a4

18、);/delay(1);显示路程显示路程十位显示路程个位显示路程十分位专业 .专注.word 可编辑 .write_com(0x80+0x09+0x40);/显示时b0=t;b1=b0/50;b2=b1/10;b3=b1-b2*10;write_date(0x30+b2);/显示时间十位write_date(0x30+b3);/显示时间个位EA=0;/关 cpu 中断TR0=0;/关定时器 0TR1=0;/关定时器 1ET1=0;/关定时器 1 中断EX0=0;/关外部中断 0EX1=0;/关外部中断 1void int1_left()interrupt 2/右边壁障模块检测到信号左转if(r

19、pr=1)/ 检测红外线是否检测到模块检测到黑线n+;if(n=6)/ 到达终点线专业 .专注.word 可编辑 .fx+;P2=0x55;/ 电机反转delay(10000);/ 等待 10s n+;delay(100);if(fx=0)P2=0xa2;/ 前进时左转elseP2=0x51;/ 后退时左转if(n=13)write_com(0x80+0x0a);/显示路程a0=TL0;a1=a0*0.102;a2=a1/10;a3=a1-a2*10;write_date(0x30+a2);/显示路程十位write_date(0x30+a3);/显示路程个位write_com(0x80+0x0

20、d);专业 .专注.word 可编辑 .a4=(a1-a2*10-a3)*10;write_date(0x30+a4);/ 显示路程十分位 delay(1);write_com(0x80+0x09+0x40);/ 显示时间b0=t;b1=b0/50;b2=b1/10;b3=b1-b2*10;write_date(0x30+b2);/显示时间十位write_date(0x30+b3);/显示时间个位EA=0;/ 关 cpu 中断 u 中断TR0=0;/关定时器 0TR1=0;/关定时器 1ET1=0;/关定时器 1 中断EX0=0;/关外部中断 0EX1=0;/关外部中断 1void T1_ti

21、me()interrupt 3/定时中断子程序t+;TH1=(65533-18349)/256;/ 定时中断时间为 20ms专业 .专注.word 可编辑 .TL1=(65533-18349)%256; pwm_date=table_pwmn; pwma=1;pwmb=1;pwmc=1;pwmd=1;delay(pwm_date);pwma=0;pwmb=0;pwmc=0;pwmd=0;void main()lcd_init();/lcd 初始化write_com(0x80);for(num=0;num16;num+) write_date(tablenum);delay(5);write_c

22、om(0x80+0x40);专业 .专注.word 可编辑 .for(num=0;num16;num+)write_date(table1num); delay(5);TMOD=0x15;/ 设置定时器 0 为计数模式/ 定时器 1 设置为定时中断模式,选择模式 1 TH0=0x00;TL0=0x00;TH1=(65533-18349)/256;/ 定时中断时间为 20ms TL1=(65533-18349)%256;TR0=1;/ 开定时器 0TR1=1;/ 开定时器 1ET1=1;/ 开定时器 1 中断EX0=1;/ 开外部中断 0EX1=1;/ 开外部中断 1IT0=0;/ 设置外部中断 0 为低电平触发IT1=0;/ 设置外部中断 1 为低电平触发PT1=1;/ 设置定时器 1 为高优先级EA=1;/ 开 cp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论