2/2页12 跳转到查看:2831
发新话题 回复该主题

寻找单片机温度控制系统的设计的教程。

回复 15# sunshine 的帖子

路过差点被淹没这也太多了。

TOP

 

回复 1# harbiner 的帖子

同意这个好象真是一时学不会的。

TOP

 

楼主

灌水,zorro

TOP

 

回复 1# harbiner 的帖子

对无硬件仿真器的用户,总是选用带EPROM的芯片来调试程序。每更改一次程序,都是将原来的内容先擦除,再编程,其过程浪费了相当多的时间,又缩短了芯片的使用寿命。如果后一次编程的结果较前一次,仅是对应的机器码字节的相同位由“1”变成“0”,就可在前一次编程芯片上再次写入数据,而不必擦除原片内容。
        在程序的调试过程中,经常遇到常数的调整,如常数的改变能保证对应位由“1”变“0”,都可在原片内容的基础继续编程。另外,由于指令“NOP”对应的机器码为“00”,调试过程中指令的删除,先用“NOP”指令替代,编译后也可在原片内容上继续编程。
另外,在对带EPROM的芯片编程时,特别注意程序保密状态位。厂家对新一代带EPROM芯片的保密状态位已由原来的EPROM可擦型改为了熔丝型,一旦程序代码保密熔丝编程为“0”,可重复编程的 EPROM 芯片就无法再次编程了。使用时应注意这点,以免造成不必要的浪费(Microchip 资料并未对此做出说明)。

TOP

 

回复 1# harbiner 的帖子

、 传感器选择
常用的温度检测元件主要有热电偶、热电阻、热敏电阻等。热电偶主要是利用两种不同金属的热电效应,产生接触电势随温度变化而变化,从而达到测温的目的。测量准确,价格适中测温范围宽,线性度较好。但其输出电压受冷端温度影响,需要进行冷端温度补偿,使电路变得复杂,在本题中并非最佳方案。
热敏电阻由金属氧化物或半导体材料制成,灵敏度高、热惰性小、寿命长、价格便宜。但其测量的稳定性和复现性差,测量精度无法满足本题发挥部分0.2℃的要求。而且线性度差,需要进行查表线性拟合,大大浪费控制器的资源,因此不能选用。
热电阻是利用金属的电阻率随温度变化而变化的特性,将温度量转化成电阻量。其优点是准确度高,稳定性高,性能可靠,热惯性小、复现性好,价格适中。但电阻值与温度是非线性关系,Pt100热电阻,当0℃<t<850℃时可用下式表示:

其中A=3.9083╳10-3 /℃;B=-5.775╳10-7 /℃;由此可见,温度越高非线性误差越大,本题目要求温控范围是40℃~90℃,温度较低。经计算当温度为90℃时,非线性误差为0.34%,运用最小二乘法适当的进行零点和增益的调整,还可使此误差降低一倍,而本题要求精度为,0.2/90=0.22%,因此在本题中可以选用Pt100热电阻,并可近似将其电阻值与温度看作线性关系。
2、 放大电路
热电阻所测得的是电阻量,需要转化为电压量才能被控制器采集。最基本的电阻-电压转换电路是将其与另一固定电阻串联,但这种方法,当温度为量程下限时输出不为零,这样不利于小信号的放大和提高A/D转换的精度。因此,本作品采用桥路测量,电路如图2所示:

其中R1R2为10kΩ固定电阻,Rt为热电阻,Rw2为调零电阻,由于 ,因此上下两支路电流相等,并保持恒定不变,输出电压 ,可调整Rt0=Rw2,使得
由于在桥路中R1很大,使得输出量uo变化很小,当Rt从0到100℃变化时,输出仅有十几毫伏,因此还需要进行小信号放大。本作品所用低频增益可调放大电路如图3:

其中Rw1为增益电阻,用于调整测量满量程,运放采用低噪声NE5532,令R1=R2,R3=R4,R5=R6,则该放大电路总增益为 ,当Rw1从0到50kΩ变化时,Av的变化范围为150至+∞,满足所需增益要求。
3、 A/D转换
题目所要求测量度精度为0.2℃,测温的范围应该为室温到要求的最高温度,即20~90℃,这就决定了A/D转换的最低分辨率不低于0.2/(90-20)=1/350,而普通八位A/D转换芯片只能达到1/256,不能满足要求。而如果选用更高位的芯片,将大大增加成本。温度是一种变化时间常数较大的物理量,对A/D转换速度要求不高,因此,在设计中选用了压控振荡器,先将电压信号转化为频率量,再通过控制器的计数功能转化为数字信号,这样可以大大提高精度,节约成本。
压控振荡器如图4所示:

