Error, Don't know how to build file "D:DSPPIDputongPIDDSP28_PID.h"

Error, Don't know how to build file "D:DSPPIDputongPIDDSP28_PID.h",第1张

1这个头文件存在吗

2这个头文件对应的源文件存在吗

3这个头文件对应的源文件中包含头文件吗

4这个头文件对应的源文件添加到工程中了吗,

以上解决后再编译

给你个Step 7写的位置式PID控制的FC模块。带"_IN"与带"_OUT"的变量,如果前缀是一样的,要求连接同一个变量。

FUNCTION FC1 : VOID

VAR_INPUT

Run:BOOL; //True-运行,False-停止

Auto:BOOL; //True-自动,False-手动

ISW:BOOL; //True-积分有效,False-积分无效

DSW:BOOL; //True-微分有效,False-微分无效

SetMV:REAL; //手动时的开度设定值

SVSW:REAL; //当设定值低于SVSW时,开度为零

PV:REAL; //测量值

SV:REAL; //设定值

DeadBand:REAL; //死区大小

PBW:REAL; //比例带大小

IW:REAL; //积分带大小

DW:REAL; //微分带大小

dErr_IN:REAL; //误差累积

LastPV_IN:REAL; //上一控制周期的测量值

END_VAR

VAR_OUTPUT

MV:REAL; //输出开度

dErr_OUT:REAL; //误差累积

LastPV_OUT:REAL;//上一控制周期的测量值

END_VAR

VAR

Err:REAL; //误差

dErr:REAL; //误差累积

PBH:REAL; //比例带上限

PBL:REAL; //比例带下限

PVC:REAL; //测量值在一个控制周期内的变化率,即测量值变化速率

P:REAL; //比例项

I:REAL; //积分项

D:REAL; //微分项

END_VAR

IF Run=1 THEN

IF Auto=1 THEN

IF SV>=SVSW THEN

Err:=SV-PV;

PBH:=SV+PBW;

PBL:=SV-PBW;

IF PV<PBL THEN

MV:=1;

ELSIF PV>PBH THEN

MV:=0;

ELSE

P:=(PBH-PV)/(PBH-PBL); //计算比例项

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////以下为积分项的计算//////////////////////////////////////////////////////////////

IF ISW=1 THEN

dErr:=dErr_IN;

IF (PV<(SV-DeadBand)) OR (PV>(SV+DeadBand)) THEN

IF (dErr+Err)<(0-IW) THEN

dErr:=0-IW;

ELSIF (dErr+Err)>IW THEN

dErr:=IW;

ELSE

dErr:=dErr+Err;

END_IF;

END_IF;

I:=dErr/IW;

dErr_OUT:=dErr;

ELSE

I:=0;

END_IF;

/////////////////////////////////////////////以上为积分项的计算//////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////以下为微分项的计算//////////////////////////////////////////////////////////////

IF DSW=1 THEN

PVC:=LastPV_IN-PV;

D:=PVC/DW;

LastPV_OUT:=PV;

ELSE

D:=0;

END_IF;

/////////////////////////////////////////////以上为微分项的计算//////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

IF (P+I+D)>1 THEN

MV:=1;

ELSIF (P+I+D)<0 THEN

MV:=0;

ELSE

MV:=P+I+D;

END_IF;

END_IF;

ELSE

MV:=0;

END_IF;

ELSE

MV:=SetMV;

END_IF;

ELSE

MV:=0;

END_IF;

END_FUNCTION

进行整定时先进行P调节,使I和D作用无效,观察温度变化曲线,若变化曲线多次出现波形则应该放大比例(P)参数,若变化曲线非常平缓,则应该缩小比例(P)参数。比例(P)参数设定好后,设定积分(I)参数,积分(I)正好与P参数相反,曲线平缓则需要放大积分(I),出现多次波形则需要缩小积分(I)。比例(P)和积分(I)都设定好以后设定微分(D)参数,微分(D)参数与比例(P)参数的设定方法是一样的。

