直流电机与步进电机同步实现方案

合集下载

电机驱动方案

电机驱动方案

电机驱动方案引言电机驱动是现代工业生产中非常重要的一环,它负责将电能转化为机械能,驱动各种设备运转。

本文将介绍电机驱动的基本原理以及常见的几种电机驱动方案。

电机驱动原理电机驱动的基本原理是利用电磁力作用于电流导体上,使电机产生转动力和转矩。

根据电机的类型和工作原理的不同,电机驱动的方式也会有所不同。

以下是常见的几种电机驱动方案:直流电机驱动方案直流电机是最常见且应用最广泛的电机之一。

直流电机驱动方案可以分为直流电流调速控制和直流电压调速控制两种方式。

直流电流调速控制直流电流调速控制是通过改变直流电机供电电流的大小来达到调速的目的。

常见的实现方式是通过脉宽调制技术对直流电机进行调制,调节占空比来改变电机的转速。

直流电压调速控制直流电压调速控制是通过改变直流电机的供电电压来实现调速。

常见的实现方式是通过变压器或者变阻器来改变电压大小,从而调节电机的转速。

交流电机驱动方案交流电机是工业生产中使用较广泛的电机之一。

常见的交流电机驱动方案有变频调速、磁阻调速和矢量控制。

变频调速是通过改变交流电机供电频率的大小来实现调速。

通过变频器对电源频率进行调整,从而改变电机的转速。

磁阻调速磁阻调速是通过改变电机的磁阻来实现调速。

通过改变电机的磁场强度和方向,从而改变电机的转速。

矢量控制矢量控制是通过测量电机的电流、转速等参数,并根据数学模型进行计算,控制电机的转速和转矩。

步进电机驱动方案步进电机是通过依次给电机提供脉冲信号,使其按照一定的步数转动的电机。

常见的步进电机驱动方案有全步、半步和微步驱动。

全步驱动是指每给步进电机一个脉冲信号,它就转动一步。

全步驱动是最简单的驱动方式,但是精度相对较低。

半步驱动半步驱动是指每给步进电机一个脉冲信号,它可以转动半步或整步。

半步驱动相对于全步驱动,具有更高的分辨率和更好的转动精度。

微步驱动微步驱动是指通过给步进电机提供多个小的脉冲信号,使其以更小的步进角转动。

微步驱动具有更高的分辨率和更好的精度,但是对控制电路的要求也更高。

步进电机与直流电机控制实验

