当前位置:文档之家› 电磁组设计报告——走你

电磁组设计报告——走你

惠州学院第二届“速度与激情”智能小车竞速赛电磁组设计报告队名:走你队员:翁铢炜(队长),林贵玉,冯宇东时间:2013/03/(10—23)摘要:本设计是基于STC12C5A60S2单片机的智能小车的设计与实现,小车完成的主要功能是能够自主识别赛道中的通电导线实现快速稳定的寻线行驶。

小车系统以STC12C5A60S2 单片机为系统控制处理器;采用红外传感获取赛道的信息,来对小车的方向和速度进行控制。

此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。

一、实验目的:通过设计进一步掌握51单片机的应用,熟悉C语言的编程环境。

进一步学习51单片机在系统中的控制功能,能够合理设计单片机的外围电路,并使之与单片机构成整个系统。

二、设计方案:该智能车采用电磁传感器对赛道进行道路检测,单片机根据采集到的信号的不同状态判断小车当前状态,通过电机驱动芯片L298N 发出控制命令,控制电机的工作状态以实现对小车姿态的控制。

三、报告内容安排:本技术报告主要分为三个部分。

第一部分是对整个系统实现方法的一个概要说明,主要内容是对整个技术原理的概述;第二部分是对硬件电路设计的说明,主要介绍系统传感器的设计及其他硬件电路的设计原理等;第三部分是对系统软件设计部分的说明,主要内容是智能模型车设计中主要用到的控制理论、算法说明及代码设计介绍等。

硬件电路的设计1、最小系统:小车采用国产的增强型51单片机STC12C5A60S2作为控制芯片,图1是其最小系统电路。

主要包括:时钟电路、电源电路、复位电路。

其中各个部分的功能如下:1、时钟电路:给单片机提供一个外接的11.0592MHz的无源晶振。

2、电源电路:给单片机提供5V电源。

3、复位电路:在电压达到正常值时给单片机一个复位信号。

图1 单片机最小系统原理图2、电源电路设计:模型车通过自身系统,采集赛道信息,获取自身速度信息,加以处理,由芯片给出指令控制其前进转向等动作,各部分都需要由电路支持,电源管理尤为重要。

在本设计中,51单片机使用5V电源,电机使用7.2V电源。

考虑到电源为充电电池组,额定电压为7.2V,实际充满电后电压则为7.0-7.3V,所以单片机及传感器模块采用LN2940稳压后的5V电源供电,电机直接由电池供电。

3、传感器电路:①传感器的选择:电磁传感器采用10mH的工字电感②采用10MH电感和6.8nF的涤纶电容组成RLC并联谐振回路进行选频。

③LM386是一种音频集成功放,具有功耗低,电压增益可调,④二极管采用贴片的肖特基二极管。

⑤LM386的第七引脚连接10uF的电解电容。

⑥经多次试验测试,最终将上图的R12改为650K欧,此时结果最佳。

⑦传感器的布局:采用两路传感器,将两路传感器所检测到的电压值相减即可判断小车所在的位置与赛道中心导线的距离。

⑧传感器最终实物图:4、电机驱动电路:电机驱动芯片L298N是SGS公司的产品,内部包含4通道逻辑驱动电路。

是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。

其引脚排列如图1中U4所示,1脚和15脚可单独引出连接电流采样电阻器,形成电流传感信号。

L298可驱动2个电机,OUT1、OUT2和OUT3、OUT4之间分别接2个电动机。

5、7、10、12脚接输入控制电平,控制电机的正反转,ENA,ENB接控制使能端,控制电机的停转。

也利用单片机产生PWM信号接到ENA,ENB端子,对电机的转速进行调节。

L298N的逻辑功能:外形及封装:图3 L298N实物图L298N电路原理图:由于一片L298N可以直接驱动两个电机,但是为了加大驱动力,我们采用两路并联的方式来驱动电机。

图3.3 L298N电路5、小车最终布局图:软件系统的实现1、小车循迹规则:小车控制采用PWM控制算法,当两个传感器的差值大于或小于某一值的时候,小车左移(左轮减速,右轮全速)或右移(右轮减速,左轮全速),当两个传感器的差值在某一范围内是,小车全速前进。

