历史上的今天
返回首页

历史上的今天

今天是:2025年02月23日(星期日)

正在发生

2021年02月23日 | 51单片机电机pid控制系统程序

2021-02-23 来源:eefocus

51单片机电机pid控制系统程序

本程序来源网上,小编进行了简单修改,还未验证。

/*************************

应用背景:直流电机的额定功率12V,额定转速3000rpm,光码盘12孔,

晶振为12MHz,定时/计数器T0检测转速,用定时器T1进行定时,

P1.0控制直流电机的正反转,用P1.1控制电机的转速.

************************/

#include

#include

#define uchar unsigned char


uchar timcount,PWMH,SpeedSet,SpeedDet;

uchar KP,KI,KD;


int e1,e2,e3,uk,duk;


sbit Dir = P1^0;

sbit PWM = P1^1;


//延时函数

void delay(uchar i)

{

uchar j;

for(;i>0;i--)

{

for(j=29;j;j--)

_nop_();

_nop_();

}


}

//延时函数,产生PWM波

void PWMout(uchar q)

{

PWM = 1;

delay(q);

PWM = 0;

delay(100-q);

}


void timer1() interrupt 3

{

TH1 = 0x3c; //(65536-50000)=15536= ox3c oxb0 即定时50ms

TL1 = 0xb0; //(65536-50000)=15536= ox3c oxb0 即定时50ms

if(--timcount==0)

{

timcount = 4;

TR0 = 0;

SpeedDet = TL0;

TL0 = 0;

TR0 = 1;

e1 = SpeedSet-SpeedDet;

duk = (KP*(e1-e2)+KI*e1+KD*(e1-2*e2+e3))/10; //误差的微分:(e1-2*e2+e3)=((e1-e2)-(e2-e3))/1

uk = uk+duk;

if(uk>100)

uk=100;

else if(uk<-100)

uk = -100;

if(uk<0)

{

PWMH = -uk;

Dir = 0;

}

else

{

PWMH =uk;

Dir = 1;

}

e3 = e2;

e2 = e1;

}

}


void main(void)

{

TMOD = 0x16; //T1工作于定时模式的方式一16位定时器;T0工作于计数模式的方式2八位自动重装模式。

TH0 = 0;//装载计数初始值为0

TL0 = 0;//装载计数初始值为0

TH1 = 0x3c;//(65536-50000)=15536= ox3c oxb0 即定时50ms

TL1 = 0xb0;//(65536-50000)=15536= ox3c oxb0 即定时50ms

timcount = 4; //

PWMH = 0; //PWM高电平时间初始为0

SpeedSet = 80;//设定期望值速度80

SpeedDet = 0; //速度偏移量

e1 = 0;//当前误差

e2 = 0;//上一次误差

e3 = 0;//上上次误差

KP =10; //比例系数

KI = 1;//积分系数

KD = 2;//微分系数

TR0 = 1; //打开定时器T0

TR1 = 1;//打开计数器T1

ET1 = 1;//允许中断T1

ET0 = 1;//允许中断T0

EA = 1;//打开总中断

while(1)

{

PWMout(PWMH); //电机运行速度

}

}


推荐阅读

史海拾趣

CTC [Compact Technology Corp.]公司的发展小趣事

CTC公司在创立初期便致力于半导体技术的研发。一次偶然的实验中,公司团队成功研发出了一种新型的晶体管结构,这一创新使得晶体管的工作效率大大提升,同时降低了能耗。这一技术突破迅速引起了行业的关注,CTC公司的名字开始在电子行业中崭露头角。随着该技术的普及和应用,CTC公司的业务逐渐扩大,奠定了在电子行业的重要地位。

GaN Systems公司的发展小趣事

随着市场的不断拓展和技术的不断进步,GAIA盖亚电源持续加大研发投入,致力于技术创新和产品升级。公司拥有一支由超过300名工程师组成的研发团队,他们紧密关注行业动态,积极应对新技术和市场趋势。每年,GAIA盖亚电源都会推出数百种新产品,以满足不同客户的需求。这些新产品不仅涵盖了更广泛的电压范围和输出功率,还集成了最新的滤波、网络调节等先进技术,进一步提升了产品的性能和可靠性。

ALPS公司的发展小趣事

为了更好地服务全球客户,GAIA盖亚电源积极实施全球化战略,在全球范围内设立了25个分支机构,形成了覆盖广泛的销售和技术支持网络。这些分支机构不仅负责当地市场的开拓和维护,还为客户提供了及时、专业的技术支持和售后服务。通过本地化管理,GAIA盖亚电源能够更加灵活地应对不同地区的市场需求,进一步提升客户满意度和品牌影响力。

