鼠标学习笔记(1)ADNS5090基本功能介绍

昨天拆了一个鼠标,其中的核心光流芯片丝印是:A5090 B1201A。这个芯片是Avago(现Broadcom)的ADNS-5090型光电导航传感器芯片。

这里是它的Datasheet技术手册:
https://www.application-datasheet.com/pdf/broadcom/adns-5090.pdf

ADNS-5090基本功能描述

The Avago Technologies ADNS-5090 is a low power, small form factor optical mouse sensor. It has a low-power architecture and automatic power management modes, mak
ing it ideal for battery, power-sensitive applications – such as cordless input devices.

ADNS-5090是一颗低功耗、小体积的光学鼠标传感器。它具备低功耗架构和自动电源管理机制,因而适用于电池供电、功耗敏感型应用,例如无线输入设备(无线鼠标)。

The ADNS-5090 is capable of high-speed motion detection – up to 30ips and 8G. In addition, it has an on-chip oscillator and LED driver to minimize external components.

这颗芯片具有高速运动检测能力 – 支持最高30ips(英寸/秒)的速度检测和8G的加速度检测。额外的,芯片本身内置震荡晶振和LED驱动,以减少外围元件、降低电路复杂度。

The ADNS-5090 along with the ADNS-5110-001 lens, LED clip, and HLMP-EG3E-xxxxx LED form a complete and compact mouse tracking system. There are no moving parts and this translates to high reliability and less maintenance for the end user. In addition, precision optical alignment is not required, facilitating high volume assembly.

这颗ADNS-5090芯片,可搭配ADNS-5110-001镜头模组、LED固定架、HLMP-EG3E-xxxxx系列LED灯,构成一套完整的轨迹跟踪系统(鼠标)。

整套总成没有机械移动结构,意味着具有更高的稳定性、可靠性,更低的维护、维修成本。无需精密的光学对准,因而适用于大规模生产与手动批量组装。

The sensor is programmed via registers through a fourwire serial port. It is housed in an 8-pin staggered dual inline package (DIP).

通过四线串行接口可对此传感器(ADNS-5090)进行寄存器访问从而对其编程。整颗芯片是8引脚错列式双列直插封装。

NOTE: The ADNS-5090 Low Power Optical Mouse Sensor is not designed for use with blue LEDs. The ADNS-4000 product is available from Avago for use with Blue LEDs

注意:5090传感器不适合与蓝光LED搭配使用。适合于蓝光LED的相似传感器是ADNS-4000型号。

额外的困惑:DIP-8我见过的基本就是对称双列,这里的ADNS-5090为什么要非对称、错列封装?

每天学习一些新的知识,尽可能保持自己的学习动力。

Related Posts

树莓派(1)都已经2025年了,我还在摆弄Pi1

今天翻箱倒柜,发现只有一个树莓派1在身边,好在经过一番折腾,把它收拾好了、用上了。 SD卡,16GB的,Class4速度,使用镜像安装工具,将RaspberryOS的Lite版装上; 键盘我手中虽然很多,但是试了几个USB的,都不能正常使用。后来找到一个非常便宜的USB小键盘,能用。这一点并不奇怪,现在很多USB键盘的协议都有缺陷,反而是廉价的那款键盘,更古老,协议中没有错误。 因为第一代树莓派没有Wifi,所以无法联网。好在我手中还有一个USB网卡,而且手中恰巧还有一条网线,更巧的是网线还足够长,更为幸运的是我的交换机上恰巧还有一个富裕的网口,所以也顺利的连上网了。 显示器很多,但多数都太老旧、只有VGA接口。找到一台有Hdmi接口的,而且我手中并不缺少Hdmi的线,随便找了一条就装好了。 以上就是今天的工作,虽然没有做任何实质的事情,但是至少将树莓派点亮了。接下来我将重新学习这台小电脑,争取用3-6个月的时间,把它用熟练。

电池管理芯片的使用依然存在着问题