当初写这段程序的就是为了使用调功器来控制炉子的温度的,已经在我单位的调功器上运行成功了,还有就是我单位的调功器没有使用微分(D),只是用了比例(P)和积分(I)。

一、什么是PID:

PID即:Proportional(比例)、Integral(积分)、Differential(微分)的缩写。顾名思义,PID控制算法是结合比例、积分和微分三种环节于一体的控制算法,它是连续系统中技术最为成熟、应用最为广泛的一种控制算法,该控制算法出现于20世纪30至40年代,适用于对被控对象模型了解不清楚的场合。 ---百度百科

二、PID是否难学:

在工业应用中PID及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法,如果能够熟练掌握PID算法的设计与实现过程,对于一般的研发人员来讲,应该是足够应对一般研发问题了,而难能可贵的是,在我所接触的控制算法当中,PID控制算法又是最简单,最能体现反馈思想的控制算法,可谓经典中的经典。经典的未必是复杂的,经典的东西常常是简单的,而且是最简单的,想想牛顿的力学三大定律吧,想想爱因斯坦的质能方程吧,何等的简单!简单的不是原始的,简单的也不是落后的,简单到了美的程度。 ---1

三、PID算法的C语言源码:

PID 控制算法可以分为位置式 PID 和增量式 PID 控制算法

详细见参考12

参考:

1PID算法

2简易PID算法的快速扫盲(超详细+过程推导+C语言程序)

PID参数具有明显的物理意义,你可以直接搜

一般情况下,比例系数的值越大则偏差将变小,且减小对控制中的负载扰动的敏感度,但也将对测量噪声更敏感。从根轨迹上看,比例系数的值变大将会使系统趋于不稳定。积分对以往的误差信号进行作用,引入积分控制能消除控制中的静态误差,但积分作用的值增大可能增加系统的超调量、导致系统振荡,而小则使得系统响应趋于稳态值的速度减慢;微分控制对误差的导数,有一定预报功能,微分系数的值增大能加快系统的响应速度,减小调节时间。但过大的会因系统噪声或受控对象的大时间延迟出现问题。

对应的和你的转速连续在一起就能分析了。

dentifier,它也属于电工电子类技术术语。

PID就是各进程的身份标识,程序一运行系统就会自动分配给进程一个独一无二的PID。进程中止后PID被系统回收,可能会被继续分配给新运行的程序。

PID一列代表了各进程的进程ID,也就是说,PID就是各进程的身份标识。

==========

PID一列代表了各进程的进程ID,也就是说,PID就是各进程的身份标识。

只要运行一程序,系统会自动分配一个标识!!

1

是暂时唯一:进程中止后,这个号码就会被回收,并可能被分配给另一个新进程。

只要没有成功运行其他程序,这个pid会继续分配给当前要运行的程序!!

如果成功运行一个程序,然后再运行别的程序时,系统会自动分配另一个pid!!

要查看的话就打开任务管理器--查看--

选择列

基于2407单片机的直流电机PWM调速系统

学 生: 张 洋

专 业: 电气工程及其自动化

班 级: 09020702

指导教师: 周素盈

二.系统总体方案论证

21系统方案比较与选择

方案一:采用专用PWM集成芯片、IR2110 功率驱动芯片构成整个系统的核心,现在市场上已经有很多种型号,如Tl公司的TL494芯片,东芝公司的ZSK313I芯片等。这些芯片除了有PWM信号发生功能外,还有“死区”调节功能、过流过压保护功能等。这种专用PWM集成芯片可以减轻单片机的负担,工作更可靠,但其价格相对较高,难于控制工业成本不宜采用。

方案二:采用24071单片机、功率集成电路芯片L298构成直流调速装置。L298是双H高电压大电流功率集成电路,直接采用TTL逻辑电平控制,可用来驱动继电器、线圈、直流电动机、步进电动机等电感性负载。其驱动电压为46V,直流电流总和为4A。该方案总体上是具有可行性,但是L298的驱动电压和电流较小,不利于工业生产应用,无法满足工业生产实践中大电压、大电流的直流电机调速。

