粉丝1.4万获赞6.0万

嗯,上个视频我们讲了用 p w m 来控制那个一个指示灯,嗯,体现出的那个呼吸灯的效果, 我们实际上是为了演示 pwm 使用。然后这个视频呢,我们呃用 pwm 同音口来控制一个小电机,这里头我用这个小风扇来代替这个电机。嗯,我这里供电是五伏的,实际应用可以根据你 自己的电电机等级来调整电压。然后电机驱动呢,我们仍然用之前我们用过的这个芯片,就是 ta 六五八六 这个。原来我们是用呃两片来驱动步进电机,步进电机两项的两个线圈就是。嗯,每个每片驱动一个线圈。这个实验呢,我们 只是用了其中一片,一片呢驱动一个直流电机,直流电机一个线圈啊,就是这个我们用这边上这个,然后我们只调速,就是方向就不调了。嗯,然后这个就比较简单一些,然后我们把这两个控制端, 记录仪控制端就是接到地上,然后另外一个控制端呢,我们用 pw 呢 pwm 来控制控制他的同段,然后他那个转数就会发生变化。 嗯, p w m 控制的时候呢,我们搁 super 七给他看一下他的一个状态。呃,我们这里呢,为了让那个步行电机,也不是步行电机, 小石榴风扇一直处于转的状态,所以 pwm 那个占空比最低,我们给的百分之十五,然后最高。呃,因为他给到 百分之百的时候,那个声音太大,我就给他调到了百分之八十。大家看一下这个试播器的效果,能看出来 这里边的那个频率啊,我们设定的是一 k 和值。呃,最低的时候呢,就是占空率是百分之十五,最高的时候是百分之八十,看这个就是我们人生不同的变化 啊。这个就是 pwm 输出的波形连续的变化,我们这里采用的是频率固定以配合,然后改变他的战场比来调整那个小红线的转速, 这个就是实际效果,我现在跟那个指示灯,跟那个小电梯是连在一起的。呃,这个数码管呢,显示的就是那个他那个 那个百分比数值最低是百分之十五,然后最大是百分之八十,这个小风扇的速度就随着这个数值变化,他的钻就会发生变化, 你给到低于百分之十以下吧,那风扇低速的时候就会停止,所以我这里最低的就是他会一直处于转的状态,然后 呃,速度快慢会发生变化,这个值等呢其实也在发生变化,我们的延时间隔现在选的是一百毫秒,所以这个值等看的变化已经不是很明显了,特别是我这个 摄像头中来看,远远看的时候可能还会有一些变化。就是这个效果,我们做了一个按键,把这个按键之前也做进去了,然后我们按那个第八个按键的时候就 停止,他显示八的时候,当他进行完一个周期,显示到百分之十五以下的时候,我就给他清零,然后他就停止了,然后我们这个按第一个按键的时候就是启动,这是做了一个简单的控制, 单独给百分之十五,那个三公里他是转不了的,逐渐升价到将近二十左右才开始转。但是转起来以后呢,回到百分之十五时,他应该会有一个低速就启动前需要那个电流稍微大一些,这个就 具体的逻辑控制呢,就是这个函数,我们从最基础的那个百分比十五十五,然后逐渐逐渐的升加到百分之八十,然后这个循环结束以后,然后 呃初始值给了一个八十减零,就是初始值就是原来那个时候的八十了,随着 i 逐渐增加,然后这个减减减减,减到 i 等于六十五的时候就是最低十五,然后这个不断的循环,中途那个间隔呢?我们同样选的 比之前要稍微大一些,因为电机转的要看的更明显一些嘛,所以我们选了一百个 t, 可在这个时候实际上就是一百毫秒。 原来看直灯闪烁那阵就是说效果明显,那阵我们闪的是三十、二十、五十,这是都能看明显一百的时候就变化,直灯就不是很明显了,但是电梯控制很明显, 实际控制电机效果就是那样。然后我们做了一个呃小逻辑吧,做了一个标志, 标志就是通过按键来控制这个转与不转的,我们设了一个这个标志 pwl mark, 这个 mark 呢,当它是一的时候,它就是电机快慢循环转,但是零的时候就把这个 呃电机 pwm 六清零。呃这个 mark 呢,是由那个我们幺六三八输入的按键来控制的,在这 当第一个一号按键按下的时候,我就给他质疑八号按键按键按下的时候我给他清零,这是一个简单的逻辑,实际工程应用的这样简单的逻辑,就是应用的比较多, 然后呃具体的那个百分比数值啊,就是这个数值,我做的也是全局变量,然后在那个演示的数码管中我们显示出来,就 这个我们在第四位的数码管中单独做了函数给他显示出来,看的就比较直观,有十五变化到八十,这有八十变化到十五,逐渐逐渐的变化,然后能看着小电机连续的旋转,这个就是基本的演示效果 啊。实际控制呢?你你可以,我这这是五十,实际控制可以控制就是高电压的了,甚至,嗯, 更高一些,其他电压等级呢都是可以控制的。具体多录呢?那就打开多录 pwm, 用个多个芯片就可以。我这里只是用一个芯片, 呃,顺便介绍一下这个 ta 零五八六应用真是非常好,他用控制单独的电流,就是就单独的一个小电机呢,直流电机也是很方便的,最大可以控制到五安都没有问题。然后驱动一般的不仅 电机,呃,就是十二的两厢的不进电机基本都是非常好,就是不不能做到气氛。但是一般的调速应用都是没问题的,因为他比较经济实惠,一个芯片一块钱都不到,做实际应用时候非常方便,而且外围也比较简单, 这也是我们经常用的,如果你要需要净度高,可能你就会用那个六六零零就可以,那我们这里就足够了,我用的还比较多 小的控制东西,需要精度高的地方呢,就是用 tb 六六零零这样,或者说, 呃,跟他同等功能呢,其他的替代芯片就是因为需要精度高了吗?可能是我需要,呃,就十六细分了,三十二细分了,甚至更高的细分,这样的话需要高,我在我这里呢,我这个就足够了。

