电子设计


小组作业

个人作业

学习成果:

你是否:

本周流程

每周作业 → Eagle 入门 → 编辑原理图/电路板 → 铣削电路板 → 焊接元件 → 调试 → 编辑并发布网站


小组作业

前往 小组作业页面

使用的工具


使用的软件


hello board 的设计文件


  1. 使用我们实验室的测试设备
  2. 我先看了 SparkFun 关于示波器的 YouTube 视频。

    我学到了:
    • 示波器测量的是电压随时间的变化:能得到幅度、频率、瞬态信号
    • 重要的按钮……

      我们实验室的示波器 我们实验室的示波器

    • 校准探头/调节补偿电容

      示波器探头 示波器探头

      1. 在探头上选择 X10
      2. 把探头接到通道一的接口
      3. 把探头接到 1kHz、5V 的方波发生器
      4. 打开示波器
      5. 确认只有通道一是开着的:点 CH2 按钮直到它关闭,CH1 按钮则反过来操作
      6. 用 F1 键选择 DC 耦合
      7. 按 F4 按钮,在探头模式里选择 10X
      8. 按 trig/menu 按钮,把类型选为 “edge”,信号源选为 CH1
      9. 把 slope 选为 “Rise”
      10. 调节垂直和水平旋钮,直到看见波形
      11. 如果波形在移动,调节 trig 旋钮直到它停住
      12. 要校准探头,调节探头底部的螺丝,直到波形变成方形

        调节前后的波形照片 调节前后的波形照片


  3. Eagle 入门:
    1. 我先看了下面的视频教程,然后翻了第 6 周的 Eagle 教程。照着教程,我下载并安装了 Eagle 的 Fab 库。

    印制电路板布局

  4. 逆向分析 Neil 的电路板

    Neil 的 Hello Board Neil 的 Hello Board

    1. 我先看了 电子设计 - Eagle 教程。拿着上面的原理图,我开始在 Eagle 里重绘
  5. 一步一步画原理图:
    1. 在 projects 下 → 右键点击 Eagle → 点击 new project → 给项目起个名字

      在 Eagle 里新建项目

    2. 右键点击项目名 → new → Schematic

      在 Eagle 里新建原理图

    3. 输入 “add” → 搜索每个元件

      在 Eagle 里添加元件

    4. 左键点击放置元件 → 重复,直到同一种元件全部放完 → 按 ESC 添加下一个元件 → 搜索下一个元件,或者按 ESC 回到原理图

      在 Eagle 里放置元件

    5. 输入 “rotate”,左键点击元件的原点,把元件转到想要的位置
    6. 输入 “net”,把元件互相连起来
    7. 输入 “name”,左键点击元件上方给它命名
    8. 输入 “label”,左键点击一根导线,就能把它们连起来,不用画 net
    9. 输入 “value”,左键点击元件的原点,设置元件的 “value”
    10. 输入 “move”,把元件放到需要的位置
    11. 保存文件

    Eagle 原理图

    在上面的原理图里可以看到,大多数元件没有用线(net 命令)连起来,只有晶振(XTAL1)例外。其余元件是用 label 命令虚拟连接的,就像上面字母 h 里解释的那样。


  6. 画电路板
    要在 PCB 上摆放元件,用和原理图里一样的命令:
    1. 左键点击 file → 输入 “board” → 接受警告并左键点击 yes,创建电路板,从刚才建好的原理图开始设计 PCB

      在 Eagle 里创建电路板

    2. 所有元件会显示在板子左边 → 用 move 命令一个一个拖,左键点击并拖动,把它们放进板子里
    3. 输入 “rotate”,像原理图里那样转动元件
    4. 全部摆好之后 → 用 move 命令拖动原来板子的边,调整板子大小
    5. 输入 “polygon”,选择顶层,沿板子边界画一个方形,创建 PCB 的顶层
    6. 输入 “ratsnest” → 要启动自动布线,输入 “auto”。这个命令很方便,它给出板子怎么布线的初步思路,但代替不了手动布线

      在 Eagle 里使用自动布线

    7. 选择 start

      在 Eagle 里启动自动布线

    8. 需要的话用 “ripup” 命令调整走线,删掉已经布好的路径
    9. 用 “route” 和 “move” 命令放新的路径,把它们摆得更好
    10. 输入 “info” 命令 + 左键点击,微调路径的位置和粗细

    你可以在这里看我怎么做。把音量调大,听点 Cash!

    如果播不了,就到 YouTube 上看!


  7. 添加 LED 和按钮
    1. 为了添加 LED 和按钮,我回到了原理图
    2. 在原理图里输入 “add”,添加两个电阻、一个 LED 和按钮
    3. 第一个电阻限制流向 LED 的电流,它和 LED 串联(放在任意一侧)。为了确定电阻值,我先查了 LED 的数据手册,找到直流正向电流,这里是 30 mA,还有正向电压,这里是 2.1 V
    4. 有了这两个值再加上我的输入电压(5 V),我把数值填进网站 LED center,算出合适的电阻,这里是 100 Ohms。板子上我用了原理图里的 500 Ohms 电阻(Fab 库存里是 499 Ohms),它让 LED 远低于 30 mA 的上限。

      LED 电阻计算

    5. 至于开关,我用了一个 10K 电阻作为上拉电阻
    6. 和之前一样,我用 move、rotate、label、name 和 copy 命令把所有元件放到位

  8. 制作物料清单(BOM)
    1. 左键点击 design 链接 → 左键点击 Schematic

      在 Eagle 里创建 BOM

    2. 等程序显示元件 → 如果想要的元件没出现,就输入新的搜索词 → 左键点击 manual search → 选择想要的元件 → 左键点击 select

      在 Eagle 里为 BOM 选择元件

    3. 重复上面的过程,直到找到所有元件
    4. 左键点击 export,保存 BOM 文件

      在 Eagle 里导出 BOM

    编辑了一番之后,就是这样:

    数量 位置 Digikey 或 Mouser 料号 制造商料号 说明
    1 U1 ATTINY44 ATTINY44 集成电路 4KB 闪存
    2 R1 311-10.0KFRCT-ND RC1206FR-0710KL 贴片电阻 10K OHM 1% 1/4W 1206
    1 R2 311-499FRCT-ND RC1206FR-07499RL 贴片电阻 499 OHM 1% 1/4W 1206
    1 D3 160-1169-1-ND LTST-C150GKT 绿色透明贴片 LED 1206
    1 C1 445-1423-1-ND C3216X7R1H105K160AB 陶瓷电容 1UF 50V X7R 1206
    1 FTDI 6 针排针
    1 RESONATOR XC1109CT-ND ECS-CR2-20.00-B-TR 陶瓷谐振器 20.0000MHZ 15PF 贴片
    1 450-2058-1-ND FSM6JSMATR 轻触开关 SPST-NO 0.05A 24V
    1 ISP 649-95278-101A06LF 71600-006LF 排针 & 线束外壳 2X3P 无屏蔽排针 30 微英寸镀金

  9. 导出图片给 Fab Modules
    1. 进入 Options、Set、Misc,取消勾选 Display pad names、signal and via lengths。这样导出图片里就不会出现不需要的文字
    2. 在图层工具栏里,只选中顶层

      在 Eagle 里选择顶层

    3. 接着输入 “export” → 选择 image 和 monochrome → 在 resolution 里输入 500
    4. 保存到想要的位置

      在 Eagle 里导出图片

    5. 结果是一张黑白图片

  10. 在 Gimp 里编辑
    1. 拿着从 Eagle 导出的图片,在 Gimp 里打开
    2. 在 Gimp 里,我决定加一些文字。这很容易:选中文字工具,再选字号,然后旋转文字到理想的位置
    3. 我还用油漆桶工具去掉了不需要的黑色区域
    4. 要制作外框,我选中想保留的区域,用油漆桶工具填满
    5. 最后你应该得到两张图片,一张给 PCB,一张给外框

    准备给 Fab Modules 的 PCB 图片 准备给 Fab Modules 的 PCB 图片

    准备给 Fab Modules 的 PCB 外框 准备给 Fab Modules 的 PCB 外框


  11. Fab Modules 和铣削

    Fab Modules 和铣削的过程已经在 第 4 周 的作业里讲过了,所以这里我只放一张结果图

    铣好的 PCB 铣好的 PCB,用牙膏抛光,让它最好看


  12. 焊接/贴装 PCB 和调试

    结果

    和之前一样,贴装和调试已经在 第 4 周 的作业里讲过了,所以这里我只放一张结果图

    贴装好的 PCB 贴装好的 PCB,可以烧录固件了

  13. 烧录固件

    免责声明

    这个活动我其实是在嵌入式编程那周做的。放在这里只是为了满足 Fab Academy 的要求。

    那么,下面是我板子的测试。

    1. 找到示例代码:

      - 这是 代码,来自 Neil 教授

    2. 找到编译和烧录固件的命令

      - 先把所有文件下载到同一个目录,在 Linux 里我把文件改名为 makefile,然后运行脚本生成固件(每次想改代码我都会重复这一步):

      mv hello.ftdi.44.echo.c.make makefile
      make

      改名为 makefile 并编译 改名为 makefile 并编译

    3. 编译源代码

      - 在上一步已经完成

    4. 改动 makefile,让它配合我的编程器

      编辑 makefile 我得改 makefile,让它配合我的编程器。做法是把 usbtiny 这一项换成 USBasp,一共两处,一处烧固件,一处烧 fuses

    5. 烧录固件

      运行:

      make program-usbasp

      烧录固件 烧录固件

    6. 确定要烧哪些 fuses

      - 这在 makefile 里已经做好了

    7. 烧录 fuses

      运行:

      make program-usbasp-fuses

      烧录 fuses 烧录 fuses

编程器 FabISP 和 USBasp

这里展示我在 输出设备里是怎么用这些编程器的。想看不依赖 Arduino IDE 的另一种方法,请看 嵌入式编程

USBaspUSBasp

用我自己做的 FabTinyISP 或 USBtinyISP,通过 Arduino 给 ATtiny44 板子编程。

FabISPFabISP

用我自己做的 FabTinyISP 或 USBtinyISP 通过 Arduino 给 ATtiny44 板子编程,没问题。唯一不方便的是得给目标板供电。

先打开 Arduino IDE,然后在 Tools 里选择板子,我的是 ATtiny24/44/84。接着在 Processor 里我选了 ATtiny44。

用 Arduino 给 ATtiny44 编程

接着选择时钟。因为我没有用外部晶振,所以选了 “Internal 8MHz”。 (这些步骤来自输出设备的板子。这块板子有 20 MHz 谐振器,所以这里正确的选择是 “External 20 MHz”。)

在 Arduino 里选择时钟

接着进入 Programmer:“USBasp”,或者给 FabISP 用的 “USBtiny”。

在 Arduino 里选择编程器

下面的视频里我展示了用 FabISP 编程的过程。

想看完整分辨率的视频,请看 YouTube

这个视频里我展示了用 USBasp 编程的过程。

想看完整分辨率的视频,请看 YouTube


第一次测试

烧录 Neil 的代码 “hello.ftdi.44.echo.c”

这里我没有用终端和 avrdude,而是用了 Arduino IDE,因为它自带串口监视器。

结果如下面的视频所示


我很喜欢学这个新工具。以前我用 Eagle 看过 PCB,但从来没真正设计过一块。我觉得它为我打开了很多未来新东西的大门!

想看我是怎么给这块板子编程的,请看 嵌入式编程那一周。

← (3月4日) 3D扫描与打印 · 所有周 · 计算机控制加工 (3月18日) →