导航:首页 > 操作系统 > 单片机调整倍数

单片机调整倍数

发布时间:2023-10-10 19:24:35

‘壹’ pic单片机pid控制算法参数整定

我这有51的

#include <stdlib.h>

#include "global_varible.h"

/****************************************************************************
* 模块名: PID
* 描述: PID调节子程序
* 采用PID-PD算法。在偏差绝对值大于△e时,用PD算法,以改善动态品质。
* 当偏差绝对值小于△e时,用PID算法,提高稳定精度。
* PIDout=kp*e(t)+ki*[e(t)+e(t-1)+...+e(1)]+kd*[e(t)-e(t-1)]
*============================================================================
* 入口: 无
* 出口: 无
* 改变: PID_T_Run=加热时间控制
*****************************************************************************/
void PID_Math(void)
{
signed long ee1; //偏差一阶
//signed long ee2; //偏差二阶
signed long d_out; //积分输出

if(!Flag_PID_T_OK)
return;
Flag_PID_T_OK=0;

Temp_Set=3700; //温度控制设定值37.00度

PID_e0 = Temp_Set-Temp_Now; //本次偏差
ee1 = PID_e0-PID_e1; //计算一阶偏差
//ee2 = PID_e0-2*PID_e1+PID_e2; //计算二阶偏差
if(ee1 > 500) //一阶偏差的限制范围
ee1 = 500;
if(ee1 < -500)
ee1 = -500;
PID_e_SUM += PID_e0; //偏差之和
if(PID_e_SUM > 200) //积分最多累计的温差
PID_e_SUM = 200;
if(PID_e_SUM < -200)
PID_e_SUM = -200;

PID_Out = PID_kp*PID_e0+PID_kd*ee1; //计算PID比例和微分输出
if(abs(PID_e0) < 200) //如果温度相差小于1.5度则计入PID积分输出
{
if(abs(PID_e0) > 100) //如果温度相差大于1度时积分累计限制
{
if(PID_e_SUM > 100)
PID_e_SUM = 100;
if(PID_e_SUM < -100)
PID_e_SUM = -100;
}
d_out = PID_ki*PID_e_SUM; //积分输出
if(PID_e0 < -5) //当前温度高于设定温度0.5度时积分累计限制
{
if(PID_e_SUM > 150)
PID_e_SUM = 150;

if(PID_e_SUM > 0) //当前温度高于设定温度0.5度时削弱积分正输出
d_out >>= 1;
}
PID_Out += d_out; //PID比例,积分和微分输出
}
else
PID_e_SUM=0;

PID_Out/=100; //恢复被PID_Out系数放大的倍数
if(PID_Out > 200)
PID_Out=200;
if(PID_Out<0)
PID_Out=0;

if(PID_e0 > 300) //当前温度比设定温度低3度则全速加热
PID_Out=200;
if(PID_e0 < -20) //当前温度高于设定温度0.2度则关闭加热
PID_Out=0;

Hot_T_Run=PID_Out; //加热时间控制输出

PID_e2 = PID_e1; //保存上次偏差
PID_e1 = PID_e0; //保存当前偏差
}
////////////////////////////////////////////////////////////void PID_Math() end.

‘贰’ 单片机中调整指令:DA A是什么意思

BCD码转换指令;
比如说:
81D+91D=172D
而:
81H+91H=112H
这里为了将81H+91H结果与81D+91D一致,经过DA有:
DA(112H)=112H+60H=172H
虽然一个是16进制一个是10进制但172在形式上是相等的。

MOV R5,#81H
MOV A, #91H
ADD A, R5
DA A
首先81H+91H=112H,此时AC=0,Cy=1,A=12H,所以DA A后A=12H+60H=72H,AC=0,Cy=1,结果为172H,当然运算应该理解为81D+91D=172D。

‘叁’ 如何用单片机来控制运放的放大倍数

用MCP10410,这是一种电子电位器,去网上下载资料看看,与单片机通信程序很好写。

‘肆’ STC15w4k32单片机如何更改内部时钟频率

STC15w4k32单片机更改内部IRC时钟频率,有两种方法,一种是在烧录程序时,选择内部时钟频率。如下图,画红框的下拉列表中的频率,就是可以选择 的时钟频率。

‘伍’ 怎么用51单片机控制DA实现可变增益放大啊急求具体方法与程序啊!!!

可变增益说的简单就是调幅。
一般可用乘法DAC,双DA的方案,一个DA的输出作为另一个DA的参考电压,当参考电压变化了,那么最终输出的DA幅度也就变化了。
另外可变固定增益一般用运放做些特定放大倍数的,比如2倍,5倍,10倍等等,然后串联起来,把不用的倍数用继电器短接起来,就可以实现一些比如 1,2,5,10,20,50,100这些倍数关系

阅读全文

与单片机调整倍数相关的资料

热点内容
星界边境像素压缩 浏览:454
算法分析与设计二手 浏览:979
学编程如何配电脑 浏览:966
怎么看特征找卡密的加密方式 浏览:522
方舟非官方服务器怎么赚钱 浏览:514
明日之后服务器无效是怎么回事 浏览:270
蛋壳公寓app如何查水电表 浏览:716
ad20库中的51单片机怎么找 浏览:624
阿里云服务器有点卡吗 浏览:215
苹果7如何让app后台运行 浏览:170
耐克app预售产品哪里看 浏览:209
补全算法一年级 浏览:131
evd数据调校软件加密 浏览:442
app听课与微信如何设置分屏 浏览:911
加密的excel怎么撤销 浏览:43
java动态数组初始化 浏览:978
编译后程序块过大不适合 浏览:675
李煜pdf 浏览:847
python写游戏逻辑 浏览:489
pdf转换成word免费版在线转换 浏览:464