利用电池管理芯片对锂电池进行充电、进行初级升压操作的电路部分,在修复了之前的问题之后,依然存在着(又出现了)新的问题,主要表现和可能的原因分析如下: 一、使用电池供电时,输出电压5.10V正常,但是一旦接入负载,输出电压会马上掉下去 这个“马上掉下去”也不一定每一次都会彻底掉光,有的时候掉下去了、然后去掉负载之后输出电压又能慢慢恢复成5.1V;有的时候掉下去了,撤掉负载之后就再也恢复不回来5.1V,而是会一点点彻底掉到1、2V左右。 彻底掉下去、一直掉电到1-2V,是可以理解的:现象很像是电池管理芯片停摆、不在工作了。输出电压只靠输出位置的电容给出,而此时没有接入负载,所以电容一点点的掉电、掉到1-2V左右停止。看上去虽然还有2V的输出电压,其实是浮电,没有驱动力,本质上就是芯片不工作、没有了输出电压; 有的时候接入负载掉电、撤掉负载之后输出电压又能自己一点点的恢复成5.1V,感觉就是在上面提到的电源管理芯片停摆之后,芯片自己又慢慢恢复了工作。 所以上面两个现象,本质上应该是一样的:就是电源管理芯片不工作了。而电源管理芯片之所以不工作,最大的可能是:电源管理芯片检测到了电池欠压、于是进入了欠压保护、从而停摆、不在通过电池进行电压的输出。 我接入的电池是4V的电量,不可能出现欠压的情况,由此推断很可能是电池管理芯片误判电池欠压、进而停摆。而且这个芯片检测到电池欠压、停摆之后,只有通过电源进行充电之后,才能重新恢复工作,这与我遇到的情况是相同的:一旦输出电压掉下去之后,只要再充电一下,就能够恢复到5.1V的输出水平。 所以现在的问题是:为什么带上负载之后,电源管理芯片会判定电池欠压了呢? 初步判断是我的电路图中有错误,有某些必要的动力线太细引起的电池电压欠压误判。但是这个猜测现在还没有时间仔细查看,等有时间了会重新看一下电路图,查找一下具体的原因。 二、还有一个很奇怪的现象,带着电池的同时,通过电源充电状态下,输出电压是4.6V 这个电源管理芯片是支持“边充边放”的,所以通过电源给如充电电压时,它的工作状态,正常的应该是:1、通过电源管理芯片给电池充电;2、输出电压位置应该保持5V的电压,这个输出5V无论是通过电源过去的、还是通过电池过去的,总之芯片可以持续输出一个5V的标准电压。 但是实际情况是电源接入的时候,输出电压只有4.6V。这里的4.6V并不是浮电,而是实打实有驱动力的4.6V,原因是我的负载是一个DCDC升压器,目的是将电源管理芯片视为一级升压器完成对电池从4V到5V的升压,然后二级升压器完成从5V到11.6V的升压。 当接入负载时,输出端的确出现了11.6V的电压,这意味着“负载”、也就是“二级升压器”部分的电路是正常工作的,它吃入4.6V的电压、输出11.6V的电压。工作正常。 所以我的困惑是为什么此时电源管理芯片仅能够输出4.6V的电压?这是不合理的,预期正确的输出应该是5V才对。这里我就死活想不明白了,如果也是某些线径太细引起的,似乎有些说不通——也可能说得通: 电源给电池充电是正常的,电池管理芯片的输出是通过电池进行升压输出,这是它期望升压到5V(如前文的5.1V),并且为后面的负载进行电力输出。但是电源管理芯片一旦输出端向外输出电力,电池电压马上会被拉低,于是芯片停摆,输出电压从5V降低到诸如3.2V、芯片停摆。 然而此时的电源是一直接通的,因而芯片在判定电池欠压之后马上给除了一个非常大的充电电流,对电池进行充电,同时重新激活了芯片的DCDC部分,输出部分又重新回复到5V,如此输出部分相当于是一个PMW型的输出,从而不可能达到稳定的5V输出,也不会掉电,就在PWM的平均作用下,形成了4.6V的输出电压,并且这个输出是持续、具有驱动力的,因而可以为后面的负载(二级DCDC提供电力)。 三、总结上面的现象,将怀疑重点确定 通过上面的推测,最可能的就是芯片到输出这段位置上,有一条线画错了,画得太细了。回头有时间了,要检查一下。

