STM32F103C8T6+L298N通过PWM控制直流电机转速 前言 原来做的差速小车是基于Arduino控制的,感觉有些简单,也有些基础,Arduino方便简单的同时,可操作性感觉也少了很多,所以想将控制器换成STM32,然后将树莓派作为上位机,STM32作为下位机,通过树莓派和STM32进行通讯,实现对差速移动小车的控制,本人也是寒假期间初学STM32,也是奔着应用去的,所以对于STM32编程原理方面可能不太精通,这里偏重于记录应用层面的知识。 一、PWM调速原理 直流电机驱动是最简单的,给电机通上电就能转,根据电机的公式:
可知:当提高电压时,反电势升高,进而转速升高,电压与转速大致有如图所示的关系
所以我们只要控制给电机通电的电压即可控制电机的转速,但是在实际的控制中,控制直流电机需要通过H桥控制电机的正反转,如图,当T1和T4二极管导通时,有粉色通路;当T2和T3二极管导通时,有蓝色通路,这样我们就可以实现弱电控制强电,通过二极管的通断来控制电机的转向。 但是这样电机通电时电压就是Us,我们如果想自由的控制Us的电压值基本是不能实现的,因为电机是接到单片机的引脚上的,引脚的供电电压值是确定的,我们就要使用控制二极管的通断时间对电机的转速进行控制,即PWM控制。 图中的D1~D4二极管为续流的作用,因为电机中有绕组,在断电后,电感的电流不能瞬时变为0,所以在断电后电流沿棕色和绿色的通路放点。
在一个周期内,我们通过控制通电的时间就可以调控平均电压,而平均电压的高低直接控制电机的转速,通电时间/周期,就可以得到占空比,我们也就是通过控制电机的占空比来控制电机的转速的。
在实际应用过程中,我们不用自己搭建H桥,而是使用电机驱动板(如:L298N)对直流电机进行驱动,L298N内搭载两个H桥电路,可以实现对两个电机的转向和转速进行控制。
二、STM32编程实现 在STM32中如果想输出PWM信号,需要借助定时器,通过定时器的捕获/比较通道的PWM输出
当我们对定时器设置了预装载值arr和比较值ccr后,可以通过配置PWM模式,使定时器CNT计数值超过ccr后产生有效信号,并通过配置相应寄存器设置有效信号是1还是0,而配置PWM的输出方式,具体原理信息可以参考原子哥的视频,也可以参考中文参考手册的14.4.7内容。
在程序中,我们使用库函数进行配置,配置步骤如下: 使能定时器和相关外设引脚时钟 :RCC_APBxPeriphClockCmd()配置IO口为复用输出模式(查手册8.1.11)配置成相应的模式(复用推挽输出)初始化定时器:TIM_TimeBaseInit()初始化TIM2 Channe1234 PWM模式:TIM_OCxInit()使能OCx通道的预装载寄存器:TIM_OC1PreloadConfig()使能时钟:TIM_Cmd()在主函数中配置占空比进行调速:TIM_SetCompare1() 总结 原理部分我讲的很简略,我也是看原子哥的视频学,如果大家对单片机控制原理有学习需要可以私我进群领资料哦~ 希望上述内容能够对大家有所帮助,如果有不明白的小伙伴欢迎提问,后续也会持续分享学习和进阶的方法。 今天的分享就到这里啦,别忘了点赞加收藏哦~有相关问题可在评论区提问哦~
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/55405.html