方案三:采用2407单片机、IR2110功率驱动芯片构成整个系统的核心实现对直流电机的调速。2407具有两个定时器T1和T2。通过控制定时器初值T1和T2,从而可以实现从任意端口输出不同占空比的脉冲波形。2407控制简单,价格廉价,且利用2407构成单片机最小应用系统,可缩小系统体积,提高系统可靠性,降低系统成本。IR2110是专门的MOSFET管和IGBT的驱动芯片,带有自举电路和隔离作用,有利于和单片机联机工作,且IGBT的工作电流可达50A,电压可达1200V,适合工业生产应用。

综合上述三种方案,本设计采用方案三作为整个系统的设计思路。

22系统方案描述

本系统采用2407为控制核心,利用2407产生的PWM经过逻辑延迟电路后加载到以IR2110为驱动核心,IGBT构成的H桥主干电路上实现对直流电机的控制和调速。本系统的控制部分为5V的弱电而驱动电路和负载电路为110V以上的直流电压因此在强弱电之间、数据采集之间分别利用了带有驱动功能的光耦TLP250和线性光耦PC817实现强弱电隔离,信号串扰。具体电路框图如下图2-1

图2-1系统整体框图

23 转速负反馈单闭环直流调速系统原理

231原理框图

该系统原理框图如图2-3所示,转速反馈控制环的调节是利用单片机软件实现的PI调节。图中虚线部分是采用单片机实现的控制功能。

232 单闭环直流调速系统的组成

图2-3 数字式转速负反馈单闭环直流调速系统

只通过改变触发或驱动电路的控制电压来改变功率变换电路的输出平均电压,达到调节电动机转速的目的,称为开环调速系统。但开环直流调速系统具有局限性:

(1)、通过控制可调直流电源的输入信号,可以连续调节直流电动机的电枢电压,实现直流电动机的平滑无极调速,但是,在启动或大范围阶跃升速时,电枢电流可能远远超过电机额定电流,可能会损坏电动机,也会使直流可调电源因过流而烧毁。因此必须设法限制电枢动态电流的幅值。

(2)、开环系统的额定速降一般都比较大,使得开环系统的调速范围D都很小,对于大部分需要调速的生产机械都无法满足要求。因此必须采用闭环反馈控制的方法减小额定动态速降,以增大调速范围。

(3)、开环系统对于负载扰动是有静差的。必须采用闭环反馈控制消除扰动静差,为克服其缺点,提高系统的控制质量,必须采用带有负反馈的闭环系统,方框图如图2-2所示。在闭环系统中,把系统输出量通过检测装置(传感器)引向系统的输入端,与系统的输入量进行比较,从而得到反馈量与输入量之间的偏差信号。利用此偏差信号通过控制器(调节器)产生控制作用,自动纠正偏差。因此,带输出量负反馈的闭环控制系统能提高系统抗扰性,改善控制精度的性能,广泛用于各类自动调节系统中。

图2-2 闭环系统方框图

对于调速系统来说,输出量是转速,通常引入转速负反馈构成闭环调速系统。在电动机轴上安装测速装置,引出与输出量——转速成正比的负反馈电压,与转速给定电压进行比较,得到偏差电压,经过放大器A,产生驱动或触发装置的控制电压,去控制电动机的转速,这就组成了反馈控制的闭环调速系统,如图2-4所示。

图2-4 转速负反馈单闭环直流调速系统静态框图

233速度负反馈单闭环系统的静特性

由图2-3,按照梅森公式可以直接写出转速给定电压Un和负载扰动电流IL与转速n的关系式如下: 式2-2

其中,闭环系统的开环放大系数为: 式2-3

开环系统的负载速降为: 式2-4

由式2-2闭环时的负载速降为: 式2-5

上式表明采用速度闭环控制后,其负载速降减小了(1+Kol)倍,使得闭环系统的机械特性比开环时硬得多;因而,闭环系统的静差率要小得多,可以大大增加闭环系统的调速范围。

