Arduino中国 | Flamingo EDA

Archive for December 2008

Dec/08

29

通用型HS-422标准舵机支架

新版本的传感器扩展板能够很方便地连接舵机,这样Arduino本身就能够很容易地变成一个舵机控制器,再加上这里要介绍的舵机支架,应该能够满足很多需要动作控制的场景。经过氧化处理后的两个铝支架,与两个标准 HS-422 舵机互相配合,能够完成水平和垂直方向上150度的转动效果:




真没想到,一块传感器扩展板居然被我改到了第四版,而且估计还会继续修改下去。最初的传感器扩展板在设计的时候,只考虑到了如何将数字传感器和模拟传感器很方便地连接起来。因此在最初定义数字传感器线序的时候,没有更多可以参照的地方,直到后来有人提出是否可以考虑与伺服电机(舵机)的连线顺序一样,我才很认真地考虑这一问题,并且在最新的V4版本上采用,原因在于:

  • 可以很方便地与舵机相连
  • 不容易出现短路的情况,在接错钱时不会有很严重的后果
  • 可以与模拟传感器接口统一起来,保持通用

用这么多的好处,自然是忍不住在V4上做了这么一个大的修改,好处多多,但升级也会给之前的用户一些不便。最主要的影响在于数字连接线,由于连线的顺序不一样,因此混用的时候会有一定的麻烦;-) 也就是说,使用V4之前的传感器扩展板的用户,依旧要使用以前的数字连接线;而使用V4版本的用户,则需要使用另一种数字连接线(我暂时叫它通用传感器连接线)。

V4上其它的改动还包括:

  • 调用了模拟传感器座的位置
  • POWER区域与最新的Arduino保持一致
  • 数字传感器连接座4个一组,方便连线
  • 添加了一组适合通用连接线的模拟接口
  • 加入了4针的COM/IIC连接座

COM/IIC连接座是为以后的串口模块和IIC模块做准备的,通过设置两个跳线进行相应的选择。

从使用上讲,V4跟之前的版本是一样的,直接连接到标准的Arduino上就可以了:

数字传感器可以借助通用传感器连接线与其相应接:

模块传感器则即可以通过模拟传感器连接线,也可以通过通用传感器连接线与传感器扩展板相连:

最后,因为数字传感器接口与舵机接口兼容,这样用传感器扩展板就可以直接驱动舵机了:)

No tags

Dec/08

10

Arduino Nano 检测

在USB转串口的功能稳定之后,接下来就是Arduino Nano上的主芯片ATmega168-20AU了。首先是为Arduino Nano下载Bootloader,这里用的是Arduino专用下载线,使用该下载线时,需要同时给Arduino Nano用USB供电:

通过下载线下载的时间较长,成载下载之后,先通过下面的数字I/O测试工程对所有的数字I/O接口进行检测:

int BASE = 2;
int NUM = 12;

void setup() {
  for (int i = BASE; i < BASE + NUM; i++) {
    pinMode(i, OUTPUT);
  }
}

void loop() {
  for (int i = BASE; i < BASE + NUM; i++) {
    digitalWrite(i, HIGH);
    delay(200);
    digitalWrite(i, LOW);
    delay(10);
  }
}

再通过下面的工程依次测试验模拟输入端口是否正常,与Arduino标准版本不同,Arduino Nano采用的ATmega168-20AU提供了8个模拟输入:

int sensorPin = 0;
int value = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  value = analogRead(sensorPin);
  Serial.println(value, DEC);
  delay(150);
}

最后一项则是检测外部供电时是否正常。在VIN和GND间加上9V电压,分别检查USB连接和断开时是否正常。刚开始的时候一不小心把9V接到了RST引脚上,导致Arduino Nano无法再下载程序,即使重新下载了bootloader也是一样,所以大家在使用外接电源时一定要确保接在右侧最上面的那个引脚上。

换了一个Arduino Nano重新上面所有的测试,一切正常,总算舒了一口气。接下去又连续做了两天的稳定性测试,不断地从一个模拟输入端口上读取传感器的数值,再通过串口传到PC上,一切正常:-)

No tags

Dec/08

4

Arduino Nano

从原理上讲,Arduino Nano跟Arduino Diecimila等标准版本并没有本质上的差别,但其苗条的身材的确不是那么容易对付。动手做Arduino Nano的想法其实由来已久,但进度一直严重落后,光原理图就曾因为各种原因多次放下,然后又重新拾起,来来回回折腾了好几回。直到上个月,总算下定决心要把它搞定。

按照官方网站上公布的Arduino Nano原理图,画起来没有什么困难,再加上之前对Arduino Diecimila等原理图的分析,很快就画完了。真正有难度的是PCB图,Arduino Nano的尺寸受到很大限制,所以只能画了一块4层板,而且走线走得密密麻麻,前前后后整整花了一周的时间。生成Gerber文件之后,交给工厂去生产,因为是4层板,制作的费用非常高,而且等待的时间也相应长了不少。

等PCB板到手之后,当天晚上就立即焊了两块样板出来测试。首先当然是测试USB功能,这一试麻烦就来了,说找不到设备:( 对着原理图,拿万用表仔细检查了一下电路,没有发现什么问题。只是偶尔插拔Mini USB线的时候,电脑能跳出一个找到硬件的小提示,但随后立即报告说无法识别的设备,一个晚上毫无结果。但隐约觉得是不时信号的干扰导致的?

第二天早上跑去了一趟电子市场,买了两根新的Mini USB线回来,一条是普通的白色的,一条是黑色的带磁环的(老板说那个其实就是一个塑料壳),效果一样。

第三天开发上网疯狂找资料,没有什么进展,觉得似乎一千多块的制板费就要打了水漂:(

第四天找来了各种FT232RL的原理图看,发现有人在USBVCC上加了一个电感或者磁珠,并且D+和D-到地都接了一个47pF的电容,很明显这些设计都是针对电磁干扰的,然道Arduino Nano对电磁干扰有特殊的要求?买来一些直播的电容和磁珠,效果不是很明显。

第五天还是继续借助Google查找资料,已经制作好的Arduino Nano板子是很难改了,有没有其它补救措施呢?网上搜索到有给USB加磁芯的,真像是一根救命稻草啊,可是去市场上买了两个TDK的磁芯,装在Mini USB线的两头,还是不见效果。

第六天把板子上的Mini USB接头换了一个质量更好的,老板说是进口的,也不见什么起色。我能想到的有可能干扰FT232RL这块芯片工作的因素几乎都考虑过了:(

第七天还是Google,这回搜索的是“FT232R unknown device”,LadyAda论坛上的一个讨论吸引了我,原来有人也遇到过类似的问题,原因是FT232RL的26号引脚(TEST)没有接地。又仔细查了一个FT232R的文档,果然是说TEST引脚必须接地,否则正常使用时会出现问题,该引脚是设计给芯片厂商做测试用的。精神为之一振,再仔细看了看Arduino官方网站上的Arduino Nano 2.2的原理图,TEST引脚居然是悬空的!再仔细看了看Arduino Nano的照片,26脚应该是接地的,费解:( 回家试验了一下,刚开始虽然遇到些小问题,但总的说来USB芯片这部分是正常了。

总算长长地舒了一口气,花了一周时间总算找到了原因所在,刚开始走了一段弯路,是因为我认为Arduino Nano给的原理图是正确的,所以把大部分精力集中在对干扰的克服上。不过这样一来对FT232R的理解更深了一些,要是再做板的话,可以考虑FT232R文档中的建议,做如下两个改进:

  • 在USBVCC上加一个磁珠来消除EMI
  • 在D-和D+与地间加47pF的电容

尽管我的Arduino Nano还没有完全验证过,但还是忍不住先贴出几张图来:)

手头暂时没有下载线,等USB下载线取回来之后,就可以烧写Bootloader从而进一步实验Arduino Nano的功能了,但愿不要再出现这样的波折,祝自己好运;-)

No tags

Theme Design by devolux.nh2.me