电路设计课程论文基于MSP430单片机的温控仪的设计和实现.docx
- 文档编号:30249030
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:13
- 大小:286.69KB
电路设计课程论文基于MSP430单片机的温控仪的设计和实现.docx
《电路设计课程论文基于MSP430单片机的温控仪的设计和实现.docx》由会员分享,可在线阅读,更多相关《电路设计课程论文基于MSP430单片机的温控仪的设计和实现.docx(13页珍藏版)》请在冰豆网上搜索。
电路设计课程论文基于MSP430单片机的温控仪的设计和实现
电子产品创新制作
设计报告
—基于MSP430单片机的温控仪的设计和实现
学院:
班级:
姓名:
学号:
任课教师:
1、设计要求:
1、功能要求
1.1.、采用现场提供的温度传感器,实现对工件的实时温度测量和显示;
1.2、采用数码管显示实际测量温度值;
1.3、控制仪可实现对工件温度控制,并同步显示温度的变化;
1.4、温度控制设定功能:
通过按键调节预设温度值T1,启动控制功能,当工件实际温度小于T1时,启动功率电阻加热;当工件实际温度大于T1时,启动风扇散热,将工件的温度快速地控制在所设置的温度T1附近。
1.5、作品实际测试时,要求从室温开始,能够尽量快速、稳定地将工件的温度控制在T1±2℃的范围内,当达到T1时产生一个持续时间1秒的报警声音,尽可能降低温度波动。
2、指标要求
2.1、温度传感器:
Pt100(B级);
2.2、电源:
直流稳压电源供电;
2.3、温度显示范围:
0.0~100.0℃;
2.4、温度显示分辨率:
0.1℃;
2.5、报警声音频率为1000Hz。
二、方案设计:
1、设计思路
1.1.、基于MSP430F5438A单片机和温度传感控制器的设计,包括温度传感器芯片的选取、430单片机与温度传感器的接口设计以及实现温度采集与数据传输的软件设计。
数字温度传感器是单总线器件,与430单片机组成一个测温系统,线路简单、体积小,可以应用在很多温度检测和温度控制领域。
1.2、将单片机应用于温度测量与控制系统中,使测量和控制智能化系统的核心部件是MSP430F5438A单片机。
系统采用一致性好,精度高的单总线数字式温度传感器DS18B20作为测温元件,更换测头不需要调整硬件或软件,性能可靠稳定。
用固态继电器控制加热电压的通与断,使控制具有灵敏、可靠、抗干扰能力强等优点。
本系统测温、控温精度高,达到0.1℃。
可以通过计算机与单片机的串行通讯,实现交互式控制。
2、系统框图
图.1
三、设计过程
1、控制电路
主控部分采用已安装了Xilinx公司Spartan6系列FPGA芯片的Nexy3成品板,电路原理图如图.2。
图.2
根据设计所需的单片机的内部资源(程序存储器的容量、数据存储器的容量及I/O口数量),选择MSP430F5438A较合适。
2、后面板温度检测电路
图.3
温度测量采用最新的单线数字温度传感器DS18B20,DS18B20是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器。
与传统的热敏电阻相比,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
可以分别在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。
因而,使用DS18B20可使系统结构更趋简单,可靠性更高。
3、前面板按键及显示电路
图.4
3.1、显示电路
显示电路由两个四位E10501_AR数码管组成,由8个9015三极管驱动,实现静态显示,9015所需的串行数据和时钟由单片机的P7提供。
可以采用串行口工作于方式0,即同步移位寄存器的输出方式,通过串行口输出显示数据(实时温度值或设置温度值);也可以采用模拟串行口的输出方式,实现显示数据的串行输出。
3.2、按键电路
键盘共有四个按键,温控系统的温度显示和温度的设定直接采用综合实训板上的显示和键盘。
当环境温度低于设定的最低限温度值时,也采用综合实训板上的蜂鸣器进行报警。
用0#、1#键作为温度最高限、最低限的设定功能键;2#、3#键作为温度值设定的增加和减小功能键。
0#键:
作为最高限温度的设定功能键。
按一次进入最高限温度设定状态,选择最高限温度值后,再按一次确认设定完成。
1#键:
作为最低限温度的设定功能键。
按一次进入最低限温度设定状态,选择最低限温度值后,再按一次确认设定完成。
2#键:
+1功能键,每按一次将温度值加1,范围为1~99℃。
3#键:
-1功能键,每按一次将温度值减1,范围为99~1℃。
4、元件清单
图.5
5、软件设计
5.1、温控系统采用模块化程序结构,可以分成以下程序模块:
①系统初始化程序:
首先完成变量的设定、中断入口的设定、堆栈、输入输出口及外部部件的初始化工作。
②主程序MAIN:
完成键盘扫描、温度值采集及转换、温度值的显示。
当温度值高于设定最高限时,驱动风扇工作;当温度值低于设定最低限时,驱动蜂鸣器报警。
③键盘扫描程序KEYSCAN:
完成键盘的扫描并根据确定的键值执行相应的功能,主要完成最高温度、最低温度的设定。
④温度采集程序GET_TEMPER:
完成DS18B20的初始化并发出温度转换命令,经过指定时间后读取转换的温度值。
图.6
5.2、部分参考程序
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineADC_buffer_num16//最大不能超过16,否则变量sum溢出
#defineRef_Volt3375//参考电压
ucharseg[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,
0x8e,0xff,0x89,0xc7,0x87};
//0xff--blank--编号0x10
//0x89--H--编号0x11
//0xc7--L--编号0x12
//0x87--t--编号0x13
uchardig[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchardigit;//数码管位选信号
uchardisplaydate[8];//8位显示数据数组
uchardown_date[4]={1,1,1,1},up_date[4];//数码管下排数据和上排数据
//uchara=0,b=0;
ucharMST_Data=0,SLV_Data;//SPI主从数据
ucharfun_flag=2;//功能标志
uchardig_flag=3;//设置HT和LT时的位码标志
ucharHTset[4],LTset[4];//高温设置值,低温设置值
ucharflash_flag=0;//闪烁标志,当flash=0熄灭,=1时点亮
//volatileuintresults[9];
uintADC_result_sum;//算数平均时放和
ucharADC_count=0;//ADC_buffer的编号
uintADC_buffer[ADC_buffer_num];//该数组存放ADC转换后的值
voidGPIO_init(void)
{
/**********************IO口初始化*********************/
//IO口设置
P1DIR|=0xff;//段选择均为输出
P7DIR|=0xff;//位选择均为输出
P5DIR|=0x0f;//低4位输出控制LED灯,高4位输入按键
P2REN|=0x0f;//内部电阻
P2OUT|=0x0f;//预设输出值
P2DIR|=0x0f;//将需要用到中断的口设置为输出,非常重要
P2SEL&=0x00;//将IO口设为基本IO口功能
P2IE|=0x0f;//中断使能
P2IES|=0x0f;//下降沿触发中断
P2IFG&=0x00;//中断标志清零
P8DIR=0x70;//P8.6输出PWM波驱动蜂鸣器P8.5和P8.4驱动继电器
P8OUT=0x70;//正常输出高电平
P8SEL=0x40;//选择功能为TA1.1,由TA输出PWM
P3SEL|=0x31;//SPI通信,P3.5,4,0optionselect
P6SEL|=0x01;//P6.0ADCoptionselect
}
voidbuzzer(void)
{
/*if(ADC2Volt(average1())<1000)
TA1CCTL1=OUTMOD_7;//输出PWM波驱动蜂鸣器
P8OUT&=~BIT5;
elseif(ADC2Volt(average1())>2000)
TA1CCTL1=OUTMOD_7;//输出PWM波驱动蜂鸣器
P8OUT&=~BIT4;
else
TA1CCTL1=OUTMOD_0;//输出高电平不让蜂鸣器响
P8OUT|=BIT5+BIT4;*/
if((ADC2Volt(average1())>1000)&&(ADC2Volt(average1())<2000))
{TA1CCTL1=OUTMOD_0;//输出高电平不让蜂鸣器响
P8OUT|=BIT5+BIT4;}
if(ADC2Volt(average1())<=1000)
{TA1CCTL1=OUTMOD_7;//输出PWM波驱动蜂鸣器
P8OUT&=~BIT5;}
if(ADC2Volt(average1())>=2000)
{TA1CCTL1=OUTMOD_7;//输出PWM波驱动蜂鸣器
P8OUT&=~BIT4;}
}
main()
{
sys_init();
GPIO_init();
while
(1)
{buzzer();
display_downdate(ADC2Volt(average1()));
menu();
}
}
4、测试数据及数据分析
1、硬件系统的调试
(1)看温度检测电路部分,图中标有Vi1、Vi2、Vo,由运放构成的差分比例运算电路可得:
搭接电路前,要准确调整RP3,保证
;要准确调整RP4,保证
;保证了上述两项,即保证了
。
电路搭接完毕后,上电微调RP3,保证在
时,
;再微调RP4,保证在
时,
。
为了避免调整的麻烦,也可将RP3和RP4用1K的固定电阻代替。
(2)调整RP1,保证ADC0804的9脚基准电压为2.56V。
(3)将AD590放入冰水混合物中,注意不要让裸露的引脚部分沾水,调整RP2,保证
V。
2.软件系统的调试
先各个模块独立调试,最后各个模块连在一起调试。
3.整机调试
当按下S0键≥3S,设置灯D4点亮,进入设置状态,数码管显示当前设置温度。
在设置状态下,每按一下S2,温度设置值加1,最高设置到51。
在设置状态下,每按一下S3,温度设置值减1,最低设置到0。
在设置状态下,按一下S1,将温度设置值存储于AT24C01中,设置灯熄灭,退出设置状态。
如果在设置状态下,S1、S2、S3在10秒内无任何操作,系统将自动退出设置状态,设置温度不进行保存。
不在设置状态,按下S1、S2、S3键无任何反应。
3.1、实物图
五、结论与体会
由于采用高效的430单片机作为核心,使得此温度控制器具有精度高,成本低,体积小,接口简单等优点,还具有良好抗干扰能力,再加上优化程序,使得本系统具有很高的实用性。
在设计过程中由于时间和个人能力的限制,设计中存在一些需要改进和优化的地方。
测量精度有待进一步提高,软件设计也存在不合理之处。
虽然达到了预期的目的,完了最初的设想。
但是在焊板时由于之前考虑的不够周全,时钟芯片忘记加到上拉电阻,通过这一次的经验我意识到了对电路的设计、布局要先有一个好的构思,而且要认真仔细的检查各个功能模块的具体情况,确保不遗留什么元件,才做出美观、大方的电路板。
程序编写中,根据李立早老师的源程序,先研究各个功能模块的程序,包括时钟模块的程序,温度模块的程序,不懂的就通过查资料或者请教老师和同学来解决,然后再整理好这些程序,最终完成了能实现整个设计要求的程序。
在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,也练就了我们的耐心和细心,做什么事都要认真仔细,因为细节决定成败。
总之,这次设计使我的能力得到了全方位的提高,受益颇丰。
6、致谢
这次电子产品创新制作课程的设计是在老师的悉心指导下完成的。
你严肃的教学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我们。
从最初的授课到设计的最终完成,你都始终给予我们细心的指导和不懈的支持。
在此谨向你致以诚挚的谢意和崇高的敬意。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电路设计 课程 论文 基于 MSP430 单片机 温控 设计 实现