24 采用PI调节器的单闭环无静差调速系统

在电动机的闭环调速中,速度调节器一般采用PI调节器,即比例积分调节器。常规的模拟PI控制系统原理框图见图2-5,该系统由模拟PI调节器和被控对象组成。

r(t)是给定值,y(t)是系统的实际输出值,给定值与实际输出值构成控制偏差e(t)。

………………………………………………(2-6)

e(t)作为PI调节器的输入,u(t)作为PI调节器的输出和被控制对象的输入。所以模拟PI控制器的规律为:

…………………………………(2-7)

式中Kp--比例系数,TI--积分常数。

比例调节的作用是对偏差瞬间做出快速反应。偏差一旦产生,控制器立即产生控制作用,使控制量向减少偏差的方向变化。控制作用的强弱取决于比例系数,比例系数越大,控制越强,但过大会导致系统振荡,破坏系统的稳定性。

积分调节的作用是消除静态误差。但它也会降低系统响应速度,增加系统的超调量。

图2-5模拟PI控制系统原理图

采用DSP对电动机进行控制时,使用的是数字PI调节器,而不是模拟PI调节器,也就是说用程序取代PI模拟电路,用软件取代硬件。将式3-6离散化处理就可以得到数字PI调节器的算法:

……………………………(2-8)

或 ……………………………(2-9)

式中k--采样序号,k=0,1,2,…;uk--第k次采样时刻的输出值;

ek--第k次采样时刻输入的偏差值; KI--积分系数,;

u0--开始进行PI控制是的原始初值。

用式(3-8)计算PI调节器的输出比较繁杂,可将其进一步变化,令第k次采样时刻的输出值增量为:

………………………………(2-10)

所以 ……………………………………(2-11)

或 …………………………………………(2-12)

式中--第k-1次采样时刻的输出值,--第k-1次采样时刻的偏差值,

--,--。

用式(2-11)或式(2-12)就可以通过有限次的乘法和加法快速地计算出PI调节器的输出。

以下是用式(2-12)计算的程序代码:

LT EK ;

MPY K2 ;K2是Q12格式,

LACC GIVE ;给定值

SUB MEASURE ;减反馈值

SACL EK ;保存偏差值

LACC UK,12 ;

LTA EK ;,Q12格式,

MPY K1 ;k1是Q12格式,

AP AC ;,Q12格式

SACH UK,4 ;保存

以上程序代码只用10条指令。如果用40MIPS,只需250ns时间,足可以用于实时控制。

三.硬件电路的模块设计

31 H桥电机驱动电路

图3-1所示的H桥式电机驱动电路包括4个三极管和一个电机,电路得名于“H桥驱动电路”是因为它的形状酷似字母H。如图3-1所示,要使电机运转,必须导通对角线上的一对三极管。根据不同三极管对的导通情况,电流可能会从左至右或从右至左流过电机,从而控制电机的转向。

图3-1H桥驱动电路

要使电机运转,必须使对角线上的一对三极管导通。例如,如图3-2所示,当Q1管和Q4管导通时,电流就从电源正极经Q1从左至右穿过电机,然后再经 Q4回到电源负极。按图中电流箭头所示,该流向的电流将驱动电机顺时针转动。当三极管Q1和Q4导通时,电流将从左至右流过电机,从而驱动电机按特定方向 转动(电机周围的箭头指示为顺时针方向)。

图3-2 H桥驱动电路

图2-3所示为另一对三极管Q2和Q3导通的情况,电流将从右至左流过电机。当三极管Q2和Q3导通时,电流将从右至左流过电机,从而驱动电机沿另一方向转动(电机周围的箭头表示为逆时针方向)。

图3-3 H桥驱动电路

32放大电路的连接电路

IR2111外围电路如图所示。单片机输出的PWM信号经光耦PC817后,输出至IR2111输入端,此处的光耦对PWM信号起到隔离、电平转换和功率放大的作用。图中,、为光耦上拉电阻,其值根据所用光耦的输入和输出地电流参数决定:为电容滤波电容,为自举二极管,、为栅极驱动电阻。

