我造轮子,你造车,创客一起造起来!塔克创新资讯【塔克社区 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/

本文介绍X-CTR100控制器的电机正交编码器,X-CTR100具有2路32位AB项正交编码器和3路16位正交编码器,共5路。

可用于电机转速和角度测量,用于智能车、机械臂、机器人制作。

原理

什么是正交?如果两个信号相位相差90度,则这两个信号称为正交。由于两个信号相差90度,因此可以根据两个信号哪个先哪个后来判断方向。

正交编码器(Quadrature Encoder)是一种用于测量旋转速度和方向的传感器,通过积分(累加)运算后,还可以用来测算距离。最常见的正交编码器有两个输出信号:A相 和 B相,有些编码器会有 Z相 的校准功能(用于消除累计误差)。「正交」一词来源于 AB 两个信号的特征,一般情况下 A相 和 B相 的输出信号总是有 π/2 的相位差。

上图中 A 和 B 分别连接到两个传感器单元上,黑白相间的圆环称之为「栅格」。传感器和栅格的实现方式有很多种:反射式传感器+不同反光率的栅格;对射式传感器+镂空光栅;霍尔传感器+磁极圆环;触点+导电轨道;等等。

例程

初始化编码器,每隔500ms采样一次编码器数值并串口输出显示。

硬件说明

硬件资源:

  • 串口UART1
  • RA、RB扩展接口(TIM2 32AB正交编码器接口)
  • 具有正交编码器电机(需自备)

硬件连接:

软件生态

X-SOFT软件生态,X-API扩展文件如下。

ax_encoder.c——X-CTR100 电机正交编码器源文件

ax_encoder.h——X-CTR100 电机正交编码器头文件

接口函数

void AX_ENCODER_TIM2_AB_Init(uint32_t cycle); //编码器AB初始化(32位)

uint32_t AX_ENCODER_TIM2_AB_GetCounter(void); //编码器AB获取计数器数值

void AX_ENCODER_TIM2_AB_SetCounter(uint32_t count); //编码器AB设置计数器数值

 

void AX_ENCODER_TIM5_CD_Init(uint32_t cycle); //编码器CD初始化(32位)

uint32_t AX_ENCODER_TIM5_CD_GetCounter(void); //编码器CD获取计数器数值

void AX_ENCODER_TIM5_CD_SetCounter(uint32_t count); //编码器CD设置计数器数值

 

void AX_ENCODER_TIM3_GH_Init(uint16_t cycle); //编码器GH初始化

uint16_t AX_ENCODER_TIM3_GH_GetCounter(void); //编码器GH获取计数器数值

void AX_ENCODER_TIM3_GH_SetCounter(uint16_t count); //编码器GH设置计数器数值

 

void AX_ENCODER_TIM4_KL_Init(uint16_t cycle); //编码器KL初始化

uint16_t AX_ENCODER_TIM4_KL_GetCounter(void); //编码器KL获取计数器数值

void AX_ENCODER_TIM4_KL_SetCounter(uint16_t count); //编码器KL设置计数器数值

 

void AX_ENCODER_TIM1_OP_Init(uint16_t cycle); //编码器OP初始化

uint16_t AX_ENCODER_TIM1_OP_GetCounter(void); //编码器OP获取计数器数值

void AX_ENCODER_TIM1_OP_SetCounter(uint16_t count); //编码器OP设置计数器数值

软件说明

函数初始化编码器,设定编码器计数周期为60000,设置当前值为30000,while循环每隔500ms采样编码器一次,主程序代码如下。

int main(void)

{

    //X-CTR100初始化

    AX_Init(115200);

    printf("***电机正交编码器例程***\r\n\r\n");

 

    //模块初始化及配置

    AX_ENCODER_TIM2_AB_Init(60000); //32位正交编码器初始化,计数周期60000

    AX_ENCODER_TIM5_CD_Init(60000); //32位正交编码器初始化,计数周期60000

    AX_ENCODER_TIM3_GH_Init(60000); //16位正交编码器初始化,计数周期60000

    AX_ENCODER_TIM4_KL_Init(60000); //16位正交编码器初始化,计数周期60000

    AX_ENCODER_TIM1_OP_Init(60000); //16位正交编码器初始化,计数周期60000

 

                                     //设置编码器当前计数值为30000

    AX_ENCODER_TIM2_AB_SetCounter(30000);

    AX_ENCODER_TIM5_CD_SetCounter(30000);

    AX_ENCODER_TIM3_GH_SetCounter(30000);

    AX_ENCODER_TIM4_KL_SetCounter(30000);

    AX_ENCODER_TIM1_OP_SetCounter(30000);

 

    //X-API测试:5路正交编码器测试    

    printf("*5路正交编码器测试\r\n");

 

    while (1)

    {

        printf("*AB:%5d CD:%5d GH:%5d KL:%5d OP:%5d\r\n",

            AX_ENCODER_TIM2_AB_GetCounter(), AX_ENCODER_TIM5_CD_GetCounter(),

            AX_ENCODER_TIM3_GH_GetCounter(), AX_ENCODER_TIM4_KL_GetCounter(),

            AX_ENCODER_TIM1_OP_GetCounter());

        AX_Delayms(500);

    }

}

