产品展示 | 联系我们 您好,欢迎访问www.kaiyuntiyu,我们将竭诚为您服务!
20年专注设备技术研发 专注技术 专心质量 专业服务
全国咨询热线:13528138066
您的位置: 首页 > kaiyun下载官网 > 减速电机

联系我们contact us

www.kaiyuntiyu
地址:广东省深圳市南山区前海路1428号南岗商务大厦1304室
联系人:王生
电话:13528138066
手机:13528138066

减速电机

STM32控制中常见的PID算法总结

时间:2024-03-31 13:36:56 来源:减速电机 点击:1次

  在工业应用中PID及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法,若能够熟练掌握PID算法的设计与实现过程,对于一般的研发人员来讲,应该是足够应对一般研发问题了,而难能可贵的是,在很多控制算法当中,PID控制算法又是最简单,最能体现反馈思想的控制算法,可谓经典中的经典。经典的未必是复杂的,经典的东西常常是简单的,而且是最简单的。

  PID算法通过误差信号控制被控量,而控制器本身就是比例、积分、微分三个环节的加和。这里我们规定(在t时刻):

  :控制器的输出与输入偏差值成比例关系。系统如果出现偏差,比例调节立即产生调节作用以减少偏差。

  特点:过程简单快速、比例作用大,可以加快调节,减小误差;但是使系统稳定性下降,造成不稳定,有余差。

  :积分环节主要是用来消除静差,所谓静差,就是系统稳定后输出值和设定值之间的差值,积分环节实际上就是偏差累计的过程,把累计的误差加到原有系统上以抵消系统造成的静差。

  :微分信号则反应了偏差信号的变化规律,或是说变化趋势,根据偏差信号的变化趋势来进行超前调节,从而增加了系统的快速性。

  PID的基本离散表示形式如上。目前的这种表述形式属于位置型PID,另外一种表述方式为增量式PID,由上述表达式可以轻易得到:

  上式就是离散化PID的增量式表示方式,由公式能看出,增量式的表达结果和最近三次的偏差有关,这样就大幅度的提升了系统的稳定性。必须要格外注意的是最终的输出结果应该为:输出量=

  PID 的重要性应该无需多说了,这个控制领域的应用最广泛的算法了。本篇文章的目的是希望能够通过一个例子展示算法过程,并解释以下概念:

  设定一个输出目标,反馈系统传回输出值,如与目标不一致,则存在一个误差,PID根据此误差调整输入值,直至输出达到设定值

  疑问:那么我们为什么需要PID呢,比如我控制温度,我不能监控温度值,温度值一到就停止吗?

  这里必须要先说下我们的目标,因为我们所有的控制无非就是想输出能达到我们的设定,即如果我们设定了一个目标温度值,那么我们想要一个什么样的气温变化呢?

  比如设定目标温度为30度,目标无非是希望达到图1希望其能快速而且没有抖动的达到30度。

  那这样大多数人应该就明白,若使用温度一到就停止的办法,当然如果要求不高可能也行,但肯定达不到图1这样的要求,因为温度到了后余温也会让温度继续升高。而且温度自身也会通过空气散热的。

  综上所述,我们应该PID的原因无非就是普通控制手段没有很好的方法使输出快速稳定的到达设定值。

  (1)比例控制规律P:采用P控制规律能较快地克服扰动的影响,它的作用于输出值较快,但不能很好稳定在一个理想的数值,不良的结果是虽较能有效的克服扰动的影响,但有余差出现。它适用于控制通道滞后较小、负荷变化不大、控制要求不高、被控参数允许在一些范围内有余差的场合。如:金彪公用工程部下设的水泵房冷、热水池水位控制;油泵房中间油罐油位控制等。

  (2)比例积分控制规律(PI):在工程中比例积分控制规律是应用最广泛的一种控制规律。积分能在比例的基础上消除余差,它适用于控制通道滞后较小、负荷变化不大、被控参数不允许有余差的场合。如:在主线号枪的重油流量控制管理系统;油泵房供油管流量控制管理系统;退火窑各区温度调节系统等。

  (3)比例微分控制规律(PD):微分具有超前作用,对于具有容量滞后的控制通道,引入微分参与控制,在微分项设置得当的情况下,对于提高系统的动态性能指标,有着显著效果。因此,对于控制通道的时间常数或容量滞后较大的场合,为了更好的提高系统的稳定性,减小动态偏差等可选用比例微分控制规律。如:加热型温度控制、成分控制。需要说明一点,对那些纯滞后较大的区域里,微分项是无能为力,而在测量信号有噪声或周期性振动的系统,则也不宜采用微分控制。如:大窑玻璃液位的控制。

  (4)例如积分微分控制规律(PID):PID控制规律是一种较理想的控制规律,它在比例的基础上引入积分,可以消除余差,再加入微分作用,又能提高系统的稳定性。它适用于控制通道时间常数或容量滞后较大、控制要求比较高的场合。如温度控制、成分控制等。

  鉴于D规律的作用,我们还一定要了解时间滞后的概念,时间滞后包括容量滞后与纯滞后。其中容量滞后通常又包括:测量滞后和传送滞后。测量滞后是检测元件在检测时要建立一种平衡,如热电偶、热电阻、压力等响应较慢产生的一种滞后。而传送滞后则是在传感器、变送器、执行机构等设备产生的一种控制滞后。纯滞后是相对与测量滞后的,在工业上,大多的纯滞后是由于物料传输所致,如:大窑玻璃液位,在投料机动作到核子液位仪检测需要很长的一段时间。

  总之,控制规律的选用要根据过程特性和工艺技术要求来选取,决不是说PID控制规律在任何情况下都具有较好的控制性能,不分场合都采用是不明智的。如果这样做,只会给其它工作增加复杂性,并给参数整定带来困难。当采用PID控制器还达不到工艺要求,则需要仔细考虑其它的控制方案。如串级控制、前馈控制、大滞后控制等。

  Kp、Ti、Td三个参数的设定是PID控制算法的核心问题。一般说来编程时只能设定他们的大概数值,并在系统运行时通过反复调试来确定最佳值。因此调试阶段程序必须得能随时修改和记忆这三个参数。

  在某些应用场合,比如通用仪表行业,系统的工作对象是不确定的,不同的对象就得采用不一样的参数值,没法为用户设定参数,就引入参数自整定的概念。实质就是在首次使用时,通过N次测量为新的工作对象寻找一套参数,并记忆下来作为以后工作的依据。具体的整定方法有三种:临界比例度法、衰减曲线、临界比例度法(Ziegler-Nichols)

  1.1 在纯比例作用下,逐渐增加增益至产生等副震荡,根据临界增益和临界周期参数得出PID控制器参数,步骤如下:

  (1)将纯比例控制器接入到闭环控制管理系统中(设置控制器参数积分时间常数Ti =∞,实际微分时间常数Td =0)。

  (2)控制器比例增益K设置为最小,加入阶跃扰动(一般是改变控制器的给定值),观察被调量的阶跃响应曲线)由小到大改变比例增益K,直到闭环系统出现振荡。

  (4)系统出现持续等幅振荡时,此时的增益为临界增益(Ku),振荡周期(波峰间的时间)为临界周期(Tu)。

  (1)在采用这种方法获取等幅振荡曲线时,应使控制管理系统工作在线性区,不要使控制阀出现开、关的极端状态,否则得到的持续振荡曲线可能是“极限循环”,从线性系统概念上说系统早已处于发散振荡了。

  (2)由于被控对象特性的不同,按上表求得的控制器参数不一定都能获得满意的结果。对于无自平衡特性的对象,用临界比例度法求得的控制器参数往往使系统响应的衰减率偏大(ψ>0.75 )。而对于有自平衡特性的高阶等容对象,用此法整定控制器参数时系统响应衰减率大多偏小(ψ<0.75 )。为此,上述求得的控制器参数,应针对具体系统在实际运行过程中进行在线) 临界比例度法适用于临界振幅不大、振荡周期较长的过程控制管理系统,但有些系统从安全性考虑不允许进行稳定边界试验,如锅炉汽包水位控制管理系统。还有某些时间常数较大的单容对象,用纯比例控制时系统始终是稳定的,对这些系统也是没办法用临界比例度法来进行参数整定的。(4)只适用于二阶以上的高阶对象,或一阶加纯滞后的对象,否则,在纯比例控制情况下,系统不可能会出现等幅振荡。1.3 若求出被控对象的静态放大倍数KP=△y/△u ,则增益乘积KpKu可视为系统的最大开环增益。通常认为Ziegler-Nichols闭环试验整定法的适合使用的范围为:

  2时,在对控制精度要求不高的场合仍可使用pid控制器,但需要对表1进行修正。在这种情况下,建议采用smith预估控制和imc控制策略。

  <(4)当KpKu

  1.5时,在对控制精度要求不高的场合仍可使用pi控制器,在这种情况下,微分作用已意义不大。

  <2、衰减曲线法

  <衰减曲线法与临界比例度法不同的是,闭环设定值扰动试验采用衰减振荡(通常为4:1或10:l),然后利用衰减振荡的试验数据,根据经验公式求取控制器的整定参数。整定步骤如下:

  (2)系统稳定后,作设定值阶跃扰动,观察系统的响应,若系统响应衰减太快,则减小比例增益K;反之,应增大比例增益K。直到系统出现如下图(a)所示的4:1衰减振荡过程,记下此时的比例增益Ks及和振荡周期Ts数值。

  (3)利用Ks和Ts值,按下表给出的经验公式,计算出控制器的参数整定值。

  (1)加给定干扰不能太大,要根据相关生产操作要求来定,一般在5%左右,也有例外的情况。

  (2)必须在工艺参数稳定的情况下才能加给定干扰,否则得不到正确的整定参数。

  (3)对于反应快的系统,如流量、管道压力和小容量的液位调节等,要得到严格的4:1衰减曲线较困难,一般以被调参数来回波动两次达到稳定,就近似地认为达到4:1衰减过程了。(4)投运时,先将K放在较小的数值,把Ti减少到整定值,把Td逐步放大到整定值,然后把K拉到整定值(如果在K=整定值的条件下很快地把Td放到整定值,控制器的输出会剧烈变化)。3、经验整定法

  使PID为纯比例调节,输入设定为系统允许最大值的60%~70%,由0逐渐加大比例增益至系统出现振荡;再反过来,从此时的比例增益逐渐减小至系统振荡消失,记录此时的比例增益,设定PID的比例增益P为当前值的60%~70%。

  (2)确定积分时间常数比例增益P确定后,设定一个较大的积分时间常数Ti的初值,然后逐渐减小Ti至系统出现振荡,之后在反过来,逐渐加大Ti至系统振荡消失。记录此时的Ti,设定PID的积分时间常数Ti为当前值的150%~180%。(3)确定积分时间常数Td积分时间常数Td一般不用设定,为0即可。若要设定,与确定 P和Ti的方法相同,取不振荡时的30%。(4)系统带载联调,再对PID参数进行微调,直至满足规定的要求。3.2 方法一B:(1)PI调节(a)纯比例作用下,把比例度从较大数值逐渐往下降,至开始产生周期振荡(测量值以给定值为中心作有规则的振荡),在产生周期性振荡的情况下,把此比例度逐渐加宽直至系统充分稳定。 (b)接下来把积分时间逐渐缩短至产生振荡,此时表示积分时间过短,应把积分时间稍加延长,直至振荡停止。

  (2)PID调节(a)纯比例作用下寻求起振点。(b)加大微分时间使振荡停止,接着把比例度调得稍小一些,使振荡又产生,加大微分时间,使振荡再停止,来回这样操作,直至虽加大微分时间,但不能使振荡停止,求得微分时间的最佳值,此时把比例度调得稍大一些直至振荡停止。(c)把积分时间调成和微分时间相同的数值,如果又产生振荡则加大积分时间直至振荡停止。3.3 方法二:另一种方法是先从表列范围内取Ti的某个数值,若需要微分,则取Td=(1/3~1/4)Ti,然后对δ进行试凑,也能较快地达到一定的要求。实践证明,在一些范围内适当地组合δ和Ti的数值,能够获得同样衰减比的曲线,就是说,δ的减少,可以用增加Ti的办法来补偿,而基本上不影响调节过程的质量。所以,这样的一种情况,先确定Ti、Td再确定δ的顺序也能的。而且可能更快些。如果曲线仍然不理想,可用Ti、Td再加以适当调整。3.4 方法三:(1)在实际调试中,也可以先大致设定一个经验值,然后根据调节效果修改。流量系统:P(%)40--100,I(分)0.1--1压力系统:P(%)30--70, I(分)0.4--3液位系统:P(%)20--80, I(分)1—5

  4、复杂调节系统的参数整定以串级调节系统为例来说明复杂调节系统的参数整定方法。由于串级调节系统中,有主、副两组参数,各通道及回路间存在着相互联系和影响。改变主、副回路的任一参数,对总系统都有影响。特别是主、副对象时间常数相差不大时,动态联系密切,整定参数的工作尤其困难。

  在整定参数前,先要明确串级调节系统的设计目的。如果主要是保证主参数的调节质量,对副参数要求不高,则整定工作就非常容易;如果主、副参数都要求高,整定工作就很复杂。下面介绍“先副后主”两步参数整定法。第一步:在工况稳定情况下,将主回路闭合,把主控制器比例度放在100%,积分时间放在最大,微分时间放在零。用4:1衰减曲线整定副回路,求出副回路的比例增益K2s和振荡周期T2s。第二步:把副回路看成是主回路的一个环节,使用4:1衰减曲线法整定主回路,求得主控制器K1s和T1s。

  根据K1s、K2s、T1s、T2s按表2经验公式算出串级调节系统主、副回路参数。先放上副回路参数,再放上主回路参数,如果得到满意的过渡过程,则整定工作完毕。否则可进行适当调整。

  如果主、副对象时间常数相差不大,按4:1衰减曲线法整定,也许会出现“共振”危险,这时,可适当减小副回路比例度或积分时间,以达到减少副回路振荡周期的目的。同理,加大主回路比例度或积分时间,以期增大主回路振荡周期,使主、副回路振荡周期之比加大,避免“共振”。这样做的结果会降低调节质量。

  如果主、副对象特性太相近,则说明确定的方案欠妥当,就不能完全依靠参数整定来提高调节质量了。

  一是利用数字PID控制算法调节直流电机的速度,方案是采用光电开关来获得电机的转动产生的脉冲信号,单片机(MSP430G2553)经过测量脉冲信号的频率来计算电机的转速(具体测量频率的算法是采取直接测量法,定时1s测量脉冲有多少个,本身的测量误差可以有0.5转加减),测量的转速同给定的转速进行比较产生误差信号,来产生控制信号,控制信号是通过PWM调整占空比也就是调整输出模拟电压来控制的(相当于1位的DA,如果用10位的DA来进行模拟调整呢?效果会不会好很多?),这个实验控制能力有一定的范围,只能在30转/秒和150转/秒之间来控制,当给定值(程序中给定的速度)高于150时,实际速度只能保持在150转,这也就是此系统的最大控制能力,当给定值低于30转时,直流电机转轴实际是不转动的,但由于误差值过大,转速会迅速变高,然后又会停止转动,就这样循环往复,不能够达到控制效果。

  根据实测,转速稳态精度在正负3转以内,控制时间为4到5秒。实验只进行到这种程度,思考和分析也只停留在这种深度。

  二是利用数字PID控制算法调节直流减速电机的位置,方案是采用与电机同轴转动的精密电位器来测量电机转动的位置和角度,经过测量得到的角度和位置与给定的位置做比较产生误差信号,然后位置误差信号通过一定关系(此关系纯属根据想象和实验现象来拟定和改善的)转换成PWM信号,作为控制信号的PWM信号是先产生对直流减速电机的模拟电压U,U来控制直流减速电机的力矩(不太清楚),力矩产生加速度,加速度产生速度,速度改变位置,输出量是位置信号,所以之间应该对直流减速电机进行系统建模分析,仿真出直流减速电机的近似系统传递函数,然后根据此函数便可以对PID的参数进行整定了。

  两次体会都不是非常清楚PID参数是如何整定的,没有特别清晰的理论指导和实验步骤,对结果的整理和分析也不够及时,导致实验深度和程度都不能够达到理想效果。

  有一个水缸点漏水(而且漏水的速度还不一定固定不变)要求水面高度维持在某个位置一经发现水面高度低于要求位置,就要往水缸里加水。

  小明接到任务后就一直守在水缸旁边,时间长就感觉无聊,就跑到房里看小说了,每30分钟来检查一次水面高度。水漏得太快,每次小明来检查时,水都快漏完了,离要求的高度相差很远,小明改为每3分钟来检查一次,结果每次来水都没怎么漏,不需要加水,来得太频繁做的是无用功。

  开始小明用瓢加水,水龙头离水缸有十几米的距离,经常要跑好几趟才加够水,于是小明又改为用桶加,一加就是一桶,跑的次数少了,加水的速度也快了,

  但好几次将缸给加溢出了,不小心弄湿了几次鞋,小明又动脑筋,我不用瓢也不用桶,老子用盆,几次下来,发现刚刚好,不用跑太多次,也不会让水溢出。这个加水工具的大小就称为比例系数。

  小明又发现水虽然不会加过量溢出了,有时会高过要求位置比较多,还是有打湿鞋的危险。他又想了个办法,在水缸上装一个漏斗,

  每次加水不直接倒进水缸,而是倒进漏斗让它慢慢加。这样溢出的问题解决了,但加水的速度又慢了,有时还赶不上漏水的速度。

  于是他试着变换不同大小口径的漏斗来控制加水的速度,最后终于找到了满意的漏斗。漏斗的时间就称为积分时间 。

  小明终于喘了一口,但任务的要求突然严了,水位控制的及时性要求大幅度的提升,一旦水位过低,必须立即将水加到要求位置,并且不可以高出太多,否则不给工钱。

  小明又为难了!于是他又开动脑筋,终于让他想到一个办法,常放一盆备用水在旁边,一发现水位低了,不经过漏斗就是一盆水下去,这样及时性是保证了,但水位有时会高多了。

  他又在要求水面位置上面一点将水凿一孔,再接一根管子到下面的备用桶里这样多出的水会从上面的孔里漏出来。这个水漏出的快慢就称为微分时间。

  再把水位波动的趋势分为甚快、快、较快、慢、停几个区段,并区分趋势的正负;

  如上所述,我们应该制定一个控制规则表,然后制定参数判断水位区段的界值、波动趋 势的界值、输出幅度的界值。

  比例控制(P)是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。

  但是,仅仅是P控制的话,会产生下面将提到的offset (稳态误差),所以一般加上积分控制(I),以消除稳态误差。

  比例控制中,经过一段时间后误差稳定在一定值时,此时的误差叫做稳态误差(off set)。

  仅用比例控制的时候,根据负载的变动及设备的固有特性不同,会出现不同的稳态误差。

  比例带小时不会产生。为消除稳态误差,我们设定手动复位值--manual reset值(MR),以消除控制误差。

  为此,将MR(manual reset值)设为可变,则可自由整定(即调整)调节器的输出。只要手动操作输出相当于offset的量,就能与目标值一致。

  这就叫做手动复位(manual reset),通常比例调节器上配有此功能。

  在实际的自动控制中,每次发生off set时以手动进行reset的话,这样并不实用。在后面将叙述的积分控制功能,能自动消除稳态误差。

  为此,将MR(manual reset值)设为可变,则可自由整定(即调整)调节器的输出。只要手动操作输出相当于offset的量,就能与目标值一致。

  这就叫做手动复位(manual reset),通常比例调节器上配有此功能。

  在实际的自动控制中,每次发生off set时以手动进行reset的话,这样并不实用。在后面将叙述的积分控制功能,能自动消除稳态误差。

  所谓积分控制(I),就是在出现稳态误差时自动的改变输出量,使其与手动复位动作的输出量相同,达到消除稳态误差的目的。

  当系统存在误差时,进行积分控制,根据积分时间的大小调节器的输出会以一定的速度变化,只要误差还存在,就会不断的进行输出。

  当积分项和比例项对于控制器的输出的贡献相同,即积分作用重复了一次比例作用时所花费的时间,就是积分时间。

  当输入量持续的以一定速率变化时,微分项和比例项对于控制器的输出的贡献相同,即微分作用重复了一次比例作用时所花费的时间,就是微分时间。

  我们看一个生活例子,冬天洗热水澡,需要先放掉一段时间的冷水,因为水管里有一段冷水,热水器也需要一个加热过程,等过了最近一段时间之后水温有些接近目标值后,开始调节水龙头来调节冷、热水之间的比例及出水量,之后再慢慢的微调,在洗浴过程中感觉温度不合适,再一点点的调节。这样的一个过程,实际上的意思就是PID算法过程。我们之所以微调,是因为水温的变化速度与我调节的速度不相匹配,存在一个滞后效应,我们应该调节一点点,等一下再感觉一下温度,不够再调节一点点,再感觉,这样的一个过程就叫PID算法,也能说,滞后效应是引入PID的原因。

  失去的能否找回来?能!只是我找回了纽扣,却发现衣服已不再了。这个就是滞后效应。

  负反馈系统,都有滞后效应,但为什么运放、电源这类的却从来不提PID算法呢?这是因为这类系统的滞后延时时间很短,若考虑这个延时,负反馈引入180度相位,延时恰好引入180度相位,则完全可能会导致振荡。问题就在于这个延时时间足够短,它的谐振频率点比较高,以运放为例,加入延时加上负反馈引起的谐振点为10MHz,但这片运放的频率响应是1MHz,则在10MHz下完全不可能会引起振荡,因为这个芯片的频响特性只有1MHz。我们常用的线性电源IC,比如SOT23封装的LDO,假如输出不加电容,就会输出一个振荡的波形,相对来说电源IC的滞后效应比运放要大,但是,因为电源一般后面都要接大电容的,它的频响特性很低,接近直流0Hz,所以当有电容时候,就无法振荡了。

  而工业控制领域,比如温度等,都是滞后效应很严重的,往往都是mS,甚至是10mS级别的,若直接用负反馈,因为激励与反馈的不同步,必然导致强烈的振荡,所以未解决这个问题,我们需要引入PID算法,来实现这类滞后效应严重系统的负反馈控制,我们以高频感应加热设备加热工件,从常温25度加热到700度为例做说明:

  在直流减速电机控制中,最常用的方法是通过PWM来控制直流电机的转速。在控制小车走直线的过程中,需要两者的转速一置(如果要走得很直,还需要在短时间内保证两者的行程大致相当,这可以用PID算法来控制)。 因此,在检测到两者转速不一样时,需要动态调整其中一个或两个轮子的PWM的点空比(简单点的就以一个轮为基准,调整另外一个轮子即可;如果以一个固定的标准的话,需要调整两个轮子的PWM占空比)。 1 程序第一步:设置GPIO,略(输出PWM的管脚用Mode_AF_PP即可) 2 3 程序第二步:设置定时器,(保证产生两路PWM即可,我用的是TIM4) 4 5 void TIM4_Configuration(void) 6 {

  DMA传输: 原理:DMA 传输将数据从一个地址空间复制到另外一个地址空间。 DMA传输数据,但是不需要占用MCU,即在传输数据时,MCU可以做别的事,像多线程。数据传输从外设到存储器或者从存储器到存储器。DMA控制器包含了DMA1和DMA2,其中DMA1有7个通道,DMA2有5个通道,能够理解为传输数据的一种管道。要注意的是,DMA2只存在于大容量单片机中。 工作过程: 1.DMA请求 如果外设想通过DMA传输数据,必须先向DMA控制器发送DMA请求,DMA收到请求信号后,控制器会给外设一个应答信号,当外设应答且DMA控制器收到应答信号后,就会启动DMA传输,直到传输完毕。 DMA有DMA1和DMA2两个控制器,DMA1有两个

  用STM32 的配置GPIO 来控制LED 显示状态,可用ODR,BSRR,BRR 直接来控制引脚输出状态。 ODR寄存器可读可写:既能控制管脚为高电平,也能控制管脚为低电平。 管脚对于位写1 gpio 管脚为高电平,写 0 为低电平 BSRR 只写寄存器:[color=Red]既能控制管脚为高电平,也能控制管脚为低电平。 对寄存器高 16bit 写1 对应管脚为低电平,对寄存器低16bit写1对应管脚为高电平。写 0 ,无动作BRR 只写寄存器:只能改变管脚状态为低电平,对寄存器 管脚对于位写 1 相应管脚会为低电平。写 0 无动作。 刚开始或许你跟我一样有以下疑惑: 1.既然ODR 能控制管脚高低电平为什么还需

  LED显示状态 /

  做STM32智能小车的实验中会用到定时器PWM输出,来改变直流电机的转速。分享本文了解如何通过PWM实现对电机速度的控制。 PWM控制电机速度的基础原理 PWM(Pulse Width Modulation),也就是脉冲宽度调制。 PWM中有一个较为重要的概念,占空比:是一个脉冲周期内有效电平在整个周期所占的比例。 为实现IO口上电压的持续性变化,能调节PWM的占空比。这也能够使外设的功率进行持续性变化,最终控制直流电机转速的快慢。如何调节PWM波形的输出就是重点。 上图中的ARR是我们给定时器的一个预装载值,CCRx的上下变化是产生PWM波的关键。我们假设ARR大于CCRx的部分输出为高电平(即t1-t2、t3-t4、

  电机速度 /

  真正要用 PID算法的时候,发现书上的代码在我们51上来实现还不是那么容易的事情。简单的说来,就不可以直接调用。仔细分析你不难发现,教材上的、网上现行的PID实现的C语言代码几乎都是用浮点型的数据来做的,能想象,如果我们的计算使用浮点数据,那我们的51单片机来运行的话会有多痛苦。 所以,本人自己琢磨着弄了一个整型变量来实现了PID算法,由于是用整型数来做的,所以也不是很精确,但是对于很多的使用场合,这个精度也够了。关于系数和采样电压全部是放大10倍处理的。所以精度不是很高,但是也不是那么低,大部分的场合都够用了。实在觉得精度不够,可以再放大10倍或者100倍处理,但是要注意不超出整个数据类型的范围就可以了。 本人做的是带死区

  按键是单片机上一个很重要的输入设备,也非常容易掌握,只要明白了IO口最基本的使用,就可以操作按键了。 我们的目的是控制开发板上板载的三个按键来操作开发板上板载的两个LED灯实现亮或灭(按键第一次按下时灯亮,再按下时灯灭,以此类推)。 博主所用的开发板是正点原子的mini板(STM32F103RCT6)和战舰板(STM32F103ZET6),因此下面的内容的例子以这两款开发板为例,但是基本的原理对任何开发板来说都是一样的,只要自己的开发板上板载了按键和LED灯(这两个资源应该是所有开发板上都有的资源吧),然后查看自己开发板的数据手册和硬件电路图、原理图,找到按键和LED灯对应的IO口,就可根据本文所介绍的流程使用按键控制LE

  LED灯 /

  本文将介绍STM32的基础时钟,通过时钟中断来控制LED灯的亮灭。 本文的大致思路如下: 1,LED的GPIO口初始化 2,中断初始化 3,时钟初始化 4,编写中断函数 5,编写主函数 首先讲下笔者在做这个设计时得到的教训: 笔者最初是用TIM6基础时钟来实现设计功能,在编写完代码后发现,灯不亮,于是笔者就开始整问题了。先看看代码有没有编写错误,检查一遍后,中断通道使用正确,TIM6配置正确,LED灯的串口也没问题,中断函数也正常编写了。然后笔者纠结了,他妈代码全对了怎么就运行失败?(原谅笔者爆粗口,因为当时心情的确很不好,能想象一下,辛辛苦苦桥的代码,没什么毛病,结果到了板子上还运行不

  一、了解NAND Flash 简单的理解就是,NORFlash具有随机存取和随字节执行写操作的能力,即可以访问到存储器内部的任意一个字节,且具有读取速度快等特点,它占据1MB—16MB闪存的大部分市场,根据其读取数据速度快的特点主要使用在在代码存储;而NAND Flash以“页”为单位做对数据的读写操作,且具有写入和擦除速度快等特点,它应用在8MB—256MB的产品中,根据其特点主要使用在在数据存储上。 以型号HY27UF081G2A的NAND Flash芯片为例,其总线块(Block),每块又分为64页(Page),每页共2KB(main memo

  器访问NAND Flash学习笔记 /

  及其应用 (王凌)

  系统设计指南 (埃利斯)

  系统设计

  器的空间矢量脉宽调制

  使用STM32 Nucleo撬开针对物联网的ARM mbed IDE之门

  STM32CubeMX and STM32Cube HAL basics

  【瓜分2500元红包】 票选DigiKey\智造万物,快乐不停\创意大赛人气作品TOP3!

  有奖征文:邀一线汽车VCU/MCU开发工程师,分享开发经验、难题、成长之路等

  【下载】LAT1396 STM32CubeIDE实用技巧之STM32H7双核调试的配置

  【下载】LAT1343 STM32H5 USBD Classic驱动 CDC移植

  【下载】LAT1392 LTDC RGB接口 LCD的TouchGFX工程的移植步骤

  【直播】4月11日,STM32Trust如何帮助新产品设计提升信息安全保护能力

  【线日,基于Buildroot制作STM32MP13启动镜像-深圳/厦门/西安/郑州/苏州

  【新品】STM32U0新一代超低功耗入门级MCU,助力终端产品省电,安全,BOM成本低

  【新品】 STM32H7R/S基于Cortex-M7,运行频率高达600 MHz,板载闪存型MCU 拥有高速的外部存储

  【新品】STM32WBA54/55 支持BLE5.4、IEEE 802.15.4通信协议、Zigbee®、Thread和Matter协议

  【新品】STM32MP2 最高配备双核Arm® Cortex®-A35和Cortex®-M33的STM32MP2系列微处理器

  【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性

  Ambiq日前推出了Apollo510 Arm Cortex-M55 MCU,其效率是典型 Cortex-M4 设计的 30 倍,性能是 Apollo4 Cortex-M4 MCU的 10 倍 ...

  瑞典乌普萨拉,2024年3月27日 – 全球领先的嵌入式系统开发软件解决方案供应商IAR自豪地宣布:公司备受全球数百万开发者青睐的开发环境再 ...

  一、概述:SysTick是一个简单的递减24位计数器。如果你不需要再应用程序中嵌入操作系统,SysTick可当作简单的延时和产生周期性的中断。状 ...

  一、入门总结1 1为何需要把时间花在“犹豫”上?每当我们在入门之前(ARM是这样,DSP也一样),总会有很多疑问,会有很多顾虑。我们渴望知 ...

  RS485通信想必大家都知道,在学习RS232时,都会拿485(RS485下文就用485代替)和其作对比。485优缺点不说,网上有。我用的是STM32库函数学的4 ...

  PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程词云: