基于STM的温度控制系统毕业论文改_第1页
基于STM的温度控制系统毕业论文改_第2页
基于STM的温度控制系统毕业论文改_第3页
基于STM的温度控制系统毕业论文改_第4页
基于STM的温度控制系统毕业论文改_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

南阳理工学院本科生毕业设计(论文)学院电子与电气工程学院专业自动化学生往事不堪回首指导教师完成日期2014年5月南阳理工学院本科生毕业设计(论文)STM32温度控制系统设计DESIGNOFTEMPERATURECONTROLSYSTEMBYSTM32总计36页表格4个插图22幅南阳理工学院本科毕业设计(论文)STM32温度控制系统设计DESIGNOFTEMPERATURECONTROLSYSTEMBYSTM32学院电子与电气工程学院专业自动化学生姓名往事不堪回首学号指导教师(职称)评阅教师完成日期南阳理工学院NANYANGINSTITUTEOFTECHNOLOGYSTM32温度控制系统设计ISTM32温度控制系统设计自动化专业摘要本课题使用STM32单片机控制器和组态王软件,在自制模拟锅炉的硬件设备上进行温度控制系统的设计。论文详细介绍了系统软硬件的设计思路,并给出了通过组态王软件设计上位机监控画面的方法步骤。本次设计主要完成了系统的硬件接线与软件设计,重点是硬件系统实现和软件PID控制算法设计。经过调试运行结果分析,设计的温度控制系统能够实现0100的温度测量显示以及控制调节,满足了设计的要求。论文最后分析了设计中出现的问题以及解决方法。关键词STM32单片机;PID控制算法;组态监控;温度控制DESIGNOFTEMPERATURECONTROLSYSTEMBYSTM32AUTOMATIONSPECIALTYABSTRACTTHISTOPICUSETHESTM32MCUCONTROLLERANDCONFIGURATIONSOFTWARE,TEMPERATURECONTROLSYSTEMISDESIGNEDONHOMEMADEBOILERSIMULATIONHARDWAREDEVICETHEPAPERDESCRIBESTHESYSTEMHARDWAREANDSOFTWAREDESIGNIDEAS,ANDGIVESTHROUGHTHECONFIGURATIONSCREENPCMONITORSOFTWAREDESIGNMETHODSTEPSWITHTHEKINGVIEWTHEDESIGNHASCOMPLETEDWIRINGHARDWAREANDSOFTWARESYSTEMDEBUGGING,FOCUSEDONHARDWARECIRCUITDESIGNANDSOFTWAREPIDCONTROLALGORITHMDESIGNAFTERCOMMISSIONINGTHERESULTSOFANALYSIS,TEMPERATURECONTROLSYSTEMCANACHIEVE0100TEMPERATUREDISPLAYANDADJUSTTOMEETTHEDESIGNREQUIREMENTSFINALLY,THEANALYSISOFTHEDESIGNPROBLEMSANDSOLUTIONSARESLOVEDKEYWORDSSTM32MCUPIDCONTROLALGORITHMONFIGURATIONSOFTWARETEMPERATURECONTROLSTM32温度控制系统设计II目录1引言111系统设计的背景及意义112系统设计的目的213论文的组织结构22控制系统硬件设计221控制系统硬件总体设计222STM32单片机介绍323硬件接线及其原理介绍63控制系统软件设计831软件开发环境及其工具8311C语言编程9312软件开发工具介绍9313STM32工程创建与配置1032软件系统总体设计11321软件程序结构11322主程序设计11323初始化程序设计11324温度采集程序设计13325位置式PID控制算法程序设计14326PID控制算法的参数整定与采样周期的选取16327PWM输出程序设计1833上位机监控界面的设计18331上位机监控软件的选取18332组态王监控界面设计19333报警和事件窗口设计214系统的运行结果及问题分析2241运行结果及分析2242出现的问题及解决方法22结束语23参考文献24附录25致谢37STM32温度控制系统设计11引言11系统设计的背景及意义国外温度控制系统发展迅速,并且在智能化、自适应、参数自整定等方面都取得了显著成果,以日本、美国、德国等国技术领先。近年来,在我国以信息化带动的工业化正在蓬勃的发展,温度已成为工业控制对象中一个重要参数,特别是在冶金、化工和机械等各类工业生产中,广泛使用的各种加热炉、热处理炉、反应炉等。除了这些部门之外,温度控制系统还广泛应用于其它领域,是用途很广的一类工业控制系统。传统的生产方案已经不满足高精度、高速度的技术要求。近年来随着科学技术的进步而快速发展出现了许多先进的温度控制方式,如计算机控制、PID控制、模糊控制、神经网络及遗传算法控制等等,这些方法大大的提高了生产控制的精度,提高了生产效率。温度是生产过程和科学实验中非常普遍而又十分重要的物理参数。在工业生产过程中,为了高效地进行生产,必须对生产工艺过程中的主要参数,如温度、压力、流量、速度等进行有效的控制,其中温度控制在工业生产过程中占有相当大的比例。温度参数的测控技术与产品质量、生产效率、生产安全、节约能源等重大经济技术指标密切相连。准确地测量和有效地控制温度是保证优质、高产、低耗和安全生产的重要条件,如冶金工业的加热炉、电力工业的锅炉、化学工业的反应炉等设备。日常生活中的微波炉、电烤箱、电热水器、空调等家用电器也同样需要温度监控,可见温度监控广泛应用于社会生活的各个领域,所以对温度进行控制是非常有必要和有意义的1。在工业生产和家居生活过程中常需对温度进行检测和监控。由于许多实践现场对温度的影响是多方面的,使得温度的控制比较复杂,传统的加热器电气控制系统普遍采用继电器控制技术,由于采用固定接线的硬件实现逻辑控制,以至于控制系统的体积增大,耗电多,效率不高且易出故障,不能保证正常的工业生产。随着微型控制器技术的发展,传统继电器控制技术必然被微型控制器技术所取代。而微型控制器本身优异的性能使温度控制系统变的经济、高效、稳定且维护方便,这种温度控制系统对改造传统的继电器控制系统有重要的意义。温度控制系统常用来保持温度恒定或者使温度按照某种规定的程序变化。由于温度自身的一些特点,如惯性大、滞后现象严重、难以建立精确的数学模型等,传统的控制方式由于其控制精度不高、不能及时地跟踪对象特性变化等原因造成控制系统性能不佳。本设计基于这一特点,选用具有高性能而又经济的STM32单片机作为控制器,所用算法为位置型PID控制算法,完成了对系统软件和硬件的设计,并将控制方案成功运用于对实验室电加热水器中水的温度进行控制。由此可见,本课题的设计方案具有可行性和一定的推广性,若能够应用于实际生产生活中,将会对提高企业自动化水平、降低生产STM32温度控制系统设计2成本、减轻工人劳动强度、提高生活质量等方面起到积极的促进作用2。12系统设计的目的本设计选用STM32单片机作控制器,设计温度单反馈的控制系统,对电加热水器内水的温度进行控制。通过PT100温度传感器实现对水温信号的采集,并利用模拟量前向通道来对水温信号进行处理。利用STM32单片机进行控制输出PWM信号,用此信号控制接触器进而控制电加热水器的电源通断,最终实现对水温的控制。同时用组态软件设计监控界面来实现对水温的控制显示。通过对此课题的设计,能够使自动化的学生对工业过程控制对象具有更进一步的了解,同时熟练掌握自动化控制系统的设计流程,为以后的工作学习打下坚实基础3。13论文的组织结构本设计以自制模拟锅炉为平台,设计了STM32温度控制系统。本文共分四章,内容的组织如下第1章引言。主要介绍了课题研究的背景和意义、温度对象的特点以及本设计的目的和论文的组织结构。第2章系统的硬件设计。介绍了控制系统硬件设计思路、STM32单片机、硬件连接以及信号处理电路的设计。第3章系统的软件设计。设计控制系统的软件,主要设计了水温数据采集处理程序、信号控制变换程序、控制算法程序等,然后进行上位机监控画面的设计。第4章系统的运行结果及问题分析。通过前几章设计出了计算机温度监控系统,本章主要是通过试验验证温度控制系统调节参数是否达到要求,并对结果进行了分析,总结了设计过程中出现问题及其解决方法。2控制系统硬件设计21控制系统硬件总体设计温度是一个很重要的变量,需要对其进行准确地控制。温度控制系统常用来保持温度恒定或者使温度按照某种规定的规律变化。闭环控制是温度控制系统中最为常见类型,本设计即为闭环温度控制系统,闭环温度控制方框图如图1所示。调节器执行机构被控对象测量装置设定温度当前温度图1闭环温度控制系统方框图温度控制系统由被控对象、测量装置、调节器和执行机构组成。测量装置对被控电加热水器中水温进行测量,控制器将测量值与给定值进行比较,若存在偏差便由控制器STM32温度控制系统设计3对偏差信号进行处理,输出控制信号给执行机构来启动或停止电加热水器工作,最终将温度调节到设定值。被控对象是电加热水器内水的温度。基于上述理论设计出本控制系统,本系统硬件主要有STM32单片机、PT100温度传感器、开关电源、模拟量前向通道、继电器输出模块、HH52P型固态继电器、CJ2010型接触器、电加热水器,控制系统硬件结构图如图2所示。模拟量前向通道PT100温度传感器电加热水器HH52P型固态继电器状态指示输入按键LCD显示通信接口STM32单片机人机接口主控模块温度测量模块执行模块受控对象继电器输出模块CJ2010型接触器图2控制系统硬件结构图22STM32单片机介绍STM32单片机是整个温度控制系统的核心部分。因为对温度控制器具有较高的要求,例如高执行速度,高控制精度,高稳定性以及高灵敏度等,所以选择一个具有较高性能而又经济的单片机就成为必然。本设计选用属于STM32系列的STM32F103VET6单片机作为控制电路的核心部件,该单片机属于ST意法半导体公司生产的32位高性能、低成本、低功耗的增强型系列单片机,它的内核采用的是ARM公司最新研发的CORTEXM3架构,该内核是专门设计于满足用户对高性能、低功耗和经济实用的要求。ARMCORTEXM3处理器的架构在系统结构上的增强,使得STM32增强型系列单片机受益无穷,其采用的THUMB2指令集使得其指令效率更高和而且性能更强4。STM32F103VET6采用薄型四方扁平式封装技术(LQFP)具有100管脚,片内具有512KB的FLASH,64KB的RAM(片上集成12BITA/D、D/A、PWM、CAN、USB、安全数字输入输出卡SDIO、可变静态存储控制器FSMC等资源)。1个串行外设接口(SPI)总线控制的M25P16(16MB容量的串行FLASH),用于存储数据、代码、字库及图相等等。1个28寸26万色显示屏(TFT240X320(带触摸屏)接口,利用MCU的FSMC的16位数据接口模式,触摸屏采用ADS7843(4线电阻触摸屏转换接口芯片)芯片用硬SPI接口控制。STM32单片机采用2036V的供电电压,可以工作在4085的温度范围内,其最高的工作频率是72MHZ,其引脚分布如图3所示。STM32温度控制系统设计4图3STM32F103VT6引脚STM32F103VET6单片机有3个不同的时钟源可供选择用以驱动系统时钟,分别为HIS振荡器时钟、HSE振荡器时钟和PLL时钟。这些设备还具有2个二级时钟源,分别是40KHZ的低速内部RC和32768KHZ的低速外部时钟源,可以用来驱动看门狗时钟和RTC。任何一个时钟源在不被使用时,都可以被独立的关闭或者开启,以实现对系统功耗的优化。单片机由AMS111733芯片电路供电,输入5V,提供33V的固定电压输出,为了降低电磁干扰,需要经C7C10滤波后再为CPU供电,R8为DGND与AGND的连接电阻,R9和D5LED和电源指示连接电阻,电源电路如图4所示。图4电源电路RTC的备份电源采用VBAT33V锂离子片状电池,RTC的备份电源如图5所示。单片机的外部晶体/陶瓷谐振器HSE(P12、P13),Y1是8MHZ晶体谐振器,C22、C23是谐振电容,大小选择22P。系统的时钟经过PLL模块将时钟提高到72MHZ。单片机的低速外部时钟源LSE(P8、P9),Y2为32768KHZ的晶体谐振器,C20、C21谐STM32温度控制系统设计5振电容选择22PF。要注意的是根据ST公司的推荐,Y2要采用电容负载为6PF的晶振,否则有可能会出现停振的现象,时钟电路如图6所示5。图5RTC的备份电源图6时钟电路目前,STM32单片机已经在很多场合得到应用,研制出了很多性能优良的产品,例如可编程逻辑控制器,打印机,扫描仪,电机控制以及一些数码产品,STM32已成为非常成熟的可应用控制器件,本次设计选用的开发板如图7所示。图7STM32开发板STM32温度控制系统设计623硬件接线及其原理介绍温度控制系统在正常工作的时候,首先由PT100温度传感器检测被控对象电加热水器内水的当前温度信号,将PT100温度传感器的电阻值变化在模拟量前向通道中作变换放大、冷端温度补偿、线性化。然后将模拟量前向通道输出的模拟电压信号送给主控模块的STM32单片机进行处理,经数字化处理后与给定的温度值的数字量进行比较。单片机根据预定的PID控制算法对数据进行处理,并通过显示屏显示当前温度和设定值,程序自动确定系统是否存在异常,如果系统运行正常,将PID运算结果作为输出控制量控制PWM波形的输出,控制执行器的动作,从而达到接通或者断开电阻炉主电路的目的,实现对电加热水器的控制。单片机控制水温的同时可选择连接上位机进行组态监控,将变量的信息传给上位机使用,并将上位机设定的参数下载到控制器STM32,从而达到上位机组态应有的效果。本次设计系统控制回路接线如图8所示。图8系统控制回路接线图模拟量前向通道使用TI公司生产的TLC7135也可称为ICL7135芯片,加上前级模拟信号运算放大器的特殊处理,以及一些其它的基本元器件成功地实现了微弱信号的测量。TLC7135具有以下特性输入阻抗高,对被测电路几乎没有影响;能够自动校零;有精确的差分输入电路;自动判别信号极性;有超、欠压输出信号;采用位扫描共5位与BCD码输出。本次设计应用PT100作为温度传感器,需要接三根信号线,其中两线内部短接,信号经单8通道数字控制模拟电子开关CD4051选通后,经运算放大器后得到温度信号对应的模拟电压值,本次设计选择的处理方法是经运算放大器的6管脚引出此模拟电压信号,直接用单片机实现数字化处理,模拟量前向通道如图9所示6。继电器输出模块主要用来执行STM32输出的PWM控制信号,及时的接通或者断开后边的固态继电器HH52P和交流接触器CJ2010,进而实现对加热器主电路的控制。由STM32温度控制系统设计7于单片机输出的PWM信号33V左右电压较低,不能直接用来驱动24V的固态继电器HH52P,因此需要在其中间加用继电器输出模块,继电器输出模块供电电压12V,只要有输入信号便可以控制线圈的吸合与断开,继电器输出模块如图10所示。图9模拟量前向通道图10继电器输出模块PT100是铂热电阻器,它的阻值会随着温度的变化而改变。PT后的100即表示它在0时阻值为100欧姆,在100时它的阻值约为1385欧姆。常见的PT100感温元件有陶瓷元件,玻璃元件,云母元件,它们是由铂丝分别绕在陶瓷骨架,玻璃骨架,云母骨架上再经过复杂的工艺加工而成7。PT100的工作原理当PT100在0的时候他的阻值为100欧姆,它的阻值会随着温度上升而成近似匀速的增长。但他们之间的关系并不是简单的正比的关系,而更应该趋近于一条抛物线。铂电阻的阻值随温度的变化而变化的计算公式如公式(1)和公式2所示。当200SET_VALUESET_VALUE/SETPIDSET_VALUEPPPRESENT_VALUEPRE_VALUE/UPDATEPVPPPRESENT_VALUEPRE_TEMP/UPDATEPVCURRENT_ERRORSET_VALUEPPPRESENT_VALUE/误差计算PPSUM_ERRORCURRENT_ERROR/积分STM32温度控制系统设计16DERRORPPLAST_ERRORPPPREV_ERRORDERROR/20/当前误差微分PPPREV_ERRORPPLAST_ERROR/存储误差更新PPLAST_ERRORCURRENT_ERROR/存储误差更新PPP_OUTPPPROPORTIONCURRENT_ERRORGAIN/比例项/PPI_OUTPPINTEGRALPPSUM_ERRORGAIN/积分项/积分限幅处理IFPPI_OUTPID_I_MAXPPI_OUTPID_I_MAXIFPPI_OUTI_OUTPID_I_MINIFCURRENT_ERRORPREV_ERRORI_OUTPPI_OUT035/因为锅炉只能加热不能降温,所以一旦超过设定值令积分值为零IFCURRENT_ERRORPREV_ERRORI_OUT0/微分延迟输出处理PPD_OUTPPD_OUTSDDE_PARAPPDERIVATIVEDERROR1SDDE_PARAGAIN/CTRL_PERIODPID_VALUEPPP_OUTPPI_OUTPPD_OUTIFPID_VALUEPWM_DATA_MAXRETURNPWM_DATA_MAXIFPID_VALUEP_OUT/P_OUTOPERATING_PARAMRTER6PPI_OUT/I_OUTOPERATING_PARAMRTER7PPI_OUT/D_OUTPPPROPORTIONOPERATING_PARAMRTER0PPINTEGRALOPERATING_PARAMRTER1PPDERIVATIVEOPERATING_PARAMRTER2PPPRESENT_VALUEOPERATING_PARAMRTER3/读取当前温度PPSET_VALUEOPERATING_PARAMRTER4/读取设定温度OPERATING_PARAMRTER8PID_OUT/PID_OUTOPERATING_PARAMRTER9PWM_OUT/PWM_OUTOPERATING_PARAMRTER10PWM_DUTY/PWM_DUTYVOIDREAD_DATA_FROM_SLAVEPIDPPOPERATING_PARAMRTER0PPPROPORTIONOPERATING_PARAMRTER1PPINTEGRALOPERATING_PARAMRTER2PPDERIVATIVE/OPERATING_PARAMRTER3PPPRESENT_VALUE/读取当前温度OPERATING_PARAMRTER3PRE_TEMPOPERATING_PARAMRTER4PPSET_VALUE/读取设定温度OPERATING_PARAMRTER5PPP_OUT/P_OUTOPERATING_PARAMRTER6PPI_OUT/I_OUTSTM32温度控制系统设计26OPERATING_PARAMRTER7PPD_OUT/D_OUTOPERATING_PARAMRTER8PID_OUT/PID_OUTOPERATING_PARAMRTER9PWM_OUT/PWM_OUTOPERATING_PARAMRTER10PWM_DUTY/PWM_DUTYOPERATING_PARAMRTER11DS18B20_TEMPRATURE/DS18B20OPERATING_PARAMRTER12FLOATADCONVT_VALUE1/DS18B20OPERATING_PARAMRTER13FLOATADCONVT_VALUE3/DS18B20VOIDWRITER_DATA_TO_SLAVEPIDPPPOPERATING_PARAMRTER0IOPERATING_PARAMRTER1DOPERATING_PARAMRTER2SET_TEMPOPERATING_PARAMRTER4PPPROPORTIONPPPINTEGRALIPPDERIVATIVEDPPSET_VALUESET_TEMPVOIDPARA_SPECI_SHOWVOIDLCD_SHOWSTRING12,300,“P“,12LCD_SHOWSTRING28,300,“I“,12LCD_SHOWSTRING44,300,“D“,12LCD_SHOWSTRING60,300,“PRE_TEMP“,12LCD_SHOWSTRING76,300,“SET_TEMP“,12LCD_SHOWSTRING92,300,“P_OUT“,12LCD_SHOWSTRING108,300,“I_OUT“,12LCD_SHOWSTRING124,300,“D_OUT“,12LCD_SHOWSTRING140,300,“PID_OUT“,12LCD_SHOWSTRING156,300,“PWM_OUT“,12LCD_SHOWSTRING172,300,“PWM_DUTY“,12LCD_SHOWSTRING188,300,“STEP“,12LCD_SHOWSTRING204,300,“DS18B20_TEMPRATURE“,12LCD_SHOWSTRING220,300,“ADC_CONVERTEDVALUE“,12VOIDPARAMETER_SHOWPIDPPLCD_SHOW_FLOAT12,154,P,12LCD_SHOW_FLOAT28,154,I,12LCD_SHOW_FLOAT44,154,D,12STM32温度控制系统设计27LCD_SHOW_FLOAT60,154,PRE_TEMP,12LCD_SHOW_FLOAT76,154,SET_TEMP,12LCD_SHOW_FLOAT92,154,PPP_OUT,12LCD_SHOW_FLOAT108,154,PPI_OUT,12LCD_SHOW_FLOAT124,154,PPD_OUT,12LCD_SHOW_FLOAT140,154,PID_OUT,12LCD_SHOW_FLOAT156,154,PWM_OUT,12LCD_SHOW_FLOAT172,154,PWM_DUTY,12LCD_SHOW_FLOAT188,154,STEP,12LCD_SHOW_FLOAT204,25,DS18B20_TEMPRATURE,12LCD_SHOW_FLOAT220,25,ADC_CONVERTEDVALUE,12VOIDFRAME_SHOWVOIDPARA_SPECI_SHOWPARAMETER_SHOWVOIDDEVICE_INITVOIDNVIC_CONFIGURATIONSYSTICK_INIT72LCD_INITLCD_CLEARUSART1_CONFIGLED_INITKEY_BOARD_INITDS18B20_INITTIM3_PWM_INIT7200,39999TIM_SETCOMPARE2TIM3,3599TIM6_CONFIGURATIONADC1_ONCE_CONV_INITINTMAINVOIDSTATICU8COUNT0DEVICE_INITPARAMETER_INITFRAME_SHOWWHILE1COUNTSTM32温度控制系统设计28IFCOUNT5131LED4LED4DS18B20_TEMPRATUREDS18B20_GET_TEMPDOKEYSCANPARAMETER_SHOWWHILEIN_FLAGSTM32温度控制系统设计29(2)模数转换程序ADCCINCLUDE“ADCH“_IOUINT16_TADC_CONVERTEDVALUE/单通道AD转换时AD值存放结果VU16CONV_AD_VALUESAMPLING_NUMBERCHANNEL_NUMBER/用来存放ADC转换结果,其数值为直接从ADC结果寄存器中的数据VU16AFTER_FILTERCHANNEL_NUMBER/用来存放求平均值之后的结果,也即最终输出数据STATICVOIDADC1_GPIO_CONFIGVOIDGPIO_INITTYPEDEFGPIO_INITSTRUCTURE/ENABLEDMACLOCK/RCC_AHBPERIPHCLOCKCMDRCC_AHBPERIPH_DMA1,ENABLE/ENABLEADC1ANDGPIOCCLOCK/RCC_APB2PERIPHCLOCKCMDRCC_APB2PERIPH_ADC1|RCC_APB2PERIPH_GPIOA,ENABLE/CONFIGUREPC01ASANALOGINPUT/GPIO_INITSTRUCTUREGPIO_PINGPIO_PIN_1GPIO_INITSTRUCTUREGPIO_MODEGPIO_MODE_AINGPIO_INITGPIOA,/PC1,输入时不用设置速率STATICVOIDADC1_MODE_CONFIGVOIDDMA_INITTYPEDEFDMA_INITSTRUCTUREADC_INITTYPEDEFADC_INITSTRUCTURE/DMACHANNEL1CONFIGURATION/DMA_DEINITDMA1_CHANNEL1DMA_INITSTRUCTUREDMA_PERIPHERALBASEADDRADC1_DR_ADDRESS/ADC地址DMA_INITSTRUCTUREDMA_MEMORYBASEADDRU32/内存地址DMA_INITSTRUCTUREDMA_DIRDMA_DIR_PERIPHERALSRCDMA_INITSTRUCTUREDMA_BUFFERSIZE1DMA_INITSTRUCTUREDMA_PERIPHERALINCDMA_PERIPHERALINC_DISABLE/外设地址固定DMA_INITSTRUCTUREDMA_MEMORYINCDMA_MEMORYINC_DISABLE/内存地址固定DMA_INITSTRUCTUREDMA_PERIPHERALDATASIZEDMA_PERIPHERALDATASIZE_HALFWORD/半字DMA_INITSTRUCTUREDMA_MEMORYDATASIZEDMA_MEMORYDATASIZE_HALFWORDDMA_INITSTRUCTUREDMA_MODEDMA_MODE_CIRCULAR/循环传输DMA_INITSTRUCTUREDMA_PRIORITYDMA_PRIORITY_HIGHDMA_INITSTRUCTUREDMA_M2MDMA_M2M_DISABLEDMA_INITDMA1_CHANNEL1,/ENABLEDMACHANNEL1/DMA_CMDDMA1_CHANNEL1,ENABLE/ADC1CONFIGURATION/ADC_INITSTRUCTUREADC_MODEADC_MODE_INDEPENDENT/独立ADC模式ADC_INITSTRUCTUREADC_SCANCONVMODEDISABLE/禁止扫描模式STM32温度控制系统设计30ADC_INITSTRUCTUREADC_CONTINUOUSCONVMODEENABLE/开启连续转换模式ADC_INITSTRUCTUREADC_EXTERNALTRIGCONVADC_EXTERNALTRIGCONV_NONE/不使用外部触发转换ADC_INITSTRUCTUREADC_DATAALIGNADC_DATAALIGN_RIGHT/采集数据右对齐ADC_INITSTRUCTUREADC_NBROFCHANNEL1/要转换的通道数目1ADC_INITADC1,/设置ADC时钟为PCLK2的8分频,即9HZ/RCC_ADCCLKCONFIGRCC_PCLK2_DIV8/设置ADC的通道11为555个采样周期,序列为1/ADC_REGULARCHANNELCONFIGADC1,ADC_CHANNEL_1,1,ADC_SAMPLETIME_55CYCLES5/ENABLEADC1DMA/ADC_DMACMDADC1,ENABLE/ENABLEADC1/ADC_CMDADC1,ENABLE/复位校准寄存器/ADC_RESETCALIBRATIONADC1/等待寄存器校准完成/WHILEADC_GETRESETCALIBRATIONSTATUSADC1/ADC校准/ADC_STARTCALIBRATIONADC1/等待校准完成/WHILEADC_GETCALIBRATIONSTATUSADC1/由于没有使用外部触发,所以使用软件触发ADC转换/ADC_SOFTWARESTARTCONVCMDADC1,ENABLEVOIDADC1_ONCE_CONV_INITVOIDADC1_GPIO_CONFIGADC1_MODE_CONFIGSTM32温度控制系统设计31(3)位置型PID算法程序PID_CONTROLCINCLUDE“PID_CONTROLH“/PID调节函数部分/FLOATSCALE_CONVU16CONVERTER_VALUEU32TEMP1FLOATTEMP20,TEMP30TEMP1CONVERTER_VALUECONVERTER_VALUETEMP2TEMP1A_PARATEMP3CONVERTER_VALUEB_PARARETURNTEMP2TEMP3C_PARAFLOATPIDCALCPIDPP,FLOATPRE_VALUE,FLOATSET_VALUEFLOATDERROR,CURRENT_ERRORFLOATPID_VALUE0/PIDRESPONSEOUTPUT_VALUEPPSET_VALUESET_VALUE/SETPIDSET_VALUEPPPRESENT_VALUEPRE_VALUE/UPDATEPVPPPRESENT_VALUEPRE_TEMP/UPDATEPVCURRENT_ERRORSET_VALUEPPPRESENT_VALUE/误差计算PPSUM_ERRORCURRENT_ERROR/积分DERRORPPLAST_ERRORPPPREV_ERRORDERROR/20/当前微分误差PPPREV_ERRORPPLAST_ERROR/存储误差更新PPLAST_ERRORCURRENT_ERROR/存储误差更新PPP_OUTPPPROPORTIONCURRENT_ERRORGAIN/比例项/PPI_OUTPPINTEGRALPPSUM_ERRORGAIN/积分项/积分限幅处理IFPPI_OUTPID_I_MAXPPI_OUTPID_I_MAXIFPPI_OUTI_OUTPID_I_MINIFCURRENT_ERRORPREV_ERRORI_OUTPPI_OUT035/因为加热器只能加热不能降温,所以一旦超过设定值令积分值为零IFCURRENT_ERRORPREV_ERRORI_OUT0/积分延迟输出处理STM32温度控制系统设计32PPD_OUTPPD_OUTSDDE_PARAPPDERIVATIVEDERROR1SDDE_PARAGAIN/CTRL_PERIODPID_VALUEPPP_OUTPPI_OUTPPD_OUTIFPID_VALUEPWM_DATA_MAXRETURNPWM_DATA_MAXIFPID_VALUE10RETURN7199ELSERETURNPIDCALCPP,PRE_VALUE,SET_VALUESTM32温度控制系统设计33(4)PWM输出程序VOIDTIM3_PWM_INITU16ARR,U16PSCGPIO_INITTYPEDEFGPIO_INITSTRUCTURETIM_TIMEBASEINITTYPEDEFTIM_TIMEBASESTRUCTURETIM_OCINITTYPEDEFTIM_OCINITSTRUCTURERCC_APB1PERIPHCLOCKCMDRCC_APB1PERIPH_TIM3,ENABLERCC_APB2PERIPHCLOCKCMDRCC_APB2PERIPH_GPIOB|RCC_APB2PERIPH_AFIO,ENABLEGPIO_PINREMAPCONFIGGPIO_PARTIALREMAP_TIM3,ENABLE/设置该管脚为复用输出功能,输出TIM3_CH2的PWM脉冲波形GPIO_INITSTRUCTUREGPIO_PINGPIO_PIN_5/TIM3_CH2GPIO_INITSTRUCTUREGPIO_MODEGPIO_MODE_AF_PP/复用推挽输出GPIO_INITSTRUCTUREGPIO_SPEEDGPIO_SPEED_50MHZGPIO_INITGPIOB,TIM_TIMEBASESTRUCTURETIM_PERIODARRTIM_TIMEBASESTRUCTURETIM_PRESCALERPSCTIM_TIMEBASESTRUCTURETIM_CLOCKDIVISION0TIM_TIMEBASESTRUCTURETIM_COUNTERMODETIM_COUNTERMODE_UPTIM_TIMEBASEINITTIM3,TIM_ITCONFIGTIM3,TIM_IT_UPDATE|TIM_IT_TRIGGER,ENABLETIM_OCINITSTRUCTURETIM_OCMODETIM_OCMODE_PWM2TIM

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论