![基于STM32的正交编码器接口应用含源程序_第1页](http://file4.renrendoc.com/view/2353d7c30170d555f556bbf3947a1640/2353d7c30170d555f556bbf3947a16401.gif)
![基于STM32的正交编码器接口应用含源程序_第2页](http://file4.renrendoc.com/view/2353d7c30170d555f556bbf3947a1640/2353d7c30170d555f556bbf3947a16402.gif)
![基于STM32的正交编码器接口应用含源程序_第3页](http://file4.renrendoc.com/view/2353d7c30170d555f556bbf3947a1640/2353d7c30170d555f556bbf3947a16403.gif)
![基于STM32的正交编码器接口应用含源程序_第4页](http://file4.renrendoc.com/view/2353d7c30170d555f556bbf3947a1640/2353d7c30170d555f556bbf3947a16404.gif)
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-. z基于STM32的正交编码器接口应用本设计应用了ST公司的最新单片机STM32完成。STM32应用的是ARM 32位的Corte*-M3 CPU,最高72MHz工作频率,单周期乘法和硬件除法,高速的运行速度,可以保证编码器高转速条件下的高速脉冲依旧能够被准确的计数。多达7个定时器,3个16位定时器,每个定时器有多达4个用于输入捕获/输出比拟/PWM或脉冲计数的通道和增量编码器输入。因此只要对MCU进展配置之后,MCU只需要少量的中断程序,就可以方便的完成对编码器的方向和角速度的运算。STM32单片机工作在3.3V下。拥有部8M晶振,可以通过锁相环倍频到48M部晶振由于稳定度不够,只能倍频
2、到48M。采用标准的JATGE接口进展程序的烧录和调试。采用一块lm1117-3.3V作为芯片的稳压电源。LM1117为一块LDO低压差线性稳压器,输入最低为3.3+0.7=4v用一块LCD5110手机屏作为显示设备,可以显示输出电压以及当前状态。液晶屏参数为72*48,点阵式,使用一个驱动库作为支持,方便开发,工作在3.3V电压下,与单片机相适应。耗电极低,小于1MA,背光耗电为20MA。采用USB接口与编码器连接,线序定义为V+,A相,B相,GND,正好将USB的所有连线用完,可以同时完成给编码器提供电力以及返回信号的功能。同时MINIUSB接口良好的物理连接特性也保证了应用的稳定性。由于
3、编码器为NPN集电极输出,所以需要在信号线上提供一定的上拉电阻。所使用的编码器为远征牌,200线转一圈输入200个脉冲,AB 两相,最大转速200rad/s,输入电压可以为5到18V编码器部带有稳压芯片。STM32F10*正交编码器接口详述STM32F10*的所有通用定时器及高级定时器都集成了正交编码器接口。定时器的两个输入TI1和TI2直接与增量式正交编码器接口。当定时器设为正交编码器模式时,这两个信号的边沿作为计数器的时钟。而正交编码器的第三个输出机械零位,可连接外部中断口来触发定时器的计数器复位。2.1 定时器正交编码器接口框图图2:定时器正交编码器接口2.2 功能描述选择编码器接口模式
4、的方法是:如果计数器只在TI2的边沿计数,则置TIM1_SMCR存放器中的SMS=001;如果只在TI1边沿计数,则置SMS=010;如果计数器同时在TI1和TI2边沿计数,则置SMS=011。通过设置TIM1_CCER存放器中的CC1P和CC2P位,可以选择TI1和TI2极性;如果需要,还可以对输入滤波器编程。两个输入TI1和TI2被用来作为增量编码器的接口。参看表1,假定计数器已经启动(TIM1_CR1存放器中的CEN=1),则TI1FP1或TI2FP2上的有效跳变作为计数器的时钟信号。TI1FP1和TI2FP2是TI1和TI2在通过输入滤波器和极性控制后的信号;如果没有滤波和变相,则TI
5、1FP1=TI1,TI2FP2=TI2。根据两个输入信号的跳变顺序,产生了计数脉冲和方向信号。依据两个输入信号的跳变顺序,计数器向上或向下计数,因此TIM1_CR1存放器的DIR位由硬件进展相应的设置。不管计数器是对TI1计数、对TI2计数或者同时对TI1和TI2计数。在任一输入(TI1或者TI2)跳变时都会重新计算DIR位。2/7应用笔记STM32F10* 正交编码器接口编码器接口模式根本上相当于使用了一个带有方向选择的外部时钟。这意味着计数器只在0到TIM1_ARR存放器中自动装载值之间连续计数(根据方向,或是0到ARR计数,或是ARR到0计数)。所以在开场计数之前必须配置TIM1_ARR
6、;同样,捕获器、比拟器、预分频器、周期计数器、触发输出特性等仍工作如常。编码模式和外部时钟模式2不兼容,因此不能同时操作。在这个模式下,计数器依照增量编码器的速度和方向被自动的修改,因此,它的容始终指示着编码器的位置。计数方向与相连的传感器旋转的方向对应。表1列出了所有可能的可能的组合,假设TI1和TI2不同时变换。表1:计数方向与编码器信号的关系一个外部的增量编码器直接和MCU连接不需要外部接口逻辑。但是,一般使用比拟器将编码器的差动输出转换到数字信号,这大大增加了抗噪声干扰能力。编码器输出的第三个信号表示机械零点,可以连接到一个外部中断输入,触发一个计数器复位。/*/编码器库函数/操作环境
7、:MDK /*include enconder.h/*include LCD.h/*/正交编码器接口的初始化/*void ENC_Init(void) TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_ICInitTypeDef TIM_ICInitStructure; GPIO_InitTypeDef GPIO_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APBPeriph_ENCODER_TIMER, ENABLE);/TIM
8、4 / ENCODER_TIMER时钟初始化 RCC_APB2PeriphClockCmd(RCC_APBPeriph_ENCODER_GPIO, ENABLE); / ENCODER_GPIO时钟初始化 GPIO_StructInit(&GPIO_InitStructure); /TI1 TI2初始化 GPIO_InitStructure.GPIO_Pin = ENCODER_TI1 | ENCODER_TI2; /PB6,PB7 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;/浮空输出 GPIO_Init(ENCODER_GPIO
9、, &GPIO_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = TIMER_IRQChannel;/TIM4_IRQn /设置ENCODER_TIMER的优先级 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = TIM*_PRE_EMPTION_PRIORITY; NVIC_InitStructure.NVIC_IRQChannelSubPriority = TIM*_SUB_PRIORITY; NVIC_InitStructure.NVIC_IRQChannelCmd = E
10、NABLE; NVIC_Init(&NVIC_InitStructure); /* Timer configuration in Encoder mode */设置ENCODER_TIMER为编码器模式 TIM_DeInit(ENCODER_TIMER); /ENCODER_TIMER复位 TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); TIM_TimeBaseStructure.TIM_Prescaler = 0*0; / 无分频 TIM_TimeBaseStructure.TIM_Period = (4*ENCODER_PPR)-1; /计数
11、器重载值4*200-1 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;/向上计数模式 TIM_TimeBaseInit(ENCODER_TIMER, &TIM_TimeBaseStructure);/TIM4 /TIM4 TIM_EncoderInterfaceConfig(ENCODER_TIMER, TIM_EncoderMode_TI12,TIM_ICPolarity_Rising, TIM_ICPolar
12、ity_Rising);/编码器接口初始化 TIM_ICStructInit(&TIM_ICInitStructure); TIM_ICInitStructure.TIM_ICFilter = IC*_FILTER; /6 TIM_ICInit(ENCODER_TIMER, &TIM_ICInitStructure); / Clear all pending interrupts TIM_ClearFlag(ENCODER_TIMER, TIM_FLAG_Update); TIM_ITConfig(ENCODER_TIMER, TIM_IT_Update, ENABLE); /Reset co
13、unter TIM2-T = COUNTER_RESET; /0 TIM_Cmd(ENCODER_TIMER, ENABLE); /*/ 计算马达转子相对于初始位置的角度 -180至+180/*void ENC_Get_Electrical_Angle(uint16_t *degree)int32_t temp;int16_t tim_count; tim_count=TIM_GetCounter(ENCODER_TIMER); /获取ENCODER_TIMER TIM4的值if(tim_count=400)/如果超过180度,角度为负数degree0=-;degree1=(800-tim_count)*180/(4*ENCODER_PPR/2);/整数局部temp = (int32_t)(800-tim_count) * (int32_t)(1000000/(4*ENCODER_PPR/2)*360-degree1*1000000; degree2=(unsigned
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环艺设计中的材质与质感现代办公空间应用案例
- 环境影响综合评估的实践与思考
- 现代网络编程语言的性能优化探讨
- 11 爸爸妈妈在我心中(说课稿)-统编版道德与法治三年级上册
- 9古诗三首《题西林壁》说课稿-2024-2025学年统编版语文四年级上册
- 《5 童年在游戏中成长》说课稿-2024-2025学年三年级上册综合实践活动长春版
- Unit 4 Position Lesson 1 The Magic Show(说课稿)-2024-2025学年北师大版(三起)英语五年级上册
- 2023三年级数学上册 3 测量第1课时 毫米的认识说课稿 新人教版
- 7 小书包 说课稿-2024-2025学年语文一年级上册统编版
- 16大家一起来合作-团结合作快乐多(说课稿)-统编版道德与法治一年级下册
- 2021-2022学年辽宁省重点高中协作校高一上学期期末语文试题
- 同等学力英语申硕考试词汇(第六版大纲)电子版
- 2024义务教育道德与法治课程标准(2022版)
- 墓地个人协议合同模板
- 2024年部编版初中语文各年级教师用书七年级(上册)
- 企事业单位公建项目物业管理全套方案
- 2024年北京市房山区初三语文一模试卷及答案
- 4P、4C、4R-营销理论简析
- 三创赛获奖-非遗文化创新创业计划书
- 伊立替康对耐药肿瘤细胞的作用机制研究
- 《美容心理学》课件-容貌的社会心理价值
评论
0/150
提交评论