极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 340|回复: 9

关于使用光电鼠标测量纸带移动速度的问题

[复制链接]
发表于 2017-11-13 15:01:12 | 显示全部楼层 |阅读模式
各位高手:近期有一个想法,向用ARDUINO读取光学鼠标中传感器的XY坐标数据,通过ARDUINO 程序测量鼠标下面移动的纸带的速度。但找不到更多的资料。鼠标的光学引擎已经能够自行测算出坐标数据,但怎样读出来?
                有哪位熟悉这个问题的高手,恳请指点一二!
回复

使用道具 举报

发表于 2017-11-13 21:22:03 | 显示全部楼层
这个应用我也很感兴趣
回复 支持 反对

使用道具 举报

发表于 2017-11-14 16:52:35 | 显示全部楼层
本帖最后由 Stormer 于 2017-11-14 17:04 编辑

用PS/2接口的光电鼠标。 然后你去看PS/2接口的引脚定义。 6个引脚,2个是悬空的没用,剩下4个里,5V, GND,CLOCK, DATA。

接着,了解那个时钟引脚需要怎样的信号; 数据引脚返回的数据格式。


------------------------
https://www.cnblogs.com/qiweiwang/archive/2011/03/21/1990346.html
齐威王

PS2接口和协议简介

1 PS/2接口和协议
1.1 接口的物理特性
        PS/2接口用于许多现代的鼠标和键盘,由IBM最初开发和使用。物理上的PS/2接口有两种类型的连接器:5脚的DIN和6脚的mini-DIN。图1就是两种连接器的引脚定义。使用中,主机提供+5V电源给鼠标,鼠标的地连接到主机电源地上。

clip_image001

1.2 接口协议原理
        PS/2鼠标接口采用一种双向同步串行协议。即每在时钟线上发一个脉冲,就在数据线上发送一位数据。在相互传输中,主机拥有总线控制权,即它可以在任何时候抑制鼠标的发送。方法是把时钟线一直拉低,鼠标就不能产生时钟信号和发送数据。在两个方向的传输中,时钟信号都是由鼠标产生,即主机不产生通信时钟信号。

       如果主机要发送数据,它必须控制鼠标产生时钟信号。方法如下:主机首先下拉时钟线至少100μs抑制通信,然后再下拉数据线,最后释放时钟线。通过这一时序控制鼠标产生时钟信号。当鼠标检测到这个时序状态,会在10ms内产生时钟信号。如图3中 A 时序段。主机和鼠标之间,传输数据帧的时序如图2、图3所示。2.2 数据包结构在主机程序中,利用每个数据位的时钟脉冲触发中断,在中断例程中实现数据位的判断和接收。在实验过程中,通过合适的编程,能够正确控制并接收鼠标数据。但该方案有一点不足,由于每个CLOCK都要产生一次中断,中断频繁,需要耗用大量的主机资源。

clip_image001[5]

clip_image001[7]

2 PS/2鼠标的工作模式和协议数据包格式
2.1 PS/2鼠标的四种工作模式
        PS/2鼠标的四种工作模式是:Reset模式,当鼠标上电或主机发复位命令 0xFF给它时进入这种模式;Stream模式鼠标的默认模式,当鼠标上电或复位完成后,自动进入此模式,鼠标基本上以此模式工作;Remote模式,只有在主机发送了模式设置命令 0xF0后,鼠标才进入这种模式;Wrap模式,这种模式只用于测试鼠标与主机连接是否正确。

       PS/2鼠标在工作过程中,会及时把它的状态数据发送给主机。发送的数据包格式如表1所示。

clip_image001[9]

         Byte1中的Bit0、Bit1、Bit2分别表示左、右、中键的状态,状态值0表示释放,1表示按下。Byte2和Byte3分别表示X轴和Y轴方向的移动计量值,是二进制补码值。Byte4的低四位表示滚轮的移动计量值,也是二进制补码值,高四位作为扩展符号位。这种数据包由带滚轮的三键三维鼠标产生。若是不带滚轮的三键鼠标,产生的数据包没有Byte4 其余的相同。
回复 支持 反对

使用道具 举报

发表于 2017-11-14 17:03:20 | 显示全部楼层
百度:PS2接口协议
回复 支持 反对

使用道具 举报

发表于 2017-11-15 08:53:58 | 显示全部楼层
如果直接用那个光学组件的输出呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-15 09:42:39 | 显示全部楼层
Stormer 发表于 2017-11-14 16:52
用PS/2接口的光电鼠标。 然后你去看PS/2接口的引脚定义。 6个引脚,2个是悬空的没用,剩下4个里,5V, GND, ...

非常感谢你的指点,我今天拆了一个雷柏217鼠标,里面是A3000光学引擎,一共有八个引脚,我找到了关于这个芯片的介绍,里面提到了这样的描述“同步串行端口同步串行端口用于设置和读取纸张在ADNS- 3000 rameters ,并以读出的运动信息。端口是一个四线串行端口。主人微控制器总是启动通信;该ADNS -3000不会启动数据传输。 SCLK,MOSI和NCS可以直接由一个微控制器来驱动。端口引脚可与其它SPI从设备共享。当NCS引脚为高电平时,输入被忽略,而输出是在三态。这包括SPI端口的线路:SCLK :时钟输入。它总是由主机产生(微控制器)。MOSI :输入数据。 (主机输出/从机输入)MISO :输出数据。 (主/从机输出)NCS :片选输入端(低电平有效) 。 NCS的需要是低的,以激活串行端口;否则,MISO将高Z和MOSI & SCLK将被忽略。 NCS的也可以是用于复位串行端口的情况下错误的。运动功能运动输出信号(引脚3)可以用作中断输入把鼠标的微控制器来触发CON组控制器读取来自传感器时的运动数据存在由传感器检测到的运动。移动信号可以被配置为电平或边沿触发,活性高或低的通过设置在MOTION_CTRL寄存器中的位。对于高电平有效电平触发的配置,运动引脚的电平将被驱动为高电平作为长期的议案位寄存器0x02设置,并有运动数据的DELTA注册准备由单片机读取。一旦所有的运动数据被读取, DELTA寄存器值成为零,运动位复位和运动销水平被拉低。   我想进一步请教一下,能否将鼠标的光学引擎拆下来,配置少数外围原件,从而构成一个独立的传感器部件,或者购买鼠标光学引擎芯片,做成类似我们可以买到的成品 光流传感器,这样成本低更加好用。望指点,谢谢!
回复 支持 反对

使用道具 举报

发表于 2017-11-15 10:56:18 | 显示全部楼层
参考飞控的光流传感器
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
usb 鼠标会有一个参数叫做 dpi 就是每一寸对应多少个点

我写过 usb host解析 usb 鼠标的功能,你可以参考一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
zoologist 发表于 2017-11-16 09:38
usb 鼠标会有一个参数叫做 dpi 就是每一寸对应多少个点

我写过 usb host解析 usb 鼠标的功能,你可以参 ...

多谢,我学习一下
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
传感器是SPI总线接口
回复 支持 反对

使用道具 举报

高级模式  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2017-11-23 20:44 , Processed in 0.042472 second(s), 6 queries , File On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表