Archive for January 2010
我们曾经做过一个八路的数字输出扩展模块,那个时候数字传感器的引脚顺序同现在的通用传感器引脚顺序是不一致的,而且连接的时候要用到三根传感器连接线。近期我们在电子积木的开发过程中引入了IDC接口,这样当电路模块有多个引脚时可以更加方便,不过同时灵活性也就降低了。新一版本的八路数字输出模块就是根据新的传感器引脚顺序,以及多个引脚相连接的问题做了修改:
按照新的传感器引脚的顺序定义,相应的为GND(-),VCC(+)和信号:
连接的时候使用的是IDC扩展板上提供的IDC-6引脚,并通过6芯IDC连接线相连接到八路数字输出模块的595IN插座上:
扩展出来的数字I/O引脚,可以用来连接数字输出模块,比如常用的LED模块:
如果需要多块级连的话,则需要将前一个模块的595OUT座与下一个模块的595IN座相连接:
该模块的核心是一个74HC595芯片,有关Arduino编程的问题可以借用Arduino官网上ShiftOut的说明和例子,但需要按照IDC扩展板上的硬件连线,修改相应的引脚,如下面的代码段所示:
int dataPin = 9; // SER int latchPin = 7; //RCK int clockPin = 6; //SCK
MOSFET是一种具有很好开关特性的电子器件,被广泛应用在需要电子开关的电路中,如开关电源和马达驱动,以及照明调光等。继电器是大家非常熟悉的另外一种具有开关特性的模块,但由于继电器的工作原理一般是靠机械触点来达到开与关的目的,这就必然导致在开关时间非常短的情况之下,继电器无法工作的情况,另外触点开关时发出的叭叭声在某些场合下也是比较让人烦恼的一件事情。
我们设计的这一4路MOSFET开关最多可以提供4组电子开关,分别用来控制不同的电路模块。受MOSFET工作原理的影响,该电子积木只能用来控制直流电路,比如直流LED屏等,并不适合交流电路的控制。极限情况下该MOSFET开关可以用来控制100V/33A的直流电路,但控制的最小直流电压建议不低于9V。
在电路连接上,受控一端的连线稍微要麻烦一些。以控制12V的LED灯带为例,首先在正极(+)和负极(-)间连接好电源:
接着接LED灯带的正极连接到模块的正极(+)上,LED灯带的负极则连接到开关1(S1)上:
如果有其它的LED灯带需要控制,同样只需将LED灯带的正极连接到模块的正极(+),LED灯带的负极则依次连接到开关2(S2)、开关3(S3)、开关4(S4)上:
控制端的连线就简单多了,我们只需要通过传感器连接线,将相应的控制端口与Arduino的传感器扩展板连接起来,就可以通过Arduino来控制这些12V的LED灯带了。实验中我们接了两个LED灯带:
测试代码如下所示:
int s1Pin = 6; int s2Pin = 7; void setup() { pinMode(s1Pin, OUTPUT); pinMode(s2Pin, OUTPUT); } void loop() { int i; digitalWrite(s1Pin, HIGH); digitalWrite(s2Pin, HIGH); delay(500); digitalWrite(s1Pin, LOW); digitalWrite(s2Pin, LOW); delay(500); for (i = 0; i < 10; i ++) { digitalWrite(s1Pin, HIGH); delay(500); digitalWrite(s1Pin, LOW); delay(500); } for (i = 0; i < 100; i ++) { digitalWrite(s2Pin, HIGH); delay(50); digitalWrite(s2Pin, LOW); delay(50); } }
下面是拍摄的视频效果:
No tags
