基于FPGA的PWM直流电机控制器开发.docx
《基于FPGA的PWM直流电机控制器开发.docx》由会员分享,可在线阅读,更多相关《基于FPGA的PWM直流电机控制器开发.docx(47页珍藏版)》请在冰点文库上搜索。
基于FPGA的PWM直流电机控制器开发
摘要
本设计是基于FPGA的PWM直流电机控制器开发,采用FPGA芯片设计数字硬件PWM直流电机控制器。
其具有两种控制方式可供选择,分别是单片机控制或者上位机控制,系统通过调节直流电机的平均电压方法实现对直流电机调速控制,PWM直流电机控制器可以提供8路独立的PWM控制信号,并且每一路PWM信号均可以独立调节,能同时控制8个直流电机工作/停止、正反转及实现直流电机转速调节。
本设计主要包括硬件和软件两大部分。
硬件部分主要包括PWM控制电路、RS—232串行接口和电机驱动电路。
软件部分主要分为三大部分:
第一部分是PWM的控制模块程序;第二部分是上位机的VB界面及串行通讯控制程序;第三部分是单片机的串行通讯程序。
关键词:
直流电机控制器PWMFPGA
Abstract
ThedesignisthetitleofthecontrolexploitationofDCMotorUsingPulse-WidthModulationBasedonFPGA.FPGAchipdesignusingdigitalhardwarePWMDCmotorcontrollers.Itscontrolwithtwooptions,namelytheMCUcontrolorPCcontrol,thesystemthroughtheadjustmentoftheaveragevoltagedirectcurrentmethodofDCmotorspeedcontrol,PWMDCmotorcontrollercanprovide8independentPWMControlsignals,andeachpathcanbeindependentPWMsignalconditioning,cansimultaneouslycontrolofeightmotorwork/stop,andachievingpositiveandDCmotorspeedregulation.
Thedesignofhardwareandsoftwareincludingthetwomost.HardwareincludingmainPWMcontrolcircuit,RS-232serialinterfaceandthemotordrivecircuit.Somesoftwarecanbedividedintothreeparts:
ThefirstpartisthePWMcontrolmodule;PCisthesecondpartoftheVBinterfaceandserialcommunicationcontrolprocedures;SCMisthethirdpartoftheserialcommunicationprocedures.
KeyWords:
DCmotorbasedPWMFPGA
目录
第1章绪论1
第2章整体方案设计3
2.1设计任务3
2.2.设计方案论证3
2.3设计方案结构框图5
第3章硬件电路设计7
3.1PWM控制模块电路设计7
3.1.1芯片的选择7
3.1.2PWM控制模块电路设计7
3.2单片机控制模块设计9
3.2.1AT89S51芯片性能10
3.2.2单片机控制模块电路设计11
3.3串行通讯电平转换电路设计13
3.3.1芯片选择13
3.3.2串行通讯电平转换电路设计13
3.4电机驱动电路设计14
3.4.1直流电机特点14
3.4.2直流电机驱动电路设计15
第4章控制系统的软件开发17
4.1PWM控制模块的控制元件及后台程序17
4.1.1UART接收状态机元件设计18
4.1.2源程序文件的编译和封装18
4.1.3.创建工程22
4.1.4UART发送状态机元件设计23
4.1.5建立嵌入式锁相环元件设计26
4.1.6数据存储器的设计27
4.1.7地址计数器的设计30
4.1.8按地址分配数据元件设计31
4.1.9数字比较器元件设计32
4.1.10锯齿波发生器元件设计33
4.1.11二选一选择输出器元件设计34
4.1.12时钟选择元件设计35
4.2上位机串行通讯控制程序设计37
4.2.1MSComm控件简介37
4.2.2MSComm控件提供的串行通讯方式37
4.2.3上位机与PWM控制模块的串行通讯程序38
4.3单片机与PWM控制模块的串行通信程序设计39
第5章系统调试42
5.1八路各自独立的PWM波形产生的调试42
5.2PWM控制模块与上位机通讯的调试43
5.3单片机对控制系统的程序控制44
结论45
参考文献46
致谢47
第1章绪论
20世纪末,电子技术获得了飞速的发展,在其推动下现代电子技术几乎渗透到社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
特别是微电子技术的发展,更是令人应接不暇。
在这其中尤其以EDA技术和单片机技术的发展更为迅速。
现在对EDA技术和单片机技术的应用十分广泛,包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有它们的应用。
目前这两项技术已在各大公司、企事业单位和科研教学部门广泛使用。
例如在实际的生产过程中的设计和控制,从设计、性能的测试及特性分析到模拟,都可能涉及到。
在电机调速方面,PWM(脉宽调制)调速方式得到广泛应用,且有很大的发展潜力,通常采用单片机系统作为直流电机PWM控制实现手段,但是单片机IO口少,且采用PWM调速方式需使用定时器参与控制,对于51系列的单片机定时器只有2个,要实现多路直流电机控制比较困难,而且单片机控制不够精确。
目前使用MCU或者DSP(数字信号处理器)来研制直流电机控制器很普遍,通过在MCU或DSP中预置用于电机控制的指令、接口和外设,可以很方便地实现对于直流电机的控制。
但是,受程序控制系统工作模式的限制,其控制精度一般不高;受处理器芯片内部资源限制,无法实现多路的PWM波形输出。
用于实现PWM调速控制,利用FPGA芯片设计PWM控制器是一种很好的选择。
FPGA芯片具有很好的精度而且在资源方面有很多可供开发的空间,能实现直流电机的多路控制;FPGA芯片的功能强大,在开发方面有很大的优势;编程设计使用VHDL描述语言,其编程功能很强大,编程的思路简单。
基于FPGA芯片在直流电机控制器开发方面的诸多优势,因此本次设计中采用FPGA芯片设计直流电机PWM控制器。
设计中选用了Altera公司Cyclone系列FPGA芯片EP1C3T144C8,因为该芯片资源丰富,控制精度高,稳定性好,成本低,用于多路直流电机控制具有很大的优势,能实现多台直流电机独立调节;容易实现与上位机之间的通讯。
本文对基于FPGA的PWM直流电机控制器的设计进行论述。
设计采用
FPGA芯片作为数字硬件PWM直流电机控制器的核心芯片,直流电机的驱动采用H桥驱动电路,控制器部分主要由FPGA芯片的程序模块组成可以提供8路独立的PWM控制信号,并且每一路PWM信号均可以独立调节,能同时控制8个直流电机工作/停止、正反转及实现直流电机转速调节;设置了FPGA芯片和PC机、FPGA芯片和单片机的串行通讯接口,可以分别通过上位机的VB界面或单片机设置FPGA直流电机PWM控制模块的参数,从而实现对直流电机的调节与控制。
系统设计的目的在于建立一个直流电机控制平台,用户可以方便的在本设计的基础上,通过在外围搭建一些辅助电路,即可实现用户应用系统的进一步开发。
第2章整体方案设计
2.1设计任务
(1)PWM直流电机控制器可以提供8路独立的PWM控制信号,并且每一路PWM信号均可以独立调节;
(2)设计上位机程序,直流电机控制调试过程PWM控制器每一路的PWM信号的脉宽可根据需要通过上位机程序设定来调节;
(3)PWM控制信号采用由FPGA芯片中配置的PWM波形产生电路产生;
(4)PWM直流电机控制器应设置与单片机控制单元的合理接口,以便于实现程序控制功能。
2.2设计方案论证
(1)直流电机控制器转速控制方法选择
直流电动机转速的控制方法可分为两类,即励磁控制法与电枢电压控制法。
常用的控制方法是改变电枢端电压调速的电枢电压控制法,通过调节电阻R即可改变端电压达到调速目的。
但是,这种调压调速的方法效率较低。
PWM(脉宽调制)是另一种常用的调速方法,其基本原理是改变电机电枢(定子)电压的接通和断开的时间比(占空比)来控制马达的速度。
在脉宽调速系统中,当电机通电时,其速度增加;电机断电时,其速度减低。
只要按照一定的规律改变通、断电的时间,即可使电机的速度达到并保持稳定值。
改变占空比的方法有3种:
A.定宽调频法:
这种方法是保持t1不变,只改变t2,这样周期T(或频率)也随之改变;B.调宽调频法:
其采用保持t2不变,而改变t1的方式,同样会造成周期T(或频率)的改变;C.定频调宽法:
这种方法使周期T(或频率)不变,同时改变t1和t2。
由于前两种方法都改变周期(或频率),当控制频率与系统的固有频率接近时,将会引起振荡,因此其使用受到一定的限制。
故在本设计中采用定频调宽法作为直流电机控制器转速调节的控制方法。
(2)直流电机控制器的比较
直流电机控制器经历了从模拟控制器到数字控制器的发展。
由于模拟器件的参数受外界影响较大,精度也较差,因此直流电机模拟控制器逐渐为数字控制器所取代。
数字控制器与模拟控制器相比较,具有可靠性高、参数调整方便、控制策略灵活、控制精度高、对环境因素不敏感等优点。
随着工业电气化、自动控制和家电产品领域对电机控制产品的需求增加,对电机控制技术要求也不断提高。
传统的8位单片机由于其内部体系结构和计算机功能等条件限制,单片机一些应用场合其内部资源显得有点捉襟见肘,在实现各种先进的电机控制理论和高效的控制算法时遇到了困难。
使用高性能的数字信号处理器(DSP)来解决电机控制器不断增加的计算量和速度需求是目前最为普遍的做法。
将一系列外围设备如模数转换器、脉宽调制发生器和数字信号处理器集成在一起组成复杂的电机控制系统。
这样的系统外部电路复杂,控制的灵活度不够,开发周期长。
随着EDA技术的发展,用基于现场可编程门阵列(FPGA)的数字电子系统对电机进行控制,为实现电动机数字控制提供了一种新的有效方法。
现场可编程门阵列(FPGA)器件集成度高、体积小、速度快,以硬件描述语言描述硬件电路实现算法程序,将原来的电路板级产品集成为芯片级产品,从而降低了功耗,提高了可靠性。
综上所述,本设计中选用现场可编程门阵列(FPGA)器件作为直流电机PWM控制器设计元件。
图1.1系统硬件结构
2.3设计方案结构框图
根据设计任务及方案论证所得结论,将整个系统分为控制部分和驱动部分两个部分,并以FPGA作为控制器的核心。
系统硬件结构图如图1.1所示。
驱动模块功能:
将由控制模块发出的PWM信号经过处理,再通过驱动电桥实现对直流电机的驱动;控制模块由上位机控制模块、单片机控制模块、基于FPGA的PWM控制模块三个部分组成。
其中,上位机控制模块或者单片机控制模块用于完成上位机或者单片机通过串行通讯的方式与FPGA芯片的UART接收单元交换数据,从而将PWM波形的控制数据准确传送到FPGA的RAM中进行储存。
图1-2PWM控制模块结构示意图
PWM控制模块结构示意图如图1-2所示,主要包括RAM数据存储器、地址数据分配器、锯齿波发生器、旋转方向控制电路、工作/停止控制器等几个组成部分。
RAM数据存储器:
用于存储与上位机通讯的数据,即八路转速控制数据;地址数据分配器:
确保将数据存储器的数据按照地址送到相应电机的数字比较器的比较输入端;锯齿波发生器:
用于产生锯齿波形数据,并将其连接在数字比较器的另一比较输入端;数字比较器:
对相应地址的数据和锯齿波发生器的当前值进行比较,如相应地址数据大于锯齿波当前值时输出高电平、小于当前值时输出低电平;旋转方向控制电路:
用于控制电机的旋转方向,正转或者反转;工作/停止控制器:
用于对电机工作/停止进行选择控制。
第3章硬件电路设计
3.1PWM控制模块电路设计
硬件设计是设计的基础,可以说是一切设计的根本。
要完成硬件的整体设计,首先要明白你的硬件需要做什么,需要什么样的硬件支持。
硬件系统的电路系统设计包括:
芯片的选择、电路的设计、PCB制板、电路焊接、电路调试等过程。
3.1.1芯片的选择
FPGA(现场可编程门列阵)器件分为很多系列,其制造公司主要有Xilinx、Altera、Actel等几家公司,各公司的器件都有各自的结构特性,通过查相关的资料,最终锁定Altera公司FPGA器件系列。
因为该系列芯片的资料详细全面,分为9个系列,每一个系列都具有特殊的优点。
经过对芯片功能的比较及本设计所需求资源的分析,在确保尽量不浪费资源又能兼顾系统的可开发性的前提下,选择Altera公司的Cyclone系列FPGA芯片EP1C3T144C8作为PWM控制模块核心芯片。
Cyclone系列FPGA芯片是Altera公司的低成本系列FPGA,平衡了逻辑、存储器、锁相环(PLL)和高级I/O接口,CycloneFPGA是价格敏感应用的最佳选择。
EP1C3T144C8拥有2910个LE,支持接近5万逻辑门设计,内置13个独立的RAM块,104个可用I/O口,内置PLL,方便的在线可编程下载及在线内存编辑能力。
3.1.2PWM控制模块电路设计
设计选用Altera公司的Cyclone系列FPGA芯片EP1C3T144C8作为PWM控制模块核心芯片,PWM波形﹑正反转﹑工作/停止功能通过VHDL硬件描述语言生成硬件电路来实现控制,PWM控制模块的VHDL程序将在第4章中详细介绍。
下面就PWM控制模块的硬件电路及外围控制电路作详细说明。
PWM控制模块的硬件电路由EP1C3T144C8型号FPGA芯片及外围控制电路组成。
为实现PWM控制功能需要对FPGA芯片的引脚做出详细规划。
PWM控制模块硬件电路原理图如图3-1所示,各模块的作用详述如下:
U1B、U1D:
表示EP1C3T144C8的IO接口模块。
其中,网络标号Z1——Z8、F1——F8定制的IO口分别连接8路电机驱动电路控制端,用于直流电机PWM信号输出。
Z1——Z8为正转控制PWM信号输出;F1——F8为反转控制PWM信号输出;DERE1——DERE8网络标号定制的IO口与S1——S8开关相连用于实现8路电机正反转控制信号输入。
由于S1——S8开关为波动开关,故开关置于高电平时,PWM控制模块发出正转PWM控制波;开关置于低电平时,PWM控制模块发出反转PWM控制波;DERE9网络标号定制的IO口与S9开关相连用于控制时钟的选择;ENA1——ENA8网络标号定制的IO口与S11集合波段开关连接,故开关置于高电平时,PWM控制模块发出电机工作信号;开关置于低电平时,PWM控制模块发出电机停止信号;UART_RXD,UART_TXD网络标号定制的IO口与S10波动开关连接,当开关置于CX_RXD,CX_TXD端时,与上位机串口连通;开关置于RXD,TXD端时,与单片机串口连通。
U1E——U1I均为FPGA芯片EP1C3T144C8的不同组成部分,其中U1E为配置模块;U1F为电源模块;U1G为接地模块;U1H为锁相环模块。
U1I为时钟模块。
EP1C3T144C8芯片的配置可以分别通过ByteBlaster和JTAG接口进行,通过ByteBlaster接口可以直接实现对FPGA芯片的配置;JTAG接口与FPGA配置芯片EPC2连接,可以实现对FPGA的编程。
在PWM控制模块电路图2.1中,当开关SW1拨向下时,此时通过P10即JTAP接口把相应的数据下载到U2中,把数据进行存贮,在断电状态下数据也不会丢失,因此在断电状态下也能利用FPGA配置器件进行加载。
当开关SW1拨向上此时可以通过ByteBlaster端口对EPC2进行ISP方式下载,并将其配置数据传送给FPGA芯片进行控制,在断电状态下,数据不能保持。
EPC2特点:
EPC2本身的编程由JTAG接口来完成,EPC2器件将配置数据存放于EPROM中,并按照内部晶振产生的时钟频率将数据输出。
OE,nCS和DCLK引脚提供了地址计数器和三态输出缓存的控制信号。
配置器件将配置数据按串行的比特流由DATA引脚输出。
图3-1PWM控制模块电路
3.2单片机控制模块设计
在本设计选用单片机控制模块进行程序控制,通过程序控制来改变PWM控制模块存储器里的数据来控制电机的速度。
3.2.1AT89S51芯片性能
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
(1)AT89S51具有如下特点:
40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
主要性能参数:
·与MCS-51产品指令系统完全兼容
·4k字节在系统编程(ISP)Flash闪速存储器
·1000次擦写周期
·4.0-5.5V的工作电压范围
·全静态工作模式:
0Hz-33MHz
·三级程序加密锁
·128*8字节内部RAM
·32个可编程I/O口线
·2个16位定时/计数器
·6个中断源
·全双工串行UART通道
·低功耗空闲和掉电模式
·中断可从空闲模唤醒系统
·看门狗(WDT)及双数据指针
·掉电标识和快速编程特性
·灵活的在系统编程
(2)功能特性概述:
AT89S51提供以下标准功能:
4字节Flash闪速锁存器,128字节内部RAM,32个可编程I/O口线,看门狗(WDT),两个数据指针,2个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时AT89S51可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,穿行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作至到下一个硬件复位。
(3)振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
3.2.2单片机控制模块电路设计
单片机控制模块其最主要功能是实现对PWM控制模块RAM中的调速数据进行程序控制,所以单片机控制模块和PWM控制模块需要进行数据传输。
设计选用串行通讯的方式实现两模块之间的通讯,由于PWM控制模块还需要与上位机进行串行通讯,且使用同一个接口,设置单片机或者上位机通信控制选择电路如图3-2,图中RXD﹑TXD接单片机P3口的RXD,TXD串口,CX_TXD﹑CX_RXD为上位机串口接入端,UART_TXD﹑UART_RXD接PWM控制模块的串行接口。
图3-2选择单片或者上位机控制电路
AT89S51单片机,由于其内部具有4K的程序存储器,在外部只要增加时钟电路和复位电路即可构成单片机控制模块。
设计以AT89S51为核心芯片的单片机控制模块原理图如下图3-3:
图3-3单片机控制模块电路
3.3串行通讯电平转换电路设计
3.3.1芯片选择
FPGA芯片采用的是TTL电平、正逻辑,而PC机采用RS232与外部设备进行通讯,RS232采用负逻辑,因此FPGA芯片设计串行口与PC机的RS232接口相连进行通讯时必须进行电平的转换。
通常的转换芯片有独立器件MC1488、MC1489和MAX232电平转换芯片。
本设计选用最为常用的MAX232。
3.3.2串行通讯电平转换电路设计
一个完整的RS-232接口是一个25针的D型插头座,25针的连接器实际上只有9根连接线,所以就产生了一个简化的9针D型RS-232插头座,常用的就是一个9针的D型插头座。
通常只用到一根发送信号线、一根接收信号线和一条地线,其余的振铃指示、请求传送、清除传送、准备就绪及数据载波检测等线可以做悬空处理。
RS-232标准规定逻辑1的电平为-15~-3V,逻辑0的电平为+3~+15V。
CMOS电路的电平范围一般是从0V到电源电压,FPGA的I/O输入输出电压通常为0~3.3V,为了与FPGA供电电压保持一致,必须加电平转换芯片。
选用Maxim公司的MAX232电平转换芯片,电路原理图如图3-4所示:
图3-4串行口模块电路图
连线采用最简单的3线制连接模式,因此只需要两根信号线和一根地线来完成数据收发。
FPGA芯片只需要选择两个普通I/O引脚分别与接口芯片MAX3232对应引脚T2IN、R2OUT相连即可完成将串口电平转换为设备电路板的工作电平,即实现RS-232电平和TTL/CMOS电平的转换。
3.4电机驱动电路设计
3.4.1直流电机特点
永磁式换向器直流电机,是应用很广泛的一种直流电机。
其使用方便,只要加载适当电压,电机就会转动。
图3-5是这种电机的符号和简化等效电路。
图3-5电机的简化等效工作原理
这种电机由定子、转子、换向器(又称整流子)、电刷等组成。
定子用于产生磁场,转子在定子磁场作用下,得到转矩而旋转。
换向器及时改变了电流方向,使转子能连续旋转下去。
也就是说,直流电压加在电刷上,经换向器加到转子线圈,转子线圈流过电流而产生磁场,这磁场与定子的固定磁场作用,转子被强迫转动起来。
当转子线圈转动时,由于磁场的相互作用,也将产生反电动势,反电势的大小正比于转子的速度,方向和所加的直流电压相反。
图9(b)给出了等效电路。
Rw代表转子绕组的总电阻,E代表与速度相关的反电动势。
永磁式换向器电机的特点如下:
1、当电机直流电源固定时,电机的工作电流正比于转子负载的大小;
2、加于电机的有效电压,等于外加直流电压减去反电动势。
因此当用固定电压驱动电机时,电机的速度趋向于自稳定。
因为负载增加时,转子有慢下来的倾向,于是反电动势减少,而