分类目录归档:兴趣小组

高级版Fritz表情机器人安装

欢迎购买高级版开源表情机器人Fritz套件,如果您看完本教程后对此制作感兴趣,可以考虑从下述淘宝网址购买我们提供的配套套件:

创元素淘宝店—表情机器人套件高级版

(购买后我们将于48小时内发货给您)

安装简介

此款为高级版,保留了所有的眼球和脖子的动作,安装过程较多,需要你的耐心和毅力。相当其他渠道您所能获得的版本,我们提供的此版本经过大量实践改良,采用可多次重复拆卸的螺栓螺母等连接方式。避免使用热胶枪这类工具的麻烦,以及初学者在初次安装过程中出错后,并不会因为使用了热胶枪而导致木板等零配件的损坏。您就尽情的大胆尝试吧。

可以参考以下视频,步骤都是类似的,该主题及更多版本很快上市,提供给大家:

需要的工具:

  1. 尖嘴钳、螺丝刀、镊子等
  2. 电脑
  3. 耐心

 

总组装

以上三步骤,请观看以下视频了解细节(注意,部分步骤已经被优化,无需使用热熔胶,部分运动轴也被长螺丝替代,便于重新拆装及调整)老版视频,用热熔胶连接,较为麻烦,仅供参考。

此处要把舵机和舵盘连上

5

连接电路

Arduino固定上,连接电机的连线,插上USB。

02

装配完成!

烧录Arduino程序

打开Arduino软件,没装过Arduino的可以在下述网址中下载并找到运行程序

https://pan.baidu.com/s/1dG44Fxn

03

文件 -> 打开,找到》》》》》

双击 Fritz.ino

04

在工具菜单项里设置 板 为 Arduino Uno,串口选中。

05

点击 上传

06

成功!

配置电脑控制程序

可以在下述网址中下载并找到运行程序

https://pan.baidu.com/s/1dG44Fxn

打开fritz.exe,等待连接成功(如果使用过程中连接经常断开,可能是因为没有使用电池盒单独供电或没有打开电池盒开关及电池电量不足引起的。)

07

打开 set motor

08

全打勾,

09

拖动一下眼眉,看看是不是能控制啦!

10

恭喜你!大功告成!

查看下面视频了解更多上位机软件使用过程中的详细情形:

Arduino锂电扩展板

Arduino的锂电源板,专门为Arduino设计的锂电池充电板,Arduino的不间断供电电源,能够为Arduino提供5V的电能,同时自带的锂电池可充电,带有锂电池充电电路,锂电池保护电路,锂电池升压电路,同时还可以作为一个普通的5V电源使用。

有时,我们会对电池电压非常感兴趣,因为电池电压与电池容量有关,当锂电池输出电压很低时,意味着电池里的电也即将用完,这时,测量电池电压就有了必要。
Arduino Power Shield 中,我们设置了电压测量插针BAT_TST,当需要Arduino 使用模拟引脚测量电池电压时,只需将BAT_TST 引脚短路即可,这时,锂电池的正极,就连接到了Arduino 上的ANALOG 引脚中的A0引脚。

BAT_TST 引脚的短路可以使用跳帽或者杜邦线连接等方法。

接好后,即可编写程序。程序非常简单,只需读取模拟A0 口的电压,后在串口输出即可,程序如下。

const int analogInPin = A0; //A0 口
float voltage; //电压变量
int A0Value = 0;

void setup()
{
  Serial.begin(9600); //波特率设置
}

void loop()
{
  A0Value = analogRead(analogInPin); //读取A0 口的AD 转换数据到变量A0Value 中
  voltage = float(A0Value * 5.1 / 1023); //将AD 读出的值转换为电压值,除以1023 是因为这里的AD 转换器是10 位的,
  满量程为1023
  //乘以5.1 是因为Power Shield 供电大概在5.1V
  Serial.print("Battery Voltage = " );//Serial 口输出
  Serial.print(voltage);
  Serial.print("V\n ");
  delay(2000);
}

运行程序,Arduino 串口监视器显示如下:

此程序也可嵌入到各种程序中,在电池电压降到一定程序时,执行相应的动作。电池电压在3.2V~3.3V 时,即可认为电池电压低,电量即将耗尽。

 

夏普GP2系列红外测距传感器

Acroname SHARP INFRARED RANGER COMPARISON

介绍

夏普红外线传感器具有具有体积小、功耗低、输出选项多的特点。为了最大化地发掘每个传感器的用途, 充分了解这些不同型号的红外传感器的工作原理、作用范围、交互方式是很必要的。

工作原理

根据输出的信号类型,夏普红外传感器主要可分为两类:模拟输出或数字输出。模拟信号的那一类可以提供被检测物具传感器距离转化为模拟信号输出;数字输出的一类可以比较被检测物与传感器的距离与预先设置的距离,当被检测物距离传感器的距离达到预先设定的值或者小于预先设定的值,那么传感器就会输出一个高电平。

这些传感器都采用的是三角测距原理,通过一组小型CCD(感光元件)条形阵列去计算前方物体的距离或者是判断在检测范围内是否有物体存在,为了构造一个用于计算的三角形,红外发生器会产生一个红外脉冲信号,这个光信号会遇到障碍物反射或者是没有遇到障碍物一直传播。在没有障碍物存在的情况下,这个光信号永远都不会被反射回来,此时读数表示在检测范围内没有物体存在,如果这束光被一个物体所反射回来,它会回到传感器上从而构造一个以红外发生器、光线在物体上的反射点、感光元件三点为顶点的三角形。

Acroname Sharp IR detector angle of reflection image
夏普红外接收器在近处和远处时光线与传感器水平面的角度

反射光的入射角与传感器到物体的距离有关。传感器的接收器部分具有一个精确的透镜,这使得反射光可以照射到透镜下的CCD阵列上的某一个区域,通过这一区域可以计算出入射角的角度,从而可以计算出物体到传感器的距离。这种测距方法可以免受环境光的干扰以及被检测物表面的颜色的干扰。

该用哪个传感器?

下表列出了每种传感器所能检测的距离范围,不管这种传感器返回的是具体的距离数值还是数字信号。Acroname Comparison Chart for Sharp IR Rangers
各种夏普红外传感器的对比表

夏普红外传感器测距范围比较

MODEL OUTPUT MIN. RANGE MAX RANGE
GP2D120/GP2Y0A41 Analog 1.5″ 11.8″
GP2Y0A02 Analog 8″ 59″
GP2Y0A21 Analog 4″ 30″
GP2Y0A710 Analog 36″ 216″
GP2D15 Digital 9.5″

GP2Y0A710 (‘0A710’), GP2D120GP2Y0A41GP2Y0A21 (‘0A21’), 和 GP2Y0A02 (‘0A02’) 传感器在表中所示的测距范围内可以通过模拟输出输出可靠的距离信息.。相对的,GP2D15通过判断是否有物体在其测距范围内来输出一个数字信号。这些传感器都不需要外部的时钟或者信号 ,但是为了使传感器持续工作,需要大概25mA的持续电流。

机械尺寸

除了0A710,所有的夏普红外传感器几乎都是一样的尺寸,0A710比其他的传感器都要大一点,这是为了容纳更大的透镜从而达到长达5.5米的最远测距范围 。下表列出了这些传感器的具体尺寸,在精确的制图中,确保多看几遍这个表格。

夏普红外传感器尺寸

MODEL WIDTH (MM) HEIGHT (MM) DEPTH (MM)
GP2D120/GP2Y0A41 40.75 18.9 15.5
GP2Y0A02 40.75 18.9 21.6
GP2Y0A21 40.75 18.9 15.5
GP2Y0A710 58.00 17.6 22.5
GP2D15 40.75 18.9 15.5

Acroname Size comparison of GP2Y0A710 (left), GP2Y0A02 (right) and GP2D15/120
 GP2Y0A710 (左侧), GP2Y0A02 (右侧) 和 GP2D15/120 (下方)的大小比较

非线性输出

因为在计算物体距离时是根据入射角的角度应用三角测距原理,这些传感器的输出电压和被检测物的距离的关系并不是线性变化的下图的曲线列举出了一组模拟输出的电压与被检测物距离的关系。

Acroname Example graph of Sharp IR Output Voltage vs Distance
夏普红外传感器被检测物的距离与传感器模拟输出数值的关系的一个例图

这幅图中可以发现几点有趣的事情:第一,传感器的输出在稳定范围内(10cm-80cm)与距离的关系并不是线性的反而有点像对数关系。不同的传感器的曲线可能会有轻微的不同,因此采用查找表或者参数化函数输出是个好办法,这样,每个检测器都可以被校准为基本一致,从而得到几乎线性地变化的距离数据。

第二,注意到这个输出当物体距离传感器的距离小于最小距离(10cm)时会急剧下降, 因此,这个输出数据可能会和一个更远的距离读数相混淆,如果你想让你的机器人靠近一个坚硬的物体时放慢速度,这种读数可能是灾难性的(在距离物体小于最小检测距离时,这个读数会被曲解为机器人距离当前物体仍较远),如果没有正确的处理这个错误的数据,机器人可能会全速撞向障碍物,避免这种情况发生的最简单的办法是将传感器交叉放置在机器人的长边或者是宽边上,如下图:

Acroname Example of cross-firing detectors to avoid range errors
交叉使用传感器来避免测距错误的一个例子

红外光束的模式

这些测距器所发出的光束类型是相当一致的,这束光线大约想一个足球一样,中间最宽的地方有16cm,这是一个相当窄的光束,当与伺服器一同使用测距时可以获得大量的距离数据 。

当使用夏普传感器用于机器人防撞时,尽可能获取最大的光束宽度是很有利的,这样可以获得最大限度的覆盖面积,比如说机器人的整个正面。通过交叉使用两个传感器,使它们的光束交叉(见下图)就可以轻易达到这种效果. 这种用途的传感器使用最多的是GP2D15.

Acroname Configuration of two sensors for effectively wider beam width
应用两个传感器可以获得更宽的光束宽度

获取传感器的数据

除了 GP2Y0A710, 所有的夏普红外传感器都是采用的是日本无焊端子(JST)连接器 。 这些连接器具有三条导线: ground, Vcc,和output. 由于这些传感器持续工作且不需要外部时钟来启动,和它们交互是很容易的, 但是由于它们会持续工作,所以在多个相同传感器应用在同一个机器人上时可能会相互干扰。当把多个传感器应用在机器人上是,只要记住这些传感器的工作原理,就可以避免这些干扰。

GP2Y0A710 更大,所以它采用了五针的接线,其中两根为ground,两根为Vcc。然而, 如果连接的电源能够提供大约350mA的峰值电流(大约33mA-50mA连续电流),这些线可以被焊接在一起。和别的传感器一样, GP2Y0A710也是持续工作的。 为了达到你的预期效果,一定要仔细查看每一个传感器的数据表来确保所采用的传感器是正确且适合的。

总结

夏普红外测距传感器对于机器人学可运用的传感器是一个很好的补充。 这个产品并不贵,同时功耗小,可以在狭小的空间内有着独到的距离检测范围,这种特性使得它成为在人类活动场所所采用的理想传感器,比如说在大堂,房间,或者迷宫。

虽然这些传感器并不能给出精确的距离,但是它们可以在机器人处理嘈杂的信息时第一时间提供一个很好的信息,通常来说,一个机器人知道它距离障碍物是远离还是靠近已经够它去决定下一步干什么了。

点击这里可以查看所有型号的夏普红外传感器 ,或者是使用更高级的日本北阳电机激光测距仪瑞士Mesa Imaging公司的产品.

PIR传感器相关知识

PIR传感器跟其他的传感器比起来可能要更加复杂(像光电池,避震器,湿度传感器),因为其中有许多影响传感器输入和输出的变量。我们会使用这个不错的图解来开始解释一个基本的传感器是如何工作的。

