永久链接假设您是一个对新产品充满热情的硬件黑客,并且您不想通过调整焊接工作台或PnP Psychopunk机器来建立自己的工厂。可能您会遇到某个地方(亚洲:深圳/香港/越南/等,欧盟:爱沙尼亚/德国/瑞典/等,美洲:新泽西州/墨西哥城/等),以满足您的需要顺应区域供应链的趋势。无论供应链如何形成,您都可能会遇到一些问题。我们将分享在黑客之旅中遇到的一般问题。我们选择基于stm32的系统是因为它易于实现IO,USB和与stm32-vserprog(SPI闪存编程器)兼容的串行端口编程电路的接口。
我们使用Kicad作为设计工具,并采用了多个版本来实现当前版本。由于每个修订版都随本文档一起发布,希望它能以某种方式对您有所帮助。
英制单位制在PCB设计中被大量使用,例如:电阻和电容器的封装尺寸,布线宽度,布线间距等。主要常用的英制单位为:ft,inch和mil。注意转换:1ft = 12inch = 12000mil = 304.8mm
当布线厚度由PCB表示时,将使用oz / ft 2的单位。 ft是上述长度单位,ft 2是面积单位。盎司是质量单位盎司。英制常用的质量单位是:lb,oz,dr。转换:1lb = 16oz = 256dr = 453.59237g
提示:Kicad提供了用于计算的程序pcb_calculator:线性调节器参数,接线宽度,接线间隔等。
电阻和电容采用三位数或四位数的识别方法,电容的单位为pF,电阻的单位为Ω。
当标识都是数字时,最后一位标识10的幂。下面是一些示例:
SMD电阻器和SMD电容器具有标准化的封装。用4位数字标识包装(长度为2位,宽度为2位),并采用英制和公制标识方法。
对于SMD电阻器,其封装与功率有关,其对应关系如下:
为了通过USB接口连接电源,需要保护USB电源。
电流回流防止可以通过肖特基二极管来实现。肖特基二极管具有小正向压降的特性,适用于此应用场景。
应该考虑将肖特基二极管用于更高的优先级。 USB 2.0能够提供5V 500mA电源。我们需要一个反向电压大于5V且过电流大于500mA的肖特基二极管。在Kicad中,尝试1N5817(20V / 1A)。我们在当地的电子商店中发现了带有较小包装的1N5817WS。我们选择1N5817WS是因为它将使布局更加紧凑。下一步是确认电气参数是否合适。必须考虑传导的压降。我们在互联网上找到了数据表。该管的电流和电压曲线如下图所示。
很容易发现,该二极管在500mA时的压降小于0.4V,可以满足要求。
然后选择合适的保险丝。自恢复保险丝的选择相对简单。我们在当地商店中搜索了500mA自恢复保险丝,然后选择了紧凑的包装。 0805。
STM32需要3.3V电源。 USB提供5V电源。我们需要一个电源转换芯片。您可以在Kicad库中找到AMS1117-3.3(软件包SOT-223)。但是我们在当地商店找到了一个较小的包装SOT-89-3。为了使电路板更紧凑,较小的封装更好。
对于稳压器芯片的输入和输出,需要两个串联电容器来存储能量并滤除杂波。最后,电源电路如下:
Type-c接口方便进行连接。查找信息(USB Type-C配置通道(CC)引脚功能)。众所周知,对于c-to-c数据线,并不总是存在VBUS的电源,只有在主机端检测到CC引脚的下拉5.1K电阻时才输出电压。我们需要在CC1和CC2中分别将5.1K电阻接地。对于A至C数据线,VBUS始终存在,但是主机需要通过D + / D-上的上拉电阻检测设备插入,并确定该设备是全速设备还是低速设备。 STM32通电后将无法处理USB事务。它需要等待初始化完成,因此上拉电阻需要由GPIO控制。 STM32端的最终USB接口电路图如下:
注意:如果使用c型来检测电源能力,则需要5.1K电阻的精度,有关详细信息,请参见下图:
串行编程需要通过串行端口实现,并且需要USB到串行端口电路。 CH330N体积小,不需要外部晶体振荡器。最终的串口编程电路如下:
对于STM32,我们选择STM32F103C8T6,但需要一些辅助电路:复位电路,外部晶体振荡器和启动配置。
复位电路通常由RC电路实现,充电时间的计算可以在维基百科中找到。最终电路如下:
外部晶体振荡器使用无源振荡器。无源晶体振荡器需要与合适的电容器匹配才能工作。电容的选择与晶体振荡器的特性负载电容有关。关系如下:CL =(C1 * C2)/(C1 + C2)+ Cstray。
启动配置,STM32有两个引脚(BOOT0 / BOOT1)用于选择上电时从何处开始运行,启动方法如下:
通过将PCB面板化,在较大的板上制造多个较小的板是可行的。板之间的接缝经过特殊处理,以后更容易分开。可以在木板周围添加滑轨,以便在处理过程中进行固定。
该工作可以通过kikit完成,kikit是由python3实现的命令行工具,由以下命令安装:
kikit支持两种电路板之间的连接方法:vcut和戳孔。 vcut是指板连接处的凹槽,适用于方形和矩形板,但不适用于不规则板。压印孔(老鼠咬伤),在连接处打出一系列连续的通孔,形状类似于压印孔,因此称为压印孔,适用于形状不规则的木板。
在对PCB进行面板化之前,需要完成布局。 Kikit可以根据顺序排列多个板,在板之间增加空隙,并在镶板之后上下或左右添加导轨。使用的主要命令行参数如下:
➜〜kikit面板化网格--help用法:kikit面板化网格[OPTIONS] INPUT OUTPUT创建放置在框架中的常规面板。如果未指定面板尺寸,则不创建框架选项:-s,--space FLOAT面板之间的空间-g,--gridsize< INTEGER INTEGER> ...面板尺寸< rows> < cols> -p,--panelsize< FLOAT FLOAT> ...在面板中添加框架。参数将其大小指定为< width> < height> --railsTb浮动添加底部和顶部轨道。以毫米为单位指定其厚度--railsLr FLOAT添加左右轨道。以毫米为单位指定其厚度--tabwidth FLOAT底部/上部标签的大小,未设置为全宽度--tabheight FLOAT左侧/右侧标签的大小,未设置为全高--htabs INTEGER每块板的水平标签数--vtabs整数每块板的垂直选项卡的数量--vcuts使用V形切口将板分开--vcutcurves使用V形切口使用起点和终点来近似曲线--mousebites< FLOAT FLOAT FLOAT>使用鼠标咬伤以分开木板。指定钻头的尺寸,间距和相对于刀刃的偏移量(如果不确定,请使用0.25毫米)-半径FLOAT向内角添加半径--rotation FLOAT旋转输入板(以度为单位)--sourcearea< FLOAT FLOAT FLOAT FLOAT> ... xywh(以毫米为单位)。如果未指定,则自动检测到--tolerance FLOAT包括项目< tolerance>板轮廓之外的毫米数--renamenet TEXT重命名网的图案。您可以使用' {n}'代表板序号和' {orig}'原始网络名称--renameref TEXT引用的重命名模式。您可以使用' {n}'代表板序号和' {orig}'原始参考名称--tabsfrom< TEXT FLOAT> ...从给定图层中的行创建标签。您可能要指定--vtabs = 0和--htabs = 0。格式<图层名称> <制表符宽度> --framecutV通过框架插入垂直切口--framecutH通过框架插入水平切口--copperfill / --nocopperfill用铜填充面板的未填充区域--tooling< FLOAT FLOAT FLOAT> ...在角落处添加工具孔面板的。指定< horizontalOffset> < verticalOffset> <直径>。 -基准点< FLOAT FLOAT FLOAT FLOAT> ...在面板的角上添加基准点孔。指定< horizontalOffset> < verticalOffset> < copperDiameter> < openingDiameter>。 --help显示此消息并退出。
在焊接生产期间,需要组件位置信息。打开Kicad的pcb编辑器,单击[文件]-> [结构输出]-> [足迹位置(.pos)文件...],然后按照提示输出组件位置。位置信息包括:坐标,图层,旋转角度。
PCB是印刷电路板。生产模式可以生产我们在Kicad中绘制的PCB。拿到板子后,我们需要自己焊接元件。 PCBA(印刷电路板+组件)是SMT和DIP焊接后的成品PCB。
材料成本:板材,板材厚度,铜厚度(Kicad中有一个计算器,可以通过布线宽度和铜厚度来计算电路的能力)
工艺成本:布线宽度,布线间距,表面处理工艺(OSP抗氧化,铅喷锡,无铅锡喷,镀金,沉金,沉锡,沉银等),开孔,盲孔,掩埋孔
成本与上述相似,但焊接成本与规模有关:贴片焊点约为0.01元(〜0.0015美元),插入式焊点约为0.05元(〜0.0076美元);小批量生产将收取0-800元人民币的处理费(0-〜123 USD)
深圳的两层PCB生产已经成熟。通过诸如淘宝网之类的相对昂贵的商业渠道,十块板的价格约为30元人民币。我们没有为第一个原型制作电源保护电路,但为第二个原型制作了电源保护电路。
在第二个原型中添加了电源保护电路。我们通过淘宝咨询了一些提供商。如果您提供所有材料(包括PCB和组件),则10块板的PCB组装大约为300-800元人民币。如果您需要另一方准备材料,则需要多付200-400元人民币。
为了加深对市场的了解。我们做了一些研究,首先是制造PCB,然后在电子市场中进行手工焊接服务。自订单以来的四天内,由于成熟的供应链生态系统,我们收到了PCB。每块PCB板的成本约为50元。如果您只打算小批量生产,则应选择成本较低的手动焊接服务。但是这次我们由于三块木板有严重问题而搞砸了。 CH340N的焊接方式非常错误。然后,我们尝试从头开始焊接CH340N。不幸的是,只能检测到其中一个,但这是USB D引脚连接的另一个问题。当MCU开始运行后,弹出提示USB已经插入,但通讯失败的信息。
最终机器焊接5件,每件成本:155.5最后,手动焊接3件,每件成本:85.5
对于小批量生产,手工焊接的成本较低。必须找到熟练的焊接工人,否则故障率可能会高于预期。
在某些情况下,SMT生产需要面板化。 SMT机器在小规模PCB生产上可能效率低下,并且可能对固定装置构成挑战。在开始生产之前,请与SMT工厂联系以了解详细信息。
为了便于手动焊接,取而代之的是使用更大封装(0603)的电阻电容器。这次,通过在线平台(jdbpcb.com)下订单,该平台提供原型制作和SMT焊接服务。该平台需要通过QQ与客服沟通,服务比淘宝更专业。两块板生产失败。
10块板的最终成本是,原型制作为164元,SMT焊接为330元,元器件为220元。最终每件的成本:71.4元
这次使用平台时,一件事情很不愉快:我们同时下了PCBA和SMT的订单,但结帐需要在两个地方分别支付。它使我们误以为该平台是一种低成本的选择。
线宽和线间距小于或等于500万,并收取工程费
板的厚度小于或等于0.4或大于或等于2.0将收取工程费
第二生产的手工焊接合格率太低,并且由于第三生产的通孔太小而增加了成本。串行端口编程电路的利用率很低,并且没有单独的SWD编程调试接口,因此连接非常麻烦。我们更换了电路板:拆下串行端口电路,更改通孔的大小,引出更多的IO,切换到单排引脚并添加标签,切换到方便手工焊接的焊盘封装。并订购钢丝网,可以尝试使用手动SWD。
手动SMD需要很高的技能。刷完焊膏后应尽快放置组件。放置组件时,请勿握手,否则焊膏会被弄脏和短路。
当将flashrom用作Flash读取器时,根据PCB设计找出引脚是很烦人的。我们添加了一个8引脚接头连接器,以方便与SOP8夹子的连接。由于常规spi闪存的引脚具有两种常见的布局(23/25/26和45系列),因此添加了两个8引脚接头连接器。
从一个供应商处多次购买组件,价格会太高,您可以尝试咨询其他供应商。这次,单芯片微控制器的价格已从15元人民币增加到20元人民币,比上次贵33.3%。
在第五次生产后发现电路错误。 WP引脚电平控制电路未添加限流电阻,这可能会导致短路。该电流修订版增加了限流电阻。由于板载闪存的复杂性,当前版本仍然面临以下问题:
如果目标板的电源低并且工作在3.3V,则夹住闪光灯夹时主芯片可能会工作。 SPI总线上有两个主机,并且发生奇怪的问题
当目标板功率较高时,由于闪存读取器由USB供电,读取器的电压将被拉低,并且将无法正常工作
目标WP引脚具有一个下拉电阻,然后将其除以我们的限流电阻,这可能导致器件无法写入
可以直接通过闪光灯夹操作的板应具有以下特征:
如果WP引脚具有下拉电阻,则该电阻的电阻值应更大。有关详细信息,请参见闪存数据表。
随着春节的临近,劳动力增加,卖家不再给予折扣,因此SMD的成本已经上涨了很多。前一位卖家再次提高了价格,因此我们选择在淘宝上购买。但是这次卖家在淘宝上需要的数量。
多方查询!在没有数量的情况下,您询问的价格会更高。查询过程中的沟通技巧很重要
如果没有批量生产,请勿依赖单个供应商(价格可能会上涨) 与单独购买组件相比,配送服务需要支付更多的费用 选择合适的工艺(布线宽度,布线间距,板层数,表面工艺,通孔,盲孔,埋孔),最好在设计之前与制造商联系。 对于小批量生产,您可以选择自己焊接或找熟练的工人进行加工,但是必须注意选择工艺可靠的人员,否则合格率会很糟糕。