您好,欢迎来到华佗健康网。
搜索
您的当前位置:首页多功能电机驱动系统的设计研究

多功能电机驱动系统的设计研究

来源:华佗健康网
第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

多功能电机驱动系统的设计研究

摘 要

电机本体及其控制技术在近几年取得相当大的进步。这要归功于半导体技术的空前发展带来的电力电子学领域的显著进步。电机驱动产业发展的利处已经触及各种各样的设备,从大型工业设备像钢铁制造厂、造纸厂的轧钢机等,到机床和半导造机中使用的机电一体化设备。

现有的一般驱动方法功耗高,有逻辑缺陷,软硬件不协调,控制精度不高,缺少安全监控环节。项目针对以上问题重点设计一种以单片机为主要控制器件,以IGBT为主要功率开关器件。从硬件和软件两方面介绍了单片机多功能电机控制系统的设计思路。阐述了系统的工作原理、设计及实现。由单片机实现双机通信,测速发电机测速,直流供电,LCD显示,实现了对多种电机的控制驱动。可以实现对电机的PID调速,并且具有欠电压过电压过电流保护。

关键词:双机通信、控制驱动、电机PID调速、保护

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

Abstract

The motor and its control technology has made considerable progress in recent years.Significant progress in the field of power electronics has brought unprecedented development thanks to the semiconductor technology.Motor drive industry profits have hit various,From large industrial equipment like iron and steel factory, paper mill rolling machines, electromechanical integration equipment used to machine tools and semiconductor manufacturing machine.

The general method of driving power of existing high, there are flaws in logic, hardware and software are not coordinated, the control accuracy is not high, the lack of safety monitoring link. The project in view of the above problems focus on the design of a single-chip microcomputer as the main control device, with IGBT as the main power switch device. Design of multi-function MCU motor control system is introduced from two aspects of hardware and software. Describes the design and implementation of the working principle, system. Realization of communication, composed of single-chip encoder, DC power supply, LCD display, to achieve the control of various motor drive. PID can realize speed regulation of motor, and has the undervoltage overvoltage and overcurrent protection.

Keywords: communication, drive control, PID motor speed control, protection

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

目 录

1 前言 ........................................................................................... 1 2 系统的设计及指标 ...................................................................... 2

2.1 系统设计方案及论证 ................................................................................. 2 2.1.1 系统设计方案 ..................................................................................... 2 2.1.2 控制器模块设计方案 ........................................................................... 3 2.1.3 电机驱动模块设计方案 ....................................................................... 3 2.1.4 速度采集模块设计方案 ....................................................................... 4 2.1.5 键盘模块设计方案 .............................................................................. 4 2.2 系统技术指标 ............................................................................................ 5

3 硬件电路设计 ............................................................................. 6

3.1 单片机模块 ............................................................................................... 6 3.1.1 STC12C5A60S2单片机的基本特性 .................................................... 6 3.1.2双单片机工作模式 ............................................................................. 10

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

3.1.3并行通信与串行通信 .......................................................................... 10 3.2电机驱动电路 ........................................................................................... 11 3.2.1 M57957L的结构 ............................................................................... 12 3.2.2 M57957L的工作原理 ........................................................................ 13 3.3 显示电路设计 .......................................................................................... 13 3.4 键盘电路设计 .......................................................................................... 15

4 软件设计 .................................................................................. 16

4.1 程序流程 ................................................................................................. 16 4.1.1 主流程图........................................................................................... 16 4.1.2显示程序流程 .................................................................................... 17 4.1.3键盘程序程序流程 ............................................................................. 18 4.2算法实现 .................................................................................................. 19 4.2.1 电机速度算法 ................................................................................... 19 4.2.2 PID算法 ............................................................................................ 19

小结 ............................................................................................. 21 参考文献 ...................................................................................... 22 附录 部分源程序 .......................................................................... 23

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

1 前言

一个多世纪以来,电动机作为机电能量转换装置,其应用范围已遍及国民经济的各个领域以及人们的日常生活中。尤其是近些年来,随着现代电力电子技术,控制技术和计算机技术的发展,电机的应用技术也得到了进一步的发展。在实际应用中,电机已由过去简单的起停控制,提供动力为目的的应用上升到了对其速度、位置、转矩等物理量的精确控制,将预定的控制方案,规划指令转变成期望的机械运动。这种新型控制技术已经不是传统的“电机控制”,“电力控制”而是“运动控制”,运动控制使被控电机的机械运动实现精确的位置控制,速度控制,加速度控制等当前,单片机技术取得的进步比以往任何时候都更加有效的控制电机,而成本更低。单片机已渗透到我们生活的各个领域,几乎很难找到没有单片机的领域,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理等等都离不开单片机,更不用说全自动控制领域。

虽然单片机在各个方面都发挥着不可替代的作用,但由于动力需求的不同,研制出不同种类的电机,同时驱动各类电机的电路也不断增多,这使得系统的升级,改造的困难大大提高。因此开发出可以多功能驱动电机的系统很适合当前的发展趋势。单片机本身就是一个微型计算机,所以只要在其外部适当的增加一些必要的外围扩展电路就可以灵活的构成各种应用系统,来对各种电机进行速度等方面的自动控制,并且易于操作和监控。