PIR传感器上有两个插槽,每个插槽由特殊的对红外信号敏感的材料做成。这里使用的镜头不会真的做这么多,所以我们可以看到两个插槽可以“看到”过去的一段距离。(基本上是传感器的敏感性)。当传感器没有工作时,两个传感器检测到同样数量周围环境,比如房间,墙壁或者室外辐射出来的的红外信号。当一个有温度的物体,比如一个人或只动物经过,物体一开始会挡住一半的传感器,这会在传感器两边产生微小的正向电势差。当有温度的物体离开传感器所能探测到的区域,传感器电势差就会发生反转,进而能够产生负向的电势差。这就是传感器检测到的脉冲变化。

1

PIR传感器

PIR传感器被封装在一个密封的金属盒中。在金属盒上有一个用能传递红外信号的材料做成(比较典型的是硅,因为红外线可以很容易就通过硅。)的窗口,用来保护传感器的感应部分。在窗口后面是两个平衡传感器。

2

3

你可以在上面的上面展示的图像中看到窗口的组成—两片传感材料。

4

这张图展示了传感器的内部结构,在里面有一个低噪音的结晶型场效应晶体管(一种晶体管),并将传感器的极高的阻抗缓冲到低成本的的芯片上(比如BIS0001)

透镜

PIR传感器是通用的,而且大部分的价格和灵敏度都不同。大部分的魔术都是通过光来实现的,这对于制造来说是个不错的主意:PIR传感器和电路是固定的,并且成本为几美元。而镜头只需几美分,同时很容易改变宽度,范围和感应模式。

在上图中,透镜只是一块塑料,但这意味着检测区域仅仅是两个矩形。通常我们想要一个更大的检测区域。为了做到这一点,我们使用了一个简单的镜头,比如相机里的那些镜头:他们把一个大的区域(如风景)浓缩成一个小的(在胶片上或CCD传感器上)。由于这些原因很快就会显现出来,我们想要使PIR镜头变得小巧而薄,并且可以从廉价的塑料中进行模塑,尽管它可能会增加变形。由于这个原因,传感器实际上是菲奈尔透镜:

5

菲勒透镜凝聚了光,为传感器提供了更大范围的红外线。

6

 

现在我们有了一个更大的范围。然而,请记住,我们实际上有两个传感器,更重要的是,我们不想要两个真正大的矩形区域,而是多个小区域的散射。所以我们要做的是把镜头分成多个部分,每个部分都是菲勒尔透镜。

7

在这里你可以看到多面部分

8

这一宏观的镜头在每个方面展示了不同的法伦镜头!

不同的面部和副透镜产生了一系列的检测区域,相互交错。这就是为什么镜头中心在上面的部分是“不一致的”——每一个都指向不同的PIR传感元件。

11

10

连接一个PIR传感器

11

大部分的PIR模块在两侧或者底部有一个3个引脚的接口。模块之间的输出引脚可能会有所不同,所以对于输出引脚要检查3次。位于接口右边的输出引脚经常是丝网印刷成的(至少我们的是)其中一个引脚会接地,另一个是信号输入,最后一个是接入电源。输入电压经常是3-5V的直流电压但有时会达到12V。在接地。有电源和两个开关连接的情况下有些大的模块没有直接输出,而是通过一个继电器进行操作。

一些继电器的输出是集电极,这说明该继电器需要一个上拉电阻。如果你的输出不可改变,请确保能够在信号引脚和电源引脚之间添加一个10K欧的上拉电阻。

当连接端口的间隔是0.1秒时,一个关于原型PIR传感器的简单方法就是将其连接到面包板上。一些PIR传感器上面已经有数据头了。来自adafruitde PIR有一个三引脚的便于连接导线的接线头。

12

我们的PIR传感器的红色线连接电源正极,黑线接负极,黄线是信号输出。要确保像上面展示的一样连接好线头。如果你反过来接,虽然不会损坏传感器,但是传感器不会工作。

 

测试一个PIR红外传感器

1

2

 

在当PIR传感器检测到人的动作,输出引脚就会上“升”到3.3V,然后点亮LED灯。

如果你手上有已经连好线的面包板,将电池接入之后,为了使PIR“稳定”下来,要先等待30到60秒。在这期间LED灯可能会闪烁。等到LED灯完全熄灭后,为了让灯再次亮起来,我们可以在传感器面前来回走动,挥手等等。

重触发

你手上的PIR传感器有两种选项。首先我们将会探索“重触发”选项。

当你使LED灯闪烁时,观察PIR传感器背面并确保跳线像下面展示的一样连接在L接口。

3

4

现在再次搭建好测试板电路,你可能会注意到当像上面一样连接好PIR传感器时,如果在LED灯面前移动,灯不会保持点亮,而是大约每一秒点亮和熄灭一次。这被叫做“非重触发”。

5

现在将跳线转接到H接口,如果你再次搭建好测试电路,你会注意到如果有物体移动时,灯会一直亮着。这被叫做“重触发”。

6

对于大多数的应用,“重触发”(跳线像上面展示的一样被接到H接口)模式一般会更好。

7

如果你需要将传感器连接到一些边缘触发的装置,你可能会选择将其调节至“非重触发”模式(跳线被连接到L接口)。

改变灵敏度

Adafruit PIR传感器在背部有一个调节灵敏度的微调筒。如果你的PIR传感器太灵敏或者太迟钝,你可以调整这个微调筒—顺时针调节会让传感器更加灵敏。

8

改变脉冲时间和超时时长

在PIR传感器上有两个“超时设定”。其中一个是“Tx”设定:传感器检测到动作后LED灯会点亮多久—由于有电位计,调整Adafruit PIR传感器将会变得很简单。

第二个是决定没检测到动作时LED灯会熄灭多久的“Ti”超时设定。这个设定可能没那么容易去改变,可如果你用电焊去操作,这将变得可行。

首先让我们再看下电路数据

Tx=输出引脚(V0)触发后保持高电平的时间。

Ti=在周期中,触发被抑制,仔细观察时间表。

Tx≈24576×R10×C6;  Ti≈24×R9×C7(参考原理图)

Adafruit PIR传感器,有一个标记着时间的调整电位器。这是一个被串联到一个10 k欧电阻器的1兆欧可调电阻器。同时C6的值为0.01Uf,所以

Tx=24576×(10K)×0.01uF=2.5秒(约等于)

如果Rtime电位器从顺时针方向转到1兆欧电阻,则

Tx=24576×(1010K)×0.01uF=250秒(约等于)

如果Rtime位于中间,那结果将会大概是120秒(2分钟),所以你可以尽可能的开足马力。比如说如果你想通过一个人的动作去打开一个风扇至少1分钟,将Rtime电位器调整至一圈的1/4位置。

对于较旧的或者其他PIR传感器

如果你拿到的是一个没有可调整的电位器的PIR传感器,你可以像这样找出调整电阻

9

判断R10和R9并不是很难,可惜这个PIR传感器时贴错标签的(似乎将R9和R17调换了位置),你可以通过查找BISSOO1数据表来查探引脚,然后找出分别是什么引脚—R10和引脚3连接,R9和引脚7连接,而区别电容会有点难,但是你可以通过“逆向工程”的方法并对传感器记录时间,从而得到解决。

例如;

Tx=24576*R10*C6= ~1.2秒

R10=4.7K,R10=10nF

同样

Ti=24*R9*C7=~1.2秒

R9=470K,R7=0.1Uf

你可以通过交换不同的电阻或电容来改变时间。

 

使用一个PIR传感器

将PIR传感器与微控制器连接起来非常简单。PIR是一个数字输出,所以你所需要做的就是侦听引脚来变成高电平(有检测到)或低电平(未检测到)。

很可能你会想要重新开始,所以一定要把跳线连接到H接口!用5V电压连接传感器并将其接地。然后将输出连接到数字针上。在本例中,我们将使用2引脚。

14

代码很简单,基本上就是跟踪输入2的输入是高还是低。它还会跟踪大头针的状态,这样当运动开始和停止时它就会打印出一条信息。、

  1. /*
  2. * PIR sensor tester
  3. */
  4. int ledPin = 13; // choose the pin for the LED
  5. int inputPin = 2; // choose the input pin (for PIR sensor)
  6. int pirState = LOW; // we start, assuming no motion detected
  7. int val = 0; // variable for reading the pin status
  8. void setup() {
  9. pinMode(ledPin, OUTPUT); // declare LED as output
  10. pinMode(inputPin, INPUT); // declare sensor as input
  11. Serial.begin(9600);
  12. }
  13. void loop(){
  14. val = digitalRead(inputPin); // read input value
  15. if (val == HIGH) { // check if the input is HIGH
  16. digitalWrite(ledPin, HIGH); // turn LED ON
  17. if (pirState == LOW) {
  18. // we have just turned on
  19. Serial.println(“Motion detected!”);
  20. // We only want to print on the output change, not state
  21. pirState = HIGH;
  22. }
  23. } else {
  24. digitalWrite(ledPin, LOW); // turn LED OFF
  25. if (pirState == HIGH){
  26. // we have just turned of
  27. Serial.println(“Motion ended!”);
  28. // We only want to print on the output change, not state
  29. pirState = LOW;
  30. }
  31. }
  32. }

不要忘记有些时候你不需要一个微控制器。一个PIR传感器可以连接到一个继电器(也许是一个晶体管缓冲区),而无需微管

创建你需要的Frizting元件

什么是Fritzing?

Fritzing Logo

Fritzing是一个强大的开源工具让任何一个人用于教学,分享和模仿他们的电子项目! 它允许你设计原理图,因此设计一个部件,然后可以添加到非常专业的接线图。 你甚至可以设计自己的PCB,并从你设计的文件制造。 在SparkFun,我们在教室中使用Fritzing,我们的连接指南,以及任何其他地方,我们需要展示如何将我们的电路板连接到其他硬件。

Fritzing Hookup Example

一个利用Frizting将INA169连接到Arduino的例子

Fritzing的令人敬畏的事情是,你可以为你的项目制作自己的Fritzing零件,并在社区中分享! 本教程将从头开始一步步介绍如何在Fritzing(新)零件编辑器中创建自定义Fritzing零件,

你是否需要做一个自定义的Fritzing零件?

Fritzing在软件安装的时候就带有大量的电子元件。 SparkFun还有一个Fritzing Github库,用于我们在Fritzing中尚未创建的零件。 在创建自己的零件之前,请仔细检查我们的零件是否在自带的元件库或者Github上已经有,或者如果另一个Fritzing用户已经在Fritzing论坛上创建了你所需要的零件。 如果零件已经创建,它将为你节省大量时间! 但是,如果你确定你需要的零件在Frizting里面还没有,请继续阅读!

建议阅读

本教程假设你已经熟悉Adobe Illustrator,Inscape或两者。 使用这些程序超出了本教程的范围。 如果你需要更多的信息,如何使用这些程序的eithwer,他们各自的网站有很多教程和指南,如何开始矢量图形。 如果失败,总是有Google。

这里是其他相关的教程,你阅读这个教程前可能想查看:

下载和安装

你需要下载和安装Frizting软件,并跟着教程来制作你自己的Frizting零件

请注意:如果你只需要做一个基本的IC,Frizting(新)部件编辑器让你轻松制作自定义IC,你不需要下载矢量图形编辑器。但你仍然可以往下阅读,因为本教程将在Frizting(新)零件编辑器中构建一个自定义的IC。

Fritzing

Frizting官网(可能需要科学上网)的下载页面,为你的操作系统下载最新的Frizting版本,找到你要将Fritzing安装在硬盘驱动器上的位置,然后在该位置解压缩Fritzing文件夹。

矢量图形编辑器

有很多不同类型的矢量图形编辑器。我们在SparkFun使用的矢量图形编辑器是Adobe Illustrator和Inkscape。选择你最熟悉和用起来最舒服的。如果你没有一个矢量图形编辑器,Inkscape是一个强大的开源软件选择,并且它是免费的。

Inkscape

Inkscape Logo

Inkscape下载页面,并为你的计算机下载相应的正式发行包。