电容器C1充电周期为 ,放电周期为 ,由于 所以 ,所以其振荡频率可近似看作与输入电压Ui成正比。但当频率较高时,仍有较大(约为5%)非线性误差,不能满足题目要求。因此,在作品中利用FPGA的优点,该测频率为测正脉冲宽度,再通过单片机求倒数,这样即可完全消除非线性误差。

4、 控制器
对水温的反馈偏差控制,就必然用到经典控制理论中的PID(Proportional Integral and Derivative比例积分微分)控制,控制器可有多种选择,如模拟电路、单片机、逻辑器件等。
模拟电路控制可对偏差变化进行连续的控制,技术成熟,性能较稳定。但其缺点是不便于显示,调整PID参数需更换元器件,易受到外界干扰等,在现在这个数字化高度发展的时代已趋于淘汰。
单片机作为微型计算机的一个分支,已有二十多年的发展,在各控制领域都有广泛的应用。而近年以FPGA(现场可编程门阵列)为代表的可编程逻辑器件异军突起,其优异的性能大大弥补了单片机响应速度慢、中断源少的缺点。但FPGA的运算能力有限,因此,在我们的设计中采用FPGA与单片机相结合的控制方式,二者优势互补,性能大大提高。
在本作品中,FPGA主要负责接收压控振荡器的信号,通过测量其正脉宽而获得电压量;单片机接收FPGA发送的数据,进行显示、PID运算,和输出。
5、 输出驱动电路
控制器将其PID运算的结果转化为不同占空比的脉冲信号输出,该信号作用于执行机构还需要经过驱动电路。
本作品中采用交流调功电路,即将负载与交流电源接通几个周波,再断开几个周波,通过改变开通与断开周波的比值来调节负载所消耗的平均功率。具体实现电路如图5。

将220V/50Hz的市电,经电阻分压到5V以下,输入运放的同相输入端,运放作为过零比较器,当市电过零时,产生跳变,运放输出送到D触发器的时钟端,D触发器的输入接单片机输出的脉冲信号,输出接双向晶闸管的门极。这样,只有当交流电过零时,单片机的输出信号才对晶闸管产生作用,也就是说,只有当交流电过零时,晶闸管才能开通或关断。这样可以大大减小开通关断过程中对晶闸管的冲击,减少开通关断损耗。
二、 控制器软件设计
1、 FPGA程序设计
在本作品中,FPGA的主要功能是测量压控振荡器输出高脉宽的时间。由于压控振荡器的频率较低(<10kHz),因此在测量中采用的方法是,提取一个高脉宽,在这个高脉宽内对标准频率(50MHz)计数,计数的值即与脉宽成正比。
2、 单片机程序设计
单片机在本作品中起主要的作用,其功能主要是接收FPGA的数据、运算、显示和输出控制脉冲。以上几部分在一个周期内顺序执行,如图6所示,一个周期的时间约为0.1秒,即为一个采样周期。对于水温这一时间常数较大的系统,0.1秒的采样周期足够。
由于精度的要求,FPGA发送的数据位数较高,需要多次传送,每次传8位,共传8次,放入缓冲区中。然后根据脉宽——电压——温度三者的对应关系,计算出当前温度。尽管测量的非线性误差很小,但仍会对精度产生一定影响,因此在实验中,取若干脉宽与温度对应实验数据,利用最小二乘法进行一元线性回归,如图7所示,将原来a直线,变为b直线,这样可以在很大程度上减小非线性误差

TOP

 

回复 1# harbiner 的帖子

看了一下这个单片机好象有分很多种不知道我提供的这种是不是楼主要的。

TOP

 

回复 1# harbiner 的帖子

就看你是怎么控制的温度了,比喻说,热水器用继电器或是可控硅控制发热的部件,不就行了吗,当然还有其它的(空调的压缩机).

TOP

 

回复 1# harbiner 的帖子

路过看看。

TOP

 

回复 10# anne 的帖子

十楼的我也是想说这个你说的书那里有买的呀。网上那些视频教程安全吗。或者说网上有没有这个教程的系统学习。想知道给我留言回复吧谢谢。

TOP

 

回复 24# hebeidianli 的帖子

二十四楼的这个在网站上一查就有了没有事的你先瑞星杀一下再下载,这个教程很多的你可以打电话问一下是怎么一回事。没事灌灌我的贴就算谢了。

TOP

 
2/2页12 跳转到
发表新主题 回复该主题