本设计的主要目的是通过对电机驱动系统的研究,对电机实现灵活调速。单片机控制直流电机,以STC的12系列单片机为核心,并且采用双单机工作模式,并口通讯方式,具有较高的抗干扰能力。改进后具有低功耗,高精确度,增强了工作效率并且可以实时监控等功能。

1

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

2 系统的设计及指标

2.1 系统设计方案及论证 2.1.1 系统设计方案

图中控制器模块单片机为系统的核心部件,键盘和显示器用来实现人机交互功能,其中通过键盘将需要设置的参数和状态输入到单片机中,并且通过控制器显示到显示器上。系统上电开机后,ADC通过采样电路采集获取电源电压,控制电压。正常无报警,过电压欠电压报警。在运行过程中控制器产生PWM脉冲送到电机驱动电路中,经过放大后控制电机转速,同时利用速度检测模块将当前转速反馈到控制器中,控制器经过数字PID运算后改变PWM脉冲的占空比,实现电机转速的PID控制,同时实时监测电流状况,过电流报警并跳车。

显示模块 键盘模块 控制模块 电机驱动模块 直流电机 电源电压采样模块 ADC 速度检测模块

图1 系统的结构图

2

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

2.1.2 控制器模块设计方案

根据设计任务,控制器主要用于产生占空比受数字PID算法控制的PWM脉冲,并对电机当前速度进行采集处理,根据算法得出当前所需输出的占空比脉冲,并且完成实时监测电流。对于控制器的选择有以下两种方案。

方案一:选用C52系列单片机作为系统的控制器。C52系列单片机单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制。并且它具有功耗低、体积小、技术成熟和成本低等优点,在各个领域中应用广泛。

方案二:选用STC的12C系列单片机,并且采用双单片机工作模式,通讯方式为并口,具有较高的抗干扰能力,其机器周期是原来的1/12,速度更快,并且兼具方案一功耗低、体积小等优点。所以基于上述理论分析和实际情况,电机驱动模块选用方案二。 2.1.3 电机驱动模块设计方案

本次设计的主要目的是通过对电机驱动系统的研究,对电机实现灵活调速。因此电机驱动模块器件的选取是本此设计的重要部分,其方案有以下两种。

方案一:采用电力MOSFET管组合电路构成驱动电路,这种方法结构简单,成本低、易实现,但由于在驱动电路中采用了大量的晶体管相互连接,使得电路复杂、抗干扰能力差、可靠性下降,我们知道在实际的生产实践过程中可靠性是一个非常重要的方面。因此此中方案不宜采用。

方案二:采用专用的电机驱动芯片,M57957L电机驱动芯片,由于它内部已经考虑到了电路的抗干扰能力,安全、可靠行,所以我们在应用时只需考虑到芯片的硬件连接、驱动能力等问题就可以了,而且M57957L是以IGBT为核心元件,它集中了MOSFET和

3

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

GTR的优点;所以此种方案的电路设计简单、抗干扰能力强、可靠性好。

基于上述理论分析和实际情况,电机驱动模块选用方案二。 2.1.4 速度采集模块设计方案

本系统是一闭环控制系统,在调节过程中需要将设定与当前实际转速进行比较,速度采集模块就是为完成这样功能而设计的,其设计方案以下两种:

方案一:采用对射式光电传感器。其检测方式为:发射器和接受器相互对射安装,发射器的光直接对准接受器,当测物挡住光束时,传感器输出产生变化以指示被测物被检测到。通过脉冲计数,对速度进行测量。

方案二:采用测速发电机对直流电机转速进行测量。该方案的实现原理是将测速发电机固定在电动机的轴上,当电机转动时,带动测速电机的轴一起转动,因此测速发电机会产生大小随直流电机转速大小变化的感应电动势,因此精度比较高,虽然该方案的安装比较复杂,但考虑到其精度的要求在设计中选用第二种方案进行设计。

2.1.5 键盘模块设计方案

在电机驱动控制系统中,系统需要按键进行参数的输入、工作方

式的设定以及电机起停的控制,因此键盘在整个系统中是不可缺少的一部分,考虑有二种方案:

方案一:采用式键盘,这种键盘硬件连接和软件实现简单,并且各按键相互,每个按键均有一端接地,另一端接到输入线上。按键的工作状态不会影响其它按键上的输入状态。但是由于式键盘每个按键需要占用一根输入口线,所以在按键数量较多时,I/O口浪费大,故此键盘只适用于按键较少或操作速度较高的场合。

4

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

方案二:采用行列式键盘,这种键盘的特点是行线、列线分别接输入线、输出线。按键设置在行、列线的交叉点上,利用这种矩阵结构只需m根行线和n根列线就可组成mn个按键的键盘,因此矩阵式键盘适用于按键数量较多的场合。但此种键盘的软件结构较为复杂。