Windows用户:双击可执行文件。 按照Inkscape设置向导。

Mac OS X用户:按照Inkscape网站上的最新说明进行操作。

Adobe Illustrator

Adobe Illustrator Logo

Adobe Illustrator不是免费的,但如果你已经有Adobe Creative Cloud,你可以下载它。 你还可以购买Illustrator每月会员资格。

请注意:我们与Adobe没有任何关系,只是宣传Illustrator,因为它是一个强大的软件,对在本教程中很有帮助。

Other Downloads其它需要下载的东西

Fritzing字体和模板

Fritzing使用OCR-A字体作为IC使用。 对于所有其他零件,你可以使用OCR-A和Droid Sans fonts字体。 Fritzing具有可在其网站上下载的字体和模板。 你将需要下载Fritzing的图形标准来遵循本教程。 转到他们的模板下载页面,并下载Fritzing的图形标准文件夹。 下载其zip文件后,你需要解压zip文件夹,并放置在计算机上你将要在计算机上安装字体的位置。

SparkFun Fritzing示例模板

本教程将引用很多SparkFun Fritzing示例模板。 如果你正在为SparkFun板制作Fritzing零件或想要一个起点,请从SparkFun Fritzing零件Github库中下载这组示例模板。 SparkFun Fritzing模板将具有本教程的示例,SparkFun T5403气压计SVG,要比较和处理的文件。

面包板视图

当Fritzing启动时,你将会进入欢迎界面,并且你将要转到面包板视图。

breadboard view

在面包板视图中你需要做两个重要的步骤,首先,创建你的面包板SVG,然后上传。 Fritzing更倾向于使用SVG格式,所以你的图像看起来很棒,当你放大和缩小! 其次,你需要改变连接器针脚。

请注意:如果你只制作一个基本的IC,你可以跳到本教程的编辑面包板视图部分。

Fritzing图形标准

在Fritzing网站上,有很多图形标准要遵循。 这是一个很好规范,因为遵循图形标准,你的零件可以匹配其他Fritzing零件。

模板

当你制作零件时,建议从模板开始。 有一个要引用的零件的图像,因此,当制作你的SVG文件时,该过程会更快。

提示:如果你在为EAGLE中设计的板制作自定义Fritzing零件,则可以下载ULP将板转换为SVG格式。 这样,你可以有一个准确的SVG的EAGLE板作为参考。 你可以在Cadsoft网站上找到EAGLE ULP。

现在是时候为你的面包板视图制作你的图形!

 

创建新元件

在本教程中,我们将会为SparkFun T5403气压计创建一个Frizting新零件。

T5403 Breakout Image

SparkFun T5403的EAGLE图

打开Fritzing应用程序。 你应该在程序顶部看到欢迎,面包板,示意图和PCB的选项卡。 单击面包板按钮以确保你目前在面包板视图中。

Breadboard Button

检查库中自带元件

如果你只是在Fritzing中更新一个板,首先检查是否有一个与你想要创建的Fritzing部分相接近或相关的零件。你可以在搜索栏中键入零件的名称。

Search for Part

搜索栏可以在零件窗口的顶部找到

你也可以在Fritzing的零件窗口的不同部分查看类似的零件。

Parts Window

寻找SparkFun火焰并点击可以看到一个巨大的SparkFun Fritzing零件库

从绘制IC开始

如果没有一个零件像你想要的,使用IC作为基础是一个好的开始。 单击零件窗口中的CORE选项卡。 向下滚动,直到看到IC。 在ICs部分下,单击并拖动IC图标到Breadboard窗口。

Core Tab

自定义IC很简单,因为Fritzing可以改变引脚和IC封装的数量

Dragging IC on breadboard window

更改IC的名称

 

查看右侧的“查看栏”中IC的属性。 将IC的名称更改为元件名。 然后,更改引脚部分中模块或元件的引脚数。 对于SparkFun T5403气压计,我们需要8个引脚。 你将在“面包板”视图中看到模块中IC更改后的名称。

Changing name

Fritzing(新)元件编辑器

右键单击面包板窗口中的IC,然后选择编辑(新元件编辑器)。Fritzing(新)元件编辑器弹出。

Go to Parts Editor

Fritzing(新)零件编辑器有6个主要部分,你需要在其中进行更改。那些是:

  • 面包板
  • 示意图
  • PCB
  • 图标
  • 元数据
  • 连接器

真的没有你需要遵循的命令。在做了几个不同的自定义部件后,你可能会最终在一个视图开始之前的其他工作。在本教程中,我们只是去一个个讲述教程。

作者注释:我发现,对于具有大量引脚的板,从连接器视图开始的板可以节省更多的时间,因为你可以在列表中更快地命名连接器引脚。

在继续之前,最好先保存为新零件。如果你需要在制作自定义部件时随时停止,你可以在将来再次使用。转到文件。然后,选择另存为新零件

Save as new Part

如果需要,你可以选择命名前缀


让我们继续面包板视图!

自定义面包板SVG

创建文件

打开矢量图形编辑器并创建一个新文件。文件的图像大小应与你的开发板的大小相同。SparkFun T5403气压计爆破尺寸为1“x 0.650”。你将要使用一个好的命名约定保存文件,因为在创建Fritzing部分时最终需要3个不同的svg文件。

Illustrator用户: 你可以通过转到文件 – >另存为,保存为SVG,然后点击保存保存。

对于此示例,面包板SVG命名为:SFE_T5403_Barometer_Breakout_breadboard.svg

使用模板作为参考

要比较不同的图层和组,你可以打开Fritzing BreadboardViewGraphic_Template.svg文件,该文件位于先前下载的Fritzing Fonts and Template文件夹中。你还可以从SparkFun Fritzing Parts Github仓库打开示例SparkFun T5403晴雨表分线板SVG模板文件。

你可以看到示例模板如何保持图层的组织。对于SparkFun T5403气压计,有一个“面包板”组。在面包板组内,它将具有一组部件,铜层,丝印组和板路径。

制作你的自定义面包板图形的提示

你现在可以创建自定义零件的面包板图形。这里有一些有用的提示!

遵循Fritzing图形标准

Here are some main color standards for Breadboard images:

这里是面包板图像的一些主要颜色标准:

为了符合Fritzing图形标准,你将要使铜触点成为铜/镀锡颜色。

Copper Green

HEX: 9A916C, RGB: 154 145 108

如果你的板上有任何部件的引脚,使用的颜色是灰色的。

Leg Grey

HEX: 8C8C8C, RGB: 140 140 140

SparkFun红色是:HEX:E62C2E,RGB:230 44 46

把事情简单化

Fritzing的伟大之处在于,你可以使你的板子变得简单或你想要的结果。由于SparkFun总是试图使我们的产品更好的修订和有很多的板,更容易和更快的我们不包括某些细节,如痕迹或每个组件,在我们的板子上。如果电路板有新的变化,如电阻值的变化,我们不必在Fritzing部分进入和更改该电阻。更多地关注重要的组件,如IC,可能这是个更好的方式来投入你的时间。它仍然会看起来不错,但工作量少!

使用已经存在的组件

如果你需要在板上的使用已经在Fritzing有的SMD LED,请继续使用它!这将节省你的时间,并保持所有的Fritzing部分具有相同的标准。如果你创建一个自定义的板子,其他人可以使用的组件,你可以在Fritzing网站上分享,让其他人也可以使用!确保在你正在使用的矢量图形编辑器中组织好组件图形,因此在以后的的板子上使用时很容易找到这些部件。

铜组中的名称连接器引脚

Naming your connectors will be a huge time saver. For the SparkFun T5403 Barometer Breakout example, under the copper group, each connector is named connector#pad.

命名你的连接器将是一个巨大的节省时间。对于SparkFun T5403气压计示例,在铜组下,每个连接器命名为连接器#垫。

Copper Layers

示例在Illustrator中。如果你使用Inkscape,你仍然需要确保连接器已正确命名。

使用ORC-A或Droid Sans字体。

坚持Fritzing字体保持所有Fritzing部分看起来一样。建议标准字体大小为5pt。然而,有时候,你不会有空间更小的板。你最好不要低于3pt,因为它开始变得更难看到,而不放大。在Fritzing的网站,他们提到使用黑色作为字体颜色。无论你的丝印颜色往往看起来更好。对于这个例子,我们使用白色,因为这是分线板的丝印颜色,它更容易阅读红色背景。

创建复合路径以制作板开口

Illustrator用户:在PCB的大小中创建路径。对于SparkFun T5403气压计,你可以使用矩形工具制作1“x 0.650”的矩形。然后,在你的板子有开口的路径。例如,你可以使用椭圆形工具,在矩形工具下,制作完整的圆形,其中有支座和连接器针脚的开口。选择所有的开孔层和底部PCB层。

Select All

确保选择底部PCB层

接下来转到Object-> Compound Path-> Make。你现在应该有一个复合的路径,你将能够看到通过Fritzing的开口。

Final Breadboard Image

最终面包板图形

保存

确保在创建自定义板后再次另存为SVG!现在,你可以继续编辑面包板视图。

面包板视图 – 零件编辑器

加载图像

创建自定义面包板图像后,你将需要在Fritzing(新)零件编辑器中加载面包板SVG。首先,返回到Fritzing(新)零件编辑器,然后单击面包板按钮进入面包板视图。转到文件 – >加载图像的视图。

Load graphic

接下来,你将选择刚刚创建的面包板SVG,然后单击打开。图形现在应该在Fritzing(新)零件编辑器中。

连接器

在Fritzing应用程序中,你可以使用彩色线连接不同的Fritzing零件,以显示零件如何连接。为了使Fritzing知道板或部件上的连接器引脚,你需要告诉Fritzing这些连接器在哪里。

连接器引脚的名称和说明

对于面包板视图,连接器窗口将位于Fritzing(新)零件编辑器的右侧。选择一个引脚以更改引脚的名称并添加描述。

Select Pin

选择任何连接器针脚进行编辑

Change Connector Pin Name

选择连接器针脚的图形

单击连接器针脚名称右侧的选择图形按钮。然后,单击连接器针脚的图形。这将设置锚点。锚点是电线连接到该连接器的位置。默认情况下,终点将显示在所选图形的中间。如果要移动终点,你可以单击终点并按住以移动。你也可以通过在连接器窗口中单击“中心”,“W”,“N”,“S”或“E”来更改终端点。

Example Terminal Placement

你可以看到更改终端点时导线位置的差异

更改连接器类型

在“连接器”窗口中更改连接器的类型。你可以选择公头,母头或焊盘。对于SparkFun T5403气压计,所有连接器针脚都是母头。

Set Connector Type

在下图中,你可以看到将连接器类型设置为公头和母头之间的差异。

Different Connector Type

顶板的连接器类型设置为公头。底板的连接器类型正确设置为母头。

对所有连接器针脚重复此操作

名称,选择适当的图形,并更改所有连接器引脚的连接器类型。你还可以在“连接器”窗口中设置“内部连接”。

原理图

自定义原理图SVG

回到Illustrator,Inkscape或你正在使用的矢量图形编辑器。在下载的字体和模板文件夹中打开Fritzing的SchematicViewGraphic_Template.svg。你还可以从SparkFun Fritzing零件Github仓库打开示例SparkFun T5403气压计原理图SVG模板文件。

当编辑原理图以匹配电路板时,你需要确保显示每个连接器引脚。你将需要更改引脚标签以匹配连接器引脚名称。根据你的部件,你可能需要调整模板原理图的大小。确保主零件符号正方形和外销的边缘之间有0.1“的空间。

Schematic Example

确保删除0.1“维度帮助程序框,因此它不会显示在最终的Fritzing原理图图形中

保存SVG

你需要确保保存为一个新的SVG。记住要有一个命名约定,很容易说明为Fritzing部分创建的其他SVG文件之间的区别。

在零件编辑器中编辑原理图视图

加载SVG

