stm32基础项目 您所在的位置:网站首页 基于stm32的智能小车 stm32基础项目

stm32基础项目

2023-12-04 02:55| 来源: 网络整理| 查看: 265

前言: 我们的智能车一共有三个轮子,两个轮子是通过电机控制的,还有一个轮子只起到固定作用。让电机转动起来很容易,给它通上电就行,难的是控制电机转动的速度和电机转动的圈数。 转弯的实现: 当两个电机转动速度相同时,小车就会直行;当左电机比右电机转动快时,小车就右转;当右电机比左电机转动快时,小车就左转。这个现象你可以想象一下,不难理解。 在这里插入图片描述 图中用红线圈起来的就是起固定作用的万向轮,手里抓着的就是直流电机。 一、让电机转起来 我们这里使用的是直流电机,常见的还有步进电机,两种电机的原理不同,驱动方式也不同。 直流电机两端接上电源就能转动,但电压要在电机承受范围内,不然容易烧坏电机。 直流电机就两根线,这里简称为A线、B线。 当你把A线接正极,B线接负极,电机就会转,当你把A线接负极,B线接正极,电机就会往相反的方向转,这就对应着小车的前进和后退行为。 我们一般不将电机直接连在GPIO引脚上,而是通过一个电机控制芯片来将stm32和电机连接起来。 常用的电机驱动芯片有很多,这里简单介绍一下TB6612。 在这里插入图片描述 这一个芯片可以控制A、B两个电机,AIN1 AIN2就是电机A作为输入的两根信号线,我们接到stm32的GPIO引脚上,AO1 AO2就是电机A作为输出的两个信号引脚,我们接到直流电机上,VCC、GND就不说了,重点关注一下PWMA和PWMB,这是电机驱动的重点所在——速度控制。 我们先小结一下: 1、电机就是用电器,通电它就转 2、为了安全,我们一般不直接将stm32和电机连接,而是在它们之间添加了一个电机控制芯片 3、控制直流电机“前进”或“后退”,只要调换正负极改变电流方向即可 二、让电机速度受控 让电机速度受控,说白了,电机的功率大它就转的快,功率小它就转的慢;再说得更白一点,直流电源电压越高电机就转的越快,电压越小电机就转的越慢。 通过PWM控制电机转速,你可以理解为就是改变了电压这个变量。 PWM是什么? PWM(Pulse Width Modulation)脉冲宽度调制,为了直观地表达清楚,画张图: 在这里插入图片描述 上图中,两根红色虚线之间就是一个周期T,第一根蓝线,在每个周期内状态稳定不变化;但第二根蓝线,在每个周期内高低电平所占时间各位一半。 “脉冲宽度调制”就是说,我们可以随意调整每个周期内高低电平所占时间的比例,这里的“宽度”其实就是持续时间。 你可能还是不理解,通过改变每个周期内高低电平所占时间的比例就能让电机变速吗?就以上面这张高低电平都占50%的图为例,你可以理解成在这种方式下输出的平均电压其实是(0+3.3)/2,电压变了,功率也就变了,电机转速也就变了,这里和高数里的极限思想有些许异曲同工之妙。 与PWM相关的还有一个名词叫“占空比”,占空比指的是“有效电平”在一个周期内所占时间的比例,这个“有效电平”可以是高电平,也可以是低电平,这一点要注意。 当我们把有效电平定义为高电平时,当占空比从0%慢慢变化到100%,那么电机的速度就会是逐渐增大的;反之,电机转速逐渐减小。 PWM的调制实现其实是定时器应用的一种体现方式,这里不再细致展开了,如果你对PWM的原理还有疑惑,麻烦移步传帮带公众号——“游侠嵌入式”,此处就不展开了。 三、动手实践 这里仅贴出部分重要代码

void Motor_Init(void) { //设置PWM的定时器输出引脚模式 RCC->APB2ENR |= 1ODR |= 1ODR|=2ARR=arr; //设定计数器自动重装值 TIM1->PSC=psc; //预分频器设置 TIM1->CCMR1|=7


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有