一、介绍

   旋转编码器是一种机电装置,可将轴或轴的角位置或运动,转换为模拟或数字代码。旋转编码器通常放置在垂直于轴的一侧。旋转编码器用作检测自动化领域中的角度,速度,长度,位置和加速度的传感器。


二、组件

Raspberry Pi 3主板*1

树莓派电源*1

40P软排线*1

旋转编码器传感器模块*1

面包板*1

跳线若干

三、实验原理

   旋转编码器可通过旋转,计数正方向和反方向转动过程中,输出脉冲的次数。旋转计数不像电位计,这种转动计数是没有限制的。配合旋转编码器上的按键,可以复位到初始状态,即从0开始计数。

  工作原理: 增量编码器是一种将旋转位移,转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小的旋转式传感器。
  在增量编码器中角位移的转换采用了光电扫描原理。读数系统以,由交替的透光窗口和不透光窗口构成的,径向分度盘(码盘)的旋转,为依据,同时被一个红外光源垂直照射。
  光把码盘的图像投射到接收器表面上,接收器覆盖着一层衍射光栅,它具有和码盘相同的窗口宽度。接收器的工作是感受光盘转动所产生的变化,然后将光变化转换成相应的电变化。再使低电平信号上升到较高电平,并产生没有任何干扰的方形脉冲,这就必须用电子电路来处理。
  读数系统通常采用差分方式,即将两个波形一样但相位差为180°的不同信号进行比较,以便提高输出信号的质量和稳定性。读数是在两个信号的差别基础上形成的,从而消除了干扰。

  增量编码器给出两相方波,它们的相位差90°,通常称为A通道和B通道。其中一个通道给出与转速相关的信息,与此同时,通过两个通道信号进行顺序对比,得到旋转方向的信息。还有一个特殊信号称为Z或零通道,该通道给出编码器的绝对零位(恢复按钮),此信号是一个方波与A通道方波的中心线重合。

  增量型编码器精度取决于机械和电气两种因素,这些因素有:光栅分度误差、光盘偏心、轴承偏心、电子读数装置引入的误差以及光学部分的不精确性。确定编码器精度的测量单位是电气上的度数,编码器精度决定了编码器产生的脉冲分度。以下用360°电气度数来表示机械轴的转动,而轴的转动必须是一个完整的周期。要知道多少机械角度相当于电气上的360度,可以用下列公式来计算: 电气360 =机械360°/n°脉冲/转。

  编码器分度误差是以电气角度为单位的,两个连续脉冲波的最大偏移来表示。误差存在于任何编码器中,这是由前述各因素引起的。增量型编码器的最大误差为±25电气角度(在已声明的任何条件下),相当于额定值偏移±7%,至于相位差90°(电气上)的两个通道的最大偏差为±35电气度数相当于额定值偏移±10%左右。

  除了上述传统的编码器外,还有一些是与其它的电气输出信号集成在一起的增量型编码器。与UVW信号集成的增量型编码器就是实例,它通常应用于交流伺服电机的反馈。这些磁极信号一般出现在交流伺服电机中,UVW信号一般是通过模拟磁性原件的功能而设计的。在增量型编码器中,这些UVW信号是用光学方法产生,并以三个方波的形式出现,它们彼此偏移120°。为了便于电机启动,控制电动机用的启动器需要这些正确的信号。这些UVW磁极脉冲可在机械轴旋转中重复许多次,因为它们直接取决于所连接的电机磁极数,并且用于4、6或更多极电机的UVW信号。

  本次实验中,顺时针旋转时,打印的值变大;逆时针旋转,数值减小;按下旋转按钮时,复位到初始状态,即从0开始计数。

四、实验步骤

  第1步: 连接电路。

树莓派 T型转接板 (BCM) 旋转编码器模块
GPIO0 G17 CLK
GPIO1 G18 DT
GPIO2 G27 SW
5V 5V VCC
GND GND GND

  第2步: 编写控制程序。顺时针旋转时,打印的值变大;逆时针旋转,数值减小;按下旋转按钮时,复位到初始状态,即从0开始计数。

#!/usr/bin/env python
import RPi.GPIO as GPIO
import timeRoAPin = 11    # CLK Pin
RoBPin = 12    # DT Pin
BtnPin = 13    # Button PinglobalCounter = 0flag = 0
Last_RoB_Status = 0
Current_RoB_Status = 0def setup():GPIO.setmode(GPIO.BOARD)       # Numbers GPIOs by physical locationGPIO.setup(RoAPin, GPIO.IN)    # input modeGPIO.setup(RoBPin, GPIO.IN)GPIO.setup(BtnPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)def rotaryDeal():global flagglobal Last_RoB_Statusglobal Current_RoB_Statusglobal globalCounterLast_RoB_Status = GPIO.input(RoBPin)  while(not GPIO.input(RoAPin)):      #未旋转时,GPIO.input(RoAPin)值为1,旋转时会变为0Current_RoB_Status = GPIO.input(RoBPin)  #旋转时的当前值flag = 1if flag == 1:flag = 0if (Last_RoB_Status == 1) and (Current_RoB_Status == 0):globalCounter = globalCounter + 1  #顺时针旋转,角位移增大if (Last_RoB_Status == 0) and (Current_RoB_Status == 1):globalCounter = globalCounter - 1  #逆时针旋转,数值减小def btnISR(channel):global globalCounterglobalCounter = 0def loop():global globalCountertmp = 0 # Rotary TemperaryGPIO.add_event_detect(BtnPin, GPIO.FALLING, callback=btnISR)#当按下按钮时,调用回调函数btnISRwhile True:rotaryDeal()if tmp != globalCounter:print 'globalCounter = %d' % globalCountertmp = globalCounterdef destroy():GPIO.cleanup()             # Release resourceif __name__ == '__main__':     # Program start from heresetup()try:loop()except KeyboardInterrupt:  # When 'Ctrl+C' is pressed, the child program destroy() will be  executed.destroy()

  

