基于SPCE061A和CPLD的电动自行车充电系统研制
扫描二维码
随时随地手机看文章
随着电子技术、可编程逻辑器件(FPGA,CPLD)、EDA技术的飞速发展,基于硬件编程语言的自上而下(TOP-TO-DOWN)设计方法给数字系统的开发设计带来了革命性变革,仅使用单片机来实现系统控制的传统方法正在被越来越多的以MCU+FPGA/CPLD为核心的最新设计理念取代。采用这种混合设计方案的最大优点是两者的优势互补,电路结构简单,这给数字电路系统的设计带来极大的方便。利用CPLD控制的灵活性很容易对电路进行在线修改,实现各种复杂的数字逻辑控制,这极大地扩展了单片机的功能。而且由于硬件编程语言的灵活性及CPLD具有的在系统编程(In-SystemProgram)特点,大大缩短了系统开发研制周期。基于上述思想,研发了基于SPCE061A和CPLD的电动自行车充电系统。
1 系统硬件设计
1.1 系统组成及功能
该充电系统由凌阳SPCE061A单片机、充电器、按键、CPLD、ACM12864液晶显示器、上位机、语音电路等组成。充电器采用恒流、恒压、浮充三阶段充电方法对蓄电池进行充电。SPCE061A单片机控制六个充电器对六个蓄电池同时进行充电,同时检测各个充电器的恒流、恒压、浮充三个充电状态,并通过ACM12864液晶显示器显示各充电器的工作状态。通过按键选择各充电器的工作与停止,并可根据不同需要选择快速充电工作方式或普通充电工作方式,对蓄电池进行充电。系统上电进入工作状态后,当单片机检测到蓄电池已充满的信号或发生其他紧急情况所产生的信号时,可以自动关闭充电器,实现充电器操作智能化。利用凌阳SPCE061A单片机的语音功能对充电过程中所出现的故障进行语音提示,使设计更人性化,便于操作。充电系统可以和上位机进行通讯,从而实现系统之间的联网,有利于系统功能的扩充。其系统组成框图如图1所示。
1.2 液晶显示电路的设计
显示部分采用ACM12864C液晶显示器,该模块价格低。控制器为KS0107和KS0108,工作温度范围:0℃~50℃,储存温度范围:-20℃~70℃,自带负电压发生电路,单+5V供电,带背光,可与各种微处理器直接接口,数据读写操作不受外部时钟控制,不带汉字库,占空比为1/64,外部共有20条引脚来进行外部接口。ACM12864C能够充分满足汉字显示的要求。通过必要的程序设计,可实现在充电过程中通过对充电器恒流、恒压、浮充等信号的采集,在ACM12864液晶显示器上实时动态地显示电池状态。SPCE061A与ACM12864的接口如图2所示。
1.3 键盘电路及I/O电路设计
本系统采用CPLD作为SPCE061A单片机和充电器的接口部分,实现I/O口扩展,并完成键盘扫描功能。CPLD的使用,取代了一些专用集成电路,减少了系统的复杂性,提高了系统的集成度。本系统采用硬件电路来完成对键盘的扫描工作,当有按键按下时,CPLD内部状态发生改变。按键弹起后,内部状态经CPLD自动处理转化为相应的键值被送到输出端口,供单片机扫描时取走键值。相对于软件判别键盘工作状态,这样不仅节省了SPCE061A的存储空间,还极大地提高了系统的工作速度,更好地实现了实时性。
CPLD选用ALTERA公司生产的MAX7000S 系列中的EPM7128SLC84-15。该芯片共有84个引脚,采用EEPROM技术制作;内含2 500个逻辑门,128个宏单元,时钟工作频率可达151.5MHz。通过CPLD对资源的整合,实现了用一片CPLD实现I/O电路、硬件扫描判别等,优化了硬件的布局。如需改变系统的功能,只需改变相应的源代码而不是硬件结构,因而具有很大的灵活性。
2 系统软件设计
2.1 主程序设计
本系统的软件部分采用C语言和汇编语言混合编制而成,因而该程序具有功能强大、设计完备等特点。主程序主要完成如下功能:
(1)系统初始化和参数的设置;
(2)充电器三种工作状态的检测和显示;
(3)控制各个充电器的工作和停止以及快速充电和普通充电两种充电方式的选择;
(4)蓄电池正反极性的判断,极性接反时自动进行语音报警;
(5)充电器充满蓄电池时自动关闭充电器;出现异常情况时自动进行语音报警;
(6)对快速充电时间长短进行设定。
系统主程序流程图如图3所示。
2.2 语音播放程序设计
SPCE061A的D/A转换通道的硬件实现大致有两种方式,一种是直接采用数/模转换器DAC方式,另一种是采用脉宽调制PWM驱动方式。SPCE061A音频输出的结构就是由两个DAC通道或一个PWM驱动通道构成。这两种实现方式实质都为数/模转换,都是将数字信号转换为电流模拟信号输出。SPCE061A的音频输出采用双通道模/数转换方式,即数字信号通过10位DAC转换成3mA驱动的电流模拟信号输出。语音提示输出直接采用DAC通道,经信号放大后,由扬声器输出。语音播放流程图如图4所示。
程序编写如下:
#INCLUDE “hardware.h”
# INCLUDE “S480.h”
Void Sound (unsigned int i)
{
SACM_S480_Initial(1);
SACM_S480_Volume(10);
SACM_S480_Play(i,1,0);
while(SACM_S480_Status()&0x0001);
{
SACM_S480_ServiceLoop();
}
SACM_S480_Stop();
}
2.3 CPLD程序设计
VerilogHDL语言是硬件描述语言,是描述硬件电路的功能、信号连接关系及定时关系的语言,通过语言编程来表示逻辑器件及系统的功能和行为。其具有设计技术齐全、方法灵活、支持广泛、硬件描述能力强、与器件工艺无关、易于共享和复用等优点。与VHDL相比,VerilogHDL是一种非常容易掌握的硬件描述语言,而掌握VHDL设计技术就比较困难。故采用VerilogHDL语言来设计接口电路,能充分利用VerilogHDL语言在系统级硬件描述上的优点。
CPLD实现两个多路选择器和一个键盘扫描电路功能。程序各端口功能如表1所示。datain1由datain1[0]......datain1[17] 18位输入端口组成,分为6组,每组3个端口。rs由rs[0]、rs[1]、rs[2]3位端口组成,最多可以表示8个2进制数(本设计用到其中的6个)来表示端口选择位。dataout1由 dataout1[0]、dataout1[1]、dataout1[2]3位组成,表示输出端口。datain1、dataout1、rs组成一个多路选择器,实现选择输入功能,rs的值决定选择datain1的哪一组信号送给dataout1,由dataout1输出。datain2由datain2[0]、 datain2[1]组成,表示输入端口。dataout2由dataout2[0]......dataout2[11]12位输出端口组成,分成6组,每组2位。同理,datain2、 dataout2、rs组成另一个多路选择器,实现选择输出功能,rs的值决定选择datain2的2位信号从dataout2的哪一组输出。rt为控制脉冲,当为上升沿时实现选择输入功能,当为下降沿时实现选择输出功能。datain3为16位按键输入口(低电平有效),每位代表一个按键。dataout3为4位按键值输出端口,当有按键按下时,经CPLD内部状态发生改变,按键弹起后,内部状态经CPLD自动处理转化为相应的键值从dataout3输出(高电平有效)。如当datain3位为1111111111111101时,表示2号键按下,dataout3将输出0010,表示按键值为2。
3 CPLD仿真
从最初的电路设计思想到QuartusII的波形仿真、再到CPLD的芯片编程结束,开发设计流程图如图5所示。
在QuartusII 平台上,对VerilogHDL程序编译后,用Simulator对之进行时序仿真,得到如图6所示的结果。
由图中可以看到各预定功能都得到了实现,如datain3为111111011111时,dataout3输出为0110,仿真结果完全符合电路的要求。
基于SPCE061A+CPLD设计的电动自行车充电系统,简化了系统软硬件设计,提高了电路的稳定性和可靠性;使系统设计灵活、开发周期短、集成性更强,同时使系统易于升级和扩展。经检验测试,各项技术指标均达到了设计要求。
参考文献
1 张鹏举,李树华,窦海峰.用单片机及CPLD实现的多功能控制系统设计.内蒙古大学学报(自然科学版),2005;36(3):316~320
2 李向舜,刘明慧.基于CPLD技术的AD转换器接口电路设计.压电与声光,2005;27(4):385~389
3 李春雷,王祖强.基于CPLD的电子存包系统的设计与实现.电子技术应用,2005;31(7):69~72
4 李小波,孙志勇,刘春生.基于CPLD和单片机的低频信号源设计.仪器技术与传感器, 2005;(11):46~49