电位器部分的电路板初步设计完成

在《完成了使用IP5407对锂电池进行充电的测试》中提到,电源板中没有接入IP3025保护电路时,需要将电池的负极与地短接,为了实现这个可选配置,就不得不将其中一颗电阻从电源板电路部分移除出去,以能够腾出空间来安放那颗新增加的0Ω电阻。好在从原理的角度上看,的确有一颗电阻不应该出现在电源板部分、而应该出现在电位器部分。这颗电阻与可调电阻串联,共同形成的阻值构成了电位器。 今天已经将电位器部分的电路和PCB都设计好了,电路简单、最终的PCB自然也非常的简单: 它最终的样貌大概是这样的: 这里比较令我感到不满意的是电位器B103这个电阻,其实我中意的是另外一个品牌的电位器,更轻薄、更小巧。但是无奈我相中的那颗电位器齿轮薄厚虽然满意、但是外缘凸出来的实在太少了。无奈只能选用当前这颗。但是当前这颗的整体厚度是2.0mm,不是很确定最终是否能够完成装配。管不了这么多了,先把整体结构搭建出来,然后再看哪里有问题、再返工哪里吧。 我更中意的是Alpsalpine(阿尔卑斯阿尔派)的RK10J11R001Y这颗电位器,它更加的轻薄,如果可用,那就意味着在面板上看上去更加秀气、协调。音量旋转按钮不会比其他面板组件粗壮,看上去会更漂亮一些。只可惜这个电位器的齿轮外缘凸出的太少了,如果使用,那么它连面板都伸不出来。无奈只能选择网上更常见的BK103这种电位器。 无论是使用RK10、还是BK103,都要确保是0-100K可调范围的,并且确保是B型曲线的。之所以要选择是B型曲线,原因是对于音量调节这个需求,A型线性阻值调整类的电位器是不合适于人耳听力特点的。而B型可以在0-100K的调整上形成一个曲线,这样才能确保在大音量时电位器调整效果更明显,才能让人耳分辨出大音量时确实有调整的动作。

为P1.27的排针焊接做准备

一、起因 前几天在焊接电路板时,遇到了1.27mm间距的排针,结果十分悲惨——每一个2×2位置都被我焊成了一大坨,四个针脚被一颗巨大的焊锡包裹住了。之后无论是用焊刀吸锡、还是用铜带、又或者热风枪……无论任何方法,无论上面再添加多少助焊剂,都无法将这一坨焊锡搞下去、分割开,直到板子烧糊了也无法将焊锡移除。 这对我而言是一个障碍,如果不解决,那么我想制作的小硬件将会因为这个障碍而最终胎死腹中。所以这几天一直在为这个“手艺”做准备: 首先是新买了一把刀头,我之前用的刀头可能已经有些氧化,无法顺滑的吸锡。另外就是又买了几块PCB焊接练习板,这种经验工作,必须要依靠大量的练习才能掌握技巧。之后今天又觉得我的焊锡丝在粗了,现在使用的是0.8mm的焊锡丝,我想应该再买一捆细一些的,例如0.3-0.5mm的焊锡丝,应该是有帮助的吧。 这么想着,未来几天我就要开始动手练习,期望能够顺利。 另外还有一个比较头痛的事情,就是如何确保这些排针、排母焊接的周正、没有歪斜。这也要再花时间想一想办法。 二、初步尝试使用新买的烙铁头 上面提到准备工作还缺少一些线径更细的焊锡丝,但是实际上我发现完全没有必要,现在使用的0.8mm焊锡丝是可以完成对1.27mm间距排针的焊接的。实际上,焊锡丝的粗细并没有影响,即便是更粗的焊锡丝也是可以搞定的。关键在于烙铁头和焊接的技巧。 1、烙铁头 刚刚尝试了一下新购买的烙铁头,确实比之前使用的好用许多,即便是我这样对焊接技术完全的门外汉,这支新的老铁也非常容易挂锡、非常容易将PCB上多余的焊锡吸起来。而且这只烙铁头的导热效果明显比之前的好许多,我甚至觉得它更适合使用高含锡量的焊锡丝。 2、焊装技巧 之前总觉得自己只有两只手不沟通,现在发现只要先把排针(或排母)的焊脚插入到焊膏中,让焊膏挂在引脚上一些,在把排针插入到PCB上,这样焊膏就相当于粘合剂,会把排针黏住。此时排针的位置就是固定的,而且可以解放出手指来不再手忙脚乱。 将PCB翻转过来,因为排针已经“黏贴”在电路板上,所以既不会掉、也不用手指扶着,它自然而然地悬垂在电路板上,周正、稳定。 然后就是用新购买的烙铁头,挂上一些焊锡。此时就发现手中当前的0.8mm焊锡丝为什么可以使用了——原因是并不会再用到焊锡丝,而是直接使用烙铁头上挂住的锡进行焊接操作。此时也会发现为什么60%含锡量的锡丝不合适了——原因是挂在烙铁头上的锡因为里面含有40%的助焊剂会开始大量冒烟。如果用90%的锡丝,不冒烟,烙铁头上就是熔融的金属锡。 直接用烙铁头在PCB露出来的引脚上一贴,只需要1秒不到的时间,就完成了焊接操作。因为PCB的插孔中有焊膏做为助焊剂,所以烙铁头上的金属锡会马上转移到PCB的焊盘上、并且沁润到过孔中,从而完成焊接操作。助焊剂并不会“提前蒸发掉”,所以整个焊接过程中的流动性非常高,不仅有利于焊锡从烙铁头转移到焊盘、也不会出现焊盘与焊盘之间的连锡。 如上,就是我找到的1.27mm排针焊接的技巧。相信只要再练习20-30次,就能熟练掌握对1.27mm排针的焊接了。