33键盘输入电路

本系统采用键盘,如图35所示。

图35为按钮电路

33测速电路设计

一个完善的闭环系统,其定位精度和测量精度主要由测量元件决定,因此,高精度的测量转速对测量元件的质量要求相当高。光电编码器是现代系统中必不可少的一种数字式速度测量元件,被广泛应用于微处理器控制的闭环控制系统中。

331光栅盘

光栅盘是在圆盘边刻有很多光栅。当光源照射到光栅部分时,没有被光栅挡住的光源就透射过去。本系统中采用了一个圆面上刻有60个均匀光栅格的光栅盘。当电机旋转一周时,会产生60个光脉冲信号。

332 光电传感器

光电传感器原理是有一个发光二极管和一个由光信号控制放大的三极管组成。由发光二极管发出红外光线通过3mm宽的气隙透射到另一端的三极管上,使得该三极管导通。其特征如下:

气隙是3mm。

分辨率达到05mm。

大电流传输比。

暗电流为:025

在=10mA时,发光二极管产生的光线的波长为940nm。

安装时将光栅盘圆面钳到沟槽中,光电传感器的发光二极管发出的红外线通过3mm气隙照射到光栅盘,光通过光栅盘面上透光的光栅气隙可以使得光传感器的三极管导通,从C极会输出一个低电平,被光栅挡住的光不能透过去,使得光电传感器的C极会输出一个高电平。

36光电传感器原理图

光电传感器在硬件电路设计上很简单, 如图37。在光电传感器的1引脚上接一个限流电阻R,限制流过发光二极管的电流=10mA左右。计算公式如下:

其中,

37光电传感器设计图

34 稳压电源电路

电池放电时内阻稳定的增大,电压则稳定的减小, 而且接上大功率的负载时电压会瞬时降低, 不能用于提供固定的电压,对于各种IC芯片需要的稳定电压, 需要专门的稳压器件,或者稳压电路, 基本的稳压器有两种:线性(LDO)和开关(DCDC), 其中前者只能降压使用,而前者还可以升压使用而且效率很高。

控制芯片89C51的标准供电电压是5V,可以选择使用线性电压调整芯片稳压,如:

7805:最大输出电流15A,内部过热保护,内部短路电流限制,典型输入电压7~20V, 输出电压49~51V,静态电流典型值42mA,压差(输出与输入的差)至少2V。

78L05(电流较小):最大输出电流100mA,内部过热保护,典型输入电压7~20V, 输出电压475~525V,静态电流典型值3mA。

LM317(电压可调):输出电流可达15A,输出电压12V~37V,内部过热保护等。

选用7805,一方面简单;另一方面比较常用且比较便宜。

LM78系列是美国国家半导体公司的固定输出三端正稳压器集成电路。我国和世界各大集成电路生产商均有同类产品可供选用,是使用极为广泛的一类串联集成稳压器。内置过热保护电路,无需外部器件,输出晶体管安全范围保护,内置短路电流限制电路。对于滤波电容的选择,需要注意整流管的压降。

稳压电源由电源变压器、整流电路、滤波电路和稳压电路组成,

a整流和滤波电路:整流作用是将交流电压变换成脉动电压。滤波电路一般由电容组成,其作用是脉动电压中的大部分纹波加以滤除,以得到较平滑的直流电压。

b稳压电路:由于得到的输出电压受负载、输入电压和温度的影响不稳定,为了得到更为稳定电压添加了稳压电路,从而得到稳定的电压。

38光电传感器设计图

三端集成稳压器LM7805正常工作时,输入、输出电压差2~3V。C1为输入稳定电容,其作用是减小纹波、消振、抑制高频和脉冲干扰,C1一般为01~047μf。C2为输出稳定电容,其作用是改善负载的瞬态响应,C2一般为1μF。使用三端稳压器时注意一定要加散热器,否则是不能工作到额定电流。二极管IN4007用来卸掉C2上的储存电能,防止反向击穿LM7805。查相关资料该芯片的最大承受电流为01A,因此输入端必须界限流电阻R1,R1=(1209-5)/01=58Ω,取近似值,选用70Ω的电阻。

