中秋节回家去了,今天更新电机控制那块。 为了让平衡车立起来,最先做的事就是让电机转起来了,而且是要能控制方向,转速的。那么这就需要我们来配置两路PWM了,要求是互补,插入死区,随时更新占空比。这样就能控制正反转和速度了。虽然很多人都懂怎么去配置PWM,但是我们也会有不少新手在学习,那么我在这里还是给大家啰嗦下,我会尽量详细。那什么叫做PWM,互补,死区,占空比。PWM,叫脉冲宽度调制,它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中(这个是百度说的)。用我自己的话来说就是一组高低电平的组合,类似正弦波(大家都知道y=sinx的波形。)只不过我们常用的PWM是方波类型的。在一个周期内,调节高电平占整个周期的比例叫做调节占空比。
常用PWM
互补指的是两条PWM输出你高我低,此起彼伏的的波形。
互补的PWM 那什么叫死区呢,,其实死区的由来,是根据电机驱动MOS来的,MOS的开关与内部寄生电容关系比较大,电机是通过MOS搭建的H桥来驱动的。H桥分为上桥和下桥。 可以看到电机正常驱动的时候电流流动方向是按照黄线和红线的。在无死区的PWM驱动下电流流动方向是蓝色的,这将导致上下桥同时导通。结果是灾难性的,Q1,Q2会直接短路,轻则被过流保护,重则直接烧毁。 这个便是带了死区ts的互补的PWM输出。 在stm32里面只有高级定时器才有这个功能。基础部分先啰嗦这么多。接下来便是重要部分代码贴出来了。 首先是定时器TIM1的初始化部分: 由于不知道怎么贴代码,所以采用了图片的方式,只要能看懂就好。 当然在这里大家必须直接采用两个IO口来驱动,只需要保证两个IO翻转有一个死区即可,实际上咱们平衡车的电路设计也是单独的。并未按照互补的TIM来设计。所以以下方法是最实用的。 分别采用了TIM1的不同通道来控制PWM,而不是互补的。
这个便是单独用IO控制电机的方式。到这里,平衡车的正反驱动就OK了。下期更新编码器的速度捕获,然后接着是两个电机不同速度的算法调节。先说这么多了。
|