stm32_霍尔编码器

编码器原理

在这里插入图片描述
在这里插入图片描述
原理简单来说,编码器上有以一个N,S交错排布的磁盘,当轮子转动,从而带动这个磁盘时,N,S极会移动,经过霍尔传感器,根据霍尔效应,N极和S极不同磁极加在这个霍尔传感器上时,电子会向不同的方向偏转,从而输出不同的电平,N极经过时,会输出高电平,S极会输出低电平。一般情况下会有A,B两个霍尔传感器,就如下图所示。

基于stm32库函数版部分代码说明

TIM_EncoderInterfaceConfig
(TIM2,TIM_EncoderMode_TI12,TIM_ICPolarity_Rising,TIM_ICPolarity_Rising);
这是定时器部分有编码器的相关函数
TIM2:定时器2
TIM_EncoderMode_TI12:T1和T2的每个跳变沿均计数。
TIM_ICPolarity_Rising:不反相。
TIM_ICPolarity_Rising:不反相。
在这里插入图片描述
在这里插入图片描述

根据两个输入信号(TI1&TI2)的跳变顺序,产生了计数脉冲和方向信号。
依据两个输入信号的跳变顺序,计数器向上或向下计数,同时硬件对TIMx_CR1寄存器的DIR位进行相应的设置。
不管计数器是依靠TI1计数、依靠TI2计数或者同时依靠TI1和TI2计数。
在任一输入端(TI1或者TI2)的跳变都会重新计算DIR位。

【正反转】
正转:T1超前T2相位90度。
反转:T1滞后T2相位90度。

【模式】
TI1模式:在T1的所有边沿 计数。
TI2模式:在T2的所有边沿 计数。
TI12模式:在T1和T2的所有边沿 计数。

推荐视频

推荐看一下b站上一位up主讲的霍尔编码器,比较详细
https://www.bilibili.com/video/BV1ap4y1H7e4?share_source=copy_web

总结

以上是我参考了相关视频和一些文章,自己的一些学习总结,如有写的不正确,还请大佬指教改正

  • 2
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在STM32CubeMX中实现霍尔计数,您可以按照以下步骤进行操作: 1. 打开STM32CubeMX并创建一个新的工程。 2. 在Pinout & Configuration选项卡中选择GPIO引脚,并将其配置为输入模式。这些引脚应该连接到霍尔传感器的输出引脚。 3. 在Configuration选项卡中,配置您选择的定时器。您需要设置计数模式为增量模式,并选择适当的时钟源和预分频器来满足您的需求。 4. 启用输入捕获模式,并选择适当的触发器边沿(上升沿或下降沿)。 5. 在代码生成选项卡中,选择生成代码并导出到您的开发环境中。 一旦您完成了上述步骤,您可以在生成的代码中实现霍尔计数。以下是一个示例代码片段,展示了如何使用输入捕获来实现霍尔计数: ```c // 定义变量 uint32_t hallCount = 0; // 输入捕获回调函数 void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) { // 每次捕获触发时增加霍尔计数 hallCount++; } int main(void) { // 初始化定时器和输入捕获 while (1) { // 在适当的时机读取霍尔计数值 uint32_t currentHallCount = hallCount; // 执行其他操作 } } ``` 上述代码片段中,输入捕获回调函数会在每次捕获触发时增加霍尔计数。在主循环中,您可以在适当的时机读取霍尔计数值,并根据需求进行后续处理。 请注意,上述代码是一个简单的示例,您可能需要根据您的具体硬件和应用情况进行适当的调整。同时,代码中使用了HAL库的函数,如果您使用的是其他库或裸机编程,需要相应地进行修改。 希望这可以帮助您开始在STM32CubeMX中实现霍尔计数!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值