35.显示电路

液晶显示模块(LCD)由于其具有功耗低、无电磁辐射、寿命长、价格低、接口方便等一系列显著优点,被广泛应用与各种仪表仪器、测量显示装置、计算机显示终端等方面。其中,字符液晶显示模块是一类专用于显示字母、数字、符号的点阵式液晶显示模块。TS1620字符液晶显示模块以ST7066和ST7065为控制器,其接口信号功能和 *** 作指令与HD44780控制器具有兼容性。字符液晶有81、162、202、402等20多种规格型号齐全的字符液晶显示模块,均具有相同的引线功能和编程指令,与单片机的接口具有通用性。下图为外观机构。

TS1620的引脚与功能表下图所示。

引脚好 引脚符号 名称 功

1 GND 电源地 接5V电

源地端

2 VDD 电源正端 接5V电

源正端

3 VEE 液晶驱动电压端 电压可调,一端接地,

一端接可调电阻

4 RS 寄存器选择段 RS=1为数据寄存器,

RS=0为指令寄存器

5 RW 读/写选择端 RW=1为读数据,

RW=0为写数据

6 EN 读/写使能端 写时,下降沿触发;

读时,高电平有效

7至14 DB0—DB7 8位数据线 数据

总线

TS1620模块与单片机的接口简单,PIC18F单片机的连接图如总图所示。PIC18F458的RD0-RD7端口直接与TS1620-1的DB0-DB7相连接,TS1620-1的控制信号RS、RW、EN分别与PIC18F458的RE0-RD2相连接。

36时钟电路

单片机各功能部件的运行都是以时钟控制信号为基准,有条不紊地一拍一拍地工作,因此时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。电路中的电容C1和C2典型值通常选择为30pF左右。对外接电容的值虽然没有严格的要求,但电容的大小会影响振荡器的频率高低,振荡器的稳定性和起振的快速性,晶振的频率越高则系统的时钟频率也越高,单片机的运行速度也越快。

图39时钟电路

本设计采用频率为12MHZ,微调电容C1和C2为30pF的内部时钟方式,电容为瓷片电容。判断单片机芯片及时钟系统是否正常工作有一个简单的方法,就是用万用表测量单片机晶振引脚(18,19脚)的对地电压,以正常工作的单片机用数字万用表测量为例:18脚对地电压约为224V,19脚对地电压约为209V。

43 复位电路

复位是单片机的初始化 *** 作,其主要作用是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或 *** 作失误使系统处于死锁状态时,为摆脱困境,也需要按复位键以重新启动。

图310 复位电路

单片机的复位电路在刚接通电时,刚开始电容是没有电的,电容内的电阻很低,通电后,5V的电通过电阻给电解电容进行充电,电容两端的电会由0V慢慢的升到4V左右(此时间很短一般小于03秒),正因为这样,复位脚的电由低电位升到高电位,引起了内部电路的复位工作,这是单片机的上电复位,也叫初始化复位。当按下复位键时,电容两端放电,电容又回到0V了,于是又进行了一次复位工作,这是手动复位原理。 该电路采用按键手动复位。按键手动复位为电平方式。对于怀疑是复位电路故障而不能正常工作的单片机也可以采用模拟复位的方法来判断,单片机正常工作时第9脚对地电压为零,可以用导线短时间和+5V连接一下,模拟一下上电复位,如果单片机能正常工作了,说明这个复位电路有问题,其中电平复位是通过RET端经电阻与电源VCC接通而实现的,当时钟频率适用于12MHZ时,C取100uF,R取10K,为保证可靠复位,在初识化程序中应安排一定的延迟时间。

软件电路的模块设计

