嵌入式学习小组
直播中

李雪

8年用户 1006经验值
私信 关注

请问Micro:bit如何连接Rotation Sensor模块?

本章将介绍Micro:bit连接Rotation Sensor模块的使用,可用于计算顺时针和逆时针旋转的角度和旋转圈数。


回帖(4)

李巍

2020-11-19 14:20:13
  基本介绍
  Rotation Sensor是一款增量编码器,是一种将旋转位移转换为一连串数字脉冲信号的旋转式传感器。通过旋转可以计数正方向和反方向转动过程中输出脉冲的次数,旋转计数不像电位器,这种转动是没有限制的。配合旋转编码器上的按键,可以复位到初始状态,即从0开始计数,主要用于工业中的定位问题。
举报

李兵

2020-11-19 14:20:56
硬件连接
在硬件上,采用Micro:bit的P0,P1,P2分别与Rotation Sensor的SIA,SIB,SW连接,具体连接示意图如下图所示:

具体硬件连接如下表所示:
举报

徐小婷

2020-11-19 14:21:20
计数原理
  将Rotation Sensor的SIA,SIB,SW分别连接到逻辑分析仪的CH0,CH1,CH2,分别顺时针,逆时针,按下旋转编码器,同时采集波形,得到的波形如下图所示:
  
  由逻辑分析仪得出的波形可知,当顺时针旋转编码器时,SIB将先产生下降沿,约过了30ms之后(取决于旋转的速度),SIA将产生下降沿;当逆时针旋转编码器时,SIA将先产生下降沿,约过了30ms之后(取决于旋转的速度),SIB将产生下降沿,对SIA,SIAB共同产生的下降沿个数进行统计,即可得知此次旋转的角度,当按下按键时,SW将产生下降沿,此按键可用于清零旋转的角度。
举报

石双厚

2020-11-19 14:23:03
软件设计
打开makecode,采用图形块编写以下程序(不用添加软件包):



该程序的JavaScript代码如下所示,可直接复制至makecode使用:
  cpp代码:
  01let time = 0
  02let item = 0
  03let count = 0
  04pins.onPulsed(DigitalPin.P1, PulseValue.Low, () =》 {
  05 if (input.runningTime() - time 》 50) {
  06 time = input.runningTime()
  07 count = count + 1
  08 }
  09 time = input.runningTime()
  10 serial.writeValue(“press”, 0)
  11})
  12pins.onPulsed(DigitalPin.P0, PulseValue.Low, () =》 {
  13 if (input.runningTime() - time 》 50) {
  14 time = input.runningTime()
  15 count = count - 1
  16 }
  17 time = input.runningTime()
  18 serial.writeValue(“press”, 0)
  19})
  20pins.onPulsed(DigitalPin.P2, PulseValue.Low, () =》 {
  21 count = 0
  22 serial.writeValue(“press”, 1)
  23})
  24count = 0
  25item = 0
  26time = input.runningTime()
  27pins.setPull(DigitalPin.P0, PinPullMode.PullUp)
  28pins.setPull(DigitalPin.P1, PinPullMode.PullUp)
  29pins.setPull(DigitalPin.P2, PinPullMode.PullUp)
  30serial.redirectToUSB()
  31basic.forever(() =》 {
  32 while (item != count) {
  33 item = count
  34 serial.writeValue(“item”, item)
  35 }
  36 basic.pause(500)
  37})
  下载,等下载成功后,点击显示数据(设备),依次顺时针旋转Rotation Sensor,逆时针旋转Rotation Sensor,按下Rotation Sensor,可得如下波形的数据:

由makecode控制台显示的数据可知,当旋钮顺时针旋转时,每转一个刻度,item变量将加1,当旋钮逆时针旋转时,每转一个刻度,item变量将减1,当按下旋钮时,item数据将归零,符合预期。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分