Fenfa Electronics Ltd公司的发展小趣事

在快速发展的同时,Fenfa Electronics Ltd公司始终坚守品质管理的原则。公司建立了严格的质量检测体系,确保每一款产品都符合高标准的品质要求。此外,Fenfa还注重员工的培训和教育,提高员工的品质意识和操作技能。通过这一系列的品质管理措施,Fenfa Electronics Ltd公司的产品质量得到了广泛认可,也赢得了消费者的信赖和口碑。

光磊(GL)公司的发展小趣事

在快速发展的同时,Fenfa Electronics Ltd公司始终坚守品质管理的原则。公司建立了严格的质量检测体系,确保每一款产品都符合高标准的品质要求。此外,Fenfa还注重员工的培训和教育,提高员工的品质意识和操作技能。通过这一系列的品质管理措施,Fenfa Electronics Ltd公司的产品质量得到了广泛认可,也赢得了消费者的信赖和口碑。

博流(Bouffalo Lab)公司的发展小趣事

自成立以来,博流公司一直致力于物联网、车联网和智能穿戴领域集成电路芯片的研发。经过不断的技术创新和突破,公司成功推出了多款具有竞争力的芯片产品,广泛应用于智能家居、智慧城市、智能制造等领域。同时,博流还注重与物联网生态合作伙伴的紧密合作,共同提供端到端、边缘计算到云的整体解决方案,为客户创造价值。

问答坊 | AI 解惑

汽车导航系统的DC/DC转换器选择指南

汽车环境的宽工作电压要求、大瞬变电压以及大温度漂移等因素共同作用下,电子系统面临着严酷的条件,本文介绍如何在性能要求变得愈加苛刻的条件下,设计多个电源电压以满足汽车电子系统不同部分的要求。        ...…

查看全部问答>

51单片机综合学习系统_DS18B20温度实验篇.pdf

51单片机综合学习系统_DS18B20温度实验篇.pdf…

查看全部问答>

编译问题解决

Can\'t insert Symbol into Block Design File filename because the Symbol represents the current Block Design File…

查看全部问答>

大功率开关电源中功率MOSFET的驱动技术

功率MOSFET具有导通电阻低、负载电流大的优点,因而非常适合用作开关电源(switch-mode power supplies,SMPS)的整流组件,不过,在选用MOSFET时有一些注意事项。    功率MOSFET和双极型晶体管不同,它的栅极电容比较大,在导通之前要 ...…

查看全部问答>

wi-fi的设置问题

我开发板上有一个wi-fi模块,经常在不同的无线局域网中使用,每次都需要手工设置,有没有办法用代码来完成无线网络的设置呢(无线网络没加密,或固定的一个密码)?…

查看全部问答>

请问大家都用什么笔记本.现在 一般的笔记本都没有串并口

如题. 做ARM开发,有时候会用到串并口,现在 的笔记本一般都没有,不知道大家有什么建议,我听朋友说,用转接口不太稳定.最好用台式机,不过我还是想换个带串并口的笔记本,大家有什么建议…

查看全部问答>

WINCE 分区如何隐藏

eboot 分了 4个分区, 1个binfs 3个fatfs 3个fatfs在pc上都是别出来了, 现在遇到以下问题: 1). 我想隐藏其中2个fatfs分区, 因为 我要放 应用程序 用 所以需要隐藏起来 2). 现在分区的路径名是按默认的名字, 比如默认是 disk, 那么 后面几 ...…

查看全部问答>

atmega16单片机 自身AD问题

近期用atmega16 自身的ad测试陀螺仪,在测试的时候发现,当把ADC0接地时  LCD1602显示AD转换后的值为0096,接VCC=AVCC时  显示0993 这不对啊  应该是0和1023啊,这是程序 DDRA&=0xfe; PORTA&=0xfe; SF ...…

查看全部问答>

【课后练习】LaunchPad课后练习九之模拟SPI驱动数码管

LaunchPad课后练习九之模拟SPI驱动数码管   1.采用共阳极的数码管 数码管实际上是由7个发光管组成8字形构成的,加上小数点就是8个。     什么是共阳极呢?就是他们的公共端接正极。扫描型的意思是,几位的数码管的段选都是 ...…

查看全部问答>

学习ARM过程中的堆栈初始化详解

1、寄存器 R13 在 ARM 指令中常用作堆栈指针 2、对于 R13 寄存器来说,它对应6个不同的物理寄存器,其中的一个是用户模式与系统模式共用,另外5个物理寄存器对应于其他5种不同的运行模式。采用以下的记号来区分不同的物理寄存器: R13_ 其中,mo ...…

查看全部问答>