返回零件编辑器,点击原理图按钮进入原理图视图。转到文件 – >加载图像的视图。接下来,你将选择刚刚创建的原理图SVG,然后单击打开。零件现在应该在Fritzing(新)零件编辑器中。

设置连接器引脚

如果你看看右侧的连接器窗口,你会注意到你的引脚名称已经存在。当你更改连接器引脚的名称和描述时,在面包板,原理图,PCB或连接器视图中,零件编辑器将自动更改其他视图的连接器引脚名称和描述。此外,连接器类型(公头,母头或焊盘)将仍然相同。

就像在面包板视图中所做的那样,你仍然需要为每个引脚选择一个图形。点击“选择图形”按钮,并为该引脚选择适当的图形。对于示意图视图,你将要更改终端点,因此连接线在最远点连接。

最简单的方法是确保连接器引脚的图形仍然被选中,并更改连接器窗口中的终端点。对于GND图形,通过单击“S”将终点移动到南端。

Terminal Point

对所有连接器重复此操作

在更新所有连接器针脚后,你可以继续在PCB视图中编辑。

PCB视图

制作自定义PCB SVG

回到Illustrator,Inkscape或你正在使用的矢量图形编辑器。当制作自定义PCB SVG时,你需要的主要图像组是铜(其将具有所有连接器焊盘)和丝印。

创建PCB图形

你可以在创建PCB SVG,修改自定义面包板SVG或在下载的字体和模板文件夹中编辑Fritzing的PCBViewGraphic_Template.svg时重新启动。对于此示例,修改了自定义面包板SVG,并将该文件另存为一个名为SFE_T5403_Barometer_Breakout_PCB.svg的新SVG。

确保有两个铜组

设置图层时,请确保有两个铜组。所有连接器层都应在铜组中。当你这样做时,Fritzing将知道该组件在PCB的两侧都有铜连接器。

Example of PCB Layers

有两个铜组的Illustrator示例

确保连接器引脚的间距准确

重要的是让PCB连接器引脚与你的电路板精确匹配,并在引脚之间留出适当的间距。Fritzing提供PCB Fab服务。如果你或其他Fritzing用户想要使用你的自定义部件使用该服务,你将需要确保你的PCB视图是准确的。

图形标准

代替连接器引脚是铜/镀锡绿色,PCB视图连接器引脚是“铜”颜色:

Copper Color

Hex: F7BD13 RGB: 247 189 19

自定义面包板SVG的主要变化是主要的组是铜和丝网印刷。丝网仍然是白色的。

Final PCB Graphic

最终PCB图形

在零件编辑器中编辑PCB视图

返回零件编辑器,点击PCB按钮进入PCB视图。转到文件 – >加载图像的视图。接下来,你将选择刚创建的PCB SVG,然后单击打开。零件现在应该在Fritzing(新)零件编辑器中。

更新连接器引脚

为每个连接器针脚选择适当的图形,就像在面包板和示意图视图中所做的那样。

图标视图

重复使用过去的图形

转到Fritzing(新)零件编辑器,然后单击图标按钮进入图标视图。关于Icon视图的一个伟大的事情是,你可以重用你的面包板,原理图或PCB SVG的图标图像,所以没有必要做一个新的图像!所有你需要做的是去文件,并选择你想要重用的图像。对于SparkFun T5403气压计,Icon视图重新使用面包板图像。面包板图像应显示。

Reuse Past Graphic

伟大的斯科特!你现在完成了图标视图!

元数据

转到元数据视图

转到零件编辑器,然后单击元数据按钮进入元数据视图。元数据是你将添加关于你的部件的所有重要信息的地方!

元数据视图中的不同部分

标题:很自然的。这将是你的部分的名称。

日期:在Fritzing中锁定日期条目。日期应显示你创建零件的日期。如果你稍后在道路上更新部件,日期将更改为上次更新的当前日期。

作者:你会想把你的名字在这里,所以,如果你与Fritzing社区分享你的一部分,他们知道谁是谁的部分。

说明:说明应包括对电路板重要的任何事项,例如工作电压。

标签:标签显示在示意图视图中,可以更容易地识别你选择的部件。对于SparkFun T5403气压计突破,标签将更改为零件。原因是,因为Part相当小,SparkFun T5403气压计名称已经在原理图图形本身。它取决于你想要标记你的部分!

URL:考虑张贴零件的网址,这样任何人都可以获得有关零件的更多信息。

家庭:如果你有一个部分有不同的颜色,芯片包等,你会希望他们在同一个家庭。例如,如果你有一个通孔LED有不同的颜色,同一个LED的所有不同的颜色将在同一个家庭。

变体:创建全新零件时,你要确保变体是1.当你以后进行修订时,如果变体2在同一系列中,则会将下一个修订版本更改为变体2。

属性:一个放置重要细节(如零件号,针脚间距等)的地方。

标签:使用可以找到更容易和最好描述你的部分尽可能少的单词的标签。

Metadata

觉得信息有点缺乏?你可以稍后再更新此内容,当你掌握了更多信息

连接器视图

转到连接器视图

转到零件编辑器,然后单击连接器按钮进入连接器视图。在“连接器”视图中,你可以执行以下操作:

  • 更改连接器数量
  • 设置连接器类型
  • 将连接器针脚设置为通孔或SMD
  • 名称连接器引脚
  • 添加连接器引脚描述

Connectors view

你不需要更改“连接器”视图中的任何内容,因为你已经填写了其他视图中的所有信息。如果你需要做任何最后一分钟的变化,现在你可以。请记住,如果你更改此处的连接器数量,则需要返回并更新面包板,原理图和PCB视图。

保存

 

现在你可以保存你的部分!转到文件>保存

继续导出部件!

导出新零件

Fritzing应用程序中的质量检查

现在是时候在主Fritzing应用程序中检出你的新Fritzing部分。当你在Fritzing(新)零件编辑器中保存为新零件时,零件将自动显示在Fritzing主应用程序中的MINE选项卡的My Parts标签下。

在导出新的自定义零件之前,你需要检查每个视图是否看起来不错。确保你在主Fritzing应用程序,而不是Fritzing(新)零件编辑器。通过单击顶部的面包板按钮,转到面包板视图。在零件窗口中,在右侧,确保你在MINE选项卡。你应该看到你的新部分。在面包板视图上单击并拖动板。

MINE Tab

仔细检查引脚是否命名正确,并且工作正常。在原理图和PCB视图中执行相同操作。一旦进行了质量检查,就可以导出零件。

导出零件

右键单击我的零件窗口中新零件的图标,然后选择导出零件。保存你的Fritzing部分。

Export Part

恭喜你,你做了自己的Fritzing零件!

更多信息和资源

贡献Fritzing

现在你已经完成了你的任务,你可以连接其他Fritzing零件。你可以在Fritzing网站上分享你的部分或项目教程。还有更多的方法来帮助Fritzing社区!查看Fritzing Support Us页面,了解更多支持Fritzing的方法。

大批量的Fritzing零件?

如果你是使用EAGLE的开发人员或投入大量时间来制作Fritzing零件的开发人员,Fritzing团队已经开放了一个工具包,从EAGLE .brd文件制作SVG文件。强烈建议你检查是否正在创建批处理的SVG板文件准备Fritzing。他们在Fritzing Google代码页上有源代码


cc

原始文章采用CC BY-SA 4.0,您可以自由地:

  • 演绎 — 修改、转换或以本作品为基础进行创作
  • 在任何用途下,甚至商业目的。
  • 只要你遵守许可协议条款,许可人就无法收回你的这些权利。

本文由翻译美国开源硬件厂商Sparkfun(火花快乐)的相关教程翻译,原始教程采用同样的CC BY-SA 4.0协议,为便于理解和方便读者学习使用,部分内容为适应国内使用场景稍有删改或整合,这些行为都是协议允许并鼓励的。

原始文章及相关素材链接:

https://learn.sparkfun.com/tutorials/make-your-own-fritzing-parts

关于步进电机的一切

什么是步进电机?

components_IMG_4838.jpg

步进电机是以不连续的步进移动的直流电机。 他们有多个线圈组织在称为“相”的组里。通过依次给每相励磁,电机将旋转, 每次一步。

通过计算机控制的步进,可以实现非常精确的定位和/或速度控制。因此,步进电机是许多精密运动控制应用的首选电机。

步进电机有许多不同的尺寸和样式和电气特性。 本指南详细说明你应该如何选择正确的电机。

4相单极电机

维基共享资源

步进电机的优点

▪  可用于定位场合 – 由于步进机以精确的可重复步骤移动,它们在卓越应用中需要精确定位,如3D打印机,CNC,相机平台和X,Y 绘图仪。一些磁盘驱动器还使用步进电机来定位读/写头。

▪ 精确的速度控制 – 精确的移动增量也允许对过程自动化和机器人的旋转速度进行出色的控制。

▪低速时能保持大扭矩 – 正常的直流电机在低速时不具有很大的扭矩。一个步进电机在低速时具有最大转矩,因此它们是一个对于需要低速度,高精度应用不错的选择。

components_IMG_4796_crop.jpg

步进电机的局限性

▪ 低效率 – 与直流电机不同,步进电机电流消耗独立于负载。.当他们空载时,他们得到的电流最多。正因如此,它们常常运行发热。

▪ 有限的高速扭矩 -一般来说,步进电机在高速时比低速具有较小的转矩 。一些步进器被优化以获得更好的高速性能 ,是它们需要与适当的驱动程序配对以实现该性能 。

▪ 没有反馈 – 与伺服电机不同,大多数步进器没有积分反馈位置。虽然可以实现运行“开环”的高精度。限位开关或通常为了安全和/或建立参考位置需要“本部”检测器。

步进电机类型

有各种各样的步进电机类型,其中一些需要非常专业的驱动程序。为了我们的目的,我们将重点介绍可用普通驱动器驱动的步进电机。它们是:永磁式或混合式步进电机,两相双极或四相单极

components_IMG_4810_crop.jpg

电机尺寸

首先要考虑的事情之一是电机必须做的工作。正如你所期望的,更大电机能够提供更多的功率。步进电机的尺寸范围从比花生较小到大如NEMA 57的怪物。

大多数电机具有额定转矩。这是你需要看看决定电机是否有足够的力矩做你想要的。

NEMA 17是用于3D打印机和小型数控铣床的常用尺寸。更小的电机找到应用于许多仿生机械上。较大的NEMA框架在CNC机床和工业应用中是常见的。

NEMA数字定义了用于安装电机的标准面板尺寸。他们不定义电机的其他特性。两个不同的NEMA 17电机可能有完全不同的电气或机械规格,并且不一定可互换。

components_IMG_4799.jpg

步骤计数

接下来要考虑的是您需要的定位分辨率。每步的步数转速范围为4至400。常用的步数为24,48和200。

分辨率通常表示为每步的度数。 1.8°电机与200步/转电机相同。

高分辨率的牺牲是速度和扭矩。高步进电机比相同尺寸下的RPM低于最大值。与这些类似尺寸的低速计数电机相比,转动这些电机所需的更高的步进速度导致更低的转矩。

components_IMG_4797.jpg

齿轮

实现高定位分辨率的另一种方法是使用齿轮传动。 一个32:1齿轮系应用于 8步/转电机的输出将产生512步电机。

齿轮系还将增加电动机的扭矩。 一些微小的齿轮步进器是能够产生令人印象深刻的扭矩。 但是权衡当然是速度。 齿轮式步进电机通常受到限制去低转速应用。

components_1253-01.jpg

轴样式

另一个要考虑的是如何电机将与驱动系统的其余部分接口。电机有多种轴类型

▪圆形或“D”轴:这些有多种标准直径,还有许多滑轮,齿轮和轴耦合器来配合设计。 “D”轴有一个扁平侧以帮助防止滑动。当涉及运用高扭矩时,这些轴形是我们能用到的

▪齿轮轴:一些轴具有磨入其中的齿轮齿。这些通常设计成与模块化齿轮系匹配丝杠轴

