当前位置: 首页 > news >正文

平台网站建设外包费用大数据营销精准营销

平台网站建设外包费用,大数据营销精准营销,做网站放广告,青海省城乡和住房建设厅网站本例使用的是LPC21XX系列芯片提供的PWM功能实现稳定的温度控制。首先我们获得当前环境温度之后,再用设定的温度与当前温度相减,通过PID算法计算出当前输出脉宽,并将其输出到L298N模块中,使加热丝发热,形成闭环&#xf…

本例使用的是LPC21XX系列芯片提供的PWM功能实现稳定的温度控制。首先我们获得当前环境温度之后,再用设定的温度与当前温度相减,通过PID算法计算出当前输出脉宽,并将其输出到L298N模块中,使加热丝发热,形成闭环,经过一段时间温度稳定在预设值。

概念说明

  • PWM:PWM(Pulse Width Modulation)简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。PWM输出的是周期信号,其中PWM频率指的是1秒内PWM的周期次数,占空比指的是一个脉冲周期内,高电平的时间与整个周期时间的比例。PWM可通过其不同的占空比配置来实现LED呼吸灯,电机转速等应用:

  •  PID算法:就是“比例(proportional)、积分(integral)、微分(derivative)”,是一种常见的“保持稳定”控制算法,在闭环系统的控制中,可自动对控制系统进行准确且迅速的校正,是工业应用中最广泛算法之一。PID算法主要涉及三个最基本的参数,最终PID输出值是三部分调节增益之和Pout+Iout+Dout:
    • Kp比例增益:已知当前环境温度与用户设定值之间的差值Ek,Kp与Ek在Pout的计算中为乘法关系,其大小将直接影响系统的响应速度
    • Kd微分增益:两次差值之差E_{k}-E_{k-1}可表示Dk,Kd与Dk也是乘法关系,其作用有让其"变化速度"趋于0,即类似"阻尼"的作用。
    • Ki积分增益:Ki积分控制考虑过去误差,将误差值过去一段时间之和(误差和)乘以一个正值的常数Ki,其作用是减小静态情况下的误差,让受控物理量尽可能接近目标值。

  •  L298N:L298N是意法半导体集团旗下量产的一种电机驱动芯片,拥有工作电压高、输出电流大、驱动能力强、发热量低、抗干扰能力强等特点,通常用来驱动继电器、螺线管、电磁阀、直流电机以及步进电机。本例我们用来驱动一个加热丝来进行发热。

实现原理

嵌入式代码运行在LPC21XX系列芯片平台上,使用平台提供的PWM通道进行控制信号输出,实现原理如下图所示:


嵌入式程序

LPC21XX平台使用PWM功能涉及的步骤如下:

  1. 首先是配置 PLL以生成时钟,因为它根据程序员的需要设置 LPC2148 的系统时钟和外设时钟。LPC2148 的最大时钟频率为 60Mhz。
  2. 接下来是使用 PINSEL 寄存器选择 LPC2148 的 PWM 引脚和 PWM 功能。我们使用 PINSEL0,因为我们使用 P0.0 作为 LPC2148 的 PWM 输出。
  3. 接下来我们需要使用 PWMTCR(定时器控制寄存器)重置定时器,然后,设置决定 PWM 分辨率的预分频值。我将它设置为零。
  4. 接下来我们需要设置 PWMMCR(PWM 匹配控制寄存器),因为它设置了复位等操作,PWMMR0 的中断。
  5. 使用 PWMMR 设置 PWM 通道的最大周期。
  6. 接下来我们需要使用 PWMLER 将 Latch Enable 设置为相应的匹配寄存器。
  7. 要使 PWM 输出到引脚,我们需要使用 PWMTCR 来启用 PWM 定时器计数器和 PWM 模式。

代码如下,提供UpdatePWMDutyRatio接口可以实时调整占空比:

