话说前几天某段空闲时间,LT 突然想测测优乐USB电源的带负载能力,这个还是上次买ipod nano 5 时,商家送的,带个USB母口,用于MP3/MP4充电使用,型号 UAD04 ,上面标称输出5V1A。于是不假思索,拿出NOKIA充电器 AC-6C 附带的USB连接线,将USB头插入优乐电源上,拿出万用表,啪啪啪,旋到10A电流档,准备直接用表笔短接小头输出测试短路电流(注意,非常规操作,容易烧毁电源,请勿模仿)。测出短路电流为0.67A,然后更为离奇的是,测开路电压居然是6.12V,与标称的根本不符,难道是万用表坏了,于是把USB充电线插到笔记本上USB接口,一测量,居然还是6.12V,怪事,电脑USB口难道不是5V吗,这个以前测过其他主板确实是5V的,难道表真的坏了,找来另一块表,同样的结果。
昨天周末,LT 突然想到这个问题,于是在baidu上以关键字 “6.12V”和“ USB” 搜索,发现原来居然是NOKIA那根 USB充电线的问题,小小充电线 ,隐藏了一些不为人知的内幕(至少 LT 以前不知道)。让我们来看看这个USB充电线,上面标着型号CA-100C,如图:
在一个帖子里(【分析手机充电不停的故障】2月2日更新_暨Nokia手机的充电管理简解),作者详细介绍了此线的作用,原来与 LT 想象的不一样!LT 原本以为这根线只是一个直通线,不料,USB公头后面居然还有电路,整个就是一个DC-DC转换线。会将5V左右的电压转换为6.12V输出用来给NOKIA手机充电,否则,单单5V电压是冲不满NOKIA手机的。
原来还有这种事情!LT 唏嘘不已。岂料,当 LT 再以关键字 “CA-100C” 搜索时发现,DIYer们充分发挥了这根线的作用,他们测出这根线的启动电压有的只要2.4V就可,于是2节1.5V电池(或1节3.7V的18650锂电池)+ CA-100C,一个简单的便携手机充电器就诞生了!感兴趣的看官请在 shoudian.com 里搜索 CA-100C 字眼便可以找到。
P.S.
1、我测量的 AC-6C + CA-100C的数据
- 单AC-6C:空载电压 5.04V 短路电流0.71A
- AC-6C + CA-100 :空载电压 6.12V 短路电流 0.67A
2、测量优乐USB电源UAD04的数据
3、笔记本电脑E41G USB口数据
- 空载电压 5.10V 短路电流(未测担心损坏主板)
昨天去客户工厂做事,中午我们4个人要在工厂食堂吃饭,按照老办法,打算找他们的员工代我们刷卡,我们直接给他现金。食堂的饭菜是4元一份,我们以前都是直接给代刷卡的人5元的。这次我们还打算这么做,去排队,前面是个很看着很舒服的MM,打招呼,问可以代我们刷卡吗?我们付你现金。MM答应了,我给她了一张20元的钞票,不过她说什么都不要多付的4块钱,非要说要找给我。我百般推辞,无效。执意要给。她说要么等会去小卖部把钱退出来给我。我只好苦笑,然后我们拿了汤就去吃饭。边吃我还边想,你又不记得我,又没我们信息,等会儿还会找得到我们吗?吃完饭我们没耽误就撤出食堂去做事,也没留意那MM在什么地方。
不料,等我们下午结束,准备从客户工厂撤退,在门卫处拿回所押的证件的时候,门卫阿姨突然问,你们中午是不是在食堂吃饭了啊,有个小姑娘过来问哪个单位的有四个人在这边,然后留了5块钱,让门卫转交给我。我顿时唏嘘不已。多好的MM啊!唉,还让人家倒贴一块钱。
Arduino 是一个开源单片机平台。前两天得到一块测温IC模块,LM75,正好有机会研究下Arduino的 I2C 通讯功能。关于I2C总线的知识,可以在这里找到。
LM75 是一个I2C接口的测温元件,外围电路仅仅需要一枚电容,它的datasheet可以从官方网站上下载到 (点击这里下载),具体的spec这里就不多讲了,感兴趣的可以查看它的datasheet。说到这里,很是感慨,就这么一个4mm*5mm见方的小东西,手册却一点也不含糊,详详细细介绍了所有的功能。其实,有时候看元器件的手册对扩展知识面也很有帮助。LM75的主要功能是测温,本文的目的就是如何应用Arduino和LM75来获取当前的温度,核心是Arduino的I2C协议的应用。

看LM75的datasheet,会知道它是作为slave,地址是7-bits,1001A2A1A0,我手里这个A2\A1\A0都是短接地的,所以地址就是1001000,继续查找手册,温度的指针寄存器是00000000,温度的格式是16bits,前面8bits最高位是MSB,若MSB为1,表示为负,后面8bits的最高位是LSB,为 0.5度。为了简化程序,我们只取温度的整数部分,即D15-D8。
再看Arduino的Wire库的应用,Arduino作为master,首先要向I2C总线上的LM75地址发送读取温度寄存器的指令,即00000000,这一步本程序版本0.01暂不考虑,因为LM75上电后,指针寄存器里的指针即指向温度寄存器, 然后读取一个byte就可以得到温度的高8位,即整数值。
让我们看程序:(版本0.01)
#include <Wire.h>
void setup()
{
Wire.begin(); // join i2c bus (address optional for master)
Serial.begin(9600); // start serial for output
}
void loop()
{
Wire.requestFrom(B1001000, 1); // request 1 byte from adress 1001000
while(Wire.available())
{
int temp = Wire.receive();
Serial.println(temp);
}
delay(500);
}
上传到Arduino后,打开Serial Monitor ,就可以在下部的窗口里读到温度值。

哈,我现在室内温度是28度!看来南京最近的天气还是比较凉快的!
没有下载器,如何给arduino灌装那初始的灵魂-bootloader,日本一位arduino爱好者实现了用arduino本身来烧bootloader,奥秘就在于FT232R的BitBang特性。想了解详情,参看下面网址:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1217113409
这个是我的Arduino

http://arduino.cc/en/Main/ArduinoBoardDuemilanove
Recent Comments