电源板上面使用的IP3025的替代方案备忘

一、备忘 在之前设计的电源板上面,有一个锂电保护电路,使用的是IP3025芯片,结果在芯片购买阶段才发现这个芯片很难找到,但是我又不想对已经完成的电路进行大的改动。所以这里找到几个可能的替代芯片,先做一下备忘: FM5057,也是内置mosfet的保护芯片,相对IP3025而言,FM5057的封装尺寸更大、这对我而言是好事,对于手工焊接会更加友好一些。虽然FM5057的封装尺寸大,但是它的外围可以少用一颗电容,因而平替起来应该是可行的; XB3301AJ,和IP3025的封装尺寸一样、外围用到的IC数量也一样。只不过二者的引脚定义不一样,需要重新对保护电路部分进行一下布线; XB5307A,看上去似乎和上面是一样的,先记下来。 其实上面的三个IC都不是很理想,最好的是完全平替,好在这几天时间还有,可以再找时间慢慢的查阅、对比一下。当然如果实在找不到,在开发测试阶段这个事情也可以暂且忽略,不装保护电路,先把整体结构验证完成之后再说。 另外,IP3025的Datasheet在这里,有时间要再看一看,了解一下这颗芯片具体的功能。 Todo:1、将电池保护IC接入到当前电路中;2、保留0R可选电阻;3、重新测量电池的直插距离进行微调。 二、关于IP3025的进一步备忘 IP3025芯片内部应该是很复杂的,但是从外部整体上看,它并不复杂——它类似于一个带有监测机制的开关,一旦检测到电池当前的电压过高、过低、或者电流过大等情况时,就切断去地回路,电池缺少了去地回路、自然就不会再工作,从而避免了吃饱了还吃的过充、饿脱相了还要干活的过放、或者是大电流状态。 但是我不理解的是,它一旦切断了去地回路,电池虽然可以停止工作,但是这颗芯片此时又是如何继续监测电池的后续状态的呢?猜测是它的去地回路不止一条,而是有两条,其中一条是主回路、另外一条是监控专用回路,当电池出现异常时芯片将主回路切断,但是另外一条高阻抗回路依然连通。这条高阻抗的回路因为阻值非常大,所以相当于是断路状态的,上面流经的电流不会对电池产生更负面的影响,却可以完成电池电压的检测,直到检测到电池电压落回正常区间,便会再打开主去地回路。 类似的电池保护芯片应该都是这样的一个工作机制,需要注意的是控制回路开关的mos管,有些芯片是封装进去的,有些则是需要自行在外围添加的。在外围自行添加mos管的芯片,流出来的引脚便是对mos管开关的控制。如此看来,对我而言自然是要选择mos管被封装到芯片内部的,才更简单一些。 这时又引申出一个新的问题:既然mos管封装到芯片内部,对于电路设计人员更加的友好,为什么还有很多的电池保护芯片,mos管是没有封装、而是需要电路设计人员在芯片外围自行添加呢? 经过搜索大体了解到这个新问题的答案:封装在芯片内部的mos管,无论是规格还是性能,会小一些、限定也会多一些。如果将mos管做在电路的外部,主要去地回路都不用经过芯片,设计人员可以将去地电缆做得更粗壮、mos管的选型也可以更强劲,如此在大电流、高负荷的工作状态下,电池保护芯片本身只进行监控和信令的发送,本身不参与电流的承载,这样就可以确保芯片自身不用过多的考虑mos管散热问题、同时也能经受更大的电流负载。 另外值得注意的是:对于IP3025这颗芯片,它有两个版本,分别是IP3025A和IP3025B,这两个芯片仔细对比会发现是有差别的,IP3025A过充电压检测阈值是4.3V,而IP3025B的过充检测室4.425V。所以具体选用哪一个还要看自己手中的锂电池的规格。 这个最后的额外注意其实对我而言暂时没有意义了,原因是我根本找不到IP3025的芯片,所以要用本文最开始提到的可平替芯片。只有在使用具体芯片时,才会再去关心芯片的过充检测电压和自己手中的电池是否能够达到最佳的完美匹配(但是这个发现,对于自己的经验而言尤为重要,在今后进行电池保护芯片选型时,会尤为注意)。 三、调整 今天(2025年4月23日),对电源板进行了如下调整: 1、改变了电池插孔的孔径,从原来的1.0mm调成1.2mm;调整了两个引脚的间距,从原来的9.0mm调整成了8.2mm; 2、对其中的SS34的封装进行了调整,从SMA调成了SMB封装; 3、去掉了EMC保护电容; 4、增加了一颗0R的跳线设置电容; 5、将原有的IP3025A替换成了FM5057,并且因为进行了这个电池保护IC的替换、所以去掉了其中一颗外围100nF滤波电容; 6、将NTC电阻的封装类型改成插件型、并且将这个电阻的放置位置进行了改变,改到与电池同侧、并考虑到未来安装之后,如何与电池尽可能相邻。

