欢迎来到天天文库
浏览记录
ID:18373506
大小:315.00 KB
页数:8页
时间:2018-09-17
《光电编码器的工作原理2》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、1光电编码器的工作原理 光电编码器(OpticalEncoder)俗称“单键飞梭”,其外观好像一个电位器,因其外部有一个可以左右旋转同时又可按下的旋钮,很多设备(如显示器、示波器等)用它作为人机交互接口。下面以美国Greyhill公司生产的光电编码器为例,介绍其工作原理及使用方法。光电编码器的内部电路如图1所示,其内部有1个发光二极管和2个光敏三极管。当左右旋转旋钮时,中间的遮光板会随旋钮一起转动,光敏三极管就会被遮光板有次序地遮挡,A、B相就会输出图2所示的波形;当按下旋钮时,2、3两脚接通,其用法同一般按键。 constructionquali
2、tyacceptanceandassessmentRegulation(ProfessionalEdition)(DL/T5210.2-2009~DL/T5210.8-2009);1.9thequalitycheckoutandevaluationofelectricequipmentinstallationengineeringcode(DL/T5161.1-2002~5161.17-2002);1.10thenormsofconstructionsupervision,theelectricpowerconstructionsupervision
3、regulations 当顺时针旋转时,光电编码器的A相相位会比B相超前半个周期;反之,A相会比B相滞后半个周期。通过检测A、B两相的相位就可以判断旋钮是顺时针还是逆时针旋转,通过记录A或B相变化的次数,就可以得出旋钮旋转的次数,通过检测2、3脚是否接通就可以判断旋钮是否按下。其具体的鉴相规则如下:1.A为上升沿,B=0时,旋钮右旋;2.B为上升沿,A=l时,旋钮右旋;3.A为下降沿,B=1时,旋钮右旋;4.B为下降沿,A=O时,旋钮右旋;5.B为上升沿,A=0时,旋钮左旋;6.A为上升沿,B=1时,旋钮左旋;7.B为下降沿,A=l时,旋钮左旋;8
4、.A为下降沿,B=0时,旋钮左旋。 通过上述方法,可以很简单地判断旋钮的旋转方向。在判断时添加适当的延时程序,以消除抖动干扰。 2WinCE提供的驱动模型 WinCE操作系统支持两种类型的驱动程序。一种为本地驱动程序,是把设备驱动程序作为独立的任务实现的,直接在顶层任务中实现硬件操作,因此都有明确和专一的目的。本地设备驱动程序适合于那些集成到WindowsCE平台的设备,诸如键盘、触摸屏、音频等设备。另一种是具有定制接口的流接口驱动程序。它是一般类型的设备驱动程序。流接口驱动程序的形式为用户一级的动态链接库(DLL)文件,用来实现一组固定的函数
5、称为“流接口函数”,这些流接口函数使得应用程序可以通过文件系统访问这些驱动程序。本文讨论的光电编码器就属于流接口设备。 2.1流设备驱动加载过程 WinCE.NET系统运行时会启动负责流驱动的加载进程DEVICE.exe。DEVICE.exe进程对驱动的加载是通过装载注册表列举器(RegEnum.dll)实现的。在WinCE.NET中,所有设备的资源信息都由OAL负责记录在系统注册表中,RegEnum.dll一个一个扫描注册表项HEKY_LOCAL_MACHINE\Driver\BuiltIn下的子键,发现新设备就根据每个表项的内容进行硬件设备初
6、始化。 2.2中断与中断处理constructionqualityacceptanceandassessmentRegulation(ProfessionalEdition)(DL/T5210.2-2009~DL/T5210.8-2009);1.9thequalitycheckoutandevaluationofelectricequipmentinstallationengineeringcode(DL/T5161.1-2002~5161.17-2002);1.10thenormsofconstructionsupervision,theelec
7、tricpowerconstructionsupervisionregulations 如果一个驱动程序要处理一个中断,那么驱动程序需要首先使用CreateEvent函数建立一个事件,调用InterruptInitialize函数将该事件与中断标识绑定。然后驱动程序中的IST就可以使用WaitForSing
8、eObject函数来等待中断的发生。在一个硬件中断发生之后,操作系统进入异常处理程序,异常处理程序调用OAL的OEMInterruptHandler函数,该函数检测硬件并将中断标识返回给系统;系统得到该中断标识便会找到该中断标识对应的事件,并唤
9、醒等待相应事件的线程(IST),然后IST进行中断处理。处理完成之后,IST需要调用InterruptDon
此文档下载收益归作者所有