ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:77.97KB ,
资源ID:7729291      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7729291.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电机PID控制.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

电机PID控制.docx

1、电机PID控制一、实验名称:51系列单片机直流电机闭环调速实验基于Proteus仿真实验平台实现基本情况:1. 学生姓名:2. 学 号:3. 班 级:4. 实验项目组长:5. 同组其他成员:序号姓 名班 级学 号分工系数126. 具体分工:(1)组长 电路设计仿真 整合实验报告(2)组员 相关资料收集 (3)组员 程序编写7. 本人在项目组的作用描述:主要负责实验方案的确定,电路设计仿真和实验报告的整理及完成主要负责实验前相关资料的收集和试验中主要原理的收集主要负责C语言程序编写,根据电路仿真图及实验要求,编写程序二、实验内容(实验原理介绍):1、实验原理通过12位的模数串行转换器TLC254

2、3模拟给定直流电机的速度,AT89C51单片机通过电机驱动电路控制直流电机的运转。同时可以通过4*4键盘对PID的参数进行设定,把实时的速度反馈回来经过PID进行调节,并将调节后的转速通过显示界面LCD1602液晶显示器显示出来。2、元件原理简介2.1、TLC2543 TLC2543是是一种数模转换器芯片,是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。由于是串行输入结构,能够节省51系列单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。1、TLC2543具有以下特点:(1)12位分辩率A/D转换器;(2)在工作温度范围内10s转换时间;

3、(3)11个模拟输入通道;(4)3路内置自测试方式;(5)采样率为66kbps;(6)线性误差1LSBmax;(7)有转换结束输出EOC;(8)具有单、双极性输出;(9)可编程的MSB或LSB前导;(10)可编程输出数据长度。2、TLC2543的引脚排列及说明TLC2543有两种封装形式:DB、DW或N封装以及FN封装,这两种封装的引脚排列如图1,引脚说明见表1。 图1TLC2543的封装3、接口时序 可以用四种传输方法使TLC2543得到全12位分辩率,每次转换和数据传递可以使用12或16个时钟周期。一个片选()脉冲要插到每次转换的开始处,或是在转换时序的开始处变化一次后保持为低,直到时序结

4、束。图2显示每次转换和数据传递使用16个时钟周期和在每次传递周期之间插入的时序,图3显示每次转换和数据传递使用16个时钟周期,仅在每次转换序列开始处插入一次时序。引脚号名称I/O说明19,11,12AIN0AIN10I模拟量输入端。11路输入信号由内部多路器选通。对于4.1MHz的I/OCLOCK,驱动源阻抗必须小于或等于50,而且用60pF电容来限制模拟输入电压的斜率15I片选端。在端由高变低时,内部计数器复位。由低变高时,在设定时间内禁止DATAINPUT和I/O CLOCK17DATAINPUTI串行数据输入端。由4位的串行地址输入来选择模拟量输入通道16DATA OUTOA/D转换结果

5、的三态串行输出端。为高时处于高阻抗状态,为低时处于激活状态19EOCO转换结束端。在最后的I/OCLOCK下降沿之后,EOC从高电平变为低电平并保持到转换完成和数据准备传输为止10GND地。GND是内部电路的地回路端。除另有说明外,所有电压测量都相对GND而言18I/O CLOCKI输入/输出时钟端。I/OCLOCK接收串行输入信号并完成以下四个功能:(1)在I/O CLOCK的前8个上升沿,8位输入数据存入输入数据寄存器。(2)在I/OCLOCK的第4个下降沿,被选通的模拟输入电压开始向电容器充电,直到I/OCLOCK的最后一个下降沿为止。(3)将前一次转换数据的其余11位输出到DATA O

6、UT端,在I/OCLOCK的下降沿时数据开始变化。(4)I/OCLOCK的最后一个下降沿,将转换的控制信号传送到内部状态控制位14REF+I正基准电压端。基准电压的正端(通常为Vcc)被加到REF+,最大的输入电压范围由加于本端与REF-端的电压差决定13REF-I负基准电压端。基准电压的低端(通常为地)被加到REF-20Vcc电源 表1TLC2543引脚说明2.2、L298 L298是一款单片集成的高电压、高电流、双路全桥式电机驱动,设计用于连接标准TTL逻辑电平,驱动电感负载(诸如继电器、线圈、DC和步进电机)。L298提供两个使能输入端,可以在不依赖于输入信号的情况下,使能或禁用L298

