1、参赛作品说明书课题名称:单片机控制的无线充电的微型电动汽车设计 所属院校:海口经济学院 院系专业:信息工程学院通信工程 制作团队:赵洋涛、范倩、唐轲 指导老师:孙玉轩、何斌 完成时间:2013.6.11 2摘 要本作品主要采用无线充电技术与超级电容,用单片机控制无线充放电的切换,无线充电线圈的定位,实现了无线充电的微型电动汽车设计。本系统使用无线充电与超级电容,可安全,快速,有效的为小车提供电能。亲手设计基于单片机的无线控制模块电路,并制成了 PCB 板,通过软件编程实现无线充放电模式的自动切换并用 LED 灯提示,可随时用 LCD 显示充电的电压,充电的时间。小车用 L298N 电机驱动模块
2、进行驱动,并通过无线遥控控制小车行进方向。关键字:无线充电 超级电容 无线充电控制3目 录摘 要 .2目 录 .31 概述 41.1 背景 .41.2 作品的优势 .42 总体设计 53 硬件设计 53.1 无线充放电控制模块 .53.1.1A/D 转换模块 .63.1.2 显示模块 63.1.3 最小单片机系统 73.2 无线充电模块超级电容 .73.3 四键无线遥控控制模块 .83.4 电机驱动模块 .94 软件设计 .104.1 软件开发环境 .104.1.1 C 语言开发环境 .104.1.2keil 开发环境 104.1.3STC-ISP 开发环境 104.2 软件程序设计 .114
3、.2.1 时间显示设计 114.2.2 电压监控设计 114.2.3 充放电切换 124.2.4 无线遥控程序设计 125 发展方向 .136 附录 .136.1 无线充放电控制原理图 .136.2 无线充放电控制 PCB 图 .146.3 源程序 .1446.3.1 无线充放电控制源程序 146.3.2 无线遥控源程序 1951 概述1.1 背景当今社会,随着世界工业和社会经济的高速发展,人类在能源方面面临着前所未有的严峻挑战。因此,研究开发替代性绿色能源有着至关重要的现实意义。手机、MP3 和笔记本电脑等便携式电子设备进行充电主要采用的是一端连接交流电源,另一端连接便携式电子设备充电电池的
4、传统充电方式。这种方式有很多不利的地方,首先频繁的插拔很容易损坏接头另外也可能带来触电的危险。因此非接触式感应充电器在上个世纪末期诞生凭借其携带方便、成本低、无需布线等优势迅速受到各界关注。因此,实现无线充电,能量传输效率高,便于携带成为充电系统的研究方向之一。1.2 作品的优势本作品通过硬件搭建,实现对超级电容的无线充电,再通过超级电容放电,对小车进行供电,用无线遥控模块遥控小车。全过程使用单片机软件编程进行控制与监控,实现全部功能。本作品的优点集中在以下几个方面:1. 无线充电解决电气接口不同或充电器不兼容的问题,增强便携性、美观性以及使用的安全性。在小功率充电方面,产生的磁场与地球磁场相
5、近不会对人体产生伤害,并且电能转化的效率高。2. 超级电容在各种电能储存方式中具有功率密度高,充电速度快,循环使用寿命长,效率高,充放电过程基本可逆,低温性能优越,控制简单,绿色环保,安全性好的优势。使用超级电容能大大提高储存电量。3. 使用单片机软件编程控制充放电的过程安全性好,电路设计简单,软件编程也很容易。技术非常成熟。4. 使用无线遥控技术控制小车,通过 51 单片机最小系统软件编程控制,用 L298N 驱动模块和无线接收模块,实现小车的无线控制。2 总体设计本作品的原理框图如下所示:以无线充电为核心,利用超级电容的充电迅速,储能多的特性,存储电能。使用单片机设计一个无线充放电控制模块
6、,对无线充电进行实时监控。通过无线遥控技术软件编程,使用 L298N 电机驱动控制小车的行驶。本产品以超级电容组来取代市面上对环境有污染的镍镉电池、锂电池,可以改善环境问题。而且超级电容具有存储电量多、充电时间短、使用寿命长等特点。无线充电,利用电磁耦合原理进行无接触充电,解决了电气接口不同和电源适配等问题,从而增强便携性、美观性,由于线圈发射出的磁场与地球磁场类似,对人们无辐射,因此使用很安全智能控制,制作单片机最小系统,包括 A/D 转换模块,LCD 液晶显示模块,以及6充放电切换和指示模块。利用单片机对继电器的控制实现电容组的充放电的自动切换,同时实现对电容组工作状态的实时监控。3 硬件
7、设计3.1 无线充放电控制模块本作品使用 AT89C52 单片机,设计硬件电路图,并制成 PCB 板,通过软件编程实现无线充电控制,实现的功能有:充放电模式的自动切换,并随时显示监控的电压,显示充电时间以及指示充放电状态。73.1.1A/D 转换模块图 3.1 A/D 转换电路A/D 转换模块使用 PCF8591 芯片,完成充放电电路电压的数模转换。PCF8591 是一个单片集成、单独供电、低功耗、8-bit CMOS 数据获取器件,具有 4 个模拟输入、1个模拟输出和 1 个串行 IC 总线接口,其工作电压为 2.5V-6V。PCF8591 的 3 个地址引脚 A0, A1 和 A2 可用于
8、硬件地址编程,允许在同个 IC 总线上接入 8 个 PCF8591 器件,而无需额外的硬件。在 PCF8591 器件上输入输出的地址、控制和数据信号都是通过双线双向 IC 总线以串行的方式进行传输。本设计使用 AIN0 模拟输入口,输入充放电的电压的模电值。3.1.2 显示模块图 3.2 显示电路显示模块使用 LCD 液晶显示器。1602 字符型 LCD 能够同时显示 16*2 即 32 个字符(16 列 2 行)。芯片工作电压:4.5-5.5V。工作电流:2.0mA(5.0V)。1602 共 16 个管脚,但是编程用到的主要管脚不过三个,分别为:RS(数据命令选择端),R/W(读写选择端)8
9、,E(使能信号); RS 为寄存器选择,高电平选择数据寄存器,低电平选择指令寄存器。R/W 为读写选择,高电平进行读操作,低电平进行写操作。E 端为使能端,后面和时序联系在一起。D0D7 分别为 8 位双向数据线,连接单片机的 P0 口。3.1.3 最小单片机系统图 3.3 单片机最小系统电路本模块为无线充放电模块的核心,使用 AT89C52 芯片和 12MHZ 晶振。用作小车充电的监控和切换以及电池组的保护、监控。3.2 无线充电模块超级电容 本作品的无线充电采用“磁耦合共振”这种新技术,当发射端通电时,它并不会向外发射电磁波,而只是在周围形成一个非辐射的磁场。这个磁场用来和接收端联络,激发
10、接收端的共振, 从而以很小的消耗为代价来传输能量。在这项技术中,磁场的强度将不过和地球磁场强度相似,不用担心这种技术会对身体和其他设备产生不良影响。图 3.5 无线充电原理图9无线充电模块内部集成了振荡电路、整形电路、检测电路、频率干扰抑制电路、电流自动控制、无线功率发射电路等部分组成。发射模块可以在 512V 电压下工作,输出为 5V 500mA。其接收端接收的功率由收发距离决定。图 3.6 无线收发模块实物超级电容就是一个用来存储无线充电能量的电池。相对于一般的电池,超级电容具有充电时间短、使用寿命长、温度特性好、节约能源和绿色环保等特点。本作品共使用 6 个耐压值为 2.7V 的超级电容
11、,每三个电容串联,最后把串联的电容并联。3.3 四键无线遥控控制模块无线遥控模块使用集成模块,基本技术参数如下所示:工作电压(V): DC5V静态电流(mA): 4.5mA工作温度: -10+70接收灵敏度(dBm): -105DB工作频率(MHz):315、433.92MHz(266-433MHZ 频率段可任选)工作方式:M4(点动:按住不松手就输出,一松手就停止输出)、L4(互锁:四路同时只能有一路输出)、T4(自锁:四路相互独立输出、互不影响,按一下输出再按一下停止输出)天线长度:1/4 波长的天线接收效果最好,一般采用 50 欧姆单芯导线,天线的长度315M 的约为 23cm,433M
12、 的约为 17cm;10图 3.7 无线遥控模块3.4 电机驱动模块L298N 驱动模块,可以直接驱动两路 3-30V 直流电机,并提供 5V 输出接口,直接给单片机电路供电,支持 3VMCU 控制,方便控制直流电机速度和方向。原理图如下:图 3.8 L298N 电机驱动原理图模块接线方法:IN1-IN4 接单片机的 P04-P07 的 I/O 接口,OUT1-OUT2 接直流电机1,OUT3-OUT4 接直流电机 2,VCC,GND 接超级电容的正负极。 5V 输出直接给单片机供电。114 软件设计4.1 软件开发环境4.1.1 C 语言开发环境Visual C+6.0 是微软公司推出的目前
13、使用极为广泛的基于 Windows 平台的可视化集成开发环境,它和 Visual Basic、 Visual Foxpro、Visual J+等其它软件构成了 Visual Studio(又名Developer Studio)程序设计软件包。 Developer Studio 是一个通用的应用程序集成开发环境,包含了一个文本编辑器、资源编辑器、工程编译工具、一个增量连接器、源代码浏览器、集成调试工具,以及一套联机文档。使用 Visual Studio,可以完成创建、调试、修改应用程序等的各种操作。 VC+6.0 除了包含文本编辑器,C/C+混合编译器,连接器和调试器外,还提供了功能强大的资源编
14、辑器和图形编辑器,利用“所见即所得”的方式完成程序界面的设计,大大减轻程序设计的劳动强度,提高程序设计的效率。 VC+的功能强大,用途广泛,不仅可以编写普通的应用程序,还能很好地进行系统软件设计及通信软件的开发。4.1.2keil 开发环境keil 是基于 Windows 的开发平台,包含一个高效的编译器、一个项目管理器和一个MAKE 工具。包括 C 编译器、宏汇编译、连接/ 定位器、目标代码到 HEX 的转换器。以 STC单片机为主芯片,用串口线即可完成程序的下载,电源采用 USB 口供电,更加方便携带,一台计算机足以完成程序的开发及下载工作。普通的安装有 Windows 7 的计算机便可按
15、照软件安装指示一步一步的安装 keil 软件。4.1.3STC-ISP 开发环境STC-ISP 是一款单片机下载编程烧录软件,是针对 STC 系列单片机而设计的,可下载STC89 系列、12C205 系列和 12C5410 等系列的 STC 单片机,使用简便,现已被广泛使用。1)打开 STC-ISP,在 MCU Type 栏目下选中单片机,如 STC89C52RC;2)根据 9 针数据线连接情况选中 COM 端口,波特率一般保持默认; 3)先确认硬件连接正确,按如图点击“打开文件” 并在对话框内找到您要下载的 HEX 文件;4)点击“Download/下载”;5)手动按下电源开关便即可把可执行
16、文件 HEX 写入到单片机内;124.2 软件程序设计4.2.1 时间显示设计时间显示模块,使用单片机内部定时中断器 T0,工作在方式 1,晶振为 12MHZ,通过 LCD1602 液晶显示器。时间显示的格式为:“ Time 00:00:00 ”。单片机使用的是 12MHZ 晶振,其周期为 1us,因此程序设定了count,shi,fen,miao 四个计数变量,四个嵌套的循环函数。首先设定TH0,TH1 的初始值,当中断时,count 变量加 1,直到 count 等于 20 时,count 变量重新至 0,miao 变量加 1;直到miao 等于 60 时,miao 变量重新至 0,显示
17、miao,fen 变量加 1;如此循环,在LCD1602 上显示时间。4.2.2 电压监控设计电压监控模块,使用 PCF8591 芯片进行A/D 转换,通过单片机内部定时中断器 T1,工作在方式 1,显示在 LCD1602 液晶显示器上。电压显示的格式为:“ V:000.0 ” 。当单片机 T1 产生中断时,则开启总线,通过移位函数,开始向单片机串行发送数据。单片机选择 PCF8591 四路模拟输入通道中的第一路通道,再重新开启总线,发送数据,通过移位函数,串行接收数据,并且关闭总线。最后写指令和数据,显示在 LCD1602 液晶显示器上。134.2.3 充放电切换充放电切换模块,使用两个继电
18、器和 LED 灯来完成。继电器分别控制超级电容的正负两极。LED 灯用来指示充放电的过程。初始化时,两个 LED 灯都为灭,继电器为放电状态。当单片机中断时,从 A/D 转换模块得到电压值。判断电压值,当电压值小于 5V 时,继电器切换到充电状态,LED 灯指示充电状态。当电压值大于 9V 时,继电器切换到放电状态,LED 灯指示放电状态。否则,继电器保持原本的状态,直到电压值满足判断条件,再进行跳变。4.2.4 无线遥控程序设计无线遥控接收模块直接与单片机的 P3.4-P3.7I/O 接口相连,可直接通过遥控控制。小车的电机驱动与 P2.0-P2.3I/O 接口相连,通过改变高低电平,实现小
19、车的各项操作。当按下遥控时,无线接收模块接收信号,通过单片机给相应的电机至高低电平,改变其状态。145 发展方向本作品只是初步实现无线充电的功能,还需要进一步完善。比如说,只是进行短距离充电,考虑长距离充电转化效率还能低。充电的时间也过长,需要增加充电电压与电流,实现快速充电。超级电容也需要一个保护电路,以免充电过压或过流等。无线充电控制电路的功能太过单一,可通过 I/O 口进行扩充,增加作品功能。6 附录6.1 无线充放电控制原理图156.2 无线充放电控制 PCB 图 6.3 源程序6.3.1 无线充放电控制源程序#include#include#define uchar unsigned
20、 char#define uint unsigned intsbit rs=P25; /定义sbit rw=P26; / 定义读写端口sbit e=P27; / 定义使能信号引脚sbit SDA=P32;sbit SCL=P33;uchar num=0;char shi,fen,miao;16uchar count,mm;uchar code table=“:“;uchar code table0=“ V:000.0“;uchar code table1=“ Time 00:00:00 “;/*延时*/void delay(uint z)uint x,y;for(x=z;x0;x-)for(y
21、=110;y0;y-); /*写指令*/void write_com(uchar com) rs=0; / 指令rw=0; / 写入e=0; P0=com;delay(5);e=1; /允许delay(5);e=0;/*写数据*/void write_date(uchar date) rs=1; / 数据rw=0; /写入e=0;P0=date;delay(5);e=1; / 允许delay(5);e=0;/延时函数/启动总线/void Start()SDA=1;SCL=1; delay(5);SDA=0;delay(5);SCL=0; 17/结束总线/void Stop()SDA=0;SCL
22、=1;delay(5);SDA=1;delay(5);/非应答函数/void Noack()SDA=1;delay(5);SCL=1;delay(5);SCL=0;void Ack()SDA=0;delay(5);SCL=1;delay(5);SCL=0;/数据发送函数/void Send(uchar c)uchar bite;for(bite=0;bite #include sbit P04=P04;sbit P05=P05;21sbit P06=P06;sbit P07=P07;sbit P23=P23;unsigned char a,b;void delay10ms()for(a=100;a0;a-)for(b=225;b0;b-);sbit A=P34;sbit E=P35;sbit C=P36;sbit D=P37;void main(void)while(1)P23=0;if(A=1) /前进P04=0;P05=1;P06=0;P07=1;delay10ms();if(E=1) /后退P04=1;P05=0;P06=1;P07=0;delay10ms();if(C=1) /左转P04=0;P05=1;P06=1;P07=0;delay10ms();if(D=1) /右转P04=1;P05=0;P06=0;P07=1;if(A=0P05=1;P06=1;P07=1;