根据上面两种方案的论述,由于本次设计的系统硬件连接比较复杂,对软件的运行速度相对要求不高,所以采用方案二矩阵式键盘进行设计。

经过上述的分析与论证,系统各模块采用的方案如下: (1) 控制模块:采用STC的12C系列单片机,并且采用双单片机工作模式,通讯方式为并口;

(2)电机驱动模块:采用M57957L电机驱动芯片实现; (3)速度采集模块:采用测速发电机对直流电机转速进行测量; (4)键盘模块: 采用标准的4×4矩阵式键盘; 2.2 系统技术指标 系统主要完成以下功能:

软件部分:

1.用c语言完成转速测量,的软件系统;

2.要求把转速显示在128×LCD液晶显示器上,精度为0.1%;

3.能向上位机发送数据;

4.将采样电路取得电源电压经模数转换器处理后输入单片机控制系统,完成欠电压过电压过电流保护。

硬件部分:

1.设计并制作单片机的转速测量,的硬件系统; 2.驱动电路在驱动功率高,开关速度快,热稳定性好的前提下将电子电路控制信号放大并且精度高。

5

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

3.整体电路功耗低, 避免逻辑上的缺陷, 软硬件协调工作;

3 硬件电路设计

硬件的功能由总体设计所规定,硬件设计的任务是根据总体设计要求,在选择的机型的基础上,具体确定系统中所要使用的元器件,设计出系统的电路原理图,必要时做一些部件实验或应用仿真软件仿真操作,以确定电路图的正确性。

设计单片机模块,考虑到单片机本身的外围电路较多,所以在单片机模块方面需要极为小心。 3.1 单片机模块

根据系统功能要求以及单片机硬件电路设计思路对单片机模块进行设计,要使单片机准确的测量电机转速,并且使测出的数据能显示出来,所以整个单片机部分分为测速发电机、时钟电路、复位电路、执行元件以及显示电路五个部分。 3.1.1 STC12C5A60S2单片机的基本特性

单片机我们采用STC12C5A60S2 (其引脚图如图2),相较于C52系列单片机它本身带有一定的优点。STC12C5A60S2是单时钟/机器周期(1T)、高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。

6

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

图2 STC12C5A60S2单片机引脚图

主要特性:

▪增强型8051 CPU,1T,单时钟/机器周期,指令代码完全兼容传统8051;

▪工作电压:STC12C5A60S2系列工作电压:5.5V-3.3V(5V单片机)

▪工作频率范围:0 - 35MHz,相当于普通8051的 0~420MHz; ▪片上集成1280字节RAM;

▪外部掉电检测电路:在P4.6口有一个低压门槛比较器,5V单片机为1.32V,误差为+/-5%,3.3V单片机为1.30V,误差为+/-3%;

▪时钟源:外部高精度晶体/时钟,内部R/C振荡器(温漂为+/-5%到+/-10%以内)

▪共4个16位定时器 两个与传统8051兼容的定时器/计数器 ▪A/D转换, 10位精度ADC,共8路,转换速度可达250K/S(每秒钟25万次)18.通用全双工异步串行口(UART),由于STC12系列

7

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

是高速的8051,可再用定时器或PCA软件实现多串口;

▪工作温度范围:-40 - +85℃(工业级) 0 - 75℃(商业级)

各引脚功能简单介绍如下:

P0口:P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。当P1口的管脚写“1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部电位必须被拉高;

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入“1”后,电位被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收;

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚电位被内部上拉电阻拉高,且作为输入。作为输入时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号;

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入时,由于外部下拉为低电平,P3口将输出电流(ILL),也是由于上拉的缘故。P3口也可作为ATC51的一些特殊功能口:

8

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INT0(外部中断0) P3.3 INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 WR (外部数据存储器写选通) P3.7 RD (外部数据存储器读选通)

同时P3口同时为闪烁编程和编程校验接收一些控制信号; RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高平时间;

ALE / PROG :当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效;

PSEN:外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期PSEN两次有效。但在访问内部部数据存储器时,这两次有效的PSEN信号将不出现;

EA/VPP:当EA保持低电平时,访问外部ROM;注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,访问内部ROM。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP);

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入;

9

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

XTAL2:来自反向振荡器的输出; VCC:供电电压; GND:接地; 3.1.2双单片机工作模式

当检测与控制系统处理大量数据和多路信息时,只用一片单片机往往无法满足系统实时性和扩展性要求,且处理时间较长,单片机要在相等的时间间隔进行A/D转换以及数据处理。由于要实现电机的PID调速同时还要进行过电压欠电压保护以及电流实时监测,因此这里提出一种基于双单片机的信号处理系统设计方案,该系统采用单片机STC12C5A60S2作为核心器件,2片单片机作为双核心分担整个控制、检测单元的任务。

