霍尔编码器

想用一个定时器实现测速但是 TIM_Period ARR 过程中要读取cnt并置零 所以要两定时器

可用是stm32的霍尔编码功能;AB项那个上升沿先到判断cnt加减;

TIM_EncoderInterfaceConfig(TIM3,TIM_EncoderMode_TI12,TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);检查全上升沿

无所谓方向问题实验一下就行了而且无法确认霍尔编码器那个的AB项(我菜我也不明白)

void  Speed_Init(void)
{GPIO_InitTypeDef  GPIO_Struct;TIM_TimeBaseInitTypeDef  TIM_Base_Struct;TIM_ICInitTypeDef TIM_IC_Struct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);GPIO_Struct.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Struct.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;GPIO_Init(GPIOA,&GPIO_Struct);TIM_DeInit(TIM3);//预防TIM_Base_Struct.TIM_Period = 6000;TIM_Base_Struct.TIM_Prescaler = 0;TIM_Base_Struct.TIM_ClockDivision = TIM_CKD_DIV1;TIM_Base_Struct.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM3, &TIM_Base_Struct);TIM_EncoderInterfaceConfig(TIM3,TIM_EncoderMode_TI12,TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);//霍尔编码TIM_IC_Struct.TIM_ICFilter = 9;TIM_ICInit(TIM3, &TIM_IC_Struct);TIM_Cmd(TIM3, ENABLE);}static  void  NVIC_Tim6_Init(void)
{NVIC_InitTypeDef  NVIC_Tim6_Struct;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);NVIC_Tim6_Struct.NVIC_IRQChannel = TIM6_IRQn;NVIC_Tim6_Struct.NVIC_IRQChannelPreemptionPriority = 1;NVIC_Tim6_Struct.NVIC_IRQChannelSubPriority = 4;NVIC_Tim6_Struct.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_Tim6_Struct);
}void  TIM6_Init(void)
{TIM_TimeBaseInitTypeDef  TIM_Base_Struct;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE);TIM_DeInit(TIM6);//预防TIM_Base_Struct.TIM_Period = 999;TIM_Base_Struct.TIM_Prescaler = 71;//1msTIM_TimeBaseInit(TIM6, &TIM_Base_Struct);TIM_ClearFlag(TIM6, TIM_FLAG_Update);TIM_ITConfig(TIM6, TIM_IT_Update, ENABLE);TIM_Cmd(TIM6, ENABLE);NVIC_Tim6_Init();}

利用ARR重装可以实现正负的判断极短的时间内计数不可能太高