蜂鸣器的第三部分电路板画好了

电源电路板部分存在着一些小问题,已经进行了调整,将其中的一颗多余的电阻移除并移入到了电位器电路板中,然后这个电源电路板就可以再次提交印刷了。 趁着心情不错,顺便将第三部分——Jack板也画出来了,并且准备进行这块板的测试打印: 如果顺利的话,那么剩下的就是比较简单的电位器板、还有一块相对比较难的前面板了。前面板之所以难,是因为面积很小、但是上面要焊接的元件却非常多,不过我暂时先不考虑后面的事情,只把眼前的东西搞好,走一步看一步吧。 说起当前这个jack电路板,其实也是有一些难度的,这是我在制作前面的电源板时就发现了的问题:1.27mm的排针、排母焊接对我而言非常难。前面在进行电源板的焊接时,我曾一度担心1206的封装对我很难,不过经过实际操练发现虽然困难、但也能搞定。但是这个1.27的排针,练习了好多都没有搞定。 看别人对它的焊接,焊锡非常的丝滑,但是到我这里总是非常难——一个不留神就会连锡,无论用焊锡丝、还是用焊锡膏;无论用含铅的、还是无铅的,都很难搞定。 我一直在想实在不行就改用2.54的排针,但是PCB上的空间实在有限,无论怎么摆弄都掰不开地方。只能继续硬着头皮练习自己的焊接技术,希望能够通过熟能生巧找到感觉,搞定这块板的制作。