STM32应用开发实践教程:智能小车电机测速模块的应用开发

      最后更新:2022-07-14 13:43:19 手机定位技术交流文章

      3.4.1任务分析
      该任务要求设计一种可以实现以测量智能拖车电动机的速度的应用程序,具体点如下。
      把电动机当作测量速度的对象.
      2支持使用4个键的键控,功能如下:
      控制电动机的旋转,如果电动机目前处于停止状态,并按键1使它旋转,如果电动机目前处于停止状态
      于正转或反转状态,按下 Key1 则使之停止;
      键2控制电动机的反转,如果电动机目前处于停止状态,按键2使它反转,如果电动机目前处于停止状态
      于正转或反转状态,按下 Key2 则使之停止;
      控制电动机速度减速,如果电动机正在旋转,则按正确的方向减速,反之亦然;
      Key4 控制电动机增加速度,如果电动机正在旋转,它将加速在正确的方向,反之亦然。
      该系统可通过串行通信将当前的“机器速度”和“编码计数器”传输到顶层机器的串行调试
      助手。
      从该任务的要求分析中得知,实现机器速度测量功能有两个技术问题:一是在机器上安装编码器;
      其次,STM32F4系列微控制器的计时器配置为输入捕捉模式,并测量编码器的输出脉冲。
      机器的速度信息在转换后得到.
      这项任务所涉及的知识点是:
      编码器的工作原理;
      测量直流电动机速度的方法;
      STM32F4系列微控制器计时器的编程配置方法到编码器接口模式。
      3.4.2知识链接
      1.编码器
      (1)什么是编码器
      编码器(Encoder)是一种用于运动控制的传感器。它利用光电转换或磁电转换的原理
      检测物体的机械位置及其变化,并将此信息转换为后传输电报,并转发给各种运动控制器
      把角移转换成电报的编码器称为“编码盘”,把直线移转换成电报的编码器称为“编码盘”
      称为“码尺”。
      该编码器广泛应用于机器工具、机器人、电反馈系统等需要精确定位和加速的场合
      测量和控制设备等。 编码器有以下四个常见的应用场景。
      ① 角度测量场景
      汽车驾驶模拟器采用光电编码器作为测量方向盘转角的传感器;重力计采用光电编码器
      该编码器将旋转轴连接到重力测量仪器的补偿钮轴;转矩角度计器使用该编码器来测量转矩角度的变化,例如转矩
      旋转试验机 、 鱼杆扭转试验等;旋转锤冲击试验机使用编码器计算旋转角度变化时的冲击.
      ② 长度测量场景
      测量仪器用滚轮测量物体的长度;拖线位移传感器用传动轮测量物体的长度;连接
      直轴测量方法是将测量仪器与电源装置的主轴连接起来,通过输出脉冲数来测量对象的长度;介质测量方法是
      线性位移信息通过直齿轮、旋转链轮、同步带轮等方式传输。
      ③ 速度测量场景
      线速度测量通过连接编码器与仪表,测量生产线的线速度;角速度测量利用编码器测量电机、
      转轴等的转速。
      ④ 位置测量场景
      机械工具领域应用,记住机械工具(如钻机)的各个坐标位置;自动化控制领域应用,
      控制某一特定地点的电梯 、 电梯等运动.
      (2)编码器的分类
      编码器有许多不同的分类。
      ① 按测量方式分类
      通过测量方法可以将编码器分为旋转编码器和直尺编码器。
      旋转编码器通过测量测量对象的旋转角,将测量的旋转角转换为脉冲信号输出。
      仪表编码器通过测量测量对象的线长,将测量对象的线长转换为脉冲信号输出。
      项目3智能汽车运动控制系统的设计和实现131
      Chapter 3
      ② 按编码方式分类
      编码器可以分为添加编码器、绝对编码器等。
      一个增强编码器通过检测和测量信号中断的数目来扫描一个光信号的光谱仪(连接到一个旋转轴)。
      量来计算旋转角度。
      一个绝对编码器使用光信号扫描光谱仪来确定测量对象的绝对位置,然后取得它
      测量的灰色代码数据被转换成电报,并以脉冲形式输出.
      图3-4-1显示添加编码器和绝对编码器的编码盘。

      3按检测工作原则分类
      根据检测原理,可分为光电编码器、磁电编码器、电感编码器和电容编码器
      其次,介绍了两种常用的编码器(光电编码器和磁编码器)。
      光电编码器是一种结合光、机电和电的数字检测装置,通过光电转换传送到轴上的机上
      仪器位移, 将几何位移转换成脉冲或数字输出.
      磁电编码器(又称霍尔编码器)采用磁阻或者霍尔元件对磁性材料的角度或者位移值进行测
      量与光电检测相比,磁检测具有抗震、防污染等优点。
      图3-4-2显示了光电编码器和磁电编码器的电动机。

      (三)添加光电编码器的工作原理
      本文主要介绍了添加光电编码器的工作原理,图3-4-3显示了添加光电编码器的结构分解。

      从图3-4-3所示,你可以看到机轴装有金属板(也称为“尺度板”)并有孔
      两边有光源和光电元件的光栅。
      码盘转动时,遇到栅格则光可通过,遇到不透光部位则光被遮住。光电元件将“光的有无”
      它被转化为“电报”并通过塑料电路处理,成为A和B的双向脉冲。
      此外,从图3-4-3中可以看到两个路径脉冲A和B具有相差,通常是90°。
      (4)编码器的技术指标
      在图3-4-3的解释中,提到板上雕刻的网格。 在磁盘上雕刻的网格数称为编码器的“部分”。
      单元是“线”,代表磁盘的“每回转脉冲数”。
      表3-4-1显示了特定机器和编码器的参数。

      直流电动机速度测量方法
      通过对上一知识点的学习可知,编码器是直流电机测速模块中必不可少的一部分,它输出 A
      两种路段的相位差为90°脉冲,可以用来反馈机器的运行状态,例如转角、转角速度等。 但两种路段的脉冲
      你不能直接提供相关信息,你需要使用一些方法来收集和处理双向脉冲信号,然后告诉我
      们想要的信息。
      (一)获取编码器输出脉冲的方法
      在数据处理之前,应测量编码器的输出脉冲。 在实际应用中,有四种常见的
      编码器输出脉冲的方式。
      方法1:使用计时器的捕获功能,记录A和B双向脉冲中任何路径的上升和下降。
      这种方法的缺点是,它不能确定机器的旋转方向,因为它只记录在路上的脉冲。
      方法②:使用定时器同时捕获两路脉冲的上升沿或下降沿次数,并判断 A 和 B 两路脉冲之
      然后使用时间延迟来确定机器的旋转方向。
      方法3:将编码器输出脉冲连接到MCU的外部中断线,并配置外部中断线的触发模式
      升沿或下降沿)后,即可对脉冲进行计数。该方法的缺点也是无法判断电机的旋转方向。
      方法4:使用计时器的编码器接口功能,同时记录两条路径的上升或下降脉冲数目,并使用
      MCU硬件自带的功能决定了机器的旋转方向。
      上述四种方法的优点和缺点如下.
      方法4优点是,无需占用断开的资源来测量脉冲,可以确定机器的转动方向。
      使用MCU硬件处理减少了程序设计的工作量,因此,如果您使用MCU与编码器接口
      (例如STM32F4系列微控制器) 此方法应选择。
      方法1由于存在功能不足的问题(即无法确定机器转动方向),优先级较低,
      另一种方法是方法2。 但是,使用方法2,如果要用程序确定机器的转动方向,则需要进行编程
      工作量较大。
      方法3适用于没有编码接口和弱捕获功能的MCU(例如51系列微控制器)。
      方法3由于其稳定性低,存在功能不足的问题,因此其选定的优先次序低。
      如上文所述,在使用STM32F407ZGT6模型的MCU时,应选择方法4实现编码器输出
      脉冲的捕获。
      (二)编码器输出脉冲计数值与电动机速度值的转换
      在编码器输出脉冲的捕获完成后,应使用相应的转换方法将计数值转换为机器的角速度
      在工业控制系统中,最典型的测量直流电动机转速的方法是频率法(M法),
      测周期法(T 法)以及上述两者结合而得的 M/T 测速法。
      M方法在单位时间测量脉冲数,并将其转换为信号频率。 如果测量开始时,该方法在测量过程中使用
      如果启动位置不正确选择,就会发生一个脉冲误差。 当速度降低时,脉冲数在单位时间下减少,误差是
      的比例会变大,所以 M 法适用于测量高速。若要降低测量的速度下限,可以增加编码器线数或
      延长测量单元时间以最大化一次采集的脉冲数。
      T法测量两个脉冲之间的时间并将其转换为信号周期。 如果测量的起点是
      不正确选择将导致基本时钟的误差。 当速度较高时,测量时间较短,误差的百分比较高
      T法适用于测量低速。 为了增加速度测量的上限,你可以减少编码器中的脉冲数或使用更精确的
      一个精确的时间单位,使测量的时间值尽可能大。
      M 法与 T 法各具优劣。考虑到编码器线数不能无限增加、测量时间也无法太长(须考虑实时
      性)、计时单位也不能无限小,单凭 M 法或 T 法无法实现全速度范围内的准确测量。由此产生了
      M/T速度测量方法与T方法相结合:低速时间测量周期,高速时间测量频率。 研究机构也基于不同的应用
      该领域优化了M/T测量方法,并形成了各种形式的M/T测量方法。
      3.STM32F4系列微控制器计时编码器接口模式
      STM32F4系列微控制器计时器的编码接口模式可以通过研究以前的知识点来学习
      以十分方便地实现直流电机的测速。本小节着重对编码器接口模式的工作原理与编程配置方法
      进行介绍。
      在STM32F4系列微控制器的计时器中,TIM1到TIM5和TIM8都有编码接口和其他计时器
      该计时器没有该功能,图3-4-4显示了计时器编码器接口的硬件图。

      (1)编码器接口硬件框架图分析
      从编码器接口的两个路径输入分别来自TI1FP1和TI2FP2,如图3-4-4右侧的影子所示
      信号。TI1FP1 和 TI2FP2 是 TI1 与 TI2 经过输入滤波器和边沿检测器后的信号。实际应用中一般
      没有滤波和逆相,即TI1FP1=TI1,TI2FP2=TI2.
      (二)编码器接口模式的工作原理
      编码器接口基于输入TI1FP1和TI2FP2信号转换序列生成测量脉冲和方向信号
      作方式与流程如下:
      1配置TI1FP1和TI1、TI2FP2和TI2之间的映射关系,以及是否配置逆相;
      ② 配置编码器的计数方式(仅在 TI1 或 TI2 边沿处计数,或者同时在 TI1 和 TI2 处计数);
      3 CEN = "1" (用于电源表的TIMx_CR1);
      4编码器接口确定两个输入信号之间的相位关系,以及TIMx_CR1的硬件DIR位数(该位数反映了电动机)
      作出相应修改;
      5根据DIR位置的编码器接口,计数器相应增加(机器旋转)或减少(机器逆转)计数器,
      计数器在0和TIMx_ARR值之间连续计数,因此在机器启动之前必须配置TIMx_ARR值;
      6有信号转换的任何输入(TI1或TI2)将重新计算DIR位数;
      计量器将根据添加编码器的速度和方向自动修改其值,该编码器的值总是代表当前编码器
      位置。
      表 3-4-2 概述了计数方向和编码器信号之间的各种可能组合。

      下面以表3-4-2和编码器接口模式中的计数器的工作例一起说明(如图3-4-5所示)。

      图3-4-5说明了计数器信号的产生和方向控制,以及如何选择输入的双向同时振动
      补偿:编码器接口的工作参数配置如下。
      CC1S="01" (TIMx_CCMR1, TI1FP1映射到TI1)。
      CC2S = "01" (TIMx_CCMR2, TI1FP2映射到TI2)。
       CC1P=“0”,CC1NP=“0”,且 IC1F=“0000” (TIMx_CCER,TI1FP1 未反相,TI1FP1=TI1)。
       CC2P=“0”,CC2NP=“0”,且 IC2F=“0000” (TIMx_CCER,TI1FP2 未反相,TI1FP2=TI2)。
       SMS=“011”(TIMx_SMCR,两个输入在上升沿和下降沿均有效)。
      CEN = "1" (TIMx_CR1,功率计)。
      下面是图3-4-5中的符号的工作分析。
      数字1:沿TI1上,看相对信号TI2的电压水平低,检查表3-4-2,计数器增加。
      数字2:沿TI2上,看相对信号TI1的电位高,检查表3-4-2,计数器增加。
      数字3:在TI1下,看相对信号TI2的电位高,检查表3-4-2,计数器增加。
      数字4:在TI2下游,看相对信号TI1的电压水平低,检查表3-4-2,计数器增加。
      数字5:沿TI1上,看相对信号TI2的电压水平低,检查表3-4-2,计数器增加。
      第六:在TI1下游,看TI2的相对信号水平低,检查表3-4-2,计数器下降。
      第七号:沿TI1上,看相对信号TI2的电压水平低,检查表3-4-2,计数器增加。
      数字8:在TI1下游,看TI2的相对信号水平低,检查表3-4-2,计数器下降。

      (3)编码器接口模式的编程和配置步骤
      掌握了计时器编码器接口的硬件架构及其工作原理后,我们可以开始学习如何确定
      计时器的编码接口模式被编程用于计算输入TI1FP1和TI2FP2的两个信号转换序列
      数与方向判断。本任务使用测频率法(M 法),即测量单位时间内的脉冲数后换算成频率,具体
      编程配置步骤如下。
      1 配置编码器接口输入通道GPIO工作模式
      例如,TIM3的编码器输入通道(TI1和TI2)的GPIO端口(PC6和PC7)被配置用于重用
      具体配置方法指PWM信号输出通道GPIO端口的配置。
      2配置计时器的基本工作参数
      该步骤通过调用TIM_TimeBaseInit()函数来配置时间表基本初始化结构(TIM_Time-Init)。
      BaseInitTypeDef)”的各成员变量来完成,具体参考任务 3.1 的相关内容。
      该步骤主要关注调度器预定频率转换器的频率因子配置和自动重载注册表的值,该注册表通常是非分离器配置的
      频率, 自动重载值为65535, 配置如下:
      Tim_TimeBaseStructure.TIM_Period = 65535; // 配置TIMx_ARR值
      Tim_TimeBaseStructure.TIM_Prescaler = 0; // 配置预示器的频率因子
      3将计时器从模式设置为“编码模式”并配置工作参数
      从模式控制注册表(TIMx_SMCR)设置SMS位到"011",使计时器在"编码"中工作
      器模式 3”,并在 TI1FP1 和 TI2FP2 的边沿处都计数。编码器接口的其他工作参数可参照图 3-4-5
      配置一个工作实例是在实际应用中最常见的配置之一。
      此配置涉及更多的注册表,但STM32F4标准的外部库也提供了库函数TIM_EncoderInterfaceConfig()
      为完成计时器“编码模式”的配置,库函数的原型定义如下:
      void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, uint16_t TIM_EncoderMode,
      uint16_t TIM_IC1Polarity, uint16_t TIM_IC2Polarity);
      使用实例:
      TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI12,
      TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
      在上面的例子中,参数"TIM_EncoderMode_TI12"将配置在TI1和TI2边缘测量的编码接口
      数值、参数"TIM_ICPolarity_Rising"配置 TI1FP1和TI2FP2是非逆的,此外,还配置了库函数
      TI1FP1和TI1、TI2FP2和TI2之间的映射关系以及具体的实现方法可以在STM32F4标准的外部库源代码中找到。
      4 计算处理和速度转换函数的编译
      在编码接口模式下运行的时针3的实例,采用M法计量单位时间的脉冲数的具体实现流
      程如下:
      首先收集计时器3号的数目;
      经过一定时间间隔(通过中断时间表6的更新实现),重新收集时间表3的计数值;
      将此计算的值降到最后的计算,得到差值;
      由于计数值可能溢出,例如增加计数值到65535或减少计数值到0,所以必须输入差额
      排序处理(区分增加和减少数额的两种情况);
      根据电流电动机减速率、编码分辨率等参数,将“值”转换为“电动机的速度”。
      配置另一个计时器以限制采样时间间隔
      通过研究机器速度测量方法,我们知道M法需要在单位时间测量脉冲数。 当计时器配置时
      在编码器接口模式下,它与使用方向选择的外部时钟等价,因为时钟不能实现基本
      定时功能。因此必须配置另一个定时器以实现定时功能,限定采样的时间间隔。如使用定时器 6,
      配置它以内部计时器工作,计数器以增量计数模式工作,并中断更新。 具体配置方法和3.1
      现在不再这样了。
      为计时器编译另一个中断服务函数
      在中断服务函数中,调用步骤4的计算处理和速度转换函数实现计算的电单位时间
      转速的功能。

      3.4.执行第三项任务
      1.硬件接线
      图3-4-6显示了一个通用编码器载机的外部连接。

      在图3-4-6中,你可以看到电流电动机有六个外部连接器,安装的编码器可以输出A和B
      相脉冲, 连接的其他4根分别是: 电源+, 电源-, 编码器电源和编码器地面线.
      表3-4-3所示的电动机测量模块硬件接口表及直流电动机(编码器)和DRV8848电动机的编制
      驱动器连接到STM32F4系列微控制器。

      2.电动机速度测量模块的流程图
      图3-4-7是电动机速度模块的程序过程,图3-4-7(a)是主要程序过程,图3-4-7(b)是
      TIM6计时器中断了进程。

      3.编码器接口功能配置程序用于计时器3
      复制任务3.这个项目被重新命名为任务3."4_Timer_Encoder_MotorSpeed".in
      在“Timer folder.c”和“timer 3.two”中的“新时间表3”文件中,将它们添加到项目中,并配置标题
      件包含路径。
      这个配置步骤由三个子进程组成:
      配置编码器接口输入通道GPIO工作模式;
      配置计时器的基本工作参数;
      从模式配置计时器为“编码模式”并配置工作参数。
      在“c”文件中输入下列代码:

      4.计算处理和速度转换函数的汇编
      继续在“c”文件中输入下列代码:

      上面的代码段第11至22行处理计数值的上游和下游溢出,而第27行将计数值转换为电动机
      旋转速度:由于在TI1和TI2中捕捉上下信号,它相当于对数值的“四倍频率”处理,
      因此,在计算的末尾,应省略4。 此外,27行中的"2"表示编码器上的栅格为2,"80"表示电源
      发动机的减速率为1:80,最终的 motorSpeed值是减速器输出后发动机的转速,单位为“r/s”。
      在“h”文件中输入下列代码:

      5.配置另一个计时器来限制采样时间间隔和编译计时器中断服务功能
      在"c"文件中输入下列代码:

      TIM6用于限制抽样间隔。 为了确保每个抽样时间的准确性,TIM6配置在完成后暂时暂停
      使能。特别注意:上述代码段的第 21 行与第 22 行代码的先后顺序不能错,第 30 行代码暂时不
      使能 TIM6。
      上面代码段的42行代码用于调用数值处理和速度转换函数,当前行代码每1秒执行一次。
      6.写主函数
      在“c”文件中输入下列代码:

      在写Key_Process()函数时,应特别注意“启动机器”和“停止机器”的过程,即“启动机器”的过程。
      代码段的第 52~55 行、第 60~64 行、第 73~76 行和第 81~85 行。
      7.观察试验现象
      正确编译应用程序后,下载并运行在开发板上,并打开上层机上的串行调试助理,如图3-4-8所示
      显示的发动机速度显示了实验现象.

      图3-4-8(a)显示转动机的转速,图3-4-8(b)显示转动机的转速。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/29605.html

          热门文章

          文章分类