====== 使用KiCad创建原理图符号 ====== KiCad自带的元器件库中的元器件型号是有限的,只是一些基本的通用器件或最新热门的器件,在每个用户的设计中肯定会遇到很多KiCad库中没有的器件,这就需要自己来解决,解决的方式有两种: * 先搜索一些专门提供专业元器件库的网站,比如UltraLibrarian、SnapEDA等,这些网站由专业的工程师团队同主流的元器件厂商(比如TI、ADI、美信、TE等)联合构建这些原厂最新推出的热门器件的元器件库文件 - 原理图符号、PCB封装以及3D模型,并放到网站上供大家免费查询下载。这些库文件都是经过这些运营网站或原厂的验证,可以放心使用。当然用户下载了这些库文件以后对原理图的符号仍可以做一些修改,比如调整其外框的大小、引脚的位置、排列等。 * 自己阅读数据手册进行创建,利用KiCad提供的工具生成自己的库文件。由于KiCad的原理图符号库和PCB封装库是分开管理、设置的,因此在设计的时候可以先构建原理图符号库即可,如果能够在已有的封装库中找到对应的封装,就可以关联上,如果没有,可以在做PCB布局布线的时候再做封装库,然后关联上。 在这里,我们将了解如何使用KiCad快速创建新的原理图符号。 在KiCad中,原理图的符号是一段以//DEF//开头并以//ENDDEF//结尾的文本。 一个或多个符号通常放在扩展名为//.lib//的库文件中。 如果要将符号添加到库文件,只需使用文本编辑器的剪切和粘贴命令即可。 ===== 1. 使用元器件库编辑器 ===== 1. **配置自建库文件及目录**:KiCad的//Component Library Editor//(元器件库编辑器)是//Eeschema//的一部分,我们可以用它来创建新的器件的原理图符号。通常,我们需要将自己创建的库文件进行单独管理,最好是创建一个专门的库文件夹,并做清晰的标记,这个文件夹可以是全局的,针对所有的项目,也可以是针对某个具体项目的。我们以后者为例,具体的做法是在项目文件夹//tutorial1//中,先创建一个名为//library//的文件夹。在我们创建新器件后,我们将在这个文件夹内放置新的库文件//myLib.lib//。 2. **创建新器件并添加基本信息**:从KiCad启动//Eeschema//,单击//Library Editor(库编辑)//图标{{:libedit.png|}},然后单击//New component//(新器件)图标 {{:new_component.png|}}。将出现一个“元器件属性”窗口。将新器件命名为//MYCONN3//,将//Default reference designator//(默认参考标识符)设置为J,将//Number of units per package//(每个封装的单元数)设置为1,单击“确定”。如果出现警告,单击“yes”就是。到这个时候,器件还仅由其标签构成。 3. **添加引脚**:单击右侧工具栏上的//Add Pins//(添加引脚)图标{{:pin.png|}},在//MYCONN3//标签正下方的元件编辑器页面中间单击鼠标左键将其放置。 * 在出现的//Pin Properties//(引脚属性)窗口中,将引脚名称设置为//VCC//,将引脚编号设置为//1//,将//Electrical Type//(电气类型)设置为//Power Input//(电源输入),然后单击OK。点击//MYCONN3//标签下方要放置引脚的位置,刚才定义好的第一个引脚就放置好了。 {{ :pin_properties.png |}} * 放置第二个引脚 - 重复以上过程,引脚名称定义为//INPUT//,//引脚编号//定义为2,//电气类型//为//无源//。 * 放置第三个引脚 - 重复以上过程,引脚名称定义为//GND//,//引脚编号//定义为3,//电气类型//为//无源//。 将这些引脚一个挨一个排列。 器件标签//MYCONN3//应位于页面的中心(蓝线交叉的位置)。 4. **绘制器件的轮廓**:单击//Add rectangle//(添加矩形)图标{{:add_rectangle.png|}}。 在引脚旁边绘制一个矩形,如下图所示。先单击矩形左上角的位置(不要按住鼠标按钮),再单击矩形右下角的位置。 {{ :gsik_myconn3_l.png |}} 5. **轮廓内填色**:有的工程师喜欢用颜色填充矩形,比如黄色,你可以在//Preferences - Select color scheme//(首选项→选择颜色方案)中将填充颜色设置为//Yellow 4//(黄色4),再用[e]在编辑的屏幕中选择矩形,选择//Fill background//(填充背景)。 6. **保存新器件信息**:将器件保存在你创建的库//myLib.lib//中。 单击//New Library//(新建库)图标{{:new_library.png|}},找到//tutorial1/library///目录,将你新建的库以//myLib.lib//为名字保存。 7. **设置元器件访问路径**:转到//Preference → Component Libraries//(首选项→器件库),将用户定义的搜索路径中的//tutorial1/library//和//myLib.lib//添加在//Component library files//(器件库文件)中。单击//Select working library//(选择工作库)图标{{:library.png|}}。 在“选择库”窗口中,单击//myLib//,然后单击“确定”。 注意窗口的标题如何表示当前正在使用的库,现在应该是//myLib//。 8. **刷新当前库内容**:单击顶部工具栏中的//Update current component in current library//(更新当前元件到当前库)图标{{:save_part_in_mem.png|}}。 单击顶部工具栏中的//Save current loaded library on disk//(将当前加载的库存盘)图标{{:save_library.png|}},保存所有修改。 在出现的任何确认信息中都单击“是”。 新的原理图器件符号现已构建完成,已经可以在窗口标题栏中指示的库中可用。关闭器件库编辑器,返回到原理图编辑器窗口,新建的器件现在可以从库//myLib//中使用了。 9. 任何库//file.lib//文件都可以通过添加到指定的库路径上来用。 步骤就是从//Eeschema//,转到//Preference → Library//(首选项→库),将路径添加到//User defined search path//(用户定义的搜索路径)和,将//file.lib//添加到//Component library files//(器件库文件)中。 ===== 2. 库器件的导出、导入和修改 ===== 很多时候不需要从头开始创建元器件符号,可以基于现有的元器件符号(功能、引脚数比较接近,或者别人做好的器件符号需要进行调整)进行修改。在这里我们看一下如何将KiCad标准库//Device//(器件)的符号导出到自己的库//myOwnLib.lib//中进行修改使用。 1. **选中要参考的器件**:从KiCad启动Eeschema,单击//Library Editor//(库编辑)图标{{:libedit.png|}},单击//Select working library//(选择工作库)图标{{:library.png|}}并选择//Device//库(这是一个KiCad自带的通用器件的库)。单击//Load component to edit//(加载并编辑器件)以从//Current lib//(当前库)图标{{:import_cmp_from_lib.png|}}进行编辑,然后导入RELAY_2RT。 2. **导出该器件信息到自己的库**:单击//Export Component//(导出器件)图标{{:export.png|}},选定//library//(库)文件夹,保存到名为//myOwnLib.lib//的新库文件。 3. **配置自己的库路径**:将此器件和整个库//myOwnLib.lib//添加到库路径中就可以用了。从//Eeschema//,转到//Preference → Component Libraries//(首选项→器件库),在//用户定义搜索路径//添加上//库//并将//myOwnLib.lib//添加在//Component library files//(元器件库文件)。关闭窗口。 4. **激活自己的库**:单击//Select working library//(选择工作库)图标{{:library.png|}}。在//Select Library//窗口中单击//myOwnLib//并单击OK。注意表示当前正在使用的库名字的窗口的标题已经变为//myOwnLib//。 5. **根据自己的需要对导出的器件进行修改**:单击//Load component to edit//(从当前库加载元器件进行编辑)图标{{:import_cmp_from_lib.png|}}导入//RELAY_2RT//进行编辑。现在可以根据需要修改器件,将鼠标悬停在标签//RELAY_2RT//上,按[e]并将其重命名为//MY_RELAY_2RT//。 6. **保存修改**:单击顶部工具栏中的//Update current component in current library//(更新当前器件到当前库)图标{{:save_part_in_mem.png|}},单击顶部工具栏中的//Save current loaded library on disk//(将当前加载的库存盘)图标{{:save_library.png|}},保存所有更改。 ===== 3. 用外部工具quicklib创建原理图符号 ===== 除了KiCad自身的功能,还有一些第三方的工具可以用来编辑、构建新器件的符号库,比如网页版的//quicklib//,在这里我们演示遗下如何创建//MYCONN3//这个器件的符号库(功能和要求参见上面的MYCONN3)。 {{ :quicklib.png?1000 |}} 1. 前往//quicklib//网页:http://kicad.rohrbacher.net/quicklib.php 2. 填写页面需要的以下信息:器件名:MYCONN3,参考前缀:J, 引脚布局样式:SIL,引脚数,N:3 3. 单击//Assign Pins//(分配引脚)图标。填写页面需要的以下信息:Pin 1:VCC,Pin 2:input,Pin 3:GND,Type(类型):所有3个引脚都选为Passive(被动)。 4. 单击//Preview it//(预览)图标查看一下,如果满意就点击//Build Library Component//(构建库元件)。下载文件并将其重命名为//tutorial1/library/myQuickLib.lib// ..搞定! 5. 用KiCad看一下。从KiCad项目管理页面启动//Eeschema//,单击//Library Editor//(库编辑)图标{{:libedit.png|}},单击//Import Component//(导入元件)图标{{:import.png|}},导航到tutorial1/library/并选择myQuickLib.lib。 {{ :gsik_myconn3_quicklib.png |}} 6. 可以将此器件和整个库//myQuickLib.lib//添加到KiCad的库路径中。从//Eeschema//,转到**Preference → component Libraries**(首选项→器件库),在//User defined search path//(用户定义的搜索路径)中添加library(库),在//Component library files//(元器件库文件)中添加//myQuickLib.lib//。 是不是感觉到这种方式对于创建很多引脚数的器件会效率很高? ===== 4. 创建很多引脚数器件的原理图符号 ===== 在quicklib的标题为Make Schematic Components的部分中,我们了解了如何使用基于web的quicklib工具制作原理图元件。但是,您偶尔会发现需要创建一个具有大量引脚(几百个引脚)的原理图元件。在KiCad中,这不是一项非常复杂的任务。 1. 假设您要为具有50个引脚的器件创建原理图元件。通常的做法是使用多个低引脚数的图纸绘制它,例如两个图纸,每个图钉有25个引脚。该组件表示允许简单的引脚连接。 2. 创建组件的最佳方法是使用quicklib分别生成两个25引脚组件,使用Python脚本重新编号它们的引脚,最后通过使用复制和粘贴将它们合并为一个单独的DEF和ENDDEF组件。 3. 你将在下面找到一个简单的Python脚本示例,它可以与in.txt文件和out.txt文件一起使用,以重新编号该行:X PIN1 1 -750 600 300 R 50 50 1 1 I into X PIN26 26 -750 600 300 R 50 50 1 1 I这是针对文件in.txt中的所有行完成的。 简单的脚本 #!/usr/bin/env python ''' simple script to manipulate KiCad component pins numbering''' import sys, re try: fin=open(sys.argv[1],'r') fout=open(sys.argv[2],'w') except: print "oh, wrong use of this app, try:", sys.argv[0], "in.txt out.txt" sys.exit() for ln in fin.readlines(): obj=re.search("(X PIN)(\d*)(\s)(\d*)(\s.*)",ln) if obj: num = int(obj.group(2))+25 ln=obj.group(1) + str(num) + obj.group(3) + str(num) + obj.group(5) +'\n' fout.write(ln) fin.close(); fout.close() # # for more info about regular expression syntax and KiCad component generation: # http://gskinner.com/RegExr/ # http://kicad.rohrbacher.net/quicklib.php 注:在将两个组件合并为一个组件时,有必要使用Eeschema的库编辑器移动第一个组件,以便第二个组件不会在它上面移动。 您将在下面找到最终的.lib文件及其在Eeschema中的表示。 * .lib文件的内容 EESchema-LIBRARY Version 2.3 #encoding utf-8 # COMP DEF COMP U 0 40 Y Y 1 F N F0 "U" -1800 -100 50 H V C CNN F1 "COMP" -1800 100 50 H V C CNN DRAW S -2250 -800 -1350 800 0 0 0 N S -450 -800 450 800 0 0 0 N X PIN1 1 -2550 600 300 R 50 50 1 1 I ... X PIN49 49 750 -500 300 L 50 50 1 1 I ENDDRAW ENDDEF #End Library {{ :gsik_high_number_pins.png |}} 注:这里介绍的Python脚本是一种非常强大的用于处理引脚号码和引脚标签的工具,它的所有功能都来自于神秘但却非常有用的正则表达式语法:http//gskinner.com/RegExr/。