直流电机转速控制器的软件设计和系统功能的开发和完善是一个循序渐进过程,本文所作的软件开发是基于直流电机多速控制器的基本功能要求设计的该系统软件有主程序、功能键处理程序、电机运行显示程序、键盘设置参数程序测速程序、延时子程序等。

该系统的整个软件设计全部采用模块化程序设计思想,由系统初始化模块、案件识别模块、LCD模块、高优先级和低优先级中断服务程序四大模块组成。整个软件的主程序框图如图4-1。

图4-1整个软件的主程序框图

通过控制总中断使能PDPINTA控制电机的开关,其中定时器T1,T2分别对脉冲的宽度、光电传感器输出的脉冲数对应的1秒时间定时。对脉冲宽度的调整是通过改变高电平的定时长度,由变量high控制。变量change、 sub_speed 、add_speed分别实现电机的转向、加速、减速。

41系统初始化模块

/主函数/

void main()

{

P2 = 0x00;

TMOD = 0x11;

TH1 = 0xec; //定时器T1设置参数

TL1 = 0x78;

TH2 = 0x3c; //定时器T2设置参数

TL2 = 0xb0;

TR1 = 1;

TR2 = 1;

init(); //液晶显示初始化程序

while(1)

{

Wc2407r(0x84);

wc2407ddr('H');

wc2407ddr('e');

wc2407ddr('l');

wc2407ddr('l');

wc2407ddr('o');

if(test == 0)

num_medium++;

datamade();

motor_control();

}

}

42 电机运行控制模块

电机运行控制模块包括电机的方向控制和电机的速度控制,他们由Open,close,addspeed,subspeed,swap变来控制2407单片机的EVA模块产生不同的PWM信号送到L298 电机驱动器。

/通过按键实现对电机开关、调速、转向的控制的程序/

void motor_control()

{

if(open == 1)

PDPINTA = 1;

if(close == 1)

PDPINTA = 0;

if(swap == 1)

{

change = ~change;

while(swap != 0)

{}

}

if(sub_speed == 1)

{ high++;

if(high == 30)

PDPINTA=0;

while(sub_speed != 0)

{}

}

if(add_speed == 1)

{ high--;

if(high == 5)

high = 5;

while(add_speed != 0)

{}

}

}

43 测速软件设计

常用的光栅测速方法有三种:测频法(M法)、测周法(T法)和测频测周法(M/T

法)

M法测速是测定在一定时间内,脉冲的个数,从而转换为速度。

本系统采用M法则测速。设置2407单片机内的定时器/计数器TIME1于计数器模式;在20个时钟周期内定时期间TIME1对输入的脉冲进行计数,在中断过程中对计入的脉冲数进行处理,获得转速数据。

/T2中断服务程序单位时间(S)方波的个数/

void time2_int(void) interrupt 3

{

count_speed++;

if(count_speed == 20)

{ count_speed = 0;

num_display = num_medium;

num_medium = 0;

}

}

/速度显示的数据处理/

void datamade()

{

uint data MM

Wc2407r(0xc2);

wc2407ddr('S');

wc2407ddr('p');

wc2407ddr('e');

wc2407ddr('e');

wc2407ddr('d');

wc2407ddr(0x3a);

MM = num_display/100;

wc2407ddr(wword[MM]);

}

44LCD显示模块

LCD显示驱动单独做成一个源程序文件和头文件,可以方便以后其他模块或其他应用程序的调用。在LCD显示驱动模块中主要是LCD初始化函数LCD_Initize()、写LCD命令函数Write_LCD_Command()、写LCD数据函数Write_LCD_Data()

TS1620可以显示两行16列ASCII码,其对应的第一行的首行地址是80H;第二行的首地址是C0H,送字符串到LCD上显示,需要定位将字符串显示在第X行和第Y列上,显示的字符串不能超过该行的最大列。

#include <reg2407h>

#define uchar unsigned char

#define uint unsigned int

sbit open = P2^0;

sbit close = P2^1;

sbit swap = P2^2;

sbit sub_speed = P2^3;

sbit add_speed = P2^4;

sbit PWM1 = P3^0;

sbit PWM2 = P3^1;