实现效果

X-CTR100按照编码器接口定义连接编码器,编码器A、B接口线序可更换。手动转动编码器可观察编码器数值变化,一个方向转动编码器数值增加,另一个方向转动编码器数值减小。

参考

https://zhuanlan.zhihu.com/p/20268680

玩转X-CTR100 l STM32F4 l 电机正交编码器的更多相关文章

  1. 玩转X-CTR100 l STM32F4 l 舵机控制

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器的舵机控制,X-CTR ...

  2. 玩转X-CTR100 l STM32F4 l ADC 模拟数字转换

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 AD转换接 ...

  3. 玩转X-CTR100 l STM32F4 l DRV8825 A4988 步进电机控制

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器控制步进电机 ...

  4. 玩转X-CTR100 l STM32F4 l MPU6050加速度陀螺仪传感器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 板载加速度 ...

  5. 玩转X-CTR100 l STM32F4 l DSP指令集性能测试

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 DSP库的 ...

  6. 玩转X-CTR100 l STM32F4 l X-CTR100与树莓派搭建机器人平台

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器与树莓派Linux系统 ...

  7. 玩转X-CTR100 l STM32F4 l 基础例程printf、LED、蜂鸣器、拨码开关、位带操作

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器基础板载资源 ...

  8. 玩转X-CTR100 l STM32F4 l PS2无线手柄

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] SONY的PS2无线手柄是索尼游戏机的遥控手柄,控制 ...

  9. 玩转X-CTR100 l STM32F4 l FPU单精度浮点性能测试

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器如何开启ST ...

随机推荐

  1. 不在同一主机:vsftpd+pam+mysql

    配置环境:Centos7上的mariadb + Centos6上的vsftpd 一.安装所需要程序 1.安装vsftpd和pam_mysql(在centos6-->192.168.108.160 ...

  2. HDU 6073 Matching In Multiplication(拓扑排序+思维)

    http://acm.hdu.edu.cn/showproblem.php?pid=6073 题意:有个二分图,左边和右边的顶点数相同,左边的顶点每个顶点度数为2.现在有个屌丝理解错了最佳完美匹配,它 ...

  3. JQUERY链式操作实例分析

    本文实例讲述了jQuery链式操作.分享给大家供大家参考,具体如下: 从过去的实例中,我们知道jQuery语句可以链接在一起,这不仅可以缩短代码长度,而且很多时候可以实现特殊的效果. <scri ...

  4. python os.system command_line

    command_line = ("{7} {0} -Xmx{1} -jar {2} -T Pileup -R {3} -I {4} -L {5} -o {6} " + " ...

  5. get-post区别

    原文链接:http://www.techweb.com.cn/network/system/2016-10-11/2407736.shtml GET和POST是HTTP请求的两种基本方法,要说它们的区 ...

  6. selenium-chrome-headless

    #coding=utf-8 from selenium import webdriver import time chrome_options = webdriver.ChromeOptions() ...

  7. Java的八种基本类型:(按字节来分)

    Java的八种基本类型:(按字节来分) boolean   布尔型   1个字节 8bit(8位) byte     字节类型   1个字节 char     字符类型   2个字节 short    ...

  8. 2018年全国多校算法寒假训练营练习比赛(第一场)C 六子冲

    https://www.nowcoder.com/acm/contest/67/C 思路: 模拟. 代码: #include<bits/stdc++.h> using namespace ...

  9. python打印cookies获取cookie

    def test_002_buy_ticket(self): data = [{"}] print(data) data = json.dumps(data) cookies = self. ...

  10. 探索gff/gtf格式

    参考: GFF格式说明 Generic Feature Format Version 3 (GFF3) 先下载一个 gtf 文件浏览一下 1 havana gene 11869 14409 . + . ...