2、小车最终程序:#include<STC12C5A60S2.h>#include<intrins.h>#define FOSC 18432000L#define BAUD 9600#define ADC_POWER 0x80 //ADC power control bit 电源控制位#define ADC_FALG 0x10 //ADC complete flag 标志位#define ADC_START 0x08 //ADC start control bit 启动控制位#define ADC_SPEEDLL 0x00 //420 clocks#define ADC_SPEEDL 0x20 //280 clocks#define ADC_SPEEDH 0x40 //140 clocks#define ADC_SPEEDHH 0x60 //70 clockstypedef unsigned char BYTE;typedef unsigned int WORD;float bj1,bj2;int cg1,cg2,go;go=0x05; //电机驱动设为0101BYTE ch=0;void InitADC();void Delay(WORD n);void kongzhi();void PWM();void GetADCResult(BYTE ch);void main(){P0=0X00; //P0口的LED灯全亮InitADC(); //初始化ADIE=0xa0;PWM(); //调用PWM函数while(1){GetADCResult(ch); //读取AD值并赋值给变量kongzhi(); //调用控制函数}}void GetADCResult(BYTE ch) //读取AD的函数{ADC_CONTR &=!ADC_FALG;for(ch=0;ch<2;ch++){switch(ch){case 0: ADC_CONTR=0xe9; //定义P1.1为AD转换1110 1001 _nop_();_nop_();_nop_();_nop_();while(!(ADC_CONTR&ADC_FALG));ADC_CONTR&=~ADC_FALG; //清除falg位cg1=ADC_RES;//把传到P1.1口的AD值(二进制)赋值给cg1break;case 1: ADC_CONTR=0xea; //定义P1.2口为AD转换1110 1010_nop_();_ nop_();_nop_();_nop_();while(!(ADC_CONTR&ADC_FALG));ADC_CONTR&=~ADC_FALG;cg2=ADC_RES;//把传到P1.2口的AD值(二进制)赋值给cg2break;default: break;}}if(++ch>=2) ch=0;}void InitADC()//初始化AD函数{P1ASF=0XE7; // 1110 0111 //定义为AD转换的IO口P1M0=0xE7 ; // P1.7-P1.0:1110 0111P1M1=0xE7 ; // P1.7-P1.0:1110 0111ADC_RES=0;ADC_CONTR=0xe9;Delay(2);}void Delay(WORD n) //延时函数{WORD x;while(n--){x=5000;while(x--);}}void kongzhi(){bj1=((cg2*5/256)-(cg1*5/256)); //两个传感器所检测到的电压的差值bj2=((cg1*5/256)-(cg2*5/256));if((bj1<1)&&(bj2<1)) //全速{CCAP0H=0x00; //左轮CCAP1H=0x00; //右轮P3=go;}else if(bj1>4/3) //强左拐{CCAP0H=0x45; //左轮CCAP1H=0x00; //右轮P3=go;}else if(bj1>1&&bj1<4/3) //微左拐{CCAP0H=0x25; //左轮CCAP1H=0x00; //右轮P3=go;}else if(bj2>1&&bj2<4/3) //微右拐{CCAP0H=0x00; //左轮CCAP1H=0x18; //右轮P3=go;}else if(bj2>4/3) //强右拐{CCAP0H=0x00; //左轮CCAP1H=0x35; //右轮P3=go;}}void PWM(){CCON=0;CL=0;CH=0;CMOD=0X02;CCAP0H=CCAP0L=0X80;CCAPM0=0X42; //允许比较器功能、PWM脉宽输出CCAP1H=CCAP1L=0X80;PCA_PWM0=0x00; //组成9位P1.3PCA_PWM1=0x00; //组成9位P1.4CCAPM1=0X42;CR=1; //启动PCA计数器阵列}收获与感受:根据本次设计要求,我们小组系统地阅读了大量的资料,并认真分析了设计课题的需求,还系统学习了51系列单片机的工作原理及其使用方法,并独自设计智能小车的整个项目。

虽然条件艰苦,但经过不懈钻研和努力,购买到了所有所需的元器件,并系统的进行了多项试验,最终做出了整个小车的硬件系统,本系统能够基本满足设计要求,能够较快较平稳的是小车沿引导线行驶,但由于经验能力有限,该系统还存在着许多不尽人意的地方有待于进一步的完善与改进。

通过本次课题设计,不仅是对我们课本所学知识的考查,更是对我的自学能力和收集资料能力以及动手能力的考验。

本次毕业设计使我们对一个项目的整体设计有了初步认识,还认识了几种传感器,并能独立设计出其接口电路,再有对电路板的制作有了一定的了解,并学会了使用Altium Designer设计电路。

本次毕业设计使我们意识到了实验的重要性,在硬件制作和软件调试的过程中,出现了很多问题,最终都是通过实验的方法来解决的。

还有以前对程序只是一个很模糊的概念,通过这次的课题设计使我对程序完全有了一个新的认识,并能使用C 熟练的进行编程了。

通过本次比赛,极大的锻炼了我们的思考和分析问题的能力,并对单片机有了一个更深的认识。

总之,在课题设计的过程中,无论是对于学习方法还是理论知识,我们都有了新的认识,受益匪浅,这将激励我们在今后再接再厉,不断完善自己的理论知识,提高实践运作能力。

相关主题