炉温控制(Keil代码+Proteus仿真+Matlab仿真)
转眼间大三了,课程设计周:炉温控制实验。那好吧,挺简单的,不过还是要做下去。认真做的话能学到不少东西,做的深入的话要用到三款软件:KEIL PROTEUS MATLAB。
做完了仿真和源代码,测试结束。想不来了,不过估计可爱的老师会不同意,必须在这坐两个星期,没事做,来写一波博客记录下吧。
-- . -- duang~
先把炉温控制实验的要求贴出来:
课题要求 (这些都是废话,一般没看的习惯。。。) :
1. 了解温度控制系统的构成,熟悉各环节的工作原理。
2.建立炉温控制系统的数学模型。
3.控制算法要求使用PID算法,除了应用基本PID算法进行控制外,要求对该PID控制算法进行改进。分析改进前后的性能指标,并进行相应的理论分析。
4. 完成PID参数整定,调试出稳定的温度控制系统,观察并分析PID整定规律,保存最佳的整定参数与控制曲线图。
5. 设计编写采样、滤波、PID控制及优化算法等相关程序。
6. 实物的要求忘了....
随便看看,要求就行啦,一看实验名字就都懂的。
看见学校发了51单片机来做,Wow,心里那个激动啊,大一是捧在身心玩了好几个月的片子,启蒙老师~
First Blood:proteus仿真
拿到51做东西,第一件事情自然是安装proteus,坐出炉温控制的仿真,仿真做出来,调试代码的时候真的很舒服,正所谓磨刀不误砍柴工。
安装proteus:
百度云盘分享一下:http://pan.baidu.com/s/1hq7Z2S0
安装方法:
2. 打开uVision4,点击File---License Management...,打开License Management窗口,复制右上角的CID
3. 打开注册机, 在CID窗口里填上刚刚复制的CID,其它设置不变
4. 点击Generate生成许可号,复制许可号
5. 将许可号复制到License Management窗口下部的New License ID Code,点击右侧的Add LIC
6. 若上方的Product显示的是PK51 Prof. Developers Kit即注册成功,Support Period为有效期,一般可以到30年左右,若有效期较短,可多次生成许可号重新注册。
//PID Calculate by Li
tempchange();
get_temp();
f_temp_new = f_temp; // °
f_temp_err = f_temp_new - f_temp_old; // ° 升温 大于 0 降温 小于 0
f_temp_rate = f_temp_err / 0.25; // °/s
f_temp_old = f_temp_new; // °
//
/********PID Calculate Hot Time************/
void PID(){
hot_time = Canshu_P * (Set_Temp - f_temp_new * 10) + Canshu_D * f_temp_rate * 10;
}
void Timer0_ISR(void) interrupt 1 /*50ms中断服务程序*/
{
TH0 = (65536 - 50000) / 256;
TL0 = (65536 - 50000) % 256; /*重装初值*/
/******************PID闭环控制******************************/
time ++ ; //time x 50ms
if(hot_time > 0){
hot_time --;
RELAY = 0; //继电器工作
LED_YELLOW = 0; //黄亮
}
if(hot_time <= 0){
RELAY = 1; //继电器停止
LED_YELLOW = 1; //黄灭
hot_time = 0;
}
if(time == 20){ //1秒一次
time = 0;
now_time ++; //单片机内部计时
if(Flag == 2){
if(set_time > 0){
set_time --;
}
}
if(now_time == 999){
now_time = 0;
}
//PID Calculate by Li
tempchange();
get_temp();
f_temp_new = f_temp; // °
f_temp_err = f_temp_new - f_temp_old; // ° 升温 大于 0 降温 小于 0
f_temp_rate = f_temp_err / 0.25; // °/s
f_temp_old = f_temp_new; // °
//
PID();
}
/**********************************************************/
/**********************检测按键****************************/
if(SET == 0 && (Flag == 0 || Flag == 2)){
Flag = 1;
delay(180);
}
if(Flag == 1){ //温度定好 运行
if(ADD == 0){
Set_Temp += 10;
delay(180);
}
if(CUT == 0){
if(Set_Temp >= 10)
Set_Temp -= 10;
delay(180);
}
if(END == 0){
Flag = 0; //预定温度运行
delay(180);
}
}
if(ADD == 0 && (Flag == 0 || Flag == 2)){
Flag = 3;
delay(180);
}
if(Flag == 2){
if(set_time > 0){
RELAY = 0; //继电器工作
LED_YELLOW = 0; //黄亮
} else {
RELAY = 1; //继电器停止
LED_YELLOW = 1; //黄灭
}
}
if(Flag == 3){ //时间定好 运行
if(ADD == 0){
set_time += 5;
delay(180);
}
if(CUT == 0){
if(set_time >= 5)
set_time -= 5;
delay(180);
}
if(END == 0){
Flag = 2; //预定时间运行
delay(180);
}
}
/**********************************************************/
}
至于其他的控制都不是什么难事。比如LED,蜂鸣器,继电器。都是很简单的高低电平控制了。具体操作代码可以参考压缩包内的keil文件,有很详细的注释。
Matlab7.0安装教程
要配置环境变量,如下:右键我的电脑(计算机)——属性——高级系统设置——在高级选项卡中,点环境变量——在系统变量中,吧TEMP、TMP的路径改为C:\temp
在C盘下建一个临时文件夹(安装时用)
3.直接双击压缩包中的setup(注意不用解压缩)
所示在红线内属于序列号。有以下序列号可供选择:
Matlab 7 (R14) 注册码1:14-13299-56369-16360-32789-51027-35530-39910-50517-56079-43171-43696-14148-64597-46518-35191-10070-58980-25665-36629-51033-46438-01127-52395-28569-20030-38795-14563-11876-23292-58825-37547-05827-26397
Matlab 7 (R14) 注册码2:14-58204-39252-07634-11570-16849-09455-22809-05445-13616-29058-08276-06885-12215-41987-21894-60423-57622-18647-58411-24238-20443-59027-07209-27706-28292-14609-15393-48293-13036-12293-43713-57876-43362
Matlab 7 (R14) 注册码3:14-44889-04614-04275-46147-23559-43066-41714-23083-65272-04997-17469-27919-17226-59862-27901-53983-56217-20094-53460-62647-58166-24499-35558-19511-44882-53016-25658-61109-03776-34505-00776-15813-07183
接下来就可以使用matlab了。
可即使按照这样做仍然会出现一些问题,别急!是问题总会有解决的方法。
笔者结合多次安装matlab7.0现将问题解决方案总结如下:
步骤6,7,8均为注意事项,若照以上步骤安装成功可忽略6,7,8
1、运行安装exe时就弹出对话框不能安装。
解决方法:
更改:我的电脑>属性>高级>环境变量>,然后将TEMP和TMP的值都改为C:\temp
2、解压后仍有许多压缩文件,点击stup.exe时出现警告
The installer cannot read the mwinstall.dll file, This is probably due to a CD reader which canshowLinkBubble(this);returnfalse"href="http://www.mathworks.com/"target="_blank">http://www.mathworks.com/ for assistance.
解决方法:
你把安装文件夹复制到一个英文文件夹中,比如直接解压到C盘,点击setup.exe安装即可。很多国外软件放在有中文名的文件夹中运行,这是一个bug。比如win-tc对中文特别敏感。所以建议初学者将这些软件(包括MATLAB)都安装在C盘。
3、运行MATLAB时出现Runtime Error,症状如下:
runtime error
program:E:\MATLAB7\bin\win32\MATLAB.exe
this application has requested the runtime to terminate it in an unusual way. please contact the application's support team for more information
另一个对话框里边还有一串JAVA程序。
解决方法:
把电脑主题改成了WindowXP经典主题,再次运行,就OK了。
如果不想启用经典模式,也有另一种解决方法:点击桌面的matlab快捷方式,右键点击“属性”,,点兼容性,选择用兼容模式运行,例如用WIN2000运行就可以了!这下好了吧,即不换回你漂亮的主题,又可用matlab了
4、Matlab安装后可能会遇到这样的问题,打开后窗口出来了,但一会儿以后又自动关闭了! 解决方法:
①、我的电脑—>属性—>高级—>环境变量.
②、在系统变量下面添加如下内容
点击新建,输入:
变量名:BLAS_VERSION
变量值:C:\Matlab7\bin\win32\atlas_Athlon.dll
(变量值的第一个字母为你的MATLAB安装在那个盘的盘符名,如在C盘即为C:\Matlab7\bin\win32\atlas_Athlon.dll。在E盘即为:E:\Matlab7\bin\win32\atlas_Athlon.dll)
5、运行MATLAB时,窗口显示:The element type "name" must be terminated by the matching end-tag "".Could not parse the file: e:\matlab\toolbox\ccslink\ccslink\info.xml
解决方法:
①、找到安装文件目录下的info.xml文件,路径为:C:\matlab\toolbox\ccslink\ccslink(以安装在C盘为例)
②、用记事本方式打开info.xml,找到里面的一行Link for Code Composer Studio?/name>,然后把/name>改为就可以了。
6、安装MATLAB时,有一个对话框显示:To configure Real-Time Windows Target you must type 'rtwintgt -setup' in a MATLAB command window
解决方法:
在安装好的MATLAB窗口中输入:rtwintgt –setup,再回车。
炉温控制(Keil代码+Proteus仿真+Matlab仿真)相关推荐
- 基于IMAGE法的房间回响模型创建、C++代码实现、matlab仿真
基于IMAGE法的房间回响模型创建.C++代码实现.matlab仿真 1.模型简介 \qquad在处理声音信号时,我们要对信号先进行采集.那么我们就必须要有,一个发出声音的声源,一个进行声音采集的传感 ...
- (转载)基于TDOA声源定位算法仿真–MATLAB仿真
(转载)基于TDOA声源定位算法仿真–MATLAB仿真 转载自:https://blog.xxcxw.cn/archives/28 声源定位算法是利用麦克风阵列进行声音定位,属于宽带信号,传统的MUS ...
- 抗积分饱和 PID代码实现,matlab仿真实现
抗饱和PID 前几天开始我就计划把c电机仿真的PI控制器代码优化一下的时候,群里刚好讨论了Microchip的AN1078文档中的PI框图: 在这里插入图片描述 找了点视频和文章,大家感兴趣可以去看 ...
- matlab比例环节代码,典型环节MATLAB仿真.doc
实验一 典型环节的MATLAB仿真 一.实验目的 1.熟悉MATLAB桌面和命令窗口,初步了解SIMULINK功能模块的使用方法. 2.通过观察典型环节在单位阶跃信号作用下的动态特性,加深对各典型环节 ...
- 雷达系统设计matlab仿真 代码,雷达系统设计matlab仿真
雷达系统设计matlab仿真 MATLAB Code Chap1 casestudy1_1.m fig1_12.m fig1_13.m fig1_16.m fig1_19.m fig1_21.m fi ...
- 雷达干扰样式仿真matlab仿真
雷达干扰样式仿真matlab 噪声调幅干扰 噪声调频干扰 切片重构干扰 间歇采样转发干扰 梳状谱干扰 频谱弥散干扰 噪声卷积干扰 噪声乘积干扰 代码私聊 噪声调幅干扰 噪声调幅干扰(AM)的数学模型表 ...
- 激光光束传输影响matlab仿真,matlab仿真光束的传输特性详解.doc
课程设计题目: 用matlab仿真光束的传输特性. 任务和要求 用matlab仿真光束通过光学元件的变换. 设透镜材料为k9玻璃,对1064nm波长的折射率为1.5062,镜片中心厚度为3mm,凸面曲 ...
- 蒙特卡洛粒子滤波定位算法_基于粒子滤波的TBD算法仿真—MATLAB仿真
目标跟踪的最终目的是在最小的误差下确定目标的位置,而在无线传感器网络中要实现这个目的需要很多相关技术的支持,如定位技术.目标检测技术.估计技术.节能技术等.目标跟踪问题的求解有很多方法, 从算法的考虑 ...
- matlab 声源定位csdn_[转]基于TDOA声源定位算法仿真--MATLAB仿真
声源定位算法是利用麦克风阵列进行声音定位,属于宽带信号,传统的MUSIC和DOA算法并不适用该场景,本仿真主要用TDOA算法进行定位. 常用的阵列信号定位算法主要有三大类:基于高分辨率谱估计的定位技术 ...
最新文章
- 策略模式 极其简单的列子
- SSRS:服务器更名后,ReportingService无法使用和登录的解决办法
- 年少成名的我并没有放弃自己,谁敢说她\他文章比我写的好?!,不服来战!...
- JavaScript高级程序设计学习(六)之设计模式
- Linux入门笔记——文件操作命令1
- 服务器内存超限问题_内存超限该怎么办?
- 苹果屏幕旋转怎么设置_iPhone12屏幕供应商是谁 苹果12屏幕怎么查看是哪家
- python爬取网页美文网文章内容
- php获取当前进程的id
- 计算机硬盘有坏道,电脑硬盘有坏道怎么办?
- 完美解决Chrome主页老是被毒霸网址大全篡改
- MAC里“微软雅黑”字体标准体和粗体无法同时使用问题的解决方法
- 关于VCT(voxel cone trace——基于体素的锥形光线追踪)Renderer的代码解读
- 鸿蒙阴阳星辰塔,第1298章鸿蒙星辰塔的新能力
- 《操作系统》-调度算法
- 如何进行有效的大数据处理、分析?
- 如何利用PPT制作九宫格图片效果
- java 一年中的第几天_Java计算某个日期是一年中的第几天
- deadline_timer使用说明
- arcgis 栅格计算器(Spatial Analyst/Raster Calculator)