树莓派基础实验26:旋转编码器实验相关推荐

  1. 实验26:旋转编码器实验

    实验结果: 顺时针旋转+1 逆时针旋转-1 按下=====0 OK,今天周末,嵌入式软件开发 需要 1)硬件电路设计 2)软件编写 3)实验结果分析 软件开发需要: 一台好本,最好Windows操作系 ...

  2. 【swjtu】数字电路实验6_旋转编码器人机交互电路设计

    一. 实验目的 1 . 学习旋转编码器的使用. 2 . 巩固 Verilog HDL 设计时序电路. 二. 实验内容 旋转编码器是一种输入器件,常用于示波器.信号源.汽车仪表盘等各种电子设备中,它可以 ...

  3. 树莓派基础实验31:MPU6050陀螺仪加速度传感器实验

    一.介绍    MPU6050是世界上第一款也是唯一一款专为智能手机.平板电脑和可穿戴传感器的低功耗.低成本和高性能要求而设计的6轴运动跟踪设备.    它集成了3轴MEMS陀螺仪,3轴MEMS加速度 ...

  4. PLC实验—西门子S7 1200读取旋转编码器数据并计算电机转速

    PLC实验-西门子S7 1200读取旋转编码器数据并计算电机转速 注意PTO控制步进电机实验博途软件需要V14版本,不然没有PTO功能块 软件的下载请点击下方百度网盘的链接 链接:https://pa ...

  5. 树莓派基础实验18:声音传感器实验

    一.介绍    声音传感器是一种接受声波并将其转换为电信号的组件,它像麦克风一样检测周围环境中的声音强度. 二.组件 ★Raspberry Pi主板*1 ★树莓派电源*1 ★40P软排线*1 ★PCF ...

  6. 树莓派基础实验14:PS2操纵杆实验

    一.介绍    操纵杆是一种输入设备,由一根可在基座上旋转,并向其控制的设备报告其角度或方向的操纵杆组成.操纵杆通常用于控制视频游戏和机器人.这里使用操纵杆PS2. 二.组件 ★Raspberry P ...

  7. 树莓派4bpython串口通信解读数据_树莓派基础实验36:通用串口通信实验

    一.介绍 对于树莓派 3B+来说,他的UART功能有三种: 1.内部蓝牙使用: 2.控制终端使用: 3.与其他设备进行串口通信. 在树莓派基础实验35:USB TO TTL模块实验中学习了通过串口对树 ...

  8. 树莓派基础实验20:火焰报警传感器实验

    一.介绍    火焰传感器模块通过捕获来自火焰的红外波长来执行检测.它可以用来探测火焰是否存在,在这个实验中,我们使用火焰传感器来检测火焰并发出报警信号. 二.组件 ★Raspberry Pi主板*1 ...

  9. ArcGIS基础实验操作100例--实验3旋转矢量要素

    本实验专栏参考自汤国安教授<地理信息系统基础实验操作100例>一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 基础编辑篇--实验3 旋转矢量要素 目录 一.实验背 ...

  10. 树莓派基础实验39:解析无线电接收机PWM、SBUS信号

    一.介绍   虽然如今或者将来,5G网络的建设带来人工智能和工业自动化的全面升级,生产活动中劳动力的需求大大减少,大量的劳动力将向内容生产行业和服务行业转移.教育.医疗.娱乐.公共管理等诸多领域,乃至 ...

最新文章

  1. 优达学城《DeepLearning》2-2:迁移学习
  2. Andriod anim translate中的属性介绍
  3. TechEd2007现场侧记:TechEd的变与不变
  4. 如何查找,修复和避免C#.NET中内存泄漏的8个最佳实践
  5. tg3269c网卡驱动linux,TP-Link3269C网卡驱动官方版
  6. 重磅!华为云社区·CSDN【寻找黑马程序员】有奖征文活动奖项公布!!
  7. java 蓝桥杯算法提高 身份证号码升级(题解)
  8. js this指向分析
  9. 1月份Github上热门Python开源项目
  10. 【蓝桥杯单片机组】| DS1302(官方驱动)+ 矩阵按键 + 数码管(改,解决数码管跳动的问题)
  11. 大数据科学相关岗位,我们需要具备哪些数学基础?
  12. 51单片机学习笔记4 -- 蜂鸣器控制
  13. 100件不可思议的事
  14. 【计算广告】浅谈广告归因
  15. D - Six Degrees of Cowvin Bacon(最小路径)
  16. Android8.1 开关VOLTE流程分析
  17. mysql用了索引为什么还是查询很慢?
  18. 小傻蛋的妹妹跟随小甲鱼学习Python的第二节002
  19. Linux_正则表达式与文件格式化处理详解《鸟哥的Linux私房菜》学习笔记(极其详细,看完这篇必学会)
  20. dell台式机进入安全模式_戴尔电脑如何进入安全模式

热门文章

  1. 在计算机里看不到硬盘的信息,在电脑bios里面检测不到硬盘如何解决?
  2. Mac CAD2018 安装完成后,打开注册机时出现 应用程序“02_注册机”不能打开。
  3. CSRF攻击原理和防范措施
  4. no tests were found异常springBoot配置
  5. 改变历史的引擎 Physx携众物理游戏测试
  6. 当3D应用遇上云流送技术使用更方便
  7. 宣传片后期制作的要点介绍
  8. R语言:Newton法、似然函数
  9. lzg_ad:XPE下中文字体相关问题
  10. C语言公交车线路信息查询系统