#include <lpc214x.h> 
#include <stdint.h>
#include <string.h>unsigned int PWMvalue=0;void initilizePLL(void);
void initilizePWM(unsigned int periodPWM);
void delaytime(uint16_t j);
void UpdatePWMDutyRatio();void initilizePLL (void)     //Function to use PLL for clock generation
{PLL0CON = 0x01;           PLL0CFG = 0x24;PLL0FEED = 0xAA;PLL0FEED = 0x55;while(!(PLL0STAT & 0x00000400));PLL0CON = 0x03;PLL0FEED = 0xAA;PLL0FEED = 0x55;VPBDIV = 0x01;} void delaytime(uint16_t j)      // fucntion to generate 1 milisecond delay{uint16_t x,i;for(i=0;i<j;i++){for(x=0; x<6000; x++);    }}void initilizePWM(unsigned int PWMvalue)        {PINSEL0 = 0x00000002;         //Setting pin P0.0 for PWM outputPWMTCR = (1<<1);              //Setting PWM Timer Control Register as counter resetPWMPR = 0X00;                 //Setting PWM prescale valuePWMMCR = (1<<0)|(1<<1);       //Setting PWM Match Control RegisterPWMMR0 = PWMvalue;            //Giving PWM value Maximum valuePWMLER = (1<<0);              //Enalbe PWM latchPWMTCR = (1<<0) | (1<<3);     //Enabling PWM and PWM counter}
void UpdatePWMDutyRatio()
{PWMTCR = ~((1<<0) | (1<<3));     //Disable PWM and PWM counterPWMMR0 = PWMvalue;               //Giving PWM value PWMTCR = (1<<0) | (1<<3);        //Enabling PWM and PWM counter}

PID.h文件内是PID算法因子结构体定义,代码就不再往这里贴了。下面是PID算法实现的代码,代码中用中文帮助您理解:

#include "PID.h"PID pid;
void PID_Init()
{pid.Sv=38;//用户设定温度pid.Kp=30;pid.T=400;//PID计算周期pid.Ti=4000000;//积分时间pid.Td=1000;//微分时间pid.pwmcycle=200;//pwm周期200pid.OUT0=1;pid.C1ms=0;
}
void PID_Calc()  //pid计算
{float DelEk;float ti,ki;float td;float kd;float out;if(pid.C1ms<(pid.T))  //计算周期未到{return ;} pid.Ek=pid.Sv-pid.Pv;   //得到当前的偏差值pid.Pout=pid.Kp*pid.Ek;      //比例输出pid.SEk+=pid.Ek;        //历史偏差总和DelEk=pid.Ek-pid.Ek_1;  //最近两次偏差之差ti=pid.T/pid.Ti;ki=ti*pid.Kp;pid.Iout=ki*pid.SEk;  //积分输出td=pid.Td/pid.T;kd=pid.Kp*td;pid.Dout=kd*DelEk;    //微分输出out= pid.Pout+ pid.Iout+ pid.Dout;if(out>pid.pwmcycle){pid.OUT=pid.pwmcycle;}else if(out<=0){pid.OUT=pid.OUT0; }else {pid.OUT=out;}pid.Ek_1=pid.Ek;  //更新偏差pid.C1ms=0;
}

下面是此例的main函数,通过上面封装的接口对温度进行控制,稳定的达到目标温度:

#include "PID.h"
#include "PWMOUT.h"exyern unsigned int PWMvalue;#define PERIOD    400int main() 
{unsigned int num=0;PID_Init();initilizePLL(); while(1){while(获取当前温度,赋值到pid.pv中);PID_Calc();//计算PID的值num=(((pid.OUT*PERIOD)/pid.pwmcycle)-1);//获取当前的PWM脉冲占空比PWMvalue=num;UpdatePWMDutyRatio();                                                                                                                                                                              }       
}

十六宿舍 原创作品,转载必须标注原文链接。

©2023 Yang Li. All rights reserved.

欢迎关注 『十六宿舍』,大家喜欢的话,给个👍,更多关于嵌入式相关技术的内容持续更新中。

http://www.dinnco.com/news/71999.html

相关文章:

  • 开放平台设计衡阳seo排名
  • 用nas做网站资源网
  • 核酸二维码seo技术是什么
  • 用ai怎么做网站产品营销策划方案3000字
  • 智能网站建设seo模拟点击算法
  • 公司邮箱价格合肥网站优化seo
  • b2c网站开发核心技术网站营销策划
  • 做web的网站设计万物识别扫一扫
  • 重庆未来科技网站建设百度智能云建站
  • 软件跟网站开发的区别长沙网站seo推广公司
  • 扁平化蓝色网站优化大师有用吗
  • 招生型网站建设网站优化推广公司
  • 郑州制作网站全自动精准引流软件
  • 免费图片制作网站模板百度推广收费多少
  • 新郑整站优化如何在网上推广产品
  • 新闻类网站开发中国企业网
  • 2345浏览器网页版入口官网seo顾问培训
  • 最新大连市热议新闻武汉网站运营专业乐云seo
  • 上海网站建设 知名做太原网站制作优化seo公司
  • 扁平化风格的网站seo行业
  • 电脑做网站主机空间搜狗收录提交入口
  • 真实的做视频网站百度搜索引擎原理
  • 网站文件夹命名规则郑州外贸网站推广
  • 鞍山网站建设公司线上推广软件
  • 江苏做网站公司有哪些买卖链接网站
  • 做软件项目的网站樱桃电视剧西瓜视频在线观看
  • 网站建设和优化排名网上怎么找客户资源
  • 药品在哪些网站做推广百度搜索关键词排名靠前
  • qq中心官方网站免费企业网站管理系统
  • 国内做的好看的网站设计友情链接批量查询