|
本帖最后由 312494845 于 2012-10-27 00:26 编辑
话说是前几日看了论坛上的帖子
起因
Arduino学习笔记A12 - 自制Makey模拟触摸键盘(还差实物贴图和视频没贴上,稍后补全)
开始
此时正好手头没事,而且所需的硬件都有,所以果断摆上东西,按照帖子的说明一步步链接好电路,下好程序,插上USB线。
“无法识别的USB设备”
怀疑
首先,觉得是自己的接线方法有问题,所以把所有器件都拆下来从新连接上,结构依旧无法识别。看了下跟帖,也有些人说无法识别,但也没有提出解决方案。
其次,是不是帖子贴出来的代码有问题呢?遍在网上搜了好多发布的arduino的USB库和代码,有的编译不通,有的编译成功,但是下载下去之后依旧无法识别。
再次,怀疑是稳压管的型号不对,因为用的稳压管是在桌子上小垃圾堆里照出来的,不知道具体型号。用万用表量了一下USB信号线的电压,4+V,果然超了……原贴上建议的是3+V,这下完蛋了,看来这个鼠标我是做不成了。
休息干点别的吧,反正手头也没有适合的稳压二极管。突然灵光一现:这个稳压管是坐什么用的呢?可能一:作为USB信号线,对静电比较敏感,所以用稳压管来释放经静电,放置静电打坏器件。如果是这样,那就会有如下两个疑问:1、如果作保护器件的话,去掉这个器件也不会影响系统工作,2、如果是保护器件为什么一定要用3+V的稳压管呢,我的是4+V的应该也没有问题啊。显然不是起保护作用。 可能二:作为USB信号线的阻抗匹配即滤波。因为二极管的PN结宽度会随两端点啊的变化而变化,所以二极管是带有电容性的,如果这样也会有疑问,1、如上可能性疑问二,既然3+V二极管可以那么4+V的二极管也可以。2,滤波USB低速通信时影响不大。所以也不是其这个作用。最后的可能,因为使用5V的arduino,所以稳压管的作用就是限制USB数据线的电压,这个倒是说得通,3+V二极管可以,4+V的二极管也不可以。俗话说要动脑也要动手,所以我火速查了一下USB标准的文档
,证明,稳压管的作用就是把USB信号线的电压限制在2.8-3.6。这样既然知道了稳压管的作用就好办了,虽然手头没有没有稳压管,但是把信号线的电压先知道这个范围内,方法也很简单。我让arduino运行在3.3V这个问题就解决了。因为我用的是arduino pro mini,
他是电源可外接的,恰好手头的FTDI也有3。3V输出,
拿来借用一下,OK这个问题解决。USB在此插在电脑上试了一下,发现还是不行,哭了!
最后,发现所给的电路图中USB信号定义顺序有问题,记忆总USB数据线顺序是VUSB,D-,D+,GND。而原贴中的顺序VUSB,D+,D-,GND。神奇了!还是再看看USB标准吧
也就是说原帖子上拉电阻拉到D-是没错的,但是因为D-D+的顺序颠倒了,所以大多数人都会把上拉电阻拉到D+。当然我也接错了,之后调了一下上拉的位置,模拟的鼠标就被识别了。
总之,原帖USB接口线序有问题会误导大家接线,所以大家的会出现无法识别的问题。贴出来的程序没问题
另外,传统不带USB的AVR能够实现USB功能,虽然是很常见的事,但是在Arduino在国内还是比较少见的。对于比较专业的Arduino也比较建议使用pro mini这样的精简硬件版本,好处有三,第一引出端口超多,方便自己使用。第二体积小,便于潜入各种作品当中,第三价价格低。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|