#include "usart.h"
#include "tim_speed.h"
#include "delay.h"
int count = 0;
u16  time = 0;
float speed = 0;
int main (void)
{Speed_Init();USART_Config();delay_init();TIM6_Init();while(1){if(time == 500){count = (short)TIM3 -> CNT;  TIM3 -> CNT=0;if(count<5000){speed = count/1540*3.1415*2*0.03/(time/1000);printf("%5.3f\r\n",speed);}else {speed = (6000-count)/1540*3.1415*2*0.03/(time/1000);//由于电机年代久远搞不清楚减速比自己手动转一圈多次测试大概在1540printf("-%5.3f\r\n",speed);}time = 0;}}}
void TIM6_IRQHandler(void)
{if ( TIM_GetITStatus( TIM6, TIM_IT_Update) != RESET ){    time++;TIM_ClearITPendingBit(TIM6 , TIM_FLAG_Update);         }
}

学习中。。。。。仅作参考。

stm32霍尔编码器相关推荐

  1. stm32霍尔编码器测速(标准库函数版)

    基本原理:霍尔编码器是有霍尔马盘和霍尔元件组成.霍尔马盘是在一定直径的圆板上等分的布置有不同的磁极.霍尔马盘与电动机同轴,电动机旋转时,霍尔元件检测输出若干脉冲信号,为判断转向,一般输出两组存在一定相 ...

  2. stm32正交编码器 原理图_ROS机器人平台STM32底层控制部分

    2.6 ROS小车STM32底层控制代码 经过之前几篇文章,我相信大家一定对下面这些模块都已经有些了解了.今天,我们将编写ROS小车STM32单片机底层控制的最后一篇文章.我们将一起按照之前的软件流程 ...

  3. STM32单片机—编码器测速

    一.实验工具:STM32开发板一块.L298N电机驱动.直流电机 以及用到的软件(STM32CubeMX.keil4) 二.编码器原理 1.概述:编码器是一种将角位移或者角速度转换成一串电数字脉冲的旋 ...

  4. STM32 CubeMax 编码器电机测速 原理与实现

    编码器电机测速 部分参考:https://blog.csdn.net/lzzzzzzm/article/details/119416134 其他参考部分见图片水印 1. 编码器种类及原理 常见的编码器 ...

  5. 【32单片机学习】(3)霍尔编码器减速直流电机控制及测速

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 1.实验现象 2.实验接线及原理图 接线图 原理图 电机接线图 3.代码部分 1.主函数 main.c 2.按键部分 ke ...

  6. STM32 定时器编码器模式时,如何理解编码器计数

    编码器的使用 增量式编码器倍频技术 增量式编码器输出的脉冲波形信号形式常见的有两种: 一种是占空比 50% 的方波,通道 A 和 B 相位差为 90°: 另一种则是正弦波这类模拟信号,通道 A 和 B ...

  7. 【MSP432电机驱动设计—下篇】霍尔编码器测车轮运行距离与M/T综合公式法测速概念

    开发板型号为MSP432P401r 今日得以继续我的MSP432电赛速通之路,本篇使用MSP432编程学习霍尔编码器M/T公式法测速概念,最终实现用外部中断方式测得小车行走路程,文章学习讲解原理.附上 ...

  8. 霍尔编码器电机与TB6612电机驱动相关学习

    简单粗暴的说下,电机-电机驱动-单片机该怎么连线. 先简单认识一下霍尔编码器电机 以上选用的平衡小车之家的,市面上基本都跟这个差不了多少. 电机线-+这两个引脚 与电机驱动相连接 来控制电机的正反转( ...

  9. 记录智能车自制霍尔编码器(PCB篇)

    前文论述了智能车独轮车组自制编码器的可行性,昨天下单编码器今天就到货了,在此记录一下自制(抄板)年轻人的第一款编码器的历程. 到货的编码器 这种商品店家自然是不可能提供原理图和PCB,能有尺寸图已经是 ...

  10. 【MSP432电机驱动学习—上篇】TB6612带稳压电机驱动模块、MG310电机、霍尔编码器

    所用控制板型号:MSP432P401r 今日终于得以继续我的电赛小车速通之路: 苏轼云   "  素面常嫌粉涴 , 洗妆不褪朱红. " 这告诫我们不能只注重在表面粉饰虚伪的自己,要 ...

最新文章

  1. 基于“分布 —— 多分布” 的点云配准方法
  2. rpm包备份命令linux,RPM常用命令介绍 - Linux就该这么学的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. 【软件工程】填空题题库
  4. mysql Backup recovery
  5. 模糊查询一--视图写sql
  6. 2G、3G即将退出群聊;全国携号转网就要实现了;5G商用列车已发车...
  7. 理解Mysql prepare预处理语句:mysql_stmt_init(MYSQL *mysql);
  8. 【论文解读】如何在只有词典的情况下提升NER落地效果
  9. 论文阅读笔记(二)——Xception
  10. 暑假集训-7.31总结
  11. BackgroundWorker类的使用例程
  12. Linux入门基础命令教程
  13. Linux系统升级及内核版本升级
  14. 【考研英语语法】限定词详细总结
  15. 后氧传感器正常数据_怎么看氧传感器数据流
  16. 百万年薪python之路 -- 软件的开发规范
  17. android视频自动旋转,Android 使用PLDroidPlayer播放网络视频 根据视频角度自动旋转...
  18. 写首小诗表达我的孤独,独自一个人熬着那些只属于我一个人的夜
  19. Reason Studios Reason 12 v12.2.5 WiN 音乐制作软件和机架插件
  20. 文本识别 OCR 浅析:特征篇

热门文章

  1. 15个最流行的GitHub机器学习项目
  2. 在Chrome上安装ie tab插件
  3. spring三大核心
  4. WIFI6 5G信道、频宽对应关系
  5. 微信好友只有昵称没有微信号_没微信号能找到人吗 只有微信昵称怎么找人
  6. NOI题库答案(1.3 编程基础之算术表达式与顺序执行)
  7. 可汗学院:宏观经济学笔记
  8. 开源免费CRM云端的客户管理系统SuiteCRM简介
  9. 做中学之五笔输入法实践教程
  10. java 设置图标_设置java窗口的图标