C122fFC2X122pFC422fFC5X222pFU119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617U219XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617CRYSTAL18CRYSTALXTAL218XTAL2+5VC320u+5V9+5VRSTC620u+5V9RSTR91k293031PSENALEEAR11k293031PSENALEEABUZ1BUZZER12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7ATC5112345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7ATC51 图3 双单片机工作模式

3.1.3并行通信与串行通信

并行通信:所传送数据的各个位同时发送或接收。

10

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

相同时钟速率下,并行通信速度较快,适合高速本地通信。 串行通信:所传送的数据的各个位按顺序一位一位的发送或接收。串行通信连线少、连接可靠,适合远距离通信。

图4 并行通信与串行通信示意图

在本设计中采用双单片机模式,通信方式为并行通信,这样可以提高控制系统的工作效率以及精确度。其中,甲机用于监控电源电压是否出现欠电压过电压过电流。乙机用于实现对电机的PID控制,即控制器产生PWM脉冲送到电机驱动电路中,经过放大后控制电机转速,同时利用速度检测模块将当前转速反馈到控制器中,控制器经过数字PID运算后改变PWM脉冲的占空比,实现电机转速实时控制的目的。同时乙机控制128×LCD液晶显示器,显示出当前转速。 3.2电机驱动电路

驱动模块是控制器与执行器之间的桥梁,在本系统中单片机的I/O口不能直接驱动电机,只有引入电机驱动模块才能保证电机按照控制要求运行,在这里选用M57957L电机驱动芯片驱动电机,M57957L内部集成有可在输入与输出之间实现良好电气隔离的光电隔离器,所以可对被驱动的IGBT模块实现可靠的驱动。M57957L可用来直接驱动Vces=600V系列的电流容量在200A以内的IGBT模块及Vces=1200V系列的电流容量在100A以内的IGBT模块;而M57958L可用来直接驱采用双电源驱动技术,输入信号与TTL电平兼容,且采用单列直插式厚膜集成电路封装。

11

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

3.2.1 M57957L的结构

M57957L采用单列直插式标准8脚厚膜集成电路封装。其外形和引脚排列如图5所示,各引脚的名称、功能及用法可参见表1所列。

图5 M57957L的引脚排列示图

表1 M57957L引脚说明

引脚符号 号 VIN驱动脉冲输入负1 - 端 使用中通过一反相器接用户脉冲形成电路的输出 名称或功能 用法 VIN驱动脉冲输入正2 + 端 驱动脉冲输出地接驱动脉冲输出级电源地端,该端电位应与用户脉冲形成部5 GND 端 6 VCC 驱动功放级正电分完全隔离 接用户提供的驱动脉冲功放级正电源端 使用中通过一电阻接用户脉冲形成部分电源 12

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

源端 7 Vout 驱动脉冲输出端 驱动功放级负电8 VEE 源端 接用户提供的驱动脉冲功放级负电源端 直接接被驱动IGBT栅极 3.2.2 M57957L的工作原理

M57957L内部结构如图6所示,来自脉冲形成单元的驱动信号为高电平时光耦导通,接口电路把该信号整形后由功放级的两级达林顿NPN晶体管放大后输出,驱动功率IGBT模块导通。在驱动信号为低电平时光耦截止,此时接口电路输出亦为低电平,功放输出级PNP晶体管导通,给被驱动的功率IGBT栅、射极间施加以反向电压,使被驱动功率IGBT模块恢复关断状态。

图6 M57957L内部结构

3.3 显示电路设计

根据设计要求要对系统各项参数和电机运行状态进行显示,因此在电路中加入显示模块是非常必要的。在系统运行过程中需要显示的数据比较多,而且需要汉字显示,在这里选用128×液晶显示器比较适合,它是一种图形点阵液晶显示器,主要由行驱动器/列驱

13

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

动器及128×全点阵液晶显示器组成,可完成汉字(16×16)显示和

图形显示共有20个引脚,其引脚名称及引脚编号的对应关系如图7,引脚功能如表2所示。

KAVEE/RSTCS2CS1DB7DB6DB5DB4DB3DB2DB1DB0ER/WRSVOVDDVSS

引脚 1 2 3 4 符 号 VSS VDD VO RS 20191817161514131211109876321图7 128×LCD引脚分布

表2 128液晶显示模块引脚功能 引 脚 功 能 电源地 电源正+5V 液晶显示驱动电源 H:数据输入; L:指令码输入 5 6 R/W E H:数据读取; L:数据写入 使能信号。 20 K 背光电源(-) 19 A 背光电源(+) 引脚 15 16 17 18 符 号 CS1 CS2 /RST VEE 引 脚 功 能 CS1=1芯片选择左边*点 CS2=1芯片选择右边*点 复位(低电平有效) LCD驱动负电源 14

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

7-14 DB0-DB7 数据线 有些型号的模块19、20脚为空脚

3.4 键盘电路设计

根据设计需求,本系统中使用了4×4键盘用以实现对P、I、D三个参数和电机正反转的设定,以及对电机启动、停止、暂停、继续的控制,其电路原理图如图8所示。图中L0~L3为4×4键盘的列信号,H0~H3为4×4键盘的行信号。在本系统中,用P1.0~P1.3连接键盘的列信号L0~L3;用P0.4~P0.7连接键盘的行信号H0~H3。按照要求设计操作面板如图8所示:

L3L2L1L0H0H1H2H301234567正反转停止暂停设置继续启动图8 键盘模块

键盘操作说明:在系统开始运行时,128×LCD将显示开机界面,若设置键显示屏进入参数设置界面,此时按1、2、3、4进入相应参数的设置的状态,输入相应的数字即可完成该参数的设置,待所有量设置完成后按正/反控制键设置正反转,最后按启动键启动系

15

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

统,在运行过程中可按下相应键对电机进行暂停、继续、停止运行的控制。

4 软件设计

4.1 程序流程 4.1.1 主流程图

在一个完整的系统中,只有硬件部分是不能完成相应设计任务的,所以在该系统中软件部分是非常重要的,按照要求和系统运行过程设计出主程序流程如图9所示。

开始

开始界面显示设置键按下?Y初始化调用清屏子程序

N 调用清屏子程序

设置界面显示启动键按下?Y根据设置计算参数调用清屏子程序电机运行状态显示PWM脉冲输出16 N第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

图9 主流程图

4.1.2显示程序流程

显示模块是实现人机对话的重要部分,在这里选用128×LCD显示器可实现对汉字和字符的显示,该显示器的引脚功能在上面已经做了说明,下面介绍128×LCD的相关指令。显示子程序流程如图10所示

初始化循环次数j=2 ?N设置显示起始页、起始列j=j+1;i=0Y写入数据字节数i=16?N调用写入数据子程序i=i+1RETIa) 写入16*16汉字程序流程YY初始化循环次数j=2 ?N设置显示起始页、起始列j=j+1;i=0写入数据字节数i=8?N调用写入数据子程序i=i+1RETIb)写入8*16数字Y图10 显示程序流程

17

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

4.1.3键盘程序程序流程

键盘中断程序是用来设在系统相应参数和控制系统进入相应的运行状态,其程序流程图如图11所示。

延时去抖动P1口低四位置1读P1口低四位数据到KEYLP1口高四位置1读P1口高四位数据到KEYHKEYL、KEYH相与为KEYKEY=0XEE ?NKEY=0XED ?NKEY=0XEB ?NKEY=0XE7 ?NKEY=0XDE ?NKEY=0XDD ?NKEY=0XDB ?NKEY=0XD7 ?NKEY=0XBE ?NKEY=0XBD ?NKEY=0XBB ?NKEY=0XB7 ?NKEY=0X7E ?NKEY=0X7D ?NKEY=0X7B ?NYYYYYYYYYYYYYYY数字键0数字键1数字键2数字键3数字键4数字键5数字键6数字键7数字键8数字键9正/反功能键暂停功能键继续功能键

18 启动功能键停止功能键第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

图11键盘程序程序流程

4.2算法实现 4.2.1 电机速度算法

测速发电机输出电动势与转速成比例的微特电机。测速发电机的绕组和磁路经精确设计,其输出电动势E和转速n成线性关系,即E=Kn,K是常数。改变旋转方向时输出电动势的极性即相应改变。在被测机构与测速发电机同轴联接时,只要检测出输出电动势,就能获得被测机构的转速。

计算e(n)4.2.2 PID算法

本系统设计的核心算法为PID算法,它根据本次采样的数据与设定值进行比较得出偏差e(n),对偏差进行P、I、D运算最终利用运算结果控制PWM脉冲的占空比来实现对加在电机

计算KIe(n)计算KP(e(n)-e(n-1))计算KD(e(n)-2e(n-1)+e(n-2))计算Δu(n)计算Δu(n)+u(n-1)e(n-1)→e(n-2)e(n)→e(n-1)u(n)→u(n-1)返回19

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

两端电压的调节[10],进而控制电机转速。其运算公式为: u(n) K[e(n)e(n1)]Ke(n)K[e(n)PID2e(n1)e(n2)]u0因此要想实现PID控制在单片机就必须存在上述算法, 其程序流程如图12所示。

图12 算法流程

20

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

小结

本课题的目的在于利用单片机实现PID算法产生PWM脉冲来控制电机转速同时监控电压电流起到保护作用并且本设计控制灵活、可靠、精度高,可满足测试的各项要求。可以对小型工农业的电机简单控制实现小型化。可以与上位机通讯实现复杂控制。驱动体积小,功耗小,采用标准器件方便更换升级。

到目前为止通过对控制器模块、电机驱动模块、LCD显示模块、键盘模块、数字PID算法、电压电流监控等进行了比较深入的研究。完成了硬件电路的系统设计,软件方面利用C语言进行编程,增强了程序的可移植性和灵活性。

通过此次设计,掌握了驱动电路的相关设计及数字PID算法的使用及编程方法,学习了如何进行系统设计及相关技巧,为今后的工作和学习奠定了坚实的基础。

21

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

参考文献

[1] 孙传友. 测控系统原理与设计[M] .北京:北京航空航天大学出版