/液晶显示/

sbit E=P3^7;

sbit RW = P3^6;

sbit RS = P3^5;

sbit test = P3^4;

int time = 0;

int high = 20;

int period = 30;

int change = 0;

int flag = 0;

int num_medium = 0;

int num_display = 0;

int count_speed = 0;

uchar wword[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};

/延时t毫秒/

void delay(uchar t)

{

uint i;

while(t)

{

/对于110592MHz时钟,延时1ms/

for(i=0;i<125;i++);

t--;

}

}

//写命令函数LCD

void Write_LCD_Command(){

RS=0;

RW=0;

P1=j;

E=1;

E=0;

delay(3);

}

//写数据函数LCD

void Write_LCD_Data()

{

RS=1;

RW=0;

P1=j;

E=1;

E=0;

delay(2);

}

//初始化函数LCD

void LCD_Initize(){

wc2407r(0x01); //清屏

wc2407r(0x38); //使用8位数据,显示两行,使用57的字型

wc2407r(0x0c); //显示器件,光标开,字符不闪烁

wc2407r(0x06); //字符不动,光标自动右移一格

}

44 PWM 源程序

/8T1中断服务程序PWM波的生成/

void time1_int(void) interrupt 1

{

time++;

TH1 = 0xec;

TL1 = 0x78;

if(change == 0)

{

PWM2 = 1;

if(time == high)

PWM1=0;

else if(time == period)

{

PWM1 = 1;

time = 0;

}

}

else

{ PWM1 = 1;

if(time == high)

PWM2=0;

else if(time == period)

{

PWM2 = 1;

time = 0;

}

}

}

45 PID调速程序流程如图

五.系统抗干扰

电子电路的抗干扰技术在电路设计中占有重要的地位,对系统是否正常工作有着决定作用。

本文电路既包括模拟电路也包括数字电路,而数字电路运行时输入和输出信号均只有两种状态,即高电平和低电平,且这两种电平的翻转速度很快,同时,由于数字电路基本上以导通或截至方式运行,工作速率比较高,故会对电路产生高频浪涌电流,可能会导致电路工作不正常;而数字电路的输入输出波形边沿很陡,含有极丰富的频率分量,这对模拟电路来说,无疑是一个高频干扰源。为了消除以上可能出现的干扰,本系统在设计和调试过程中反复尝试比较,最终采取如下措施,消除了系统干扰。

(l)合理布置电源滤波、退藕电容。

(2)将数字电路与模拟电路分开。

(3)合理设计地线。

(4)尽量加粗接地线和电源线。

六.设计总结

经过2个星期的课程设计,留给我印象最深的是要设计一个成功的电路,必须要有要有扎实的理论基础,还要有坚持不懈的精神。

本产品实现了对直流电机的调速和测速,个人感觉其中还有许多不够完善的地方,例如:对电机的控制采用的是独立按键,而非矩阵键盘;电机的驱动电路的设计也不是很成熟。

此次的设计并不奢望一定能成功,但一定要对已学的各种电子知识能有一定的运用能力,我做设计的目的是希望能检查下对所学知识的运用能力的好坏,并且开始慢慢走上创造的道路,这是非常可贵的一点。

模拟PID就是在现场安装的利用DDZII或者DDZIII型表再加上其他气动仪表的模块,对现场控制变量的模拟信号利用旋钮或拨盘对PID的三个值进行设定对或者手动控制输出的系统,其信号均为模拟信号。

数字PID就是把现场的控制变量的模拟信号和对现场受控变量的输出信号均转换成了数字信号,PID的实现也是通过数字信号的设定来完成的。现在大多在DCS、PLC系统内完成的。

以上就是关于Error, Don't know how to build file "D:\DSP\PID\putongPID\DSP28_PID.h"全部的内容,包括:Error, Don't know how to build file "D:\DSP\PID\putongPID\DSP28_PID.h"、PID在计算机中怎样实现、什么是pid算法,难学吗,用C语言,plc怎么实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10012712.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存