Arduino中国 | Flamingo EDA

CAT | Wiring

Apr/08

21

Wiring元件清单

Wiring元件清单

No tags

Jan/08

28

DIY Wiring: 外部电源和EEPROM

整个Wiring最后两部分电路是外部电源和EEPROM。外部电源电路与Arduino上的基本没有什么区别,采用的也是78M05这样的电源芯片,相应的元件清单如下:

类型 标记 数量 规格
电源芯片 IC4 1 LM78M05
电容 C10, C11 2 100nF
电容 C12, C13 2 100uF
整流二极管 D1 1 1N4004

Wiring电路上带一个4K字节的EEPROM,其作用是可以用来保存一些程序的数据,如用户的配置数据等。EEPROM的电路部分并不算复杂,估计大部分工作都在于软件上,下面是相应的元件列表:

类型 标记 数量 规格
EEPROM芯片 IC3 1 93C46
电阻 R5 1 10K, 1/4W
电阻 R6 1 2.2K, 1/4W

最后焊接完的效果如下图所示:

为了对其中的EEPROM功能进行验证,我试验了另外一个Wiring工程:


#include 
char val; 

void setup() {
  if(EEPROM.read(16) != 'F') {
    EEPROM.write(16, 'F');
  }
  val = EEPROM.read(16);

  pinMode(48, OUTPUT);
} 

void loop() {
  if( 'F' == val) {
    digitalWrite(48, HIGH);
  }
  delay(100);
}

上述Wiring工程在初始化过程中先读取EEPROM中地址为16的字节单元中的值,并在其不是字符F的情况下,往该地址单元中写入字符F,然后再从中读取这来。这样如果EEPROM正常工作的话,就能够保证变量val在setup()函数执行完后,其值一定是字符F。在loop()函数中,如果检查出val的值确实是字符F,就点亮Wiring板子上自带的LED(接在数字I/O的48管脚上)。

习惯了Arduino程序下载时不需要按复位键,并且在下载完成后也不需要按复位键,刚接触到Wiring时对其在这两个位置上还需要按复位键的做法的确有些不适应:-) 真希望Wiring在接下去的版本中能对这一地方进行改进。昨天发邮件问Wiring的作者为什么不把bootloader的源码公布出来,得到的答案居然是他把源码弄丢了,现在只有二进建的版本,我晕…

最后贴一张我制作的Wiring在运行上述EEPROM工程时的效果图,用的是外接电源,右侧的红灯是电源灯,左侧的绿灯是Wiring自带的LED。

No tags

Jan/08

27

DIY Wiring: AVR电路

Wiring的核心是一个ATmega128单片机,也是整个电路中最复杂和最容易出错的部分。焊接上因为有了之前FT232BL的相关经验,并没有遇上太大的麻烦,而剩下的一些贴片元件基本上也不算太难。唯一遇到的问题可能就是这些元件实在太小,本人的眼神又不算太好,经常弄飞一两个,掉在地上找不着了:)

类型 标记 数量 规格
AVR单片机 IC1 1 ATmega128-16AU
电容 C6, C7 2 22pF
电容 C8, C9 1 100nF
电阻 R7 1 10K
电阻 R8, R9 2 1.8k
电阻 R11 1 270
电阻 R14, R15 2 1K
晶振 Q2 1 16M, 二脚直插式
晶振 Q3 1 32.768K, 32C31, 四脚表贴式
按钮 RESET 1 四脚直插式
发光二极管 PWR 1 红色
发光二极管 LED 1 绿色
10P引脚座 ISP 1 黑色

最后焊好的效果图:

Wiring的bootloader是事先驻留在ATmega128里的一小段程序,它的作用接收来自于Wiring IDE的命令,实现Wiring工程的下载。往AVR芯片里烧bootloader是非常关键的一步,同时也是对芯片能否正常工作做初步的检测,AVR系列芯片都提供ISP接口,借助这一接口和PonyProg这样的软件,就能够实现对bootloader的烧写。

早先就听网友说过Wiring的bootloader在Wiring的网站上找不到,试了一下果然如些,难怪Wiring不如Arduino那么流行;-) 没有办法,按照论坛里的提示,给作者发了一个邮件要bootloader,等了一天拿到bootloader的HEX文件。

有了之前DIY Arduino的经验,AVR熔丝位的设置这回一开始就考虑到了,按照网上搜索到的文章里的说明,下图在PonyProg中为ATmega128设置的熔丝位:

接下去的过程比较顺利,用PongProg和自制的并口下载线成功地将bootloader烧写到Wiring上的ATmega128中,由于ATmega128的Flash有128K,所以相应的烧写时间比较长。

最后一步就是如何将Wiring程序下载到Wiring板上了,这与在Arduino上是一样的。下面是我试验的第一个Wiring程序:


int ledPin = 0;

void setup()
{
  pinMode(ledPin, OUTPUT);
}

void loop()
{
  digitalWrite(ledPin, HIGH);
  delay(1000);
  digitalWrite(ledPin, LOW);
  delay(1000);
}