▪丝杠轴: 带有丝杠轴的电机用于构建直线执行器。这些的微型版本可以在许多磁盘驱动器中作为磁头定位器。

components_IMG_4814.jpg

接线

步进电机接线有许多变化。为了我们的目的,我们将专注于可以使用常用驱动程序驱动的步进器。这些是连接为2相双极或4相单极的永磁或混合步进电机。

components_IMG_4837.jpg

线圈和相位

步进电机可以具有任何数量的线圈。但是这些被以称为“相”的组连接。一相中的所有线圈被一起激发。

components_winding_types_2.png

单极与双极

单极 驱动器,总是以相同的方式给相位通电。 一个领导,“共同”领导,将总是负数。 另一个引线将始终为正。 可以实现单极驱动器 与简单的晶体管电路。 缺点是只有较低的扭矩 可以一次对一半线圈通电。

双极 驱动器使用H桥电路实际上反转通过相的电流。通过使极性交替地对相进行通电,可以使所有线圈工作以转动电动机

电机具有2组线圈。 4相单极电机具有4.两相双极电机将具有4个电线 – 每相2个。一些电机带有灵活的接线,允许您将电机作为双极或单极运行。

5-Wire Motor

This style is common in smaller unipolar motors. All of the common coil wires are tied together internally abd brought out as a 5th wire. This motor can only be driven as a unipolar motor.

6-Wire Motor

This motor only joins the common wires of 2 paired phases. These two wires can be joined to create a 5-wire unipolar motor.

Or you just can ignore them and treat it like a bipolar motor!

8-Wire Motor

The 8-wire unipolar is the most versatile motor of all. It can be driven in several ways:

  • 4-phase unipolar – All the common wires are connected together – just like a 5-wire motor.
  • 2-phase series bipolar – The phases are connected in series – just like a 6-wire motor.
  • 2-phase parallel bipolar– The phases are connected in parallel. This results in half the resistance and inductance – but requires twice the current to drive. The advantage of this wiring is higher torque and top speed.

components_IMG_4796_crop.jpg

 

驱动步进电机

Step in time, step in time
Come on, mateys, step in time
Step in time
Step in time, step in time
Step in time, step in time
Never need a reason, never need a rhyme
We step in time, we step in time

“Step In Time”
Robert B. Sherman and Richard M. Sherman

components_IMG_4805.jpg

驱动步进电机比驱动普通有刷直流电机复杂一些。步进电机需要步进控制器以及时地对相进行通电以使电机转向

components_IMG_4817_cropped.jpg

简单单极驱动器

最简单的驱动器类型可以用少量晶体管构建。 这些按顺序简单地接通和断开,以使相位通电并使电动机步机进。 单极驱动器的构建相对便宜,但只能使用单极电机。 在Arduino官网有一个很好的教程教你如何使用。

components_H-Bridge.jpg

简单的双H桥驱动器

驱动双极电机需要两个完整的H桥,因此它可以反转到相的电流。H桥可能很难从头开始构建。但是有很多H桥芯片可以简化任务。

L293D是最受欢迎和最经济的芯片之一。这些可以在大多数第一代Motor Shield的核心中发现,包括令人难以置信的流行的V1 Adafruit Motor Shield。

在Adafruit学习中有一个关于使用裸L293D和Arduino系统的优秀教程:

components_1438-00.jpg

Adafruit Motor Shield V2

Adafruit Motor Shield V2是基于L293D的基本控制器的一大进步。 V2 shield u使用两个TB6612 MOSFET驱动器 。与L293D相比,TB6612提供两倍的电流容量和更低的电压下降,来更有效地驱动你的步进电机。

有2个驱动器芯片和4个完整的H桥,每个shield可以驱动多达两个步进电机。驱动器芯片通过专用的PWM驱动器芯片与I2C接口连接。 这释放了很多 的GPIO引脚用于其他用途,并使屏蔽层也可堆叠。你最多可以叠加32个用2个IO引脚来控制64个电机!

此驱动程序的完整细节可以在学习系统中找到。

components_IMG_4840_crop.jpg

高级CNC控制器

gShield和TinyG CNC控制器板使您更接近工业级步进器的性能。这些电路板具有恒流“斩波器”驱动器,可以调节,来为电机提供最大的扭矩和速度。

TinyG CNC具有板载G代码解释器和4个电机输出,使其成为适用于中小型4轴CNC机床的完整嵌入式解决方案。

正如您所期望的,这些高级的高性能主板比较复杂,适合有经验的用户使用。

这些板及其操作的详细信息可以在TinyG WikiSynthetos Forums中找到。

 

选择合适的驱动代码驱动步进电机

components_IMG_4842_crop.jpg

现在我们来到最重要的部分:确保您的电机和驱动程序兼容。

不匹配的电机和驱动器可能会导致令人失望的性能。 或更糟:损坏电机和/或控制器。

如果你的选择不明智,你可能会遇到这个家伙:

components_691-00.jpg

了解驱动程序规格

驱动程序规范中的两个最重要的参数是:

▪ 电压 – 驱动器可以提供给电机的最大电压。

▪ 持续电流 – 驱动器可以提供给电机的最大电流。

额定的“峰值”电流不适用于步进电机。 始终遵循“持续”电流的额定值。

了解电机规格

您还需要知道电机的电气规格。 有2个关键参数:

▪ 每相的电流 – 这是电机绕组可以处理而不过热的最大电流。

▪ 每相电阻 – 这是每相的电阻

A通常表示额定电压。它通常从上面的两个参数计算,但不总是。 最好根据上述参数使用欧姆定律计算它。

components_Ohm.png

遵守定律!

步进电机的相是电感器,因此它们会抵抗电流的快速变化。 但是在每个步骤结束时或者当电机不运动时,它们表现得像纯电阻负载,并且会遵守欧姆定律.。

静止也就是步进电机吸收最大电流时。 所以欧姆定律可以让我们使用电机规格来计算驱动器的电流要求。

电压=电流x电阻

或者

电流=电压/电阻

这些公式应严格应用于所有“恒压”步进控制器。 这包括来自Adafruit的V1和V2 Motor Shields,以及几乎所有其它基于L293D的控制器。

但是一些电机具有非常低的线圈电阻。严格遵循这些公式,驱动电压将小于5v,性能会不好。这种类型的电机与恒压驱动器不匹配。这些步进器需要更专门的控制器。

违背定律?

这不可能违背欧姆定律。如果你尝试,你将必须被回答蓝烟怪物。 然而,这里还有一些其他规律在起作用。 洛伦兹,法拉第和欧姆定律的专业知识可以帮助您提高电机的性能。

步进线圈在被通电时产生磁场。 根据法拉第定律,变化的磁场在线圈中感应出电流。 根据洛伦兹定律,该电流将在产生电场的电流的相反方向上。 该反向电流被称为“反向电动势”或“反向电动势”。

这个反电动势增加了线圈的“阻抗”或有效电阻。 所以欧姆定律仍然适用 – 但这是对这个阻抗,而不是简单的相电阻。 该阻抗限制每个步骤开始时流过线圈的电流。

components_IMG_4840.jpg

斩波传动

斩波器“恒定电流”驱动通过以更高的电压驱动电机来补偿反电动势。 使用斩波器驱动几倍步进电机的额定电压的是不寻常的。

为了在这些较高的电压下保持安全,斩波器驱动器还监测输送到电动机的电流,并在它超过预设电平之前“斩断”它。

通过在更高的电压处开始,斩波器驱动器能够在步骤开始时向线圈输送更多的电流,增加可用转矩。 除了以较慢的速度增加扭矩之外,它还允许更高的最高速度。

选择斩波器驱动器并为特定电机配置它需要很好地了解电机和控制器。

常问问题

这个电机能和我的shield一起工作吗?

您需要知道电机规格以及控制器规格。 获取该信息后,请检查“将驱动程序与步进器匹配”页面,查看它们是否兼容。

这是一个NEMA 17,所以它应该工作,对吧?

NEMA框架尺寸标准仅定义安装面板的尺寸。 要确定它是否兼容,您需要知道电机的电气规格。

如果没有电机规格怎么办?

参见Jason的反向工程步进电机电线引脚。 这将告诉你相电阻。 对于相电流,您可以基于类似设计的电机和类似的相电阻进行估计。

当有疑问时,一般最好安全地使用较低的电流!

我的项目需要什么尺寸的电机?

大多数电机具有扭矩规格 – 通常为英寸/盎司或牛顿/厘米。 一英寸/盎司意味着电动机可以从轴的中心在一英寸处施加一盎司的力。 例如,它可以使用2“直径滑轮保持1盎司。

在计算项目所需的扭矩时,请确保允许加速所需和克服摩擦的额外扭矩。 将质量块从静止位置提升所需的扭矩要比将其简单地拿着更大。

.如果你的项目需要大扭矩和不高速度,考虑一个齿轮步进。

如何将我的电机连接到Motor Shield?

对于从Adafruit购买的电机,产品说明中列出了接线说明。

对于其他电机,如果可以,请检查电机规格表。

如果你没有规格表,检查Jason反向工程步进电机电线引脚

这个电源可以与我的电机工作吗?

首先确保它不超过电机或控制器的额定电压。通常可以在较低的电压下运行电机,但是你将获得较小的扭矩。

接下来,检查电流额定值。大多数步进模式一次为两相通电,因此电流额定值应至少为电机每相电流的两倍。

*这适用于恒压驱动器。 对于斩波驱动控制器,请检查控制器的说明。

components_IMG_4810_crop.jpg

资源

网上有很多优秀的有关步进电机的信息。 这里有一些我们最喜欢的链接:

Wikipedia Stepper Motor Page

RepRap Stepper Motor Page

Jones on Stepper Motors

Jason on reverse engineering the stepper wire pinouts

components_IMG_4838.jpg

 

 


本文由翻译美国开源硬件厂商Adafruit(阿达水果公司)的相关教程翻译,原始教程由Bill Earl编写,为便于理解和方便读者学习使用,我们已去函与原作者沟通关于本教程翻译中文并发布的相关使用权限,部分内容为适应国内使用场景稍有删改或整合,以上翻译内容仅用于学习交流分享,不得用于盈利等商业用途。

原始文章及相关素材链接:

https://learn.adafruit.com/all-about-stepper-motors/what-is-a-stepper-motor

	

串行外围设备接口(SPI)

简介

串行外围设备接口 (SPI) 是一种总线系统,一般用在MCU与小型外设之间,使他们以串行通信。外围设备包括位移寄存器、 传感器和SD卡等。 它一般使用分别独立的时钟线、数据线以及从机通信选择线。

普通串行端口有什么问题?

一般只含RX(接收)线和TX(传送)线的串行端口,我们会称它作异步串口。因为该类串口无法很精确地保证数据在通讯两端实现同步传收。这是由于计算机系统的一切操作都由标准时间源信号驱动(计算机的晶振源),则如果两个系统的标准时间系统由稍微偏差,它们之间的通讯就会出问题。

为了解决这个问题,异步串口通讯系统在每一帧数据里额外增加了起始位和结束位,以保证接收端对每一帧的数据完整接收。另外,在通信两端,都必须设同样的通讯速率(如9600波特率)。起始位和结束为的设定下,保证了即使帧与帧之间的时间间隔有稍微不一,也能实现正常通讯。

Asynchronous serial waveform

(另外,如上图所示,所发送的“11001010” 实际上不等于0x53,因为在串口通讯中一般会首先从数据的最低位开始发送,因此最左端的实际是数据的最低位。所以低半字节实际是0011 = 0x3,高半字节是0101 = 0x5。)

异步通讯纵然好,但它在每帧数据的起始位与结束位上浪费太多信息空间,并且对通讯端的硬件要求较高。另外,当你发现在你的项目中,通讯端之间的传输速率不一,那么传输的数据必然会严重失真。这是因为异步通信里,接收端只能在特定的时间点里对数据线进行采样(如上图虚线处)。否则,接收端会采集到错误的数据。

一个同步的解决方案

SPI 的工作原理有一点不同。它是一种“同步”的数据总线系统,这意味着它额外的增加了一个通讯线共享时钟源,以实现传输同步。这时钟源是一种震荡信号,用来告知接收端对数据线的正确采样时间点。这有可能是时钟信号的上升沿(电平由低到高)或下降沿(电平由高到低);这可以在硬件的数据手册查询。接收端一检测到时钟线的电平变化,就会对数据线进行采样一,以获得一位新的数据(如下图虚线处)。由于每一位数对应着据时钟越变信号,数据就不需要用很精准的速率传输,不过传输端还是会以最高速传输。(我们接着会讨论选择适合的时钟沿以及传输每一位数据的速度。)

alt text

SPI这么受欢迎的原因之一是它对接收端的硬件要求不高,一个位移寄存器就能实现接收。它比使用UART(全双工异步串口通信端)的硬件更简单和便宜。

如何接收数据

你可能会想,这听起来这么棒的通信系统是怎样把数据发送到另一端的呢?这原理就稍微有点复杂。

在SPI,只有一个端口发生时钟源信号(时钟源端一般简写为CLK、SCK),发送时间源信号的硬件叫主机,另一端则叫从机。在一个SPI通信系统里,只有一个主机(一般是MCU),从机则会有多个。

当数据从主机传到从机时,该数据传输线称MOSI(“Master Out / Slave In”),从机传发送数据到主机由另外一条数据线负责,叫MISO(“Master In / Slave Out”),以上两个过程中,主机产生时钟脉冲信号,对应每一位的数据传输,从机则按照时钟脉冲信号,把每一位数据按次序存储或输出。

alt text

由于主机一直操控时钟线,因此它会预先知道从机将会返回多少位数据。以上特点与异步串口通信很不一样,它的接收端接收来自发送端的数据时间上是相对随机的。在SPI通讯中,信息是以特殊的数据格式和协议来传输。例如,MCU对传感器发出“读数据”的指令,传感器一般会按通信协议返回两位字节数据。(如果,你想要一个完整原始的数据,你可以先让传感器先返回一或两个字节声明该原始数据的长度,然后再传输原始数据。)

注意SPI是“全双工”总线系统(拥有分别独立的发送线和接收线)因此,在实际情况下,你可以同时实现数据的发送和接收(例如,实现发送要求对一个传感器读数据的命令,同时接收另外一个传感器回传的数据)。硬件的数据手册会告诉你这是可行的。

从机通讯选择 (SS)

这是SPI总线系统里最后一个你需要关注的线,它叫SS(Slave Select)。这根线是用来激活主机所需通讯的从机。

alt text

SS在空闲时为高电平,即断开从机与主机之间的SPI通讯。(即所说的低电平有效断你会经常在能使断看到类似的应用。)在数据传输之前,要拉低所需通讯从机的SS端。当你不与该从机通讯,则将它的SS端拉高。这相当于一个位移寄存器里的锁存端。

多从机工作

要是有两个或以上从机连在同一根SPI总线系统上:

  1. 一般来说每一个从机都要独立分配一个SS线I。当要与指定的从机通讯时,你将对应的SS端拉低,其它从机的则保持高电平(你不会想同时让两个从机被激活,否则这两个从机就会同时在MISO端与主机通讯,造成数据的相互干扰失真)。每一个从机对应一条独立的SS线。如果你的主机输出口不够,可以用译码器扩展。alt text
  2. 在另一方面,若是要环形传输数据,一个从机的MISO连到下一个从机的MOSI。则要把所有的从机激活通讯。只要数据传输完成,就要把对应的SS端拉高,以防多个从机同时激活。这类结构经常用在位移寄存器和可寻址LED硬件里。

 

 

alt text

注意在这设计里,当数据流从一个从机到另一个,至到任意一个,你将需要传输足够多的数据来推动这个数据流。同样,要注意你传出去的第一分数据是留给最后一个从机的。

这类型的设计通常用在单一输出的情况下,就如LED模块,工作时它并不会返回任何的数据。这样情况你便可以省去MISO端。另外,要是有数据返回,你可以选择环形总线结构来返回数据(上图蓝线所示)如果你选择这类结构。当你接收端来自从机1的数据时,则说明它的数据已经流过所有的从机。所以,为了接收到你所需的数据,你要传输足够多的接收命令。

SPI的程序

许多的MCU已经内置了SPI的硬设,来应对所需高速传输数据的所有要求。而且,对你们来说,按SPI的通讯协议配置相应的I/O口去传输数据是十分简单的。(一个很好的例子在维基百科的SPI。)

如果你想在一个Arduino实现SPI与其他硬件通讯,这有两种方法:

  1. 你可以用shiftIn()shiftOut() 指令。这是基于软件的指令,你可以用任何的引脚作为输出,但这样传输速度会比较慢。
  2. 或者你可以用SPI Library,是集成到MCU的SPI模块。它比指令方法快多了,但它只能按特定的引脚输出。

在通讯之前,你要设置一些相关选项。这些设置必须要和你所通讯的外设相匹配;查阅它们的资料手册,看通讯时需要什么配置要求。

  • 在通讯时可以先发送最高有效位(MSB)或最低有效位(LSB)。在Arduino的SPI库里,这由 setBitOrder() 函数控制。
  • 从机会在时钟脉冲信号上升沿或下降沿读取数据。另外,要注意时钟线在空闲时时高电平还是低电平。在Arduino的SPI库里,这由 setDataMode() 函数控制。
  • SPI可以高速传输数据(几兆每秒),这对于一些外设来说太快了。为了适应这些设备,你可以调节传输速度。在Arduino的SPI库里,这由setClockDivider() 函数来实现,它会将主机的输出时钟频率(对于大多Ardunio是16MHz)分频(8MHz (/2)到125kHz (/128)之间。
  • 如果你用SPI库,你只能用它所指定提供的SCK, MOSI and MISO 引脚。另外,还有一条指定的SS端(对于SPI硬件模块来说,必须至少有一根SS端),不过你也要分配其他的端口作SS端,分别控制每一个从机。
  • 在旧版的Arduino,你需要额外写程序控制相应SS端,让其在通讯前拉低,在通讯结束时拉高。在新版的Ardunio,如Due 可以自动控制每一个SS端,详情见 Due SPI documentation page

更多相关资源

提示和技巧由于

  • 由于SPI传输的是高速信号,它只能进行短距离通讯(仅几英尺)。如果你要远距离通讯,则要降低时钟脉冲频率,并加专用的驱动芯片
  • 如果SPI的传输情况不符合你的预期设想,用逻辑分析仪去排误是一个不错的选择。智能分析仪如Saleae USB Logic Analyzer,可以译码并显示和记录所测量的数据。

alt text

SPI的优点:

  • 它比异步串口通讯要快
  • 就收器的硬件要求较低,如位移寄存器er
  • 支持多从机通讯

 SPI的缺点:

  • 相比其他通讯方案,它需要的信号线较多I
  • 要制定通讯协议(你不可以随意发一堆数据)T
  • 只能有主机控制所有的通讯(从机之间不能直接通讯)
  • 它需要额外分配SS线对应每一个从机,如果多众多从机,这将是个大问题。

扩展阅读

查阅  SPI的维基百科, 那有很多关于SPI的信息以及一些同步串口通讯的资料。

这篇博客 展现了更多关于基于嵌入式硬件建立SPI通讯的正确方法,示例是用 Arduino

许多SparkFunA的产品支持SPI通讯。如 Bar Graph Breakout kit

其他通讯方案:

现在你是SPI的支持者之一了,以下有一些其他教程来练习你的新技能:

 


cc

原始文章采用CC BY-SA 4.0,您可以自由地:

  • 演绎 — 修改、转换或以本作品为基础进行创作
  • 在任何用途下,甚至商业目的。
  • 只要你遵守许可协议条款,许可人就无法收回你的这些权利。

本文由翻译美国开源硬件厂商Sparkfun(火花快乐)的相关教程翻译,原始教程采用同样的CC BY-SA 4.0协议,为便于理解和方便读者学习使用,部分内容为适应国内使用场景稍有删改或整合,这些行为都是协议允许并鼓励的。

原始文章及相关素材链接:

https://learn.sparkfun.com/tutorials/serial-peripheral-interface-spi?_ga=1.36860256.1133118399.1488205103

WS2812模块接线教程

序言

WS2812是一种集成了电流控制芯片的低功耗的RGB三色灯。我们特别钟爱这款简单的组合LED。它已经在很多款商品中得到应用,包括下面这个的WS2812 Breakout板。

而 LilyPad Pixel 也是这样一类电路板,但是它的LED则是位于一个紫色的圆环之内。这种做法使它有利于缝合在衣物或者其他纺织物,那么就可以很方便的嵌入一个智能纺织物的项目中。

最后,WS2812还是各种LED灯带的灵魂所在,这种灯带有以下四种规格:密封的5m,密封的1m,裸露的5m,裸露的1m。

让WS2812真正独特的是它的控制方式。嵌入在LED里面的IC通过一种独一无二的单总线接口和外界进行通讯。有了已经写好的驱动库,使得我们可以很容易去控制它。加上他们可以级联,也就是我们可以通过将一个LED的信号输出端连接至另外一个LED,以此类推,创造出数以百计的LED组成的灯带。要是你连接的LED足够多,那么你就可以作出很棒的动画了!

在这个教程里,我们将会带你熟悉一下WS2812的工作方式。首先,我们先说明一下上面提到的几块板子是的连接方式,也就是LilyPad或者LED灯带。然后我们先把教程放一边,把Arduino的代码了解了解。

材料准备

显然,你先需要一个WS2812的板子或者灯带。LED连得越多就越好玩!在例子里我们会把5块板子连接在一起用,不过这并不妨碍你把例程很方便地应用于到其他的项目。

在我们开始展示例程给你们看之前,你还需要一个微型处理器。使用它我们才能给LED发送0/1的控制信号。我们用的板子是 Arduino Uno,但是一些其他的Arduino板子也是可以的。而且你也可以把例程的代码移植到你喜欢的微处理器上。

现在,你还需要把LED板和Arduino板进行连接。你可以用洞洞板,也可以用杜邦线直接连接它们,随你喜欢。

工具

为了我们的电路板足够稳定,你还需要把所要用到的引脚都焊接好。那意味着你至少一把电烙铁和一些焊锡。你可以点击我们的“如何焊接”教程去学习焊接如果你是第一次焊接的话。

建议阅读

这些板子都不难使用。如果你之前有用过任何的Arduino板,那你应该能很快上手WS2812了。如果你还没搞懂什么是Arduino,或者你还不熟悉下面的这些东西,那你应该考虑阅读一下这些教程。

W2812 上视图

WS2812比我们乍一看以为的复杂的多,它看起来像一个普通的5050-sized(5x5mm)LED,但实际上远不止这么简单,它里面是有一个电流控制集成电路的。如果你仔细看的话,你会看到那些藏在里面的微小的芯片, 芯片上还有几根金丝连接到LED上。

非常细腻的WS2812的内部细节

这款LED本身很像普通的RGB(红、绿、黄)LED。每一种颜色的亮度可以通过脉宽调制,,,实现256级的分级控制。这意味着它能通过组合RGB的亮度,实现16,777,216(2563)种颜色。所以你可以调制出任何的颜色,无论是白色到黑色(关闭RGB),还是到橙色到红褐色。

电路板的引出脚

这款电路板安置有一颗多彩LED在板上,并且留出了几个引脚用于控制LED。

下面我们来介绍一下四个独立的引脚:

5V-这个引脚需要由一个5V-7V的直流电源接入。电压过高(7V)的话会烧毁LED,电压太低(5V)的话则会造成亮度过低,甚至造成LED不工作。

GND-公共引脚,接地,即接电源的负极。

DI-微控制器(或者是另外一个WS2812)的数据从这个引脚传入LED。

DO-数据从这里输出给下一级的WS2812,如果这个WS2812是最后一级,则可直接悬空此引脚。

数据传输接口

注意:

以下的介绍很简单,甚至对你理解这块板子如何使用也没有太大的作用.(那应该是库应该做的,对吧?!)之所以我还是要谈及,是因为这个接口实在是太特别了。

这个用于微处理器和WS2812数据传输的接口很奇怪。它只有一条线,但是却不像已有的标准,如UART串行接口。这个接口的时序很特别。只有逻辑0和逻辑1,而逻辑0或1各有它们自己对应的脉冲宽度。

逻辑0和逻辑1的时序图

在一个低电平的复位脉冲(至少维持50us)后,这些数据以24位二进制数–每种颜色8位二进制数,被按顺序地发送出去.

一串24位二进制数–每种颜色8位二进制数。先是绿色,然后是红色,最后是蓝色。

某种特定的颜色(RGB之一)的值越大,则这种颜色的亮度越大。如果每种颜色(RGB)都被设置为0,则LED被关闭。如果每种颜色都被设置为最大,即255,那么LED会显示为它能显示的最亮的白色。

综上所述,这个接口的时序是非常的特别的。为了让这些灯亮起来,你需要一个能发出精确时间脉冲的处理器,例如Arduino;而树莓派或者pcDuino是不能发出精确时间脉冲的。如果有一位数据的脉冲周期短于1ms,则可能会造成LED发出深紫色的光而不是你要的纯紫色。

硬件连接

这种LED最棒的地方就在于它们很容易连在一起。微控制器的的一个引脚就可以控制起整个灯带。在下面这个例子里,我们将会连接5个LED以做示范,而你可以连接十倍数目甚至更多的LED,都是可以的。

焊接/缝制/接线

组装电路的第一步就是要实现控制板和LED的可靠连接。你需要焊接所有的接头或者直接接线。又或者把你的LilyPad Pixel板用电线缝起来,或者用线把LED串起来,连成一条灯带。

如果你打算把LED和面包板或者其他定型的板连接起来,那么用杜邦线是最好的选择。

面包板上连接在一起的WS2812板。藏在下方的白线是用于连接上级的DO和下级的DI的。

如果你打算做一条大的灯带,你可能需要把接口焊接在一起

通过连接DI和DO将WS2812板连成链状(不要忘了供电)。

选择一个直流电源

WS2812需要大约5V才能工作。它可以在4V到7V的范围内工作,但是5V的电源可以直接在很多的板子上引用过来。例如Arduino上的5V电源,就是一个很好的LED电源。

同时,你也要考虑到你的灯带需要多少的电流去驱动。一般来说,一个亮度全开的LED,他的板子需要至少60mA(每个通道20mA)。如果你把10块LED板连到一起,那么你最好找一个600mA的电源。是的!如果你串了很多个这些LED,那就要确保你的电源能提供上这些电流。如果你最后决定你要用一个外部电源,那你要确保你的电源地和Arduino的地有连到一起。

连接Arduino

Arduino的连接是想当容易的。你可以用Arduino上的5V和GND给LED板供电。然后你仅需要挑出一个空闲的I/O口用来控制LED。那么在例程里我们是用了pin 4口。要连接很多LED板的话,只需要把信号输出口和下一级的信号输入口连接。同时,要确保每块板子都有被供电。

保护你的WS2812

除了上述的连接,我们推荐添加以下的步骤以确保你的WS2812工作更加稳定。

加一个大的电解电容

在WS2812连接电源前,在电源和地之间并联一个大电容。它的容值在100uF到1000uF间最好。

这个电容可以让你的电源输出更加平滑。WS2812的负载电流的变化范围很广,当电流上下变化时,它可以补偿电源的电流变化,保证电源的稳定输出。这个电容的作用相当于一个电源储备库,在电源充足的时候把能量储存起来。

另外,尝试把这个电容尽量靠近你的WS2812。

串联一个电阻在信号线中间

Arduino的输出口和WS2812的输入口间串联一个小电阻将会有助于保护输出口。阻值的话在220到470欧比较合适。

尽量把电阻放得离WS2812更近一些。

不要把线接的过长!

导线其实是没办法完美地导电的。很多时候导线是会造成一定的压降的,特别是当它们很长的时候。为了保证电源的有效供应,电源和Arduino、WS2812间的连线要尽可能的短以保证压降最小。

添加固件

为了我们的例程,我们最好先使用 Adafruit’s fantastic NeoPixel库。

点击这里下载例程,还有Adafruit’s fantastic NeoPixel库。这个库在 Adafruit NeoPixel文件夹里,例程是在WS2812_Breakout_Example文件夹里。

你需要先装好这个库。点击这里,可以看如何安装Arduino的库。

库装好了之后,打开WS2812_Breakout_Example.ino。在你下载代码前,先确认你已经调整过了宏定义PIN和LED_COUNT了。PIN定义了哪个引脚和第一块pixel板连接,LED_COUNT定义了一共有多少LED要驱动。接着,让我们下载代码然后玩起来吧!

NeoPixel的库

设置

在使用库之前,有几行代码需要你设置一下。首先,在最一开始那里的代码,有个结构体,你可能希望它是一个全局变量。

COPY CODE

#define PIN 4

#define LED_COUNT 8

 

// Create an instance of the Adafruit_NeoPixel class called “leds”.

// That’ll be what we refer to from here on…

Adafruit_NeoPixel leds = Adafruit_NeoPixel(LED_COUNT, PIN, NEO_GRB + NEO_KHZ800);

PIN和LED——COUNT参数也需要设置一下,PIN定义了哪个引脚和第一块pixel板连接,LED_COUNT定义了一共有多少LED要驱动。

剩下的设置就是在setup()函数前的leds.begin()函数。

点亮一颗LED

用Adafruit NeoPixel库点亮一颗LED只需要两个步骤。第一步,你必须按要求用leds.setPixelColor(position, color) 函数设置它的颜色。函数里的颜色参数可以是任意的24位RGB值,或者是3各颜色用3个独立的字节。例如:

COPY CODE

leds.setPixelColor(4, 0xFF00FF);    // Set fourth LED to full red, no green, full blue

leds.setPixelColor(4, 0xFF, 0x00, 0xFF)  // Also set fourth LED to full red, no green, full blue

设置好了一个LED的颜色后,不代表它就会开始工作。为了让它真正工作,你需要调用函数callleds.show()。注意,调用这个函数会让所有的LED以设置好的颜色工作。

Setting a pixel’s color does not equate to that pixel actually turning on though. For that, you need to callleds.show(). Note that when this function is called any LED that was previously set will turn on.

代码的其他部分

在你已经掌握如何使用NeoPixel库后,剩下的代码都是在控制LED的颜色的。在这个例程里还有一些有趣的功能,例如实现彩虹灯等。希望你可以利用它们去做一些更有创造力的动画。

在WS2812_Definitions.h这个头文件里,还定义了一些标准颜色的列表。里面有从黑色到白色的所有颜色。

祝你玩得开心!


cc

原始文章采用CC BY-SA 4.0,您可以自由地:

  • 演绎 — 修改、转换或以本作品为基础进行创作
  • 在任何用途下,甚至商业目的。
  • 只要你遵守许可协议条款,许可人就无法收回你的这些权利。

本文由翻译美国开源硬件厂商Sparkfun(火花快乐)的相关教程翻译,原始教程采用同样的CC BY-SA 4.0协议,为便于理解和方便读者学习使用,部分内容为适应国内使用场景稍有删改或整合,这些行为都是协议允许并鼓励的。

原始文章及相关素材链接:

https://learn.sparkfun.com/tutorials/ws2812-breakout-hookup-guide?_ga=1.266035463.946766378.1445226389

串联和并联电路

串联电路和并联电路

简单的电路(只有几个元件)通常很适合让新手入门。但是,当有新的元件加进来时,事情就不那么简单了。电流是怎么流动的?电压在干什么?可以将这些简化而令人更容易明白吗?恐怕不能。

在这片文章,我们首先会讨论串联电路和并联电路,电路中只有最基础的元件——电阻和电池——来呈现两种电路的不同之处。当你将不同的元件(比如电容器和电感器)结合在串联或并联电路中时,我们会探索一下串联或并联不同的结果。

本文章的内容

  • 串联电路和并联电路是什么样子的?
  • 在两种电路中,元件会如何运作。
  • 在两种电路中,电源电压会对耗能元件有什么影响。

建议阅读

在继续阅读本教程前,建议你阅读以下文章:

串联电路

节点和电流

在我们深入学习本章节之前,我们要提一下什么是节点。这并不是什么有趣的东西,就是连接的两个元件之间的线路。

Node example schematic

四种不同颜色的节点

了解这个,我们学习串并联电路的不同之处就完成一半了。我们还要理解电流是怎么流过电路的。电流从电压高的地方流向电压低的地方。电流会找尽办法流向电压最低的地方(也就是地端)。以上面的电路作为一个例子,这里表明了电流如何从电源正极流向电源负极:

Example of current flow through circuit

电流(用蓝色,橙色,粉色的线表示)在电路中流动。不同的电流用不同的颜色表示。

注意有些节点(就像R1和R2之间的)的电流在进来和出去后都是一样的。在其他节点(特别是R2,R3,R4这三路)干路电流被分成不同的两部分。这就是串并联电路不同的关键。

串联电路的定义

如果两个元件在同一线路上,并且流经它们的电流是同一路电流,那么就说这两个元件串联。这里是三个串联电阻的电路:

Schematic: Three resistors in series

在此电路中,电流只能有一条路线。从电源正极开始,电流首先流过R1。然后直接流过R2,然后R3,最终回到电源的负极。这里只有一条路径让电路流过。这些元件是串联的。

并联电路

并联电路的定义

如果元件之间有不同的节点,它们就是并联的。这里是三个并联电阻的例子:

Schematic: Three resistors in parallel

电流中电源正极出发,然后分别流过R1,R2和R3。将R1和电源连起来的节点也和其他电阻相连。其它电阻也类似地连接在一起。并最终和电源负极相连。这种情况下的电阻的就是并联。

串联电路中的电流处处相等,并联电路中的元件两端的电压相等。

串联和并联同时工作

以下是串联和并联共存的电路。电流从电源正极出来,首先经过R1,然后被分流,经支线流过R2和R3,最后又回到干线上,最终流回电源负极。

Schematic: Series and Parallel Resistors

在这个例子里,R2和R3并联,R1和R2,R3组成的并联电路串联。

计算串联电路中的等效电阻

这里有一些对你来说特别有用的信息。当我们在串联或并联电路中这样放置电阻,我们可以改变流过它们的电流的大小。例如,如果我们有一个10V的电源,一个10kΩ的电阻。依据欧姆定律我们得到1mA的电流。

Schematic: Single Resistor in series with battery

如果在电流中在加一个10kΩ的电阻,还是原来的电源,我们就使电流减少了一半,因为电阻变成原来的两倍了。

Schematic: Two series resistors in series with a battery

换一句话,我们的电路只有一条路径可以让电流流过,我们只不过是使电流流通的条件变得更艰难了。有多艰难呢?10kΩ+10kΩ=20kΩ。这就是我们计算串联电路电阻的方法——直接将它们相加

为了让这个方程更直观:电阻的数量是N——N是任意的值——电阻总值就是每一电阻相加。

Schematic snippet: N resistors in series

Equation: Rtot = R1+R2+...+R(N-1)+RN

计算并联电路中的等效电阻

串联电路中的电阻是怎样的呢?这回稍微复杂一点,但不会太多。回顾一下我们刚才10V电源和10kΩ电阻的例子,这一次我们增加一个10kΩ的电阻和原来的电阻并联。现在电流有两条路径可以走了。因为电压是不变的,在欧姆定律中,第一个电阻的电流仍然是1mA,那么同样的第二只电阻的电流也是1mA,我们就可以得到干路中的电流是2mA。这意味我们使电路中的电阻减半了。

Schematic: Two parallel resistors in parallel with a battery

我们可以很简便得得出10kΩ||10kΩ=5kΩ(||代表并联),但是电阻中不会只有两个电阻的。遇到更多的电阻怎么办呢?

求任意数量并联电阻总阻值的公式是:

1/Rtot = 1/R1 + 1/R2 + ... + 1/R(N-1) + 1/RN

If reciprocals aren’t your thing, we can also use a method called “product over sum” 如果你不喜欢倒数,我们还有一个方法——积除以和,当然是只有两个电阻的时候可以用这个公式:

R1||R2 = R1*R2/(R1+R2)

通过计算R1||R2的总电阻,我们可以将这条方程扩展到多个电阻的情况。但是用倒数相加的方法可能效率更高。

实验时间——第一部分

你需要的器材:

我们做一个简单的实验以验证我们对于串并联电路的理论。

首先,我们将几个10kΩ的电阻串联起来。参照下图,在面包板插一个10kΩ的电阻,并用万用表测量阻值。是的,我们已经知道之前电阻的阻值是10kΩ,但是确保严谨我们还是要测量一下电阻。当我们看到电表的指针稳定下来后,将另一个电阻接在面包板上,并确保和第一个电阻电气相连,然后用万用表测量两个电阻的总阻值。万用表的值大约是20kΩ。

你可能注意到你测量的电阻的阻值和你预想的值并不完全一样。电阻的实际阻值是有一个误差范围的,会与标明的阻值误差几个百分点。因此你可能读到9.99kΩ或10.1kΩ。只要这个读数和正确的数值接近就好,一切都会顺利工作。

Multimeter Fritzing Diagram

Experiment Time – Part 2

现在我们来处理并联电路的情况。如下图左下角那样安置两个电阻,确保它们的引脚是电气相连的。在用万用表测量它们的总阻值之前,你可以先计算一下它们的总阻值(提示:结果是5kΩ)。如果你测到的是接近5kΩ的值,这是好的。如果不是,检查一下连接有没有问题。

Experiment: Measure parallel resistors with a multimeter

分别用3个、4个、5个电阻重复实验。测量到的值分别是3.3kΩ,2.5kΩ和2kΩ。一切事情都按照计划进行吗?如果不是,检查一下连接是否出错。

串、并联电路电阻第一规则

有许多情况需要我们连接多个电阻。例如,你可能想要建立一个特殊的参考电压,你一定需要一系列的电阻,而且这些电阻的值也会比较特殊。既然我们电阻的阻值精度够高,我们就可以用多个不同阻值的电阻组合成我们需要的阻值。

提示1:并联电路中的等价电阻。

并联电路中的N个阻值(R)相同的电阻,那么总的电阻就是R/N。比如说我们需要一个2.5kΩ的电阻,但我们只有10kΩ的电阻。将四个这样的电阻串联起来,我们就会得到2.5kΩ的电阻。

Four 10kΩ Resistors in parallel can be used to create a 2.5kΩ one!

贴士2:精确度(tolerance)

确定你需要的精确度。例如,如果你需要3.2kΩ的电阻,你可以并联3个10kΩ的电阻。你得到的是3.3kΩ的电阻,和你预想中的阻值误差了4%。但是,如果你需要误差小于4%,你可以测量那些“10kΩ”的电阻,挑选测量值小于10kΩ的电阻并联在一起,你就可以得到更接近3.2kΩ的阻值了。理论上,如果我们的10kΩ电阻误差不超过1%,我们只能得到3.3kΩ的阻值。但是一些成品误差会大一些,需要我们耐心点找它出来。

贴士3:串、并联电路的功率

串、并联电路中的电路同样会有功率。比如说有一个100Ω,功率是2W,但我们只有1kΩ,0.25W电阻。你可以将十个1kΩ的电阻并联起来得到100Ω的阻值,总功率是10*0.25W,也就是2.5W。

但我们并联阻值不相同的电阻时,我们要更小心地处理总电压和总功率的值。

贴士4:并串联电路中的不同电阻

并联电路的总阻值一定会小于阻值最小那个电阻。

贴士5:并联电路中能量的损耗。

如果并联电路中的电压值不相同,那么支路中的电能损耗是不一样的,因为电流并不相同。用前面的例子(1kΩ||10kΩ),我们会发现1kΩ电阻的电流是10kΩ电阻电流的10倍。欧姆定律告诉我们功率=电压*电流,就可以推导出1kΩ电阻电功率是10kΩ电阻电功率的10倍。

最后,当我们处理电阻值不同的并联电路时,我们要时常想起贴士4贴士5.如果电阻值是相同的,贴士1和贴士3就变得很好用了。

串联电路和并联电路中的电容

将电容联合起来就像将电阻联合起来……只不过结果刚好相反。为什么会这样呢?

电容器是两块分开但是间隔非常近的导体板,它的主要功能是容纳一定量的电荷。电容器的容值越大,它越能容纳更多的电荷。如果增加导体的面积,电容值会变大,因为容纳电荷的物理面积变大了。如果导体板的距离变大了,电容值就会减小,因为距离使它们之间的场强减弱了。

我们将两个10uF的电容串联在一起,并假设它们都充满电了并准备放电。

Capacitors in series

记住在串联电路中电流只有一条路可以走。也就是说在下面的电容放出的电量和在顶部放出的电量是相等的。因此电容器的总容量并没有增加。

事实上,情况会更糟糕。通过串联电容器,我们只不过是将导体板隔离得更远了。我们得到的不是20uF,或者甚至是10uF。而只是5uF。这个结论的得出和我们计算并联电路的电阻一样,同样都是用“乘除以积”的方法。

Capacitors in series schematic/equation

这看起来似乎没有串联电容的用武之地。但是应该指出,我们得到的是多倍的电压。就像电池一样,我们将电容器串联起来就使电压增加了。

并联电路中的电容相加就像将串联电路中的电阻相加:直接将各部分的值加起来就可以了。为什么是这样呢?将电容器并联起来就像将电容器导体板的面积增加了。更大的面积意味着更大的电容。

Capacitors in parallel schematic/equation

实验时间——第三部分

你会需要:

让我们看看实际中一些串联和并联的电容器。这一部分比电阻那一部分稍微麻烦一点,因为电容器的容量不能直接用万用表测量出来。

让我们首先看看从0开始慢慢增加电容器两端的电压会怎样。如果电容器的电阻为0,电流就会很大。电容器会一直放电,直达它的电压和供应电压相等。

如果电容器的电阻为零,那么放电的速度非常快,电流很大,而充电的速度也会很快(微秒级甚至更少)。在这个实验中,我们想看看一个电容器是怎样充满电的。我们将使用一个10kΩ的电阻,将充电的速度减慢下来,使我们能够比较容易的观察现象。但是首先我们要谈谈什么是RC时间常量。

Tau = R*C

上面的公式是是说一个时间常量的长度(单位:秒)等于电阻(单位:欧姆)乘以电容(单位:法拉)。简单吗?我们将在下一页阐释这个公式。

实验时间——第三部分(继续……)

在本实验的第一部分,我们会用10kΩ的电阻和一个100uF(即0.0001F)的电容.这两者相乘得出一秒的时间常量:

Tau = 10kOhm * 100uF = 1 second

通过一个10kΩ的电阻为100uF的电容器充电,我们可以预测在一个时间常量内(也就是1秒),电容器的电压上升到了供应电压的63%。在5个时间常量后,电容器的电压是供应电压的99%,这是符合以下的曲线的:

Capacitor charge time graph

既然我们已经知道这个规律,我们将要将电路是图案联系起来(请确保不要搞错电容器的两极。)

Fritzing diagram, power off, cap in series with resistor, battery

用万用表测电池包的输出电压。输出电压测量值应该在4.5V附近(如果是新
电池,电压会稍微大一点)。现在连接电路,要注意在和面包板连接前把电
源开关打到OFF位置。同时,红线和黑线不要接错了。你可以用鳄鱼夹将被
测电容和万用表探头连接起来(你可以将线头拉长一点,使连接变得容易)

只要我们对电路的连接满意了,就可以将电池包的开关打到ON。在五秒钟后
,万用表的读数应该和电源的电压接近,这意味着公式是正确的。现在把开
关关了。万用表的读数并没有变化。这是因为电流已经无路可走了,电容器
不会放电,这是一种开路的情况。为了给电容器放电,你可以用10kΩ的电阻
与之并联。在5秒后,电表读数将接近0。

实验时间——第三部分(再继续……)

在本实验的第一部分,我们会用10kΩ的电阻和一个100uF(即0.0001F)的电容.这两者相乘得出一秒的时间常量

C = 100uF*100uF/(100uF+100uF) = 50uF

时间常量会是怎样的呢?

Tau = 0.5 seconds

Experiment 3.2 fritzing diagram

记住这些结果,增加一个电容器,与第一个串联(如上图),确保电表的值
是0V。将滑动开关滑到“ON”。电压表的读数从0变成电源电压值是不是用了原
来一半稍微多的时间呢?这是因为电容器比原来多了一
倍。总的电容值变小了,所以将它充满电需要更少的时间。我们建议用第三
个电容器来证明这一点。

现在我们尝试并联电容器,记住我们说过这就像将电阻串联。于是我们得到
的总容量就是200uF。时间常量就变成:

Tau = 2 seconds

这就意味着如果我们用4.5V的电压给电容器充电,我们大约需要10秒。

Frizing diagram: caps in parallel

为了证明这一点,我们用原先10kΩ和100uF串联的电路,并在这实验中参考
第一个实验那张图。我们已经知道充满电容器需要5秒。现在增加第二个电
容器与之并联。请确保电表的读数是0V(如果不是,就用一个10kΩ的电容器
放电),然后将电池开关打到“ON”。充电时间会久一点,不是吗?我们将电
容器的容量扩大了,当然需要更多时间将它充满电。你可以自己证明它,用
第三个100uF的电容器,并观察它充电的时间。

串联和并联电感器

串联和并联电感器

在电路中串联电感器的情况是很罕见的,但并非没有听说过。我们可以这样
做完成特殊任务。

简而言之,它们就像电阻那样,就是说如果串联,它们的值简单相加,如果
并联,就用“乘积除以和”的值。棘手的部分是,如果它们靠得太近,就会或
多或少产生互相干扰的磁场。为此,只用一个电感比用两个或更多要好,
虽然大部分电感器都包装成可以阻碍磁场。

在任何情况下,说它们像电阻那 样增加是恰当的。关于电感器的更多内容超出了本教程的范围。

资源与深入学习

现在你已经熟悉了串并联电路,为什么不搜索一下这些文章呢?

  • Voltage Dividers (电压驱动器)- 最基础的一种循环电路就是电压驱动器。这是一个建立在本教 程概念之上的电路。
  • What is an Arduino?(什么是Arduino?) -现在你肚子里已经有了电路的基础知识,你可以直接学习 最受欢迎的一种微控制器开发平台:Arduino
  • Switch Basics(开关基础) – 我们在本教程里已经谈论了一些电路基础知识,但还不包括这一 种。开关是每种电路都必需包含的部件。在这篇教程里学习关开关的所有 内容吧。
  • Sewing with Conductive Thread(缝合导电线) – 电路不是只有能在面包上拉电线. E纺织品使用导电线将电灯 缝如衣服或其他纺织物。

    cc

    原始文章采用CC BY-SA 4.0,您可以自由地:

    • 演绎 — 修改、转换或以本作品为基础进行创作
    • 在任何用途下,甚至商业目的。
    • 只要你遵守许可协议条款,许可人就无法收回你的这些权利。

    本文由翻译美国开源硬件厂商Sparkfun(火花快乐)的相关教程翻译,原始教程采用同样的CC BY-SA 4.0协议,为便于理解和方便读者学习使用,部分内容为适应国内使用场景稍有删改或整合,这些行为都是协议允许并鼓励的。

    原始文章及相关素材链接:

    https://www.sparkfun.com/search/results?term=DC+AC