使用脚本语言让单片机输出 pwm 波形很简单,直接吊用已经封装好的库函数,输入三个参数通道频率和占空比就可以了。而 stm 三二需要这么多代码,不过 stm 三二更加自由,不像脚本语言,频率限制在一百千赫子以内。 stm 三十二的 pwm 频率是通过主频和分频器计算出来的。如果我想要一个七百二十千赫兹的频率, 我需要根据内部时钟的频率,七十二兆赫兹除以七百二十千赫兹等于一百,所以计数器值为一百。那如果想要一个时赫兹的频率呢? 我来算一下。频率 p 等于十,那么技术器 f 就是主拼 z 除以频率 p, 那么就是七千两百万除以十等于七百二十万。但是由于 s t m 三二定时器里的 必属器是十六位的,所以最大值是十六的四次方,也就是六五五三六七百二十万大于六万五千五百三十六,所以需要将主屏分屏,我这里分屏分了一百四十四,所以把主屏七千两百万除以分屏一百四十四,也就是分屏后等于五十万, 那在拿五十万的主评除以十赫兹的频率,就得到了计数器的值是五万,所以分频器填一百四十四,计数器填五万,这样正好就得到了一个使赫兹的 pwm 脉冲波形。

我们来看一下利用这个 sd m 三二 q 八 m x 这个代码修声器啊啊,我们用它来生成 p w m 波形来控制电机转动 啊,首先呢这个软件啊,大家安装自行安装啊,安装之后呢啊,我们一开始呢是从这个 mcu 开始我们的工程啊,因为我们不是用的他的这个 s c 报的啊, 我们就点这个就可以了啊,因为我这个工程已经建好了啊,所以呢这个建工程的过程我就不再演示了。嗯,当然呢,这个也比较简单啊,点进去之后呢,大家就可以这个啊,根据你使用的 mcu 的型号去选啊,就可以了啊,命名好工程的这个名字啊,他就可以了啊,在这里呢我们就不演示建的过程了,这是我建好的工程啊, 直接在做配置啊,首先呢你用定时器的呃时候,其实你在使用所有的功能的时候啊,都应该先把啊时钟配置好啊,比方说我们这里的二 cc 啊,我们选择的是 呃,叫 h s e, 叫高速外部适中啊,因为我们的这个核心板上啊,有一个精震啊,我们现在用它是做这个时钟源啊啊,这个选好了以后呢 啊,这里我们选的 crystal, 对吧,这个精镇啊,选好了以后呢,我们在这个 cloc configuration 里面始终数的配置里面,我们在这里选 hse 啊,大家看外边是接了一个八兆的竞争,对吧?过来之后呢,在这里啊,我们先这是分频的,我们先不分频就八兆进来啊,我们就用它,那么在这里呢倍频,九倍倍频啊,九倍之后 八乘九就剩七十二了,对不对啊,七十二过来之后我们这里也不分平啊,也是让他七十二,因为我们就会选用最大的时钟频率就可以了啊,在这里呢,大家要注意,这里呢,你至少要量二分频,为什么呢?你选一的话 啊,这里出问题了啊,最高是支持三十六,对不对啊?所以呢,我们这里这个二分频,二分频之后,大家就看啊,每一个外设都有了自己的时钟远或者时钟频率了啊,那么我们的定时器大家看啊, 这个 a p p 一 time 啊,挂在 a p p 一总线上的定时器啊,始终频率是七十二对吧?挂在 a p p 二总线上的这个定时器,它的始终源也是七十二兆啊,相当于我们所有的定时器的 始终。现在都是七十二调啊,这里就配置好了,对不对?那么配置好了以后,我们来看我们的 timer 啊,在这里, 那就我我是之前设置过了啊,比方说我们用的是 tam 二和 tam 三啊,对应的银角呢,就是 time 二呢,呃,通道一和通道二就是 p a 零和 p e 一,我们用的啊, time 三呢,我们用的是,呃, p b 零和 p b 一啊, p b 零和 p b 一。那么配置好以后, 大家看,我们在这里用的是比较简单的啊,一个是通道一的 p w m 生成功能,还有一个呢是二的 p w m 生成功能, 这是选好了啊,这是 tom 二的,这个选了两个通道用的啊,然后呢,主最主要的是下边,通过下边这些参数的设置来设置他的波形,就是 p w 波形的周期啊,以及初始化的占空比啊。呃, 主要涉及到的参数呢,一个是这个预分频啊,就不是 c 了啊,这里呢我选了七十一啊,实际上呢,呃,他算的时候是按照七十一加一就是七十二去算的啊,然后这里大家看这个啊,叫 counterparia 的啊,就是,呃,是决定他的 呃周期的啊,是决定它是周期的。我升了九十九啊,实际上零到九十九是一百,对不对啊?那么这样生成波形的周期是多少呢?我们的时钟是七十二兆,等一下我们算一下啊, 那记住我们的时钟呢,就是七十二兆,我们刚才设置好的,对吧,七十二乘以十六次方啊,赫兹对吧,然后呢,除以预分频, 我们设置是七十一,当然你这个可以设置成零,不分屏也没关系啊,加一对吧,再除以谁呢?再除以我们那个 p r 的 counter, 那就是九十九,加一 对吧,谁让你算下来呢,正好是多少?七十二兆除以七十二是一兆,一兆除一百呢,正好是一万,对吧?十 k 啊,这样呢,我们就得到一个十 k 赫兹 频率的 p w m 波形,那就是一秒钟呢,他有一万个周期在这个波形里,对吧?啊这是算他的 通过设置的三个参数啊,来设置我们 pm 波形的频率啊。其实频率和周期其实是一体两面嘛,对吧?不为例子, 互为倒数,对不对啊?然后呢,还下面还有一个呢,这里我们可以用 plume mode 啊,模式一。然后呢,这里啊是设置它的 pose 啊,设置它的叫占空。呃,可以说是设置占空笔吧,也就设置它初始化的占空笔啊,初始化的占空笔啊,比方说我们现在最最大是九十九嘛,是吧?最大是一九十九,那你这里你可以给它设置成啊三十啊,或者二十 啊,都可以,对吧?其他的呢,我们不用动啊,其他的不用动,那这样呢,他有两个通道,你比方我们这里设置三十啊,这里设置个零啊,那么他就会啊,因为有一个是低电瓶啊,有一个是有波形啊,这样呢,他的轮子就会转动起来啊,就会转动起来啊, 如果你想让它反转,那这个式的成语,这个式的成啊,一定的数值,它有波形,那就是反过来反方向的转啊,当然这个呢,我们先实现它动起来啊,至于让它反方向的转,正方向的转 啊,或者让他转的速度是多少,我们后面还要写一个函数来实现这个功能。这里呢,我们先给他给定一个占空笔啊,让他转动, 这是 tom 二 tom 三呢,其实道理是一样的啊,你比方我们 tom 三选用的是传到三啊,传到四啊,其他的设置都是一模一样,因为我们两路呃, pwm 啊,一定是让他要同一个频率啊,都是十 k, 对吧啊,当然你如果需要一 k 的,你这里可以设置成一千, 对吧,你需要这个更大的啊,对,需需要 e k 的,你再设成一九百九十九啊,你需要更大的,那你就改 这两这三个值就可以了。那当然时钟定了之后一般不会改啊,主要是改这两个值啊,通过我们的这个计算方法来算就可以了啊。那么好了,等了这两个设置完,呃,同样呢,这里啊,你也可以设置成啊,不要说三十二十啊,这个没有问题。 那么设置好了以后啊,我们使弄好了啊,这个定位界设置好了,那么你就点这个啊,当然这个 project manager 大家不要忘了啊,起工程的名字,工程存储的地方,对吧?啊,还有一个需要注意的呢,就是,呃,你是用的哪一个 编译 i d e 啊,你比方说我这里啊,我用 client 啊,那就要生成 s m 三 q 八 i d e 的工程啊,你会?当然你要用这个呃 q 八 i d e, 那肯定 也要生成这个工程,那你如果是用的 q, 那你就选这个 m d k r, 对吧?啊,嗯,根据你用的这个 i d e 来选择这个工程的类型啊,图称啊,这里呢,我们啊用用 cloud 演示的话,我们就选这个啊,其他呢,你可以先不动啊,我们点 generate code, 这样呢,代码就生成了啊, 大家要注意啊,这个 q 八 m x 它生成的是底层驱动啊,它并不是万能的,我这个所有的功能通过它都能生成啊,不是,它只是功能的驱动可以生成啊, 生成以后呢,我们这里工程呢,其实就自动更更新过来了啊,看看,这是闷函数对吧?啊,呃,生成以后啊,这些都是呃系统 生成的代码啊,初始化的代码,他们要注意啊,如果我们想写用户代码,我的建议呢?也不是我的建议了,就是根据我们这个 呃代码生成器的特点啊,把我们的用户代码一定要写在这个 user code begin 和 user code end 之间, 写在这里有什么好处呢?写在这里呢,如果说啊,我想去改动,比方说我本来就用了 tom 二,对不对?我不想用 tom 二了,我想改成 tom 三,对吧,我在这里设置好,设置好以后呢, 我点生成我们的用户代码是不会受影响的,大家看这这个四行代码是我昨天晚上写的啊,实际上我点刚才点生成代码之后,这里他是不影响的啊,一点都不影响,所以你的用户代码一定要写在优字扣的笔定和优字扣的摁的之间啊,这样呢,代码生成记生成的代码不会把你的代码覆盖掉, 那你如果写在这里,那就你比如说你写在这个引力什么什么,这这种地方他有可能给你覆盖掉了啊,你的用户代码就没了啊,所以一定要写在优字扣的比跟 n 的之间啊, 那么这四句是干啥的呢?大家要注意啊,前面数字化我们都有了,是不是?那么实际上数字化之后呢,这个 dwm 这个功能啊,他并没有给打开啊,所以呢,我们要通过自己啊携带码把它打开啊,你大家看见 star 的函数对不对啊?然后用的是他一门挤,用的是他的哪个通道,其实很简单啊,很简单打开就可以了啊,相当于我程序进来没函数, 对吧啊?初始化然后打开,那这个时候就其实就应该有波形了啊,我们一会通过试播器可以看一下啊,然后下面呢就是编译下载了啊,这个不管 用的哪个 id 其实都差不多啊,无非就是编译,然后呢下载,对吧,当然我的下载可能不太一样啊,这个你们的下载在 q 里面不是这个样子啊。呃,编译和下载就可以了啊,那我们把它下载一下。 还有一个问题啊,就是大家看一下啊,这个初始化,我们看一下刚才播的初始化啊,别让我们看随便看一个 number 二的啊, 转到定义啊,这是代码生成器生成的,对不对啊?所以你看我们设置的啊 pm 二定时器,然后预分频七十一,对吧,这个最大周期呢是九十九,对吧?然后呢我们设的一个占空比是三十,对吧?啊然后呢?这个是零 啊,还有一个是零零的啊,对吧?这个 power 四是零,对吧?所以说呢啊我们只要在图形界面中设置好了它生成的代码一定是按照图形界面来设置的,对吧?这是 thome 三对吧?一样的啊一样的啊。好了我们下面呢来给它下载一下啊。 嗯大家可以看一下我们程序下载以后啊。嗯,我们用试播器啊,试播器的这个,呃接地线,这个呢,我们接到我们的 信号输出引脚声,嗯,其实就可以看见你生成的波形 啊,我们可以看一下它的这个纸啊啊我们设置的是啊十 k 赫兹 啊,频率是十 k 合资啊。我们设置的占空比是百分之三十吗?这个丢替呢是百分之七十现在对吧?就是百分之七十空,百分之三十是这个,呃有这个波形的啊啊可以看出来啊,就是通过这个波形呢, 我们是因为是一个定时器里面两个通道,对吧?其中一个通道有波形,另一个通道呢输出低,这样子呢,呃电机呢就会向一个方向转动,对吧?啊?如果反过来啊一个通道呢是呃低,另一个通道有波形,那样的方向就会转过来,对吧?啊就这么一个 原理啊,这程序下载以后啊,嗯下载到我们的这个核心版上来了,对吧?那么我们就要做的就是连接线路啊,我们之前呢也跟大家说过了,我们这里是呃,电源 两根信号线,然后呢最最右侧的这个是 d, 对吧?然后呢这四根线我们要连接到我们的电机驱动板上, 这里啊,同样的道理呢,最上面它是电源,最下面是 d, 当中是两根信号线啊,电源和 d 是千万不能接反的啊。呃,两当中两根信号线接反了问题不大,无非就是转的方向啊,会出现这个 和你预想的不一样啊,这个时候调整一下就可以了啊,但是电源地是千万不能接反的啊,所以呢这个我们接好了,然后呢我们的电机啊,我这里用了一个电机做实验啊, 我们电机连线啊,接到我们的这个这个驱动板上来,然后呢这个呢是我们的驱动板的电源接入啊,大家可以看,我做了一个这个 啊,保险丝做了一个开关,对吧?这个做一个简单的保护,然后呢这个电源的接头,我们接到我们的电池上来, 然后呢把我们的这个电池接到我们的 转接板上啊,这样呢就完成了一个连接,对吧?这个时候呢,我们开开,打开我们的 转接板电源,然后呢我们再打开我们的 电机驱动版的开关啊,所以大家看啊,我们现在的速度呢是占空比吧,也就是说我们总的速度是九十九,对吧?我们设置的占空比是三十,对吧?这是三十的速度,那当然呢,你接两个电机,那就另一个电机就接在这一块啊,我们同侧电机用一路信号去控制就可以了, 嗯,接法呢,就是啊,不复杂,当然呢,我们还有一,还有还有一路信号,对吧?可以控制另一侧的啊?两个电机轮子啊?