该程序比较简单,只是不断地点亮接在数字I/O管脚0上的LED,实验成功!之前我担心最有可能出现问题的电路部分基本算是调试成功。当然,之后要一个一个验证每个管脚的功能,一共50个,哈哈:)

No tags

Jan/08

13

DIY Wiring: USB电路

万事开头难,最后我挑了USB这部分电路开始焊接和调试,一来这部分电路在Arduino上是基本一致的,二来这部分电路可以给板子上的其他部分供电,三来它还可以同PC机实现串口通信。

USB这部分电路采用的是FTDI公司的FT232BL芯片,算起来也焊过十多回了,因此虽然换了一个刀状的铬铁头,也没有遇到什么大的麻烦。芯片焊好之后,再把电容、电阻、LED、晶振焊好,头一回焊贴片元件,左右开工,总算一一搞定:) 下面是该部分电路所用到的元件,由于手头没有1k的电阻,所以用来给发光二极管限流用的电阻R12和R13暂时用1.5k的电阻替代了。

类型 标记 数量 规格
USB转串口芯片 IC2 1 FT232BL
电容 C1 1 10nF
电容 C2 1 33nF
电容 C3 1 100nF
电容 C4, C5 2 22pF
电阻 R1, R2 2 27
电阻 R3 1 1.5k
电阻 R4 1 470
电阻 R12, R13 2 1k
晶振 Q1 1 6M
发光二极管 RX, TX 2 绿色

焊上USB接头之后,测了一下板子上5V和Gnd两个引脚间的电阻,在确认没有短路之后用USB线连到PC上,没有任何反应。打开原理图后,首先发现的是跳线JP1没有接。JP1的设计与Arduino上是完全一样的,其作用是为板子选择供电:USB电源还是外接电源。焊上JP1引脚并设置好跳线,再次插上USB线,还是没有任何反应!心底隐隐有一些不祥的感觉,拿出万用表来开始一段一段检查。USB接口上的电压是正确的,但FT232BL芯片上的电压为0, 看起来像是什么地方断路了。再次打开原理图,这次发现的是保险丝F1没有焊,它的作用是对FT232BL进行保护,电流过大时自动切断对FT232BL的供电。此时没有接F1,效果正好与电流过大保险丝烧断时的效果是一样的。

类型 标记 数量 规格
插针 JP1 1 3脚
保险丝 F1 1 500mA


焊上保险丝后再次接上USB线,这回听到了熟悉的USB设备连接上的提示音,在设备管理器中也能找到这一串口了:

心里一块石头总算落地了,不过现在还很难说USB这部分电路是不是已经正常工作了, 因为无法对数据发送和接收进行完全的测试。我只是简单地用串口调试工具打开了COM4,并试着发送一些数据给FT232BL,看到的现象是发光二极管TX在不断地闪烁,或许能够说明这部分电路已经基本可以了。当然,最终的结论只能等到ATmega 128那部分的电路完成之后,真正实际串口数据的收发时才会知道。

无论如何,USB这部分电路基本算是完成了,贴一张焊好USB电路的板子局部图:

No tags

Jan/08

12

DIY Wiring: PCB

接触Arduino一段时间之后,渐渐发现其实它只能适应用于一些比较简单的应用场景,对于稍微复杂一些的互动应用来讲,一般会需要有更多的管脚,更快的处理速度,以及更大的存储空间。

Arduino在设计和实现时借鉴了Wiring的很多做法,奇怪的是Wiring远远不及Arduino成功,这可能跟Wiring项目组没有大力推广有关系。在国内目前还买不到Wiring,从国外购买的话又需要大把的银子,犹豫了好长时间后还是没有能够挡得住自己的冲动,决定DIY!

Wiring采用的是ATmega128,存储空间为128K,带有50个数字I/O管脚和8个模块输入,以及6个PWM,整体性能比Arduino高了一大截,复杂性当然也是直线上升。对于电子高手们来讲估计不是个大问题,但对我这个完全自学的业余选手来讲,自然又是一个不小的挑战:)

原理图和电路图断断续续估计画了三四周,而且第一次开始采用贴片元件,自然又是恶补了一顿有关元件封装的知识,还从电子市场买了一些元件来比划。 这一过程中最大的收获就是开始认识到Eagle CAD的确是一个不错的电路图软件,可惜国内不管专业还是业余都用Protel。现在用的共享版只能画两层板,对我来讲是够了的,等有需求同时又有银子的时候,一定买个专业版的License。

电路板送到工厂后又足足等了一周,今天总算拿到了五块PCB板,这回做的是黑色的板子:

不知专业人士是如何检查电路板的,我只做了有限的检查,估计应用会有错误,做出的这五块只当拿来练手,之前已经做好了充分的心理准备,就当是学习和练手。

这一周工作比较忙,抽空做的唯一的事情就是去淘了一个二手的示波器,已经在路上了。将很大的期望放在这个即将到来的新伙伴身上,因为DIY Wiring的重任就要落在它的身上了,期待中…

No tags