一起玩转树莓派(16)——旋转编码传感器

简介: 旋转编码传感器是一种速度位移传感器。其通过旋钮的旋转来带动内部的光栅盘旋转,光栅盘上会预置很多狭缝,光栅盘的转动导致经过狭缝的光线产生脉冲变化,此信号经过后继电路的处理后,输出成脉冲信号。最终,我们可以通过信号引脚的输出来获取旋钮的旋转动作。

一起玩转树莓派(16)——旋转编码传感器

    旋转编码传感器是一种速度位移传感器。其通过旋钮的旋转来带动内部的光栅盘旋转,光栅盘上会预置很多狭缝,光栅盘的转动导致经过狭缝的光线产生脉冲变化,此信号经过后继电路的处理后,输出成脉冲信号。最终,我们可以通过信号引脚的输出来获取旋钮的旋转动作。

    本次实验,使用的旋转编码传感器如下图所示:

通过内部发光源与光敏元件的配置,旋转时产生脉冲信号,示意图如下:

我们使用的传感器有5个引脚,其中除了电源和接地引脚外,还有3个信号引脚。SW引脚为复位信号引脚,此旋转编码传感器本身也是一个按钮,当按下此按钮时,SW引脚会从高电平跳变为低电平。CLK引脚为旋转信号引脚,未旋转时,此引脚输出高电平,旋转时输出低电平。DT引脚用来判定旋转的方向,如果未旋转时此引脚为高电平,旋转时变低电平,则表示发生了顺时针旋转,如果未旋转时此引脚为低电平,发生旋转时此引脚为高电平,则表示发生了逆时针旋转。

    下面,我们来连接树莓派进行实验,接线如下:

旋转编码传感器 树莓派
VCC +5V
GND GND
CLK GPIO17 (BCM编码)
DT GPIO18 (BCM编码)
SW GPIO19 (BCM编码)

编写实验代码如下:

#coding:utf-8

import RPi.GPIO as GPIO
import time

# 定义引脚
resetPin = 35 # BCM编码为19的GPIO 物理编码为35
clkPin = 11
dtPin = 12

# 计数变量
clockwise = 0
anticlockwise = 0 

# 进行引脚初始化
GPIO.setmode(GPIO.BOARD)
GPIO.setup(clkPin, GPIO.IN)
GPIO.setup(dtPin, GPIO.IN)
GPIO.setup(resetPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)

# 注册中断函数
def reset(channel):
    global clockwise, anticlockwise
    clockwise = 0
    anticlockwise = 0
    print('计数复位')
# 监听下降沿
GPIO.add_event_detect(resetPin, GPIO.FALLING, callback=reset)

# 开启主循环
while True:  
    lastDT = GPIO.input(dtPin)
    # 高电平 没有发生旋转动作
    while GPIO.input(clkPin):
        pass
    # 开始旋转
    currentDT = GPIO.input(dtPin)
    if (lastDT == 1) and (currentDT == 0):
        # 顺时针
        clockwise += 1
        print('顺时针旋转计数:%d'%(clockwise))
    if (lastDT == 0) and (currentDT == 1):
        # 逆时针
        anticlockwise += 1
        print('逆时针旋转计数:%d'%(anticlockwise))

运行代码,效果如下图所示:

专注技术,懂的热爱,愿意分享,做个朋友
目录
相关文章
|
3月前
|
计算机视觉
摄像头的宽度为640 巡线
【9月更文挑战第24天】
38 7
|
5月前
|
编解码 计算机视觉
工业相机识别电路板元器件:彩色与黑白的区别
工业相机识别电路板元器件:彩色与黑白的区别
120 0
|
7月前
|
传感器 编解码 算法
LabVIEW计算相机图像传感器分辨率以及镜头焦距
LabVIEW计算相机图像传感器分辨率以及镜头焦距
68 0
|
传感器 机器学习/深度学习 算法
【卫星轨道】基于matlab模拟卫星轨道和地面(空中)目标探测(双星不同轨)
【卫星轨道】基于matlab模拟卫星轨道和地面(空中)目标探测(双星不同轨)
检测使用校准的立体摄像头拍摄的视频中的人物并确定其与摄像头的距离
检测使用校准的立体摄像头拍摄的视频中的人物,并确定他们与摄像头的距离。
150 0
|
编解码 监控 算法
摄像机和镜头的基础知识
摄像机和镜头的基础知识
152 0
|
算法 C语言
红外热成像仪测温模块 阵列插值-由 32*24 像素到 512*384 像素
MLX90640 的 32*24=768 像素虽然比以往的 8*8 或者 16*8 像素提高了很多,但若直接用这些像素还是不能很好的形成热像图,为了使用这些像素点平滑成像就需要对其进行插值,使用更多的像素来绘制图像。 看了一些别人的算法,感觉主要就是多项式插值,仅是插值方法的组合方式不同。
红外热成像仪测温模块 阵列插值-由 32*24 像素到 512*384 像素
|
传感器
红外热成像仪 红外图像伪彩色编码
什么是红外成像伪彩编码 红外成像的最终目的是用图像来表现温度变化,并且可以通过颜色来区分出不同热量的物体轮廓和形状。那么,到底用什么颜色来表示什么温度呢?是否有什么标准规范呢?
红外热成像仪  红外图像伪彩色编码
|
存储 传感器 编解码
红外热成像仪 -红眼睛相机
现在自己在做红外成像仪的越来越多了,两年前有个井下机电设备运行状态的科研项目,当时使用了 AMG8833(8*8 像素),科研毕竟就是科研,后来也没有听说成果得到应用的消息, 我想也是, 8*8 能干什么,也就能做个红外测温枪吧。 前段时间因为公司生产电路板测试需要,打算买一台红外成像仪测量电路板发热是否正常,商用的价格还是有些小贵的,我们电路板都不大所以就找了一台便宜的先用着,无意中发现了 MLX90640 这个东西, 32*24像素, 768 个测温点,基本上可以成像用了。
红外热成像仪  -红眼睛相机
|
传感器 机器学习/深度学习 编解码
使用 ToF 传感器进行距离测量和手势识别的基本原理
使用 ToF 传感器进行距离测量和手势识别的基本原理
832 0
使用 ToF 传感器进行距离测量和手势识别的基本原理