简单了解 stm 三二单片机的 pwm 功能 pwm 的全称是脉冲宽度调制,可以通过对改变脉冲的时间宽度来等效的获得所需要合成的相应扶植和频率的波形, 多应用于 led 灯亮度调节、电机调速等场合。在 stm 三二单片机中,并没有哪个片上外设的名字叫做 pwm, 而官方将 pwm 的功能集成在通用定时器的电路上面,因此想要使用 pwm 功能,就需要了解通用定时器如何产生 pwm。 通用定时器其实是基本定时器的 plus 版本,就是在基本定时器的基础上增加了一个比较寄存器和一个输出控制电路来实现 pwm 功能。比较寄存器的作用就是将技术器的 每一个值和写入的特殊值进行比较,然后将比较结果传递给输出控制电路,使其输出对应的电瓶信号。我们代码配置自动重再值为一千,技术器递减技术,那么技术器就会反复的从一千数到零, 在这个时候我们往比较计存器里面写入一个七百,那么比较计存器就会挨个将计数器的值和比较计存器的值进行比较,根据比较结果,对应的输出通道就会有一个图例的波形输出。 简单的来说,比较寄存器的作用就是用来调节 pwm 播的高低,电瓶的占空笔。我们想要实现 pwm 输出功能,只需要在基本定时器的配置代码上添加以下步骤的代码, 将比较寄存器的值以及输出控制电路配置好,即可完成 pwa m 的输出。以 stm 三二 f 四零七单片机的 pc 六附用到通用电视七三的通道一输出 pwm 为例,参考代码如下。
![pwm程序,拥有2路 互补pwm 死区程序控制,不需要外部电子元件左右死区 提高稳定性,,虽然是2路pwm 可以只用一路pwm用于电磁炉,单管并联,,也可以用于 串联 ,或全桥等,,程序 还在调试中,,程序有,一键暂停 一键加功率,一键减功率,超电流保护 , 温度保护 ,有同步检测代码(同步检测程序,检测每个波形输出 同步检测用于单管电磁炉, 同步检测可以外部直接接 高电平 低电平 进行频闭不用此功能) 2路单8显示 一路是10k电位器控制档位0无输出 1-7为功率
第二路也是10k电位器控制档位0无输出1-9控制占空比 单8显示 占空比可调,,
程序中 可以用外接编码器设定 3种频谱 用于电磁炉 或 zvs 或 低频感应加热 中频感应加热 等,,,感应加热热水器等,,反正这控制板 打算做为 通用驱动主控,,过一段时间会上架,欢迎玩家光临,,大致我就透露这些,[比心][比心]
哈哈 欢迎玩家们 喜欢折腾的关注我,](https://p3-pc-sign.douyinpic.com/image-cut-tos-priv/e8d18c917030354c9fde714f04ff54cd~tplv-dy-resize-origshort-autoq-75:330.jpeg?lk3s=138a59ce&x-expires=2081124000&x-signature=aQCv4jsijLJbZ2pjwavEfbKsHOc%3D&from=327834062&s=PackSourceEnum_AWEME_DETAIL&se=false&sc=cover&biz_tag=pcweb_cover&l=2025121510205774FC62678AFD0AE3E44E)