基于ARM嵌入式温度控制原型系统的设计.docx

基于ARM嵌入式温度控制原型系统的设计.docx

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于ARM嵌入式温度控制原型系统的设计

基于ARM嵌入式温度控制原型系统的设计1温度控制应用的总体介绍一般的计算机的过程控制系统的主要流程是周期性地采集A/D中的模拟量,然后比较给定量和采样值,把差值通过一些控制算法(PID控制)进行数据处理,处理结果经过D/A变换将数字信号转换成模拟信号,然后输出到执行机构,从而对被控对象进行控制。针对计算机控制系统的特点,本文设计的温度闭环控制系统如下图1-1所示:图1-1 温度闭环控制系统结构其主要流程是在手动状态下对AD通道中的模拟量周期采集,采样值经过socket上传服务器,同时服务器等待发控制字,然后系统接收到控制字,并通过DA转换进而在标准信号控制相应设备输出;在自动状态下对AD通道的模拟量周期采集,把给定值和采样值进行比较,对差值进行控制算法处理,然后得到计算结果,该结果通过DA转换成相应的模拟量,然后由标准信号输出,根据上述功能所要求来编写应用程序。本设计中没有服务器端程序的设计,客户端的应用程序主要有main(主程序)、AD数据采集程序、DA数据接收程序、数据读取程序,温度控制报警和灯亮程序等几个部分。、2 主要的应用程序实现主程序函数主要是起到一个创建子程序并监视子程序运行情况的作用,如果子进程不能运行,则该进程重新创建需要重新创建;如果要安装信号,主进程在退出时应该向子进程传递发出一个终止信号,以处理一些收尾的工作。主程序关键函数:void main(){ tmp_data = ds18b20_fun();if(tmp_data50) { open_buzzer(); ::system(kill -s STOP `pidof led-player`);printf( \nBUZZER PWM Control\n );printf( Press ESC key to Exit this program\n\n );printf(nbsp;nbsp;%2d.%d ℃\n, tmp_data/10, tmp_data%10); }elseprintf(nbsp;nbsp;85.0 ℃\n);}主程序的流程图1-2所示:图1-2 主程序流程图2.1 DS18B20驱动程序设计本文设计选用的是主芯片为Samsung公司的S3C2440的mini2440开发板为硬件平台,软件平台是Linux的最新内核Linux2.6.29。通过mini2440的扩展接口引出GPIO口(GPBl)为数据线DQ。由于DS18B20为单总线器件,所以它对操作的时序比较严格。正确地编写复位程序、位写程序和位读程序,对于DS18B20驱动最终能否正常运行并且得到实时的温度值,起到很关键的作用。2.2DS18B20读写函数unsigned short ds18b20_fun(void){intfd;int ret;float temp;unsigned short data;fd = open(/dev/TX2440-ds18b20, 0);if (fd 0){perror(open device ds18b20);exit(1);}ret = read(fd,data,4);if(ret0)printf(read ds18b20 error\n);return data;close(fd); } if(strncmp(buf,$FLAG1$,7)==0){tmp_data = ds18b20_fun();tmp_temp = tmp_data * 0.0625;tmp_data = tmp_temp * 10 + 0.5;if (tmp_data 1000)printf(nbsp;nbsp;%2d.%d ℃\n, tmp_data/10, tmp_data%10);elseprintf(nbsp;nbsp;85.0 ℃\n);} 2.3复位程序一般我们在对DS18B20进行读写之前时,首先应该对其复位程序的初始化,从而检测DS18B20是否存在。复位时,我们一般要求通过MCU把数据线下拉480~960 μs,然后再释放数据线,大约等待60 μs左右。如果MCU接收到DS18B20发出的数据显示是低电平,那么表示复位成功。复位函数程序如下#define DQ S3C2440_GPB1 #define DQ_INPUT S3C2440_GPB1_INP#define DQ_OUTPUT S3C2440_GPB1_OUTPUTvoid reset() { do{ S3C2440_gpio_cfgpin(DQ,DQ_OUTPUT); S3C2440_gpio_setpin(DQ,1);udelay(1); S3C2440_gpio_setpin(DQ,0) ;ud

文档评论(0)

xjj2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档