社, 2003

[2] 王兆安.电力电子技术(第四版). 北京:机械工业出版社, 2006 [3] 李广弟.单片机基础(第三版).北京:北京航空航天大学出版社,2007

[4] 杨渝钦.控制电机. 北京:机械工业出版社,2011

[5] 童诗白.模拟电子技术(第四版).北京:高等教育出版社,2006 [6] 阎石.数字电子技术(第五版).北京:高等教育出版社,2005 [7] 王勇骥.自动控制原理(第二版).北京:化学工业出版社,2007 [8] 李宏.M57957L/M57958L IGBT厚膜驱动器集成电路手册.电子发烧友论坛.2009

[9] STC12C5A60S2系列单片机器件手册. 电子发烧友论坛.2012 [10]

.128LCD

[DB/OL].

http://www.sz79.com.2006

22

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

附录 部分源程序

一、主程序:

main( ) {

zf=0; flag1=0; EA=1; IT0=1; EX0=1; count=0; en=0; en1=0; en2=0; U0=200; Un=0; cc=0; zanting=0; pwm1=0; pwm2=0; P1=0xF0;

Init_lcd(); //设置液晶显示器 Clr_Scr(); //清屏 left();Disp_Chinese(0,0,dan); //单 left();Disp_Chinese(0,16,pian); //片 left();Disp_Chinese(0,32,ji); //机 left();Disp_Chinese(0,48,de); //的 right();Disp_Chinese(0,0,shu); //数 right();Disp_Chinese(0,16,zi); //字 right();Disp_Digit(0,32,dp); //P right();Disp_Chinese(0,40,di); //I

23

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

right();Disp_Digit(0,56,dd); //D left();Disp_Chinese(3,16,dian); //电 left();Disp_Chinese(3,32,ji); //机 left();Disp_Chinese(3,48,tiao); //调 right();Disp_Chinese(3,0,shu0); //速 right();Disp_Chinese(3,16,xi); //系 right();Disp_Chinese(3,32,tong); //统 left();Disp_Chinese(6,48,heng); //横线 right();Disp_Chinese(6,0,heng); //横线 right();Disp_Chinese(6,16,jia); right();Disp_Chinese(6,32,xiao); right();Disp_Chinese(6,48,wei); flag0=0; for( ; ; ) break; }

Clr_Scr(); //清屏 left();Disp_Chinese(0,32,can); left();Disp_Chinese(0,48,shu); right();Disp_Chinese(0,0,she); right();Disp_Chinese(0,16,zhi); left();Disp_Chinese(2,4,Kp); left();Disp_Digit(2,20,maohao); left();Disp_Digit(2,28,s[0]); left();Disp_Digit(2,36,s[0]); left();Disp_Digit(2,44,dian0); left();Disp_Digit(2,52,s[0]); right();Disp_Chinese(2,4,Ki); right();Disp_Digit(2,20,maohao); right();Disp_Digit(2,28,s[0]);

24

//等待设置键按下

{ if(flag0==1)

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

{

right();Disp_Digit(2,36,s[0]); right();Disp_Digit(2,44,dian0); right();Disp_Digit(2,52,s[0]); left();Disp_Chinese(4,4,Kd); left();Disp_Digit(4,20,maohao); left();Disp_Digit(4,28,s[0]); left();Disp_Digit(4,36,s[0]); left();Disp_Digit(4,44,dian0); left();Disp_Digit(4,52,s[0]); right();Disp_Chinese(4,4,V); right();Disp_Digit(4,20,maohao); right();Disp_Digit(4,28,s[0]); right();Disp_Digit(4,36,s[0]); right();Disp_Digit(4,44,s[0]); left();Disp_Chinese(6,4,zhuan); left();Disp_Chinese(6,20,xiang); left();Disp_Digit(6,36,maohao); left();Disp_Chinese(6,44,zheng); flag1=0;

//等待启动键按下

for(set=0;;) switch(set) {case 0:break;

case 1: left();Disp_Digit(2,28,s[0]); left();Disp_Digit(2,36,s[0]); left();Disp_Digit(2,52,s[0]);

Kpp=0; for(flag=0,n=0;;) {

left();Disp_Digit(2,28,kong); Delay128(1000);

25

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

left();Disp_Digit(2,28,s[n]); Delay128(2500); if(flag==1) break; }

left();Disp_Digit(2,28,s[n]); Kpp+=10*n; for(flag=0,n=0;;) {

left();Disp_Digit(2,36,kong); Delay128(1000); left();Disp_Digit(2,36,s[n]); Delay128(2500); if(flag==1) break; }

left();Disp_Digit(2,36,s[n]); Kpp+=n; for(flag=0,n=0;;) {

left();Disp_Digit(2,52,kong); Delay128(1000); left();Disp_Digit(2,52,s[n]); Delay128(2500); if(flag==1) break; }

left();Disp_Digit(2,52,s[n]); Kpp+=0.1*n; set=0; break;

26

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

case 2:right();Disp_Digit(2,28,s[0]); right();Disp_Digit(2,36,s[0]); right();Disp_Digit(2,52,s[0]);

Kii=0;

for(flag=0,n=0;;) {

right();Disp_Digit(2,28,kong); Delay128(1000); right();Disp_Digit(2,28,s[n]); Delay128(2500); if(flag==1) break; }

right();Disp_Digit(2,28,s[n]); Kii+=10*n; for(flag=0,n=0;;) {

right();Disp_Digit(2,36,kong); Delay128(1000); right();Disp_Digit(2,36,s[n]); Delay128(2500); if(flag==1) break; }

right();Disp_Digit(2,36,s[n]); Kii+=n; for(flag=0,n=0;;) {

right();Disp_Digit(2,52,kong); Delay128(1000); right();Disp_Digit(2,52,s[n]);

27

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

Delay128(2500); if(flag==1) break; }

right();Disp_Digit(2,52,s[n]); Kii+=0.1*n; set=0;

break;

case 3:left();Disp_Digit(4,28,s[0]); left();Disp_Digit(4,36,s[0]); left();Disp_Digit(4,52,s[0]);

Kdd=0; for(flag=0,n=0;;) {

left();Disp_Digit(4,28,kong); Delay128(1000); left();Disp_Digit(4,28,s[n]); Delay128(2500); if(flag==1) break; }

left();Disp_Digit(4,28,s[n]); Kdd+=10*n;]]]]