步进电机与直流电机控制实验
if(P35==0) return 2;
if(P37==0) return 3;
return 0xFF; //无键按下时,返回0xFF
}
void Delay(uint16 ms)
{
uint16 i;
do
{
for(i=700;i;i--); //以1ms为延时单位
} while(--ms);
}
3、设计程序,控制直流电机全速正转2s,反转2s,然后再慢速正转2s,反转2s,如此循环。
uint8 code REV_TABLE[8]={
0x6F, 0x7f,0x3F,0xBF,0x9F,0xDF,0xCF,0xEF }; //4-8拍反转相序字
void Delay(uint16 ms);
void main()
{
uint8 i,j;
while(1)
{
for(j=0;j<128;j++) //正转90°(1024步)
步进电机和直流电机是机电一体化系统中常用的两种电动执行设备。步进电机可在电脉冲信号的控制下,实现快速启停以及精确的角位移控制。直流电机可通过H桥电路切换转向,并可利用PWM技术进行调速。
ZSC-1实验箱为MCU1配置了一个四相步进电机(其最小步距角为5.625°/64)和一个减速直流电机。图3.10.1为步进电机实验电路。P2.4~P2.7某根口线输出低电平时,相应的功率三极管导通,其所连接的一相线圈通电,口线输出高电平时线圈断电。程序以一定的时间间隔依次输出单4拍、双4拍或4-8拍方式对应的相序字,便可控制步进电机转动,颠倒相序字顺序,或改变时间间隔,步进电机的转向和转速也随之改变。图中按键KX0~KX3可用于步进电机转向、转速的控制输入。

电机驱动解决方案

电机驱动解决方案

电机驱动解决方案概述:电机驱动解决方案是指为电机提供稳定、高效、可靠的驱动力的技术方案。

电机驱动系统广泛应用于各个领域,如工业自动化、交通运输、航空航天、医疗设备等。

本文将详细介绍电机驱动解决方案的基本原理、技术要求以及应用案例。

一、基本原理:电机驱动解决方案的基本原理是通过控制电流或电压来实现对电机转速、转向和力矩的控制。

常见的电机驱动方式包括直流电机驱动、交流电机驱动和步进电机驱动。

其中,直流电机驱动常采用PWM调制技术来控制电机转速和力矩;交流电机驱动常采用变频器来实现对电机转速和转向的控制;步进电机驱动则通过脉冲信号控制电机转动角度。

二、技术要求:1. 稳定性:电机驱动解决方案需要具备稳定的输出性能,能够在各种工况下保持恒定的转速和力矩输出。

2. 高效性:电机驱动解决方案需要具备高效的能量转换能力,减少能量损耗,提高系统效率。

3. 可靠性:电机驱动解决方案需要具备高可靠性,能够长时间稳定运行,抵抗外部干扰和故障。

4. 精度:电机驱动解决方案需要具备高精度的控制能力,能够实现精准的转速和力矩控制。

5. 适应性:电机驱动解决方案需要具备良好的适应性,能够适应不同类型、规格的电机,并且能够与其他系统进行无缝集成。

三、应用案例:1. 工业自动化:电机驱动解决方案在工业自动化领域中广泛应用。

例如,在生产线上,通过电机驱动解决方案可以实现对输送带的速度和方向的控制,从而实现自动化的物料运输。

2. 交通运输:电机驱动解决方案在交通运输领域中起到关键作用。

例如,电动汽车的驱动系统就是一种电机驱动解决方案,通过控制电机的转速和力矩来实现车辆的加速和制动。

3. 航空航天:电机驱动解决方案在航空航天领域中的应用也十分重要。

例如,飞机的襟翼、襟翼和方向舵等控制系统都需要电机驱动解决方案来实现精确的控制。

4. 医疗设备:电机驱动解决方案在医疗设备中也有广泛的应用。

例如,手术机器人的关节部分需要电机驱动解决方案来实现精确的运动控制,从而实现手术的精准操作。

电机驱动解决方案

电机驱动解决方案

电机驱动解决方案引言概述:电机驱动是现代工业中不可或缺的一部分,它在各个领域中发挥着重要的作用。

为了满足不同应用的需求,人们设计出了各种电机驱动解决方案。

本文将介绍五种常见的电机驱动解决方案,分别是直流电机驱动、交流电机驱动、步进电机驱动、无刷直流电机驱动和伺服电机驱动。

一、直流电机驱动1.1 电压调速控制:直流电机驱动的一个重要应用是通过调整电压来控制电机的转速。

通过改变电压的大小,可以实现电机的启动、加速、减速和停止等操作。

1.2 电流控制:直流电机驱动还可以通过控制电流来实现对电机的精确控制。

通过调整电流的大小,可以实现电机的力矩控制、位置控制和速度控制等功能。

1.3 脉宽调制:脉宽调制是一种常见的直流电机驱动技术,通过改变脉冲的宽度来控制电机的转速和方向。

脉宽调制可以实现高效的能量转换,提高电机的效率和响应速度。

二、交流电机驱动2.1 变频调速控制:交流电机驱动常用的控制方法是变频调速控制。

通过改变交流电源的频率和电压,可以实现对电机的转速和转矩的精确控制。

2.2 矢量控制:矢量控制是一种高级的交流电机驱动技术,它可以实现对电机的精确位置和速度控制。

通过测量电机的转子位置和速度,可以实时调整电机的控制参数,提高电机的性能和响应速度。

2.3 无传感器控制:传统的交流电机驱动需要使用传感器来测量电机的位置和速度,但无传感器控制技术可以实现对电机的精确控制,而无需使用传感器。

这种技术可以简化系统的结构,提高系统的可靠性和稳定性。

三、步进电机驱动3.1 开环控制:步进电机驱动常用的控制方法是开环控制。

通过控制电机的驱动信号,可以实现电机的步进运动。

步进电机驱动具有简单、可靠的特点,适用于一些低速、高精度的应用。

3.2 微步控制:微步控制是一种改进的步进电机驱动技术,它可以实现对电机的更精确的控制。

通过改变电机的驱动信号,可以使电机以更小的步距运动,提高电机的分辨率和平滑度。

3.3 闭环控制:闭环控制是一种高级的步进电机驱动技术,它可以实现对电机的位置和速度的闭环控制。

步进电机驱动器方案

步进电机驱动器方案

步进电机驱动器方案引言步进电机是一种能够将电力信号转化为机械运动的设备,被广泛应用于各种自动化系统中。

步进电机的驱动方式决定了其在系统中的性能和精度。

本文将介绍几种常见的步进电机驱动器方案,分析其特点和适用范围。

一、直流驱动器方案直流驱动器是一种最常见的步进电机驱动器方案之一。

它通过直流电源和H桥电路来控制步进电机的旋转。

该方案具有以下特点:1. 简单可靠:直流驱动器方案的电路相对简单,易于实现和维护。

2. 精度较低:由于直流驱动器方案无法提供闭环控制和精确的电流驱动,因此其驱动精度相对较低。

3. 适用范围广:直流驱动器方案适用于一些要求不那么高的应用场景,如低精度打印机、门禁系统等。

二、脉冲驱动器方案脉冲驱动器方案采用脉冲信号控制步进电机的运动。

它通过控制脉冲信号的频率、峰值和占空比来实现步进电机的转动。

该方案具有以下特点:1. 高精度:脉冲驱动器方案可以实现高精度的控制,可达到微步驱动,提高系统的运动精度。

2. 复杂控制:脉冲驱动器方案需要精确控制脉冲信号的参数,对控制系统的算法和硬件要求较高。

3. 应用广泛:脉冲驱动器方案适用于许多要求高精度控制的场景,如制造业中的自动化装配线、精密仪器等。

三、闭环控制驱动方案闭环控制驱动方案是一种通过反馈控制来实现步进电机控制的方案。

它通过传感器反馈步进电机的位置信息,实时调整驱动信号,以达到精确控制的目的。

该方案具有以下特点:1. 高精度:闭环控制驱动方案可以实现非常高的位置控制精度,减小步进电机的非线性误差和震动。

2. 复杂昂贵:闭环控制驱动方案的实现较为复杂,需要采用传感器进行位置反馈,同时增加了硬件和算法的成本。

3. 高要求应用:闭环控制驱动方案适用于对位置精度要求极高的场景,如医疗设备、半导体制造等。

结论在步进电机的驱动器方案中,直流驱动器方案简单可靠,适用于一些不对精度要求过高的应用场景。

脉冲驱动器方案具有较高的控制精度,适用于大多数精密控制应用。

两个(或多个)电机如何同步的问题

两个(或多个)电机如何同步的问题

两个(或多个)电机如何同步的问题,包括要求转速或转角完全同步,另外,如果要求两个电机输出的线速度同步,而机械系统存在误差时,两个电机如何同步的问题。

#以前做项目时涉及过这个问题,当时考虑的两种方法:1、第一个主动电机使用速度(或位置)控制方式,由PLC或运动控制器输出模拟量控制其转速,其伺服驱动器将电机编码器的脉冲输出,并连接到从动电机驱动器的脉冲输入口中,这样,从动电机的转动角度由主动电机编码器的输出脉冲给定,其转速也由主动电机编码器的脉冲频率确定,使两者的转速和转动角度一致。

2、主动电机的控制方式同上,但是将第一个电机的转矩输出(通过总线或模拟量),并输入到从动电机驱动器中,从动电机使用转矩控制方式,其转矩与第一个电机的输出转矩一致。

通过主动电机和从动电机负载之间的物理约束,使得两者的转速和转角同步。

使用该方式时可以避免受到两个电机传动系统机械误差的影响。

根据我们的使用条件,电机启动时设置3~4秒的加减速时间到达工作转速,我们用的是第二种同步方式,效果不错。

#在传统的传动系统中,要保证多个执行元件间速度的一定关系,其中包括保证其间的速度同步或具有一定的速比,常采用机械传动刚性联接装置来实现。

但有时若多个执行元件间的机械传动装置较大,执行元件间的距离较远时,就只得考虑采用独立控制的非刚性联接传动方法。

下面以两个例子分别介绍利用PLC和变频器实现两个电机间速度同步和保持速度间一定速比的控制方法。

1、利用PLC和变频器实现速度同步控制薄膜吹塑及印刷机组的主要功能是,利用挤出吹塑的方法进行塑料薄膜的加工,然后经过凹版印刷机实现对薄膜的印刷,印刷工艺根据要求不同可以采用单面单色、单面多色、双面单色或双面多色等方法。

在整个机组中,有多个电机的速度需要进行控制,如挤出主驱动电机、薄膜拉伸牵引电机、印刷电机以及成品卷绕电机等。

电机间的速度有一定的关系,如:挤出主电机的速度由生产量要求确定,但该速度确定之后,根据薄膜厚度,相应的牵引速度也就确定,因此挤出速度和牵引速度之间有一确定的关系;同时,多组印刷胶辘必须保证同步,印刷电机和牵引电机速度也必须保持同步,否则,将影响薄膜的质量、印刷效果以及生产的连续性;卷绕电机的速度受印刷速度的限制,作相应变化,以保证经过印刷的薄膜能以恒定的张力进行卷绕在上述机组的传动系统中,多组印刷胶辘的同步驱动可利用刚性的机械轴联接,整个印刷胶辘的驱动由一台电机驱动,这样就保证了它们之间的同步。

电机驱动解决方案

电机驱动解决方案

电机驱动解决方案一、引言电机驱动是现代工业中广泛应用的技术,它通过控制电机的转速和转向,实现了各种设备和机械的运动控制。

本文将介绍一种电机驱动解决方案,包括其原理、应用场景以及技术参数等。

二、解决方案概述该电机驱动解决方案基于先进的电子控制技术,通过对电机的电流和电压进行精确控制,实现了高效、稳定的驱动效果。

该解决方案适用于各种电机类型,包括直流电机、交流电机以及步进电机等。

三、解决方案原理该电机驱动解决方案采用了先进的PWM(脉宽调制)技术,通过对电源电压进行高频开关控制,实现对电机的精确控制。

通过调节PWM信号的占空比,可以控制电机的转速和转向。

此外,该解决方案还采用了闭环控制算法,能够实时监测电机的转速和负载情况,从而实现更精确的驱动效果。

四、解决方案特点1. 高效能:该解决方案采用了先进的功率电子器件和控制算法,能够实现高效能的电机驱动,提高设备的运行效率。

2. 稳定性:通过闭环控制算法,该解决方案能够实时监测电机的状态,并根据实际负载情况进行动态调整,保证了系统的稳定性。

3. 多功能:该解决方案支持多种电机类型的驱动,适用于各种应用场景,包括工业自动化、机械设备、电动车等领域。

4. 易于集成:该解决方案提供了丰富的接口和通信协议,便于与其他设备进行集成和通信,实现更高级的控制功能。

五、解决方案应用场景1. 工业自动化:该解决方案适用于各种工业自动化设备,包括机械臂、输送机、包装机等。

通过精确的电机控制,可以实现高效、精准的生产流程。

2. 机械设备:该解决方案可以应用于各种机械设备,包括数控机床、注塑机、印刷机等。

通过对电机的精确控制,可以提高设备的加工精度和稳定性。

3. 电动车:该解决方案适用于电动车的电机驱动系统,通过对电机的高效控制,可以提高电动车的续航里程和动力性能。

六、技术参数1. 输入电压范围:AC 220V/380V,DC 24V/48V2. 输出电压范围:AC 0-220V/380V,DC 0-48V3. 最大输出功率:10kW4. 控制精度:±1%5. 最大转速:10000 RPM6. 通信接口:RS485,CAN总线七、总结该电机驱动解决方案基于先进的电子控制技术,通过对电机的电流和电压进行精确控制,实现了高效、稳定的驱动效果。

电机驱动解决方案

电机驱动解决方案

电机驱动解决方案一、概述电机驱动解决方案是指通过电子技术和控制算法来实现对电机的驱动和控制。

它可以应用于各种类型的电机,如直流电机、交流电机、步进电机等。

电机驱动解决方案在工业自动化、机械设备、电动车辆等领域具有广泛的应用。

二、电机驱动的基本原理1. 电机驱动系统的组成电机驱动系统由电机、电源、驱动器和控制器组成。

电源为电机提供所需的电能,驱动器将电源提供的电能转换为适合电机工作的电流和电压信号,控制器则根据需求对驱动器进行控制。

2. 电机驱动的工作原理电机驱动的工作原理是通过控制器向驱动器发送控制信号,驱动器根据控制信号控制电机的转速、转向和运动方式。

驱动器会根据控制信号调整输出的电流和电压,以实现对电机的驱动和控制。

三、电机驱动解决方案的分类根据电机类型和应用需求的不同,电机驱动解决方案可以分为以下几类:1. 直流电机驱动解决方案直流电机驱动解决方案适用于需要精确控制转速和转向的场合。

它通常由直流电机、直流电源、H桥驱动器和控制器组成。

控制器可以通过PWM(脉宽调制)技术来调整电机的转速和转向。

2. 交流电机驱动解决方案交流电机驱动解决方案适用于大功率和高速运转的场合。

它通常由交流电机、交流电源、变频器和控制器组成。

变频器可以将交流电源的频率和电压进行调整,以控制电机的转速和转向。

3. 步进电机驱动解决方案步进电机驱动解决方案适用于需要精确定位和控制的场合。

它通常由步进电机、驱动器和控制器组成。

控制器可以通过控制驱动器发送的脉冲信号来控制步进电机的转动角度和速度。

四、电机驱动解决方案的优势和应用1. 优势电机驱动解决方案具有以下优势:- 高效性:通过优化电机的驱动方式和控制算法,可以提高电机的效率,减少能源消耗。

- 稳定性:采用先进的控制技术,可以实现对电机的精确控制,提高系统的稳定性和可靠性。

- 灵活性:不同类型的电机驱动解决方案可以根据具体需求进行选择,满足不同应用场景的需求。

2. 应用电机驱动解决方案广泛应用于以下领域:- 工业自动化:用于驱动各种工业设备,如机床、输送带、搅拌器等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

重庆邮电大学研究生堂下考试答卷2012-2013学年第1学期考试科目机电系统控制理论姓名年级专业2012年12 月31 日目录1 设计任务书------------------------------------------------------------------------------------11.1功能介绍--------------------------------------------------------------------------------11.2技术指标--------------------------------------------------------------------------------12 技术书明书-----------------------------------------------------------------------------------22.1 设计方案-------------------------------------------------------------------------------22.1.1 MCU的选择-------------------------------------------------------------------22.1.2 步进电机的驱动模块--------------------------------------------------------22.1.3 直流电机的驱动模块--------------------------------------------------------22.1.4 测速模块-----------------------------------------------------------------------22.1.5 显示模块-----------------------------------------------------------------------22.2 原理图设计----------------------------------------------------------------------------22.3 PCB图设计-----------------------------------------------------------------------------22.4 元件类型-------------------------------------------------------------------------------23 程序代码-------------------------------------------------------------------------------------31 设计任务书1.1 功能介绍本设计主要单片机系统、矩阵键盘、液晶显示、驱动模块、直流电机、步进电机组成。

利用AT89C52单片机作为主控芯片,配合L298和THB7128分别驱动直流电机和步进电机,以实现直流电机和步进电动机同步旋转,且误差小于3%,还需实现正反转,并用光电传感器实时测得速度,并在液晶显示器显示出来。

1.2 技术指标直流电机控制其正反转通过改变直流电极性得以改变,因此主要还是产生单路可根据设置占空比输出的PWM信号。

产生PWM信号有两个关键,一是开关信号周期,也就是PWM信号的周期,二是一个周期内,高电平的占空比。

信号周期与占空比均与时间有关,用定时器是合理的方法。

对于步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。

在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。

采用一个定时器,假设PWM周期对应的计数值为N0,PWM1、PWM2的占空比分别为DT1、DT2,那么,其对应的计数值分别为N0*DT1、N0*DT2,并不断查询定时器记数。

2 技术说明书2.1 设计方案本次设计的目的是以一个单片机为基础控制一个直流电机和一个步进电机同步运转,主要有控制模块、驱动模块、测速模块和显示模块等。

其中控制模块是由矩阵键盘组成,实现电机的正转、反转、加速以及减速。

驱动模块则是由两个电机的驱动电路组成,其中直流电机是由L298驱动,步进电机是由THB7128驱动。

显示模块是由LCD1602用作速度显示,测速模块是由光电编码器的M法测速,其中两个电机的同步控制是以所测得的速度作为反馈量,利用PID算法进行闭环控制实现同步运转。

2.1.1 MCU的选择本产品的MCU我们选的是STC89C52单片机,STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。

在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口。

另外STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

最高运作频率35Mhz,6T/12T可选。

单片机最小系统2.1.2 步进电机的驱动模块THB7128是一款专业的两相步进电机驱动芯片。

它内部集成了细分、电流调节、CMOS功率放大等电路,配合简单的外围电路即可实现高性能、多细分、大电流的驱动电路。

适合驱动42、57型两相、四相混合式步进电机。

在低成本、低振动、小噪声、高速度的设计中应用效果较佳。

2.1.3 直流电机的驱动模块L298内部为双H桥,以及控制电路,没有环形脉冲分配电路,所以不能直接驱动步进电机,可配合L297使用组成完整的步进电机固定斩波频率的PWM 恒流斩波驱动器,也可配合其它环形脉冲分配电路或单片机使用。

2.1.4 测速模块测速模块主要采用红外对管,其中红外对管主要结构为光敏接收管,它是一个具有光敏特征的PN结,属于光敏二极管,具有单向导电性,因此工作时需加上反向电压。

无光照时,有很小的饱和反向漏电流(暗电流)。

此时光敏管不导通。

当光照时,饱和反向漏电流马上增加,形成光电流,在一定的范围内它随入射光强度的变化而增大。

红外线接收管,功能与光敏接收管相似只是不受可见光的干扰,感光面积大,灵敏度高,属于光敏二极管,一般只对红外线有反应。

红外线接收头,就是在红外线接收管的基础上增加了对微弱信号进行放大的处理的电路,类似开关电路,接收到红外信号给出高电平(接近工作电压),无红外信号低电平(约0.4)。

2.1.5 显示模块1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。

它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。

1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。

2.2 框架图系统总框架:程序主框架:键盘控制流程图:N2.3原理图设计直流电机的驱动电路步进电机的驱动电路L298驱动电路原理图光电测速电路原理图2.4 元件类型2.4程序代码#include <reg52.h># define uint unsigned int# define uchar unsigned char sbit cp=P1^0;sbit ud=P1^1;sbit dir=P1^4;sbit free=P1^2;sbit dula=P2^6;sbit wela=P2^7;sbit en=P3^4;sbit rs=P3^5;sbit IN1 = P2^0;sbit IN2 = P2^1;sbit ENA = P2^4;sbit ENB = P2^5;sbit key1=P3^6;sbit key2=P3^7;uint p,p1,flag, pwm;int num1,num2;uint cnt1,cnt2,k;void delay(uint xms){uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);}void write_com(uchar com) {rs=0;delay(5);P0=com;en=1;delay(5);en=0;}void write_date(uchar date){rs=1;delay(5);P0=date;en=1;delay(5);en=0;}void display(){write_com(0x80);write_date((char)(num1/100)+'0');write_date((char)(num1%100/10)+'0');write_date('.');write_date((char)(num1%10)+'0');}void display1(){write_com(0x80+0x06);write_date((char)(num2/100)+'0');write_date((char)(num2%100/10)+'0');write_date('.');write_date((char)(num2%10)+'0');}typedef struct PID{double SetPoint;double Proportion;double Integral;double Derivative;double LastError;double PrevError;double SumError;} PID;double PIDCalc( PID *pp, double NextPoint ) {double dError,Error;Error = pp->SetPoint - NextPoint;pp->SumError += Error;dError = pp->LastError - pp->PrevError;pp->PrevError = pp->LastError;pp->LastError = Error;return (pp->Proportion * Error+ pp->Integral * pp->SumError+ pp->Derivative * dError);}void PIDInit (PID *pp){memset ( pp,0,sizeof(PID));}void PWM_change(uint PWM_num) {pwm_on2=PWM_num;}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void key(){if(key1==0){delay(2);if(key1==0){dir=~dir;IN1=~IN1;IN2=~IN2;while(!key1);}}}void init(){dula=0;wela=0;write_com(0x38);write_com(0x0c);write_com(0x06);TMOD=0x11;TH0=(65536-10)/256;TL0=(65536-10)/256;TH1=(65536-1000)/256;TL1=(65536-1000)%256;ET0=1;TR0=1;ET1=1;TR1=1;EX0=1;IT0=1;EX1=1;IT1=1;EA=1;IN1=1;IN2=0;PT1=1;ENA=0;}void main(){int t;init();pwm=40;while(1){key();if(flag){flag=0;display();display1();t=num1-num2;if(t>5){pwm+=1;}else if(t<-5){pwm-=1;}}}}void T0_timer()interrupt 1 {TH0=(65536-10)%256;TL0=(65536-10)%256;cnt1++;if(cnt1==100){cnt1=0;}if(cnt1<pwm)ENA = 1;else ENA=0;}void extre0()interrupt 0 {p++;}void extre1()interrupt 2{p1++;}void T1_timer() interrupt 3 {uint i;TH1=(65536-1000)/256;TL1=(65536-1000)%256;k++;cp=1;for(i=0; i<5;i++);cp=0;while(k==1000){flag=1;k=0;num1=p;num2=p1;p=0;p1=0;}}。

相关文档
最新文档