基于凌阳61单片机的数据采集系统内容摘要:
11bit 模式,带有奇偶校验控制 SPI: 全双工( FullDuplex) /半双工( HalfDuplex)同步通讯端口 支持 Master/Slave 模式 CRC: CRC 功能由 SPCP825A 芯片硬件电路产生 —— CRC16/CRCCCITT Memory: ROM(OTP)、 192B RAM 东北大学秦皇岛分校 毕业设计 (论文 ) 第 19 页 19 I/O: 17 个可编程普通 I/O(GPIO),可独立编程为 pullup/pulldown Timer: Timer0: 14bit 独立 Timer,可产生溢出( Overflow)中断和实时( Real Time)中断 Timer1:可工作在自动重载的 8bit Timer 模式或串联成 12/16bit Timer模式。 当 UART 允许时专用于波特率的产生 Timer2:可自动重载的 8bit Timer Capture: 8 个 Cpature 输入寄存器,支持 PA0PA5 六路 Capture,可设置 Capture 边沿,用于脉冲度( Pulse)和周期( Period)的测量 EXT Interrupt: 17 个 GPIO 皆可以独立的引起外中断,中断边沿可编程 Reset: Power On Reset(POR) SPCP825A 芯片封装如 下图 所示: 下图为 USB/UART 模块的程序流程图和中断流程图: 东北大学秦皇岛分校 毕业设计 (论文 ) 第 20 页 20 系统的主要功率器件为一个交流 220V1000W 的电加热器,采用继电器来驱动该加热器。 继电器选择 OMRON G6B1174P 型继电器,该继电器具有触发电压低( DC 5V),可控功率大( AC: 8A250V, DC: 8A30V),以及反应时间短等优点。 继电器采用 NPN8050 三极管驱动,并在三极管的基极加一 个 470 欧的电阻,当三极管的基极加载高电平信号时,三极管导通继电器工作,当三极管的基极为低电平东北大学秦皇岛分校 毕业设计 (论文 ) 第 21 页 21 信号时,三极管截止继电器停止工作。 并在继电器的周围添加了续流保护电路和工作指示电路,功率驱动部分电路如 下 图所示。 软件设计 软件总体设计 程序的控制思想:通过对数据信息(包括预设温度,当前温度,历史偏差等信息)进行 PID 运算产生 fOut 输出参数,通过该参数控制加热时间,从而调节加热器的功率,实现系统的 PID 控制。 系统软件部分包括主程序和中断服务子程序,主程序和中断服务程序流程分别对应图 61和图 62。 主程序流程: 系统运行首先初始化 IO, Timer, Uart 部件,同时初始化键盘和显示等,并初始化系统状态设定状态,等待输入设定温度。 初始化完成之后进入主程序循环体,在循环体内不停的扫描按键是否有触发,是否 进行 AD 转换,如果已经完成 AD 转换,则对 AD 结果进行处理转化为温度值,将温度值传送给上位机,之 后对温度值进行 PID 运算。 运算产生结果 fOut,如果 fOut 0,证明当前温度低于设定温度,开启加热器;如果 fOut = 0 证明当前温度等于或者略超过设定温度,关闭加热器。 然后再重复执行上述过程,周而复始。 东北大学秦皇岛分校 毕业设计 (论文 ) 第 22 页 22 中断服务流程: 中断服务包括 IRQ5_2Hz 中断, IRQ2_TimerB 中断以及 IRQ6_TMB2(1024Hz)中断三个中断服务子程序。 其中 IRQ5_2Hz 用以提供 1s时间以确定 AD采样的时间间隔,服务程序流程如图 62 ( 1)所示 ; IRQ2_TimerB 提供溢出频率为 64Hz的中断信号,配合主程序 PID 运算结果 fOut 确定加热时间,间接实现加热器功率调节,程序流程如图 62( 2)所示; IRQ6_TMB2 为 1KHz 时基,在此中断中完成 LED 的动态刷新,程序流程如图 62( 3)所示。 东北大学秦皇岛分校 毕业设计 (论文 ) 第 23 页 23 东北大学秦皇岛分校 毕业设计 (论文 ) 第 24 页 24 主函数 部分 //======================================================== // 工程名称: temperature_ctrl // 功能描述: 水温的采集,转换,控制等 // 涉及的库: 无 // 组成文件: // 硬件连接: 见数据采集系统使用说明书 // 维护记录: 20201125 //======================================================== include include 本设计利用了上面所 介绍的位置式 PID 算法,将温度传感器采样输入作为当前输入,然后与设定值进行相减得偏差 ,然后再对之进行 PID 运算产生输出结果 fOut,然后让 fOut 控制定时器的时间进而控制加热器。 为了方便 PID 运算,首先建立一个 PID 的数据类型,该类型用于保存 PID 运算所需要的 P、 I、 D 系数,以及设定值,历史误差的累加和等信息: typedef struct PID 东北大学秦皇岛分校 毕业设计 (论文 ) 第 25 页 25 { float SetPoint。 // 设定目标 Desired Value float Proportion。 // 比例常数 Proportional Const float Integral。 // 积分常数 Integral Const float Derivative。 // 微分常数 Derivative Const int LastError。 // Error[1] int SumError。 // 误差累计值 } PID。 PID stPID。 int fOut = 0。 // PID 计算结果 float fT,K,B。 enum system_status { system_temperature_set,system_temperature_control}。 enum system_status status。 float PIDCalc( PID *pp, int NextPoint )。 // PID 计算函数 void ADC_temperature(void)。 // AD 转换值的数值处 理 void Send_temperature(void)。 // AD 转换值的通信 void Control_temperature(void)。 // AD 转换值的结果处理 void PIDinit(void)。 // PID 初始化 int adc_data_cmp()。 // ADC 结果处理 void key_value_process(int key)。 unsigned int giADC_DataSave[18]。 //ADC 转换 的数据 unsigned int guiLED_Value[3] ={0,0,0}。 //保存显示的 LED 数字 unsigned int iAddrSpeech。 unsigned int G_ADC_flag = 0。 //============================================================ 东北大学秦皇岛分校 毕业设计 (论文 ) 第 26 页 26 // 语法格式: int main(void)。 // 实现功能: 主函数 // 参数: 无 // 返回值: 无 //============================================================ int main(void){ int iKeyValue。 unsigned int uiTime = 5。 System_Initial()。 //系统初始化 status = system_temperature_set。 while(1) { System_ServiceLoop()。 //键盘扫描 iKeyValue = SP_GetCh()。 //取键值 if(iKeyValue!=0) key_value_process(iKeyValue)。 //键值处理 if(status == system_temperature_control amp。 amp。 G_ADC_flag == 1) { //控制状态下执行以下操作 ADC_temperature()。 //测量温度结果处理 Send_temperature()。 //测量温度结果通信 Control_temperature()。 //执行控制 } *P_Watchdog_Clear = 0x0001。 //清看门狗 } } //============================================================ // 语法格式: void PIDinit(void)。 // 实现功能: PID 初始化 东北大学秦皇岛分校 毕业设计 (论文 ) 第 27 页 27 // 参数: 无 // 返回值: 无 //============================================================ void PIDinit(void) { = 0。 = 0。 } PID 简介: PID( Proportional Integral Derivative)控制是控制工程中技术成熟、应用广泛的一种控制策略,经过长期的工程实践,已形成了一套完整的控制方法和典型的结构。 它不仅适用于数学模型已知的控制系统中,而且对于大多数数学模型难以确定的工业过 程也可应用,在众多工业过程控制中取得了满意的应用效果。 PID 工作基理:由于来自外界的各种扰动不断产生,要想达到现场控制对象值保持恒定的目的,控制作用就必须不断的进行。 若扰动出现使得现场控制对象值 (以下简称被控参数 )发生变化,现场检测元件就会将这种变化采集后经变送器送至 PID 控制器的输入端,并与其给定值 (以下简称 SP 值 )进行比较得到偏差值 (以下简称 e 值 ),调节器按此偏差并以我们预先设定的整定参数控制规律发出控制信号,去改变调节器的开度,使调节器的开度增加或减少,从而使现场控制对象值发生改变,并趋向于给 定值 (SP 值 ),以达到控制目的 ,如图 63 所示,其实 PID 的实质就是对偏差( e 值)进行比例、积分、微分运算,根据运算结果控制执行部件的过程。 模拟 PID 控制系统原理图 东北大学秦皇岛分校 毕业设计 (论文 ) 第 28 页 28 下面是 PID 运算的算法程序,程序的入口为变量 PID 以及当前采集温度值 NextPoint,这里为了参数传递的方便首先将采集温度值放大 10 倍变为 int 型变量,然后进行运算:首先求偏差 Error,然后再求积分项 SumError(通过求和实现)以及微分项 dError(通过做差实现),最后对以上 3 个参数执行 PID 运算并返回给 fOut, 在实际运算时,由于水具有很大的热惯性,而且 PID 运算中的 I(积分项)具有非常明显的延迟效应所以不能保留,我们必须把积分项去掉,相反 D(微分项)则有很强的预见性,能够加快反应速度,抑制超调量,所以 微分作用 应该适当加强才能达到较佳的控制效果,系统最终选择 PD 控制方案,下面 C 代码所示为 PD 控制的实现过程: //============================================================ // 语法格式: PIDCalc( PID *pp, int NextPoint)。 // 实现功能: PID 运算处理 // 参数: PID *pp: PID 指针; // int NextPoint:当前温度结果 // 返回值:。基于凌阳61单片机的数据采集系统
相关推荐
se() 语法: void F_FlashErase(sector) 描述:擦除 256 字节 参数 : 擦除页的起始地址 第 9 页(共 18 页) 返回:无 位操作模块 由于 SPCE061A 没有位操作指令,而在程序控制电机的时候需要经常操作某一位,为了方便程序的编写,增强可读性,编写了位操作模块。 函数 void Set_IOB_Bit(unsigned int,unsigned int
,为避免浪费寻找物品的时间和精力,我们有必要利用科学技术解决人们此方面的麻烦,于是声控遥控器找寻器显得很有必要。 声控失物找寻器是一种能够寻找所需物品的声控遥控器找寻器,将找寻器跟物品固定在一起,根据事先录在找寻器里面的固定声音,当外界有同一声音发出时,找寻器上的报警器就会发出相应的报警声音,同时亦可在找寻器上安装上闪光灯,在接收到该语音信号时同时发出光亮
安徽工商职业学院 2020 届毕业设计 3 第三节 系统框图 图 1 电 源 AT89c51 信号灯时间显示部 分 震 荡 部 分 复 位 电 路 信号灯 控制部分 基于单片机控制交通灯控制电路设计 4 第三章 硬件方面 第一节 芯片选择及简单介绍 图 2 主控芯片采用 AT89C51 单片机( 其管脚图如图所示 )。 单片机,亦称单片微型计算机。 它是把中央处理器( CPU)、数据存储器(
Uk。 Uk1=Uk。 基本 PID算法+惯性环节 加热器(对象) R PV E U(t) Y 图( 2)加热器温度控制图 11 Ek2=Ek1。 Ek1=Ek。 da=(unsigned short int)(Uk*)。 AC6611_DA(hDevice,da)。 Edit3Text=FloatToStrF(Uk,0,4,4)。 } 5 控制算法程序设计
define SENSOR_TYPE_MAGNETIC_FIELD 2 //磁力 define SENSOR_TYPE_ORIENTATION 3 //方向 define SENSOR_TYPE_GYROSCOPE 4 //陀螺仪 define SENSOR_TYPE_LIGHT 5 //光线感应 define SENSOR_TYPE_PRESSURE 6 //压力 define
.......................................................................................16 MC13213 活动模式 ................................................................................................