for(flag=0,n=0;;]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]) {

left();Disp_Digit(4,36,kong); Delay128(1000); left();Disp_Digit(4,36,s[n]); Delay128(2500); if(flag==1) break;

28

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

}

left();Disp_Digit(4,36,s[n]); Kdd+=n; for(flag=0,n=0;;) {

left();Disp_Digit(4,52,kong); Delay128(1000); left();Disp_Digit(4,52,s[n]); Delay128(2500); if(flag==1) break; }

left();Disp_Digit(4,52,s[n]); Kdd+=0.1*n; set=0;

break;

case 4:right();Disp_Digit(4,28,s[0]); right();Disp_Digit(4,36,s[0]); right();Disp_Digit(4,44,s[0]);

V0=0; for(flag=0,n=0;;) {

right();Disp_Digit(4,28,kong); Delay128(1000); right();Disp_Digit(4,28,s[n]); Delay128(2500); if(flag==1) break; }

right();Disp_Digit(4,28,s[n]); V0+=100*n;

29

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

for(flag=0,n=0;;) {

right();Disp_Digit(4,36,kong); Delay128(1000); right();Disp_Digit(4,36,s[n]); Delay128(2500); if(flag==1) break; }

right();Disp_Digit(4,36,s[n]); V0+=10*n; for(flag=0,n=0;;) {

right();Disp_Digit(4,44,kong); Delay128(1000); right();Disp_Digit(4,44,s[n]); Delay128(2500); if(flag==1) break; }

right();Disp_Digit(4,44,s[n]); V0+=n; set=0;

break; }

if(flag1==1) break; }

Clr_Scr(); //清屏 left();Disp_Chinese(0,32,dian); //电 left();Disp_Chinese(0,48,ji); //机

30

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

right();Disp_Chinese(0,0,zhuang); //状 right();Disp_Chinese(0,16,tai); //态 left();Disp_Chinese(3,0,dang); left();Disp_Chinese(3,16,qian); left();Disp_Chinese(3,32,zhuan); left();Disp_Chinese(3,48,shu0); right();Disp_Digit(3,0,maohao); if(zf==0)

{right();Disp_Chinese(3,8,zhenghao);} else

{right();Disp_Chinese(3,8,fuhao);} right();Disp_Digit(3,24,s[0]); right();Disp_Digit(3,32,s[0]); right();Disp_Digit(3,40,s[0]); left();Disp_Chinese(6,0,yun); left();Disp_Chinese(6,16,xing); left();Disp_Chinese(6,32,shi); left();Disp_Chinese(6,48,jian); right();Disp_Digit(6,0,maohao); right();Disp_Digit(6,8,s[0]); right();Disp_Digit(6,16,maohao); right();Disp_Digit(6,24,s[0]); right();Disp_Digit(6,32,s[0]); right();Disp_Digit(6,40,maohao); right();Disp_Digit(6,48,s[0]); right();Disp_Digit(6,56,s[0]); EX1=1; IT1=1; TMOD=0x11; ET0=1; TL0=0xb0;

31

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

TH0=0x3c; TR0=1; Un=0; if(zf==0) for(;;)

{ if(zanting==1) pwm1=0; else pwm1=1; Delay128(Un); pwm1=0;

Delay128(500-Un); } if(zf==1) for(;;)

{ if(zanting==1) pwm2=0; else pwm2=1; Delay128(Un); pwm2=0;

Delay128(500-Un); }

二、键盘程序:

void innt0() interrupt 0 using 2 { unsigned char key,keyh,keyl;

Delay128(10); //延时,去抖动 keyh=P1; P1=0x0f; keyl=P1; key=keyh|keyl;

32

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

P1=0xf0; switch(key)

{case 0xee:set=0;n=0;flag=1;break; case 0xed:set=1;n=1;flag=1;break; case 0xeb:set=2;n=2;flag=1;break; case 0xe7:set=3;n=3;flag=1;break; case 0xde:set=4;n=4;flag=1;break; case 0xdd:set=5;n=5;flag=1;break; case 0xdb:set=0;n=6;flag=1;break; case 0xd7:set=0;n=7;flag=1;break; case 0xbe:set=0;n=8;flag=1;break; case 0xbd:set=0;n=9;flag=1;break; case 0xbb:set=0;left();zf=!zf;

if(zf==0)

Disp_Chinese(6,44,zheng); else

Disp_Chinese(6,44,fan); break;

case 0xb7:set=0;zanting=1;break; case 0x7e:set=0;zanting=0;break; case 0x7d:set=0;flag1=1;break; case 0x7b:set=0;pwm1=0;pwm2=0;

Clr_Scr(); left();

Disp_Chinese(3,16,wuxing); Disp_Chinese(3,32,yun); Disp_Chinese(3,48,xing); right();

Disp_Chinese(3,0,jie); Disp_Chinese(3,16,shu1); Disp_Chinese(3,32,wuxing);

33

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

for(;;) {;} break;

case 0x77:set=0;flag0=1;break; } }

void intt0() interrupt 1 { int a,b,c,d; cc++; if(cc==10) {

a=count/100; d=count%100; b=d/10; c=d%10; if(zanting==1) {Un=200; goto loop1; }

en=V0-count;

Un=Kpp*(en-en1)+Kii*en+Kdd*(en-2*en1+en2)+U0;//2*(en-en1)+2.2*en+0.2*(en-2*en1+en2)+U0;

if(Un>500) Un=500; Un=0; U0=Un; en2=en1; en1=en; colk++;

if(Un<=0)

loop1:

34

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

count=0; cc=0;

right();Disp_Digit(3,24,s[a]); right();Disp_Digit(3,32,s[b]); right();Disp_Digit(3,40,s[c]); }

if(colk==20) {colk=0; miao++; if(miao==60) {miao=0; fen++; if(fen==60) {

fen=0;h++;

if(h==10) h=0;

right();Disp_Digit(6,8,s[h]); }

fen1=fen/10; fen2=fen%10;

right();Disp_Digit(6,24,s[fen1]); right();Disp_Digit(6,32,s[fen2]); }

miao1=miao/10; miao2=miao%10;

right();Disp_Digit(6,48,s[miao1]); right();Disp_Digit(6,56,s[miao2]); }

TL0=0xb0; TH0=0x3c;

}

35

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

三、显示程序:

void Delay128(unsigned int t) { }

void write_com(unsigned char cmdcode) //写命令到LCD { }

void write_data(unsigned char Dispdata) //写数据到LCD { }

void Clr_Scr(void) //清除内存 {

unsigned char j,k; Mcs=1;Scs=1;

36

//延时程序

unsigned int i,j; for(i=0;ifor(j=0;j<10;j++); }

Di = 0;RW = 0; Lcd_Bus = cmdcode; Enable = 1; Delay128(0); Enable = 0;

Delay128(0);

Di = 1;RW = 0; Lcd_Bus = Dispdata; Delay128(0); Enable = 1; Delay128(0); Enable = 0;

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

write_com(Page_Add+0); write_com(Col_Add+0); for(k=0;k<8;k++) }

void Disp_Chinese(unsigned char pag,unsigned char col, char code *hzk)

{ //指定位置显示汉字16*16 }

void Disp_Digit(unsigned char pag,unsigned char col, unsigned char code *hzk)

{ //指定位置显示字母或数字8*16

unsigned char j=0, i=0;

37

{

write_com(Page_Add+k); for(j=0;j<;j++) {

write_data(0x00); }

write_com(Col_Add+0);

}

unsigned char j=0,i=0; for(j=0;j<2;j++) { }

write_com(Page_Add+pag+j); write_com(Col_Add+col); for(i=0;i<16;i++) {

write_data(hzk[16*j+i]); }

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

}

for(j=0;j<2;j++) { }

write_com(Page_Add+pag+j); write_com(Col_Add+col); for(i=0;i<8;i++) {

write_data(hzk[8*j+i]); }

void Init_lcd() //初始化LCD屏 { }

void left(void) {

Mcs=1;Scs=0; }

void right(void) { Mcs=0;

38

Lcd_Rst=0; Delay128(100); Lcd_Rst=1; Delay128(100); Mcs=1;

Scs=1;

Delay128(100); write_com(Disp_Off); write_com(Page_Add+0); write_com(Start_Line+0); write_com(Col_Add+0); write_com(Disp_On);

//左半屏写入

//右半屏写入

第十一届“挑战杯”辽宁省大学生课外学术科技作品竞赛

Scs=1; }

39

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务