欢迎来到天天文库
浏览记录
ID:43513508
大小:195.29 KB
页数:9页
时间:2019-10-09
《寻迹小车制作笔记》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、寻迹小车制作笔记——制作人:陈彦彧一.寻迹部分:1.原理:利用RPR220红外対管收集路面黑线信息,由红外发射管发射出红外线,由于地面的反射跟黑线的反射率不一样,所以红外接收管接收到反射光线的强度也不一样,引起红外接收管的电阻发生变化,用一个电路把这种电阻变化转变为电压变化(图1-1),再经过单片机的A/D转换功能把电压值读出来,就可以判断当前的情况是黑线还是地面了。2.红外対管的分布:尽可能考虑到道路的复杂性以及这辆小车的硬件配置,我利用了六个红外对管来检测。其中5个用于检测道路的左右分叉,有一个用于超前检测路况(图1-2)。
2、图1-2考虑到道路拥有十字以及众多的交叉,我认为使用这种分布可以更有效的使小车排除这种干扰,由此加快小车的判断速度。一.电源供电部分1.我使用的是6节1.2V串联结构的充电电池,共7.2V。2.由于我使用的单片机(ATmega16A)的供电需要5V的稳定电压,而且为了避免电机正反转造成的电压变化造成单片机的复位,这里必须要一个稳压电源,我选用的芯片是比较常用的Lm7805,不需要太高级的稳压芯片,以免大材小用。3.驱动芯片要配合滤波电容使用,才能更好的稳定电压。为了检测稳压效果,并联一个发光二极管,整体电路图(图2-1)4.要注
3、意的是,这个电路只能用于6V以上的电压稳压,而且稳压后的输出只能是5V如果有需要的就是用其他的稳压芯片吧。图2-1二.电机驱动部分以及轮子设计1.我使用的是L298N驱动芯片,可以同时控制两路电机,配合以上的电源供电部分就可以整合成一个适合单片机的电机驱动(图3-1)。2.由于我想自己做小车,而一块板上凭我的能力只能焊好一个稳压模块,一个L298N模块以及一块单片机最小系统及其指示灯,所以我舍弃了四轮驱动,并把后面的两个轮拆成空转轮,这样做使电机负荷增加,转弯变得困难,使小车转弯速度慢了不少,可是这样也存在好处,在转弯的时候不用
4、考虑过多的情况,直接差速转,反正有两个后轮的制约,转弯转的很慢,所以不用担心飞出跑道。一.单片机部分1.ISP下载口及PORTC的指示灯为了调试方便,我当然把ISP下载口安装进去了,如果有需要可以把JTAG口也焊上,可是我PORTC用来安装指示灯了,所以只用ISP足够了。二.元件清单元器件数量小车底盘套件带电机(带轮)1L2981RPR2205ATMEGA16(带底座)10.1uF电容2104P陶瓷电容210UF电容2100uf电容21k电阻61.2k电阻647K电阻6开关1万用板9*152普通发光Led1078051二极管1N
5、581910ISP下载口*1一.软件设计1.主函数使用一个数组存储A/D转换的数据并合成一个move值,把这个值送到MOVE(移动)函数里。/*主函数*/voidmain(void){whole_init();while(1){b[0]=ADC_begin(0);b[1]=ADC_begin(1);b[2]=ADC_begin(2);b[3]=ADC_begin(3);b[4]=ADC_begin(4);b[5]=ADC_begin(5);light();move=0x00;for(a=0;a<=5;a++){move=(mov
6、e<<1)+b[a];}move&=0x3f;MOVE(move);}}2.MOVE函数使用的是一种比较笨拙的方式,就是把所有的情况列出来,虽然这种方式看起来比较笨拙,可是更有效快速,并通过调用run、back、left、right、stop等函数,以后只要修改这几个子函数,就可以随时调整车子的速度以及灵敏度,由于我使用的车子在硬件上决定了比较笨拙,所以没有使用常用的自动修改PWM的值的大小来调速,而是直接使用稳定的PWM,也就是说我的车子是不会自动调整角度的,只会一小个一小个角度的转,如果以后有比较好的车子可以尝试一下自动修改
7、PWM的程序,会更加智能。/*移动函数*/voidMOVE(ucharc){switch(c){case0x00/*000000*/:back();break;case0x20/*100000*/:left();break;case0x10/*010000*/:left();break;case0x08/*001000*/:run();break;case0x04/*000100*/:right();break;case0x02/*000010*/:right();break;case0x01/*000001*/:run();b
8、reak;case0x30/*110000*/:left();break;case0x18/*011000*/:left();break;case0x0c/*001100*/:right();break;case0x06/*000110*/:right();br
此文档下载收益归作者所有