7、器件。 L298低位晶体管的发射器连接到一起,而其对应的外部端口则可用来连接一个外部感应电阻。L298还提供一个额外的电压输入,所以其逻辑电路可以工作在更低的电压下。L298具有以下特性:(1) L298工作电压高达46V (2) 总DC电流达4A (3) 低饱和电压 (4) L298具有过温保护功能 (5) 逻辑“0”输入电压高达1.5V(高抗噪性)2.3、AT89C51AT89C51是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼

8、容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。AT89C51为8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40

9、脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(3239 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。2.4、Proteus基本操作(一)启动Proteus仿真软件:双击“isis”图标,出现isis操作页面。(二)搭建单片机系统

10、仿真电路:分“器件选取”、“器件放置”和“电路连接” 三大步来操作。第一步器件选取:isis操作页面的左侧中下部分是电路和器件操作的导航区域,器件选取前“Devices”栏目下为空,器件选取操作的目的是将从器件库中分拣出需要的器件,这些器件排列在“Devices”栏目下。A:先选择“器件和仪器工具栏”的“放大器符号样”图标(该工具栏的第一个图标),再单击“P”键即弹出“Pick Devices”窗口。Pick Devices窗口左侧可以输入器件类型名称,或者选择器件类型,窗口中部即出现相应类型的器件,若鼠标选中器件,窗口右侧会出现该器件的引脚图和封装图。B:在Pick Devices窗口中,先

11、选中器件,后点击窗口右下脚的“确定”按钮,即将器件排列在“Devices”栏目下了。或者直接双击被选的器件,也能收到同样的操作结果。C:对于电源、地、输入和输出端等特殊器件,不在“Pick Devices”窗口中选取而在“Pick Terminals”窗口中选取。只要选择“器件和仪器工具栏”的“输入输出符号样”图标(该工具栏的第八个图标),即变“Devices”栏目为“Terminals” 栏目,“Terminals” 栏目下已经将电源、地、输入和输出端等特殊器件列出了一部分,如还要增加时,单击“P”键即弹出“Pick Terminals”窗口供选取。第二步器件放置:isis操作页面的中右侧是

12、搭建硬件电路系统原理图和显示系统运行状态的区域。器件放置前或选择“New Design”文件后,器件放置区域同导航区一样栏目内容为空,器件放置操作是把导航区的器件排列在放置区的适当位置,以便于搭建硬件电路系统原理图。A:器件放置的基本操作:是将导航区的器件选中(左键),然后把鼠标移到放置区中适当位置,再点击左键,即放置了器件。若多次点击左键,则会放置多个相同的器件。B:器件的移动、翻转和删除操作:在放置区中选中器件的方法是用右键点击一次,被选中的器件变成红色,然后用鼠标选中红色的器件再按住左键移动鼠标即移动了器件位置,移动后器件仍然是红色,移动完成后将鼠标移开器件至空白处再点击右键,红色器件变

13、回黑色。器件翻转的方法是右键选中器件使之变红,然后将鼠标移至导航区下方,点击红色的翻转图标,即可实现器件的翻转,完成后将鼠标移回放置区空白处再点击右键,红色器件变回黑色。器件删除的的方法是右键选中器件使之变红,再对变红的器件点击右键,即删除了相应的器件。C:器件和图形的复制操作:在放置区中,按住鼠标右键适当移动鼠标即画出一个矩形方框,方框内部的器件和图形变成红色,这时再点击菜单下的复制图标和粘贴图标,即会复制出一个相同的方框图形,移动鼠标即可将复制的图形移到适当的位置,再点击左键定位,若定位之前点击右键即删除复制的图形。D:器件属性的设置:在放置区中右键选中器件后器件变红,再点击左键即弹出“E

14、dit Component”对话框,该对话框内容即器件的属性,其中的一些内容可以选择隐藏不被显示出来。第三步电路连接:搭建硬件电路系统原理图需要把器件的引脚连接起来,其操作比较简单。A:电路连接操作方法:将鼠标移至一个引脚或一条连线上点击左键,再移动鼠标即拉出一条红色导线,导线要拐弯时,则点击左键再移动鼠标即拉出拐弯的导线,最后导线的另一端通常要接到另一个引脚或另一条连线上,再点击左键导线变回黑色完成连接。若只对导线两端要求正确连接,对导线路由不作要求,则鼠标只需对连接导线始端和末端的引脚进行点击左键,便自动完成布线。B:电路连接快速操作方法:若需要连接的两个器件的引脚都按照一个方向的顺序、等

15、距离地排列,那么只需对第一条导线进行人工布线,从第二条导线开始顺序双击连接导线始端的引脚即可完成对应的导线连接。 C:导线的删除操作:右键选中导线后导线变红,再对变红的导线点击右键即删除了导线。D:导线属性的设置:右键选中导线后导线变红,再点击左键即弹出“Edit Wire Style”对话框,即可对导线的属性进行设置。(三)创建和导入ASM源文件进入菜单栏,选择“Source”下“Add/Remove Source files”,即弹出“Add/Remove Source Code Files”对话框。再点击“New”按键,弹出“New Source Files”对话框,即可以创建(只在文件

16、名栏目输入一个文件名,后缀为ASM)或导入ASM源文件。确定后,“Add/Remove Source Code Files”对话框中“Source Code Filename”栏目即有ASM源文件名及路径,然后在“Code Generation Tool”栏目中选择“ASEM51”,最后点击“OK”按键,即完成了创建和导入ASM源文件。此后“Source”下即可以看到相应的ASM源文件。(四)编译ASM和导入HEX文件编译ASM文件的前提是已导入ASM文件,启动编译的方法有两种:方法一:进入菜单栏,选择“Source”下“Build All”,即弹出“BUILD LOG”提示框,提示编译ASM

17、文件的结果。方法二:直接点击器件放置和运行区下方的“运行”按键,若ASM文件内容有变化,即自动对其编译,若问题即弹出“SOURCE CODE BUILD ERRORS”提示框,提示编译ASM文件的结果。编译ASM文件成功后即生成HEX文件,单片机导入HEX文件的方法是,打开单片机器件属性对话框,在“Program Files”栏目里打开文件目录,选择装入HEX文件即可。单片机此后按照该HEX文件的代码运行程序。【特别注意】单片机运行速度与晶振频率有关,目前PROTEUS的版本不支持晶振器属性里所设置的频率值,单片机晶振频率必须在单片机器件本身的属性里设置,即打开单片机器件属性对话框,在其“Cl

18、ock Frequency” 栏目里输入频率值。(五)软件调试菜单进入菜单栏,选择“Debug”下“Start/Resart Debugging”,即进入调试状态,此后可以进行单步运行、全速运行、断点设置等功能。【特别提示】:调试期间,即可看到电路系统的运行结果和状态细节。可在电路中进行电压、电流和波形测试,其测试操作基本方法是选择“器件和仪器工具栏”的测试工具或测试信号图标,将测试工具和测试信号放置到电路的相应位置,并与测试点连接起来(放置和连接方法同电路器件一样),然后再调试运行即可看到测试结果。3、模块简介3.1电机驱动电路模块 图1 电机驱动电路模块 L298芯片管脚说明:SENSA:

19、电流检测端,H桥的电流反馈脚,不用时可直接接地。OUT1:输出端,与M1对应。OUT2:VS:电源,用来给点击供电。IN1:输入端。ENA:使能端,和M1,M2配合使用。IN2:输入端。GND:接地。VCC:电源,用来给芯片供电。IN3:输入端。ENB:使能端,和M3,M4配合使用。OUT3:输出端,与M3对应。OUT4:输出端,与M4对应。3.2、键盘控制PID参数的设定模块 图2 矩阵键盘电路 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图1所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以

20、构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。通过键盘可以设置一定量的PID参数,点击“P”“I”“D”,对其进行参数设置,设置完之后,点击“确定”,运行。3.3、转速设定模块 图3 转速设定模块 通过滑动变阻器改变TLC2543的给定电压,从而设置电机的转速。其中的直流电压表可以实时地在线显示当前所给定的电压。三、实验结果分析(含程序、数据记录及分析和实验总结等,可附页):实验仿真图:实验数据记录如表:实验数据记录数

21、据设定次数实验次数设定转速PIDMAXMIN152PID120.1058492120.106230323.30102110420.101061032120.10107102323.3010实验结果分析:当PID值维持在较小的数值是,转速控制得比较稳定,当增大相对应的参数值到一定的范围内时,转速就会出现较大的波动。尤其是当I至增大时,转速的变化巨大,以至于不能正确反映转速的真实值。编写程序:#include Type_Data.h#include 1602.h#include TLC2543.h#include Key.h#include PID.h#include stdio.hINT32U

22、Count_Num;INT32U Time_count;sbit we = P37;void SystemInit(void) TMOD |= 0x21; SCON |= 0x50; TH0 = (65536 - 45073) / 256; TL0 = (65536 - 45073) % 256; TR0 = 1; ET0 = 1; TH1 = 0xfd; TL1 = 0xfd; TR1 = 1; TI = 1;/利用printf 要置此为1 EX0=1; /中断0用来测量转速 IT0=1; EA=1;void main(void) SystemInit(); IncPIDInit(); In

23、it_1602(); Init_Display(); while (1) PWMOUT(); void Interrupt0() interrupt 0 Count_Num+;void Interrupt_Time0(void) interrupt 1 TH0 = (65536 - 44083) / 256; TL0 = (65536 - 44083) % 256; Time_count+; if (Time_count 20) Time_count = 0; if (!Flag_Key) EX0 = 0; Diaplay_Num_1602(Line1_Address+13,Count_Num

24、*0.6); printf(%d r/minn,(INT16U)(Count_Num*0.6); sPID.SetPoint = Set_Speed(); Diaplay_Num_1602(Line1_Address+3,sPID.SetPoint); Speed = Count_Num*0.6; PID_Adjust(); Count_Num = 0; EX0 = 1; Key_Option(); /*filename:1602.cdata:2013/3/26/*/#include 1602.h/*函数名称:Delay_1602(INT8U time)函数功能:1602延迟日期:2013/3

25、/26备注:无/*/void Delay_1602(INT8U time) while (time-);/*函数名称:Write_Order_1602(INT8U order)函数功能:1602写命令日期:2013/3/26备注:无/*/void Write_Order_1602(INT8U order) RS_1602 = L; RW_1602 = L; E_1602 = L; Data_1602 = order; /Write_Read(order); E_1602 = H; Delay_1602(10); E_1602 = L; /*函数名称:Write_Order_1602(INT8U

26、 order)函数功能:1602写数据日期:2013/3/26备注:无/*/void Write_Data_1602(INT8U dat) RS_1602 = H; RW_1602 = L; E_1602 = L; Data_1602 = dat; /Write_Read(dat); E_1602 = H; Delay_1602(10); E_1602 = L; /*函数名称:Set_xy_1602(INT8U x,INT8U y)函数功能:1602设置坐标日期:2013/3/26备注:无/*/void Set_xy_1602(INT8U x,INT8U y) INT8U address =

27、0; if (y = 1) address = 0x80 + x;/第一行 else address = 0xc0 + x;/第二行 Write_Order_1602(address);/写入地址/*函数名称:Display_String_1602(INT8U x,INT8U y,INT8U *s)函数功能:1602指定位置显示字符串日期:2013/3/26备注:无/*/void Display_String_1602(INT8U x,INT8U y,INT8U *s) Set_xy_1602(x,y); while (*s) Write_Data_1602(*s); s+; /*函数名称:W

28、rite_Order_1602(INT8U order)函数功能:1602初始化日期:2013/3/26备注:无/*/void Init_1602(void) Write_Order_1602(Set_Display_Mode); Write_Order_1602(Close_Screen); /Write_Order_1602(Open_Cursor_Flicker); Write_Order_1602(Open_Ucursor);/*函数名称:Diaplay_Num_1602(INT16U num)函数功能:1602显示数日期:2013/3/26备注:无/*/void Diaplay_Num_1602(INT8U line,INT32U num) Write_Order_1602(line); Write_Data_1602(0x30 + num/100%10); Write_Data_1602(0x30 + num/1

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1