TCS3200颜色传感器设计原理图PCB及例程手册

TCS3200颜色传感器设计原理图PCB及例程手册
TCS3200颜色传感器设计原理图PCB及例程手册

颜色传感器

【简要说明】

一、尺寸:长34mmX宽26mmX高10mm

二、主要芯片:TCS230

三、工作电压:直流5V

四、输出频率电压0~5V

五、特点:

1、所有的引脚全部引出

2、输出占空比50%

3、采用高亮白色LED灯反射光

4、可直接和单片机连接

5、静态检测被测物颜色

6、检测距离10mm最佳

【通电展示】

【工作电压和电流】(直流5V0.04A)

【输出波形】

【板子背面】

【详细说明】

随着现代工业生产向高速化、自动化方向的发展,生产过程中长期以来由人眼起主导作用的颜色识别工作将越来越多地被相应的颜色传感器所替代。例如:图书馆使用颜色区分对文献进行分类,能够极大地提高排架管理和统计等工作;在包装行业,产生包装利用不同的颜色和装潢来表示其不同的性质或用途。目前的颜色传感器通常是在独立的光电二极管上覆盖经过修正的红、绿、蓝滤波片,然后对输出信号进行相应的处理,才能将颜色信号识别出来;有的将两者集合起来,但是输出模拟信号,需要一个A/D电路进行采集,对该信号进一步处理,才能进行识别,增加了电路的复杂性,并且存在较大的识别误差,影响了识别的效果。TAOS(Texas Advanced Optoelectronic Solutions)公司最新推出的颜色传感器TCS230,不仅能够实现颜色的识别与检测,与以前的颜色传感器相比,还具有许多优良的新特性。

1 .TCS230芯片的结构框图与特点:

TCS230是TAOS公司推出的可编程彩色光到频率的转换器,它把可配置的硅光电二极管与电流频率转换器集成在一个单一的CMOS电路上,同时在单一芯片上集成了红绿蓝(RGB)三种滤光器,是业界第一个有数字兼容接口的RGB彩色传感器,TCS230的输出信号是数字量,可以驱动标准的TTL或CMOS 逻辑输入,因此可直接与微处理器或其他逻辑电路相连接,由于输出的是数字量,并且能够实现每个彩色信道10位以上的转换精度,因而不再需要A/D转换电路,使电路变得更简单,图1是TCS230的引脚和功能框图。

图1中,TCS230采用8引脚的SOIC表面贴装式封装,在单一芯片上集成有64个光电二极管,这些二极管分为四种类型,其16个光电二极管带有红色滤波器;16个光电二极管带有绿色滤波器;16个光电二极管带有蓝色滤波器,其余16个不带有任何滤波器,可以透过全部的光信息,这些光电二极管在芯片内是交叉排列的,能够最大限度地减少入射光辐射的不均匀性,从而增加颜色识别的精确度;另一方面,相同颜色的16个光电二极管是并联连接的,均匀分布在二极管阵列中,可以消除颜色的位置误差。工作时,通过两个可编程的引脚来动态选择所需要的滤波器,该传感器的典型输出频率范围从2Hz-500kHz,用户还可以通过两个可编程引脚来选择100%、20%或2%的输出比例因子,或电源关断模式。输出比例因子使传感器的输出能够适应不同的测量范围,提高了它的适应能力。例如,当使用低速的频率计数器时,就可以选择小的定标值,使TCS230的输出频率和计数器相匹配。

从图1可知:当入射光投射到TCS230上时,通过光电二极管控制引脚

S2、S3的不同组合,可以选择不同的滤波器;经过电流到频率转换器后输出不同频率的方波(占空比是50%),不同的颜色和光强对应不同频率的方波;还可以通过输出定标控制引脚S0、S1,选择不同的输出比例因子,对输出频率范围进行调整,以适应不同的需求。

下面简要介绍TCS230芯片各个引脚的功能及它的一些组合选项。

S0、S1用于选择输出比例因子或电源关断模式;S2、S3用于选择滤波器的类型;OE反是频率输出使能引脚,可以控制输出的状态,当有多个芯片引脚共用微处理器的输出引脚时,也可以作为片选信号,OUT是频率输出引脚,GND是芯片的接地引脚,VCC为芯片提供工作电压,表1是S0、S1及S2、S3的可用组合。

2 .TCS230识别颜色的原理

由上面的介绍可知,这种可编程的彩色光到频率转换器适合于色度计测量应用领域,如彩色打印、医疗诊断、计算机彩色监视器校准以及油漆、纺织品、化妆品和印刷材料的过程控制和色彩配合。下面以TCS230在液体颜色识别中的应用为例,介绍它的具体使用。首先了解一些光与颜色的知识。

(1)三原色的感应原理

通常所看到的物体颜色,实际上是物体表面吸收了照射到它上面的白光(日光)中的一部分有色成分,而反射出的另一部分有色光在人眼中的反应。白色是由各种频率的可见光混合在一起构成的,也就是说白光中包含着各种颜色的色光(如红R、黄Y、绿G、青V、蓝B、紫P)。根据德国物理学家赫姆霍兹(Helinholtz)的三原色理论可知,各种颜色是由不同比例的三原色(红、绿、蓝)混合而成的。

(2)TCS230识别颜色的原理

由三原色感应原理可知,如果知道构成各种颜色的三原色的值,就能够知道所测试物体的颜色。对于TCS230来说,当选定一个颜色滤波器时,它只允许某种特定的原色通过,阻止其他原色的通过。例如:当选择红色滤波器时,入射光中只有红色可以通过,蓝色和绿色都被阻止,这样就可以得到红色光的光强;同时,选择其他的滤波器,就可以得到蓝色光和绿色光的光强。通过这三个值,就可以分析投射到TCS230传感器上的光的颜色。

(3)白平衡和颜色识别原理

白平衡就是告诉系统什么是白色。从理论上讲,白色是由等量的红色、绿色和蓝色混合而成的;但实际上,白色中的三原色并不完全相等,并且对于TCS230的光传感器来说,它对这三种基本色的敏感性是不相同的,导致TCS230的RGB输出并不相等,因此在测试前必须进行白平衡调整,使得TCS230对所检测的"白色"中的三原色是相等的。进行白平衡调整是为后续的颜色识别作准备。在本装置中,白平衡调整的具体步骤和方法如下:将空的试管放置在传感器的上方,试管的上方放置一个白色的光源,使入射光能够穿过试管照射到TCS230上;根据前面所介绍的方法,依次选通红色、绿色和蓝色滤波器,分别测得红色、绿色和蓝色的值,然后就可计算出需要的3个调整参数。

当TCS230识别颜色时,就用这3个参数对所测颜色的R、G和B进行调整。这里有两种方法来计算调整参数:1、依次选通三颜色的滤波器,然后对TCS230的输出脉冲依次进行计数。当计数到255时停止计数,分别计算每个通道所用的时间,这些时间对应于实际测试时TCS230每种滤波器所采用的时间基准,在这段时间内所测得的脉冲数就是所对应的R、G和B的值。2、设置定时器为一固定时间(例如10ms),然后选通三种颜色的滤波器,计算这段时间内TCS230的输出脉冲数,计算出一个比例因子,通过这个比例因子可以把这些脉冲数变为255。在实际测试时,室外同样的时间进行计数,把测得的脉冲数再乘以求得的比例因子,然后就可以得到所对应的R、G和B的值。

3 应用中需要注意的问题

1、颜色识别时要避免外界光线的干扰,否则会影响颜色识别的结果,最好把传感器、光源等放置在一个密闭、无反射的箱子中进行测试。

2、对光源没有特殊的要求,但是光源发出的光要尽量集中,否则会造成传感器之间的相互干扰。

3、当第1次使用TCS230时,或TCS230识别模块重启、更换光源等情况时,都需要进行白平衡调整。

【参考例程】

[C语言源程序]

/********************************************************************

汇诚科技

实现功能:对颜色传感器输出的频率进行测量

使用芯片:AT89S52 或者STC89C52

晶振:11.0592MHZ

编译环境:Keil

作者:zhangxinchun

淘宝店:汇诚科技

【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!

*********************************************************************/

#include

#define uchar unsigned char

#define uint unsigned int

uchar duan[10]={0xc0,0Xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //所需的段的位码uchar wei[5]={0Xf7,0XEf,0XDf,0XBf,0X7f}; //位的控制端uint z,x,c,v,b,n,date; //定义数据类型

uint dispcount=0; //中断计数

uint lck=0; //定时器计数

uint disp=0; //频率值

/******************************************************************

******************************************************************/ void delay(uchar t)

{

uchar i,j;

for(i=0;i

{

for(j=13;j>0;j--);

{ ;

}

}

}

/********************************************************************** 数码管动态扫描

*********************************************************************/ void xianshi()

{

/*****************数据转换*****************************/

z=date/10000; //求万位

x=date%10000/1000; //求千位

c=date%1000/100; //求百位

v=date%100/10; //求十位

b=date%10; //求个位

P2=wei[0];

P0=duan[z];

delay(50);

P2=wei[1];

P0=duan[x];

delay(50);

P2=wei[2];

P0=duan[c];

delay(50);

P2=wei[3];

P0=duan[v];

delay(50);

P2=wei[4];

P0=duan[b];

delay(50);

/*************************************************************************

定时器初值1ms

**************************************************************************/ void initTimer(void)

{

TMOD=0x0;

TH0=0xe3;

TL0=0xc;

}

/*************************************************************************

定时器函数

**************************************************************************/ void timer0(void) interrupt 1

{

TH0=0xe3;

TL0=0xc;

lck++;

if(lck==1000)

{

disp=dispcount;

lck=0;

dispcount=0;

}

}

/*************************************************************************

中断函数

**************************************************************************/ void int0(void) interrupt 0

{

dispcount++; //每一次中断,计数加一

}

/*************************************************************************

主函数

**************************************************************************/ void main(void)

{

IT0=1; //INT0下降沿中断

EX0=1; //允许INT1中断

initTimer(); //装入初值

TR0=1;

ET0=1;

EA=1;

while(1)

{

date=disp;

xianshi();

}

}

/*************************************************************************

结束

**************************************************************************/ /*实现功能:对颜色传感器输出RGB

#include

#define uchar unsigned char

#define uint unsigned int

//==============LCD1602接口连接方法=====================

/*-----------------------------------------------------

|DB0-----P0.0 | DB4-----P0.4 | RW-------P2.3 |

|DB1-----P0.1 | DB5-----P0.5 | RS-------P2.4 |

|DB2-----P0.2 | DB6-----P0.6 | E--------P2.2 |

|DB3-----P0.3 | DB7-----P0.7 |

---------------------------------------------------*/

//================================================*/

#define LCM_Data P0 //LCD1602数据接口

#define Busy 0x80 //用于检测LCM状态字中的Busy标识

sbit LCM_RW = P2^3; //读写控制输入端,LCD1602的第五脚

sbit LCM_RS = P2^4; //寄存器选择输入端,LCD1602的第四脚

sbit LCM_E = P2^2; //使能信号输入端,LCD1602的第6脚

//=================颜色传感模块连接=====================

/*-----------------------------------------------------

|EO-----GND

|S0-----VCC | S2-----P2.0 | OUT-------P3.5

|S1-----VCC | S3-----P2.1 |

---------------------------------------------------*/

sbit tcs230_s2=P2^0;//TCS230 S2接单片机P2.0

sbit tcs230_s3=P2^1;//TCS230 S3接单片机P2.1

sbit tcs230_en=P3^0; //TCS230 EN(E0)接GND

//**************函数声明***************************************

void WriteDataLCM (uchar WDLCM);//LCD模块写数据

void WriteCommandLCM (uchar WCLCM,BuysC); //LCD模块写指令

uchar ReadStatusLCM(void);//读LCD模块的忙标

void DisplayOneChar(uchar X,uchar Y,uchar ASCII);//在第X+1行的第Y+1位置显示一个字符

void LCMInit(void);//LCD初始

void DelayMs(uint Ms);//1MS基准延时程序

void baipingheng();//白平衡子程序

void celiang();//实际颜色程序

uint ryz,gyz,byz;//分别定义红色因子绿色因子蓝色因子

uint rb,gb,bb;//RGB值

uchar tab1[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

//***********************主程序******************************

main()

{

TMOD=0x51;//设定T0以工作方式1定时10毫秒

LCMInit();//LCD初始

baipingheng();//上电时先白平衡一次

while(1)

{

celiang();//颜色测试

DisplayOneChar(0, 0,'R');//以十进制显示RGB中红色的分值

DisplayOneChar(0, 1, rb/100+0x30); //显示百位数据

DisplayOneChar(0, 2, rb/10%10+0x30);//显示十位数据

DisplayOneChar(0, 3, rb%10+0x30);//显示个位数据

DisplayOneChar(0, 5,'G');//以十进制显示RGB中绿色的分值

DisplayOneChar(0, 6, gb/100+0x30); //显示百位数据

DisplayOneChar(0, 7, gb/10%10+0x30);

DisplayOneChar(0, 8, gb%10+0x30);

DisplayOneChar(0, 10,'B');//以十进制显示RGB中蓝色的分值

DisplayOneChar(0, 11, bb/100+0x30);

DisplayOneChar(0, 12, bb/10%10+0x30);

DisplayOneChar(0, 13, bb%10+0x30);

//*****在LCD1602的第二行以16进制显示RGB*******************

DisplayOneChar(1, 1, tab1[rb/16]);

DisplayOneChar(1, 2, tab1[rb%16]);

DisplayOneChar(1, 3, 'H');

DisplayOneChar(1, 6, tab1[gb/16]);

DisplayOneChar(1, 7, tab1[rb%16]);

DisplayOneChar(1, 8, 'H');

DisplayOneChar(1, 11,tab1[bb/16]);

DisplayOneChar(1, 12,tab1[bb%16]);

DisplayOneChar(1, 13,'H');

DelayMs(250);//每隔0.25秒测试一次颜色

}

}

//******************************************************

//白平衡子程序

void celiang()

{

//*********求R值************************************

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

TH1=0;

TL1=0;

tcs230_s2=0;

tcs230_s3=0;//选择红色滤光器

tcs230_en=0;

TR0=1;//10毫秒开始计时

TR1=1;//开始计数

while(TF0==0);//等待定时器溢出

TF0=0;//清楚定时器0溢出标志

TR0=0;//关闭定时0

TR1=0;

rb=(unsigned long)(TH1*256+TL1)*255/ryz;

if(rb>255)rb=255;//判断RGB值是否合法

//***********求B值************************************** TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

TH1=0;

TL1=0;

tcs230_s2=0;

tcs230_s3=1;//选择蓝色滤光器

TR0=1;//10毫秒开始计时

TR1=1;//开始计数

while(TF0==0);//等待定时器溢出

TF0=0;//清楚定时器0溢出标志

TR0=0;//关闭定时0

TR1=0;

bb=(unsigned long)(TH1*256+TL1)*255/byz;

if(bb>255)bb=255;//判断RGB值是否合法

//***********求G值************************************** TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

TH1=0;

tcs230_s2=1;

tcs230_s3=1;//选择绿色滤光器

TR0=1;//10毫秒开始计时

TR1=1;//开始计数

while(TF0==0);//等待定时器溢出

TF0=0;//清楚定时器0溢出标志

TR0=0;//关闭定时0

TR1=0;

tcs230_en=1;

gb=(unsigned long)(TH1*256+TL1)*255/gyz;

if(gb>255)gb=255;//判断RGB值是否合法

}

//******************************************************

//白平衡子程序

void baipingheng()

{

//**************求取红色因子***********************

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

TH1=0;

TL1=0;

tcs230_s2=0;

tcs230_s3=0;//选择红色滤光器

tcs230_en=0;

TR0=1;//10毫秒开始计时

TR1=1;//开始计数

while(TF0==0);//等待定时器溢出

TF0=0;//清楚定时器0溢出标志

TR0=0;//关闭定时0

TR1=0;

ryz=TH1*256+TL1;//其实这里的比例因子应该为255/(TH1*256+TL1) //**************求取蓝色因子***********************

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

TH1=0;

TL1=0;

tcs230_s2=0;

tcs230_s3=1;//选择蓝色滤光器

TR0=1;//10毫秒开始计时

TR1=1;//开始计数

while(TF0==0);//等待定时器溢出

TF0=0;//清楚定时器0溢出标志

TR0=0;//关闭定时0

byz=TH1*256+TL1;//其实这里的比例因子应该为255/(TH1*256+TL1)

//**************求绿红色因子***********************

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

TH1=0;

TL1=0;

tcs230_s2=1;

tcs230_s3=1;//选择绿色滤光器

TR0=1;//10毫秒开始计时

TR1=1;//开始计数

while(TF0==0);//等待定时器溢出

TF0=0;//清楚定时器0溢出标志

TR0=0;//关闭定时0

TR1=0;

tcs230_en=1;

gyz=TH1*256+TL1;//其实这里的比例因子应该为255/(TH1*256+TL1)

}

/*==================================================================== ==

LCM初始化

====================================================================== */

void LCMInit(void)

{

LCM_Data = 0;

WriteCommandLCM(0x38,0); //三次显示模式设置,不检测忙信号

DelayMs(5);

WriteCommandLCM(0x38,0);

DelayMs(5);

WriteCommandLCM(0x38,0);

DelayMs(5);

WriteCommandLCM(0x38,1); //显示模式设置,开始要求每次检测忙信号WriteCommandLCM(0x08,1); //关闭显示

WriteCommandLCM(0x01,1); //显示清屏

WriteCommandLCM(0x06,1); // 显示光标移动设置

WriteCommandLCM(0x0C,1); // 显示开及光标设置

DelayMs(100);

}

//==============================LCD1602显示子程序================================================

// 写数据函数: E =高脉冲RS=1 RW=0

//===================================================================== =*/

void WriteDataLCM(uchar WDLCM)

{

ReadStatusLCM(); //检测忙

LCM_Data = WDLCM;

LCM_RS = 1;

LCM_RW = 0;

LCM_E = 0; //若晶振速度太高可以在这后加小的延时

LCM_E = 0; //延时

LCM_E = 1;

}

/*==================================================================== 写指令函数: E=高脉冲RS=0 RW=0

====================================================================== */

void WriteCommandLCM(uchar WCLCM,BuysC) //BuysC为0时忽略忙检测

{

if (BuysC) ReadStatusLCM(); //根据需要检测忙

LCM_Data = WCLCM;

LCM_RS = 0;

LCM_RW = 0;

LCM_E = 0;

LCM_E = 0;

LCM_E = 1;

}

/*==================================================================== 正常读写操作之前必须检测LCD控制器状态:E=1 RS=0 RW=1;

DB7: 0 LCD控制器空闲,1 LCD控制器忙。

读状态

====================================================================== */

uchar ReadStatusLCM(void)

{

LCM_Data = 0xFF;

LCM_RS = 0;

LCM_RW = 1;

LCM_E = 0;

LCM_E = 0;

LCM_E = 1;

while (LCM_Data & Busy); //检测忙信号

return(LCM_Data);

}

/*==================================================================== ==

功能: 在1602 指定位置显示一个字符:第一行位置0~15,第二行16~31

说明: 第X 行,第y 列注意:字符串不能长于16个字符

====================================================================== */

void DisplayOneChar( uchar X, uchar Y, uchar ASCII)

{

X &= 0x1;

Y &= 0xF; //限制Y不能大于15,X不能大于1

if (X) Y |= 0x40; //当要显示第二行时地址码+0x40;

Y |= 0x80; // 算出指令码

WriteCommandLCM(Y, 0); //这里不检测忙信号,发送地址码

WriteDataLCM(ASCII);

}

/*==================================================================== 设定延时时间:x*1ms

====================================================================*/ void DelayMs(uint Ms)

{

uint i,TempCyc;

for(i=0;i

{

TempCyc = 250;

while(TempCyc--);

}

}

/********************************************************************

汇诚科技

*********************************************************************/

#include

#define uchar unsigned char

#define uint unsigned int

uchar duan[10]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09}; //所需的段的位码

//uchar wei[4]={0XFE,0XFD,0XFB,0XF7}; //位的控制端(开发板)

uchar wei[4]={0X08,0X04,0X02,0X01}; //位的控制端(仿真)

uint z,x,c,v, date; //定义数据类型

uchar CNT=0;//计数初值

uint lck=0;

uint Load;

/******************************************************************

延时函数

******************************************************************/ void delay(uchar t)

{

uchar i,j;

for(i=0;i

{

for(j=13;j>0;j--);

{ ;

}

}

}

/********************************************************************** 数码管动态扫描

*********************************************************************/ void xianshi()

{

/*****************数据转换*****************************/

z=date/1000; //求千位

x=date%1000/100; //求百位

c=date%100/10; //求十位

v=date%10; //求个位

PORTC=wei[0];

PORTB=duan[z];

delay(50);

PORTC=wei[1];

PORTB=duan[x];

delay(50);

PORTC=wei[2];

PORTB=duan[c];

delay(50);

PORTC=wei[3];

PORTB=duan[v];

delay(50);

}

//////////////////////////////初始化////////////////////////////////////

void Init_IO(void)//初始化I/O

{

//设置B口为输入

DDRB=0xFF;

PORTB=0xFF;

//设置C口为输出

DDRC=0xFF;

PORTC=0xFF;

//设置D口为输出

DDRD=0X00;

PORTD=0x00;

}

/////////////////////////////主函数/////////////////////////////////////

void main(void)

{

Init_IO(); //初始化I/O

PORTC=0XFF; //点亮数码管

PORTB=0X00; //点亮数码管

delay(30);//延时

PORTB=0xff; //关闭数码管

TCCR0=0x02; //T/C0工作方式选择,8分频

//TCNT0=0x00; //计数初始值9c

TCCR1B=0x07; //T/C0工作方式选择,上升沿触发

TCNT1H=0X00;

TCNT1L=0X00;

TIMSK=0x01; //使能T0溢出中断

SREG=0x80; //使能全局中断

while(1)

{

date=Load; //计数值

//date=1234; //计数值

xianshi(); //动态扫秒显示

}

}

//////////////////////////T/CO中断服务函数////////////////////////////////////////// #pragma interrupt_handler Timer0:10

void Timer0(void)

{

TCNT0=0xa0; //计数初始值

lck++;

if(lck==1000)

{

Load=TCNT1;//H+TCNT1L;//求出计数值

lck=0;

电路原理图设计说明

电路原理图设计 原理图设计是电路设计的基础,只有在设计好原理图的基础上才可以进行印刷电路板的设计和电路仿真等。本章详细介绍了如何设计电路原理图、编辑修改原理图。通过本章 的学习,掌握原理图设计的过程和技巧。 3.1 电路原理图设计流程 原理图的设计流程如图3-1 所示 . 。 图3-1 原理图设计流程 原理图具体设计步骤: (1 )新建原理图文件。在进人SCH 设计系统之前,首先要构思好原理图,即必须知道所设计的项目需要哪些电路来完成,然后用Protel DXP 来画出电路原理图。

(2 )设置工作环境。根据实际电路的复杂程度来设置图纸的大小。在电路设计的整个过程中,图纸的大小都可以不断地调整,设置合适的图纸大小是完成原理图设计的第一步。 (3 )放置元件。从元件库中选取元件,布置到图纸的合适位置,并对元件的名称、封装进行定义和设定,根据元件之间的走线等联系对元件在工作平面上的位置进行调整和修改使得原理图美观而且易懂。 (4 )原理图的布线。根据实际电路的需要,利用SCH 提供的各种工具、指令进行布线,将工作平面上的器件用具有电气意义的导线、符号连接起来,构成一幅完整的电路原理图。 (5 )建立网络表。完成上面的步骤以后,可以看到一张完整的电路原理图了,但是要完成电路板的设计,就需要生成一个网络表文件。网络表是电路板和电路原理图之间的重要纽带。 (6 )原理图的电气检查。当完成原理图布线后,需要设置项目选项来编译当前项目,利用Protel DXP 提供的错误检查报告修改原理图。 (7 )编译和调整。如果原理图已通过电气检查,那么原理图的设计就完成了。这是对于一般电路设计而言,尤其是较大的项目,通常需要对电路的多次修改才能够通过电气检查。 (8 )存盘和报表输出:Protel DXP 提供了利用各种报表工具生成的报表(如网络表、元件清单等),同时可以对设计好的原理图和各种报表进行存盘和输出打印,为印刷板电路的设计做好准备。 3.2 原理图的设计方法和步骤 为了更直观地说明电路原理图的设计方法和步骤,下面就以图3 -2 所示的简单555 定时器电路图为例,介绍电路原理图的设计方法和步骤。

PCB原理图设计方法

原理图设计规范 本文档的目的在于说明使用PROTEL和ORCAD进行原理图设计时的一些注意事项,为设计人员提供设计规范,方便设计人员之间进行交流和相互检查。 第一部分:PROTEL设计规范 一、原理图元件封装使用标准库命名,按照《元件库引用说明》执行;电路设计 中有用到新的封装的请填写《新建封装申请》后建立新封装,并根据标准库的命名标准将其封装名填入相应的原理图元件封装里面。 二、PROTEL原理图的电气法则的测试ERC:要求没有错误能正确导出网表,1.执行菜单命令【Tool】/【ERC…】; 2.执行上面的命令后在出现以下的电气法则测试对话框,并设置: ⑴.在【ERC Options】下选取以下几项: ●【Multiple net name on net】检测同一网络命名多个网络名称; ●【Unconnectde net labes】检测未实际连接的网络标号 ●【Unconnected power objects】检测为实际连接的电源图件; ●【Duplicate sheet numbers】检测电路图编号的重号; ●【Duplicate component designator】检测元件的重号; ●【Bus label format errors】检测总先标号格式错误; ●【Bus label format errors】检测输入引脚的浮接; ⑵.在【Options】下选取以下几项: ●【Create report file】在测试后,会自动在将测试结果存在报告文件中(*.erc), 文件名和与原理图名一致; ●【Add error markers】在测试后,会自动在错误位置上放置错误符号; ⑶.【Sheet to Netlist】测试原理图的范围设置为【Active project】; ⑷.【Net Identifier Scope】选择网络识别器的范围设置为【Sheet Symbol/Port Connection】;

PCB板设计步骤

1.5 PCB 板的设计步骤 (1 )方案分析 决定电路原理图如何设计,同时也影响到 PCB 板如何规划。根据设计要求进行方案比较、选择,元 器件的选择等,开发项目中最重要的环节。 (2 )电路仿真 在设计电路原理图之前,有时会会对某一部分电路设计并不十分确定,因此需要通过电路方针来验 证。还可以用于确定电路中某些重要器件参数。 (3 )设计原理图元件 PROTEL DXP 提供了丰富的原理图元件库,但不可能包括所有元件,必要时需动手设计原理图元件,建立 自己的元件库。 (4)绘制原理图 找到所有需要的原理元件后,开始原理图绘制。根据电路复杂程度决定是否需要使用层次原理图。完成原 理图后,用ERC (电气法则检查)工具查错。找到岀错原因并修改原理图电路,重新查错到没有原则性错误为 止。 5 )设计元件圭寸装 和原理图元件一样, PROTEL DXF 也不可能提供所有元件的封装。需要时自行设计并建立新的元件封装库。 6)设计PCB 板 确认原理图没有错误之后,开始 PCB 板的绘制。首先绘岀 PCB 板的轮廓,确定工艺要求(如使用几层板 等)。然后将原理图传输到 PCB 板中,在网络表、设计规则和原理图的引导下布局和布线。利用设计规则查 错。是电路设计的另一个关键环节,它将决定该产品的实用性能,需要考虑的因素很多,不同的电路有不同 要求 (7 )文档整理 对原理图、PCB 图及器件清单等文件予以保存,以便以后维护和修改 DXP 的元器件库有原理图元件库、 PCB 元件库和集成元件库,扩展名分别为 DXP 仍然可以打开并使用 Protel 以往版本的元件库文件。 在创建一个新的原理图文件后 ,DXP 默认为该文件装载两个集成元器件库: Miscellaneous Connectors.IntLib 。因为这两个集成元器件库中包含有最常用的元器件。 注意: Protel DXP 中,默认的工作组的文件名后缀为 .PrjGrp ,默认的项目文件名后缀为 .PrjPCB 。如 果新建的是 FPGA 设计项目建立的项目文件称后缀为 .PrjFpg 。 也可以将某个文件夹下的所有元件库一次性都添加进来, 方法是:采用类似于 Windows 的操作,先选中该文 件夹下的第一个元件库文件后,按住 Shift 键再选中元件库里的最后一个文件,这样就能选中该文件夹下的所 有文件,最后点打开按钮,即可完成添加元件库操作。 3.1原理图的设计方法和步骤 下面就以下图 所示的简单 555定时器电路图为例,介绍电路原理图的设计方法和步骤。 3.1.1创建一个新项目 电路设计主要包括原理图设计和 PCB 设计。首先创建一个新项目,然后在项目中添加原理图文件和 PCB 文件,创建一个新项目方法: ?单击设计管理窗口底部的 File 按钮,弹岀一个面板。 ? New 子面板中单击 Blank Project ( PCB )选项,将弹岀 Projects 工作面板。 ?建立了一个新的项目后,执行菜单命令 File/Save Project As ,将新项目重命名为 "myProject1 . PrjPCB ”保存该项目到合适位置 3.1.2创建一张新的原理图图纸 ?执行菜单命令 New / Schematic 创建一张新的原理图文件。 ?可以看到 Sheetl.SchDoc 的原理图文件,同时原理图文件夹自动添加到项目中。 ?执行菜单命令 File/Save As ,将新原理 SchLib 、PcbLib 、IntLib 。但 Miscellaneous Devices 」ntLib 禾

Cadence原理图绘制流程

第一章设计流程 传统的硬件系统设计流程如图1-1所示,由于系统速率较低,整个系统基本工作在集中参数模型下,因此各个设计阶段之间的影响很小。设计人员只需要了解本阶段的基本知识及设计方法即可。但是随着工艺水平的不断提高,系统速率快速的提升,系统的实际行为和理想模型之间的差距越来越大,各设计阶段之间的影响也越来越显著。为了保证设计的正确性,设计流程也因此有所变动,如图1-2所示,主要体现在增加了系统的前仿真和后仿真。通过两次仿真的结果来预测系统在分布参数的情况下是否能够工作正常,减少失败的可能性。 细化并调整以上原理图设计阶段的流 程,并结合我们的实际情况,原理图设计 阶段应该包括如下几个过程: 1、 阅读相关资料和器件手册 在这个阶段应该阅读的资料包括,系统的详细设计、数据流分析、各器件手册、器件成本等。 2、 选择器件并开始建库 在这个阶段应该基本完成从主器件到各种辅助器件的选择工作,并根据选择结果申请建库。 3、 确认器件资料并完成详细设计框图 为保证器件的选择符合系统的要求,在这一阶段需要完成各部分电路具体连接方式的设计框图,同时再次确认器件的相关参数符合系统的要求,并能够和其他器件正确配合。 4、 编写相关文档 这些文档可以包括:器件选择原因、可替换器件列表、器件间的连接框图、相关设计的来源(参考设计、曾验证过的设计等),参数选择说明,高速连接线及其它信息说明。 5、 完成EPLD 内部逻辑设计,并充分考虑可扩展性。

在编写相关文档的的同时需要完成EPLD内部逻辑的设计,确定器件容量及连接方式可行。 6、使用Concept-HDL绘制原理图 7、检查原理图及相关文档确保其一致性。 以上流程中并未包括前仿真的相关内容,在设计中可以根据实际情况,有选择的对部分重要连线作相关仿真,也可以根据I/O的阻抗,上升下降沿变化规律等信息简单分析判断。此流程中的各部分具体要求、注意事项、相关经验和技巧有待进一步完善。

PCB原理图绘制步骤

原理图的绘制 A、新建工作空间和原理图 项目是每项电子产品设计的基础,在一个项目文件中包括设计中生成的一切文件,比如原理图文件、PCB图文件、以及原理库文件和PCB库文件。在项目文件中可以执行对文件的各种操作,如新建、打开、关闭、复制与删除等。但是需要注意的是,项目文件只是起到管理的作用,在保存文件时项目中的各个文件是以单个文件的形式存在的。所以每完成一个库就保存一次。 新建工作区间 1、在菜单栏中选择File-New-Project-PCB Project. 2、形成一个PCB-Project1.PriPCB面板然后重命名最后分别添加scematic sheet形成Sheet.SchDoc文件保存后面一次添加形成PCB.PcbDoc、Pcblib.Pcblib、schlib.schlib文件分别进行保存。 3、在schlib.schlib文件里面添加你需要的库文件进行保存这时候要区分引脚与网口标号,特别是引脚一定要放置正确按照所发的书上进行标号,创建一个库就保存一次直到你需要的几个模块的器件你都画好了。 4、然后找到库文件将你画好的东西放置到Sheet.SchDoc原理图上面这时候再来放置网口标号用线将该连接的地方连接起来画好了看看自己的和书上的区别检查是否有错误的地方,最后将文件进行保存。点击Libraries面板,点左上角Libraries按钮,

如果你想在所有工程里都用就在Imstalled里点Install添加,如果只想在当前工程里使用就在Projiect里面点Add Library。 5、画封装图。 根据我们焊电路板的板子来测量距离将需要的器件进行封装,封装的过程中那一页会出现一个十字号将焊盘放置在十字号上确保第一个焊盘的x、y值都为零然后按照自己测量的数据一次拍好焊盘在一个在Top Layer这一层上放置,防止完成后切换到Top Overlay上面进行划线封装。对于LED灯要表明它的正极同样的道理没画好一个库进行一次保存直到最终完成了。最终形成了一个PCB Project文件库。 6、所有元器件编号的方法 你可以双击元件来改变,Visual属性为True。还可以让所有元件自动编号。 7、形成PCB图 在原理图里面双击你要添加的那一个模块添加PCB封装图浏览一下然后查看引脚映射是否一一对应如果对应就是没有出现错误最后点设计然后点击形成PCB图就可以了这个过程中也有一个地方查错的只要对了就会有一个对勾。这也是我自己一个一个添加的原因防止哪里出现了错误难以发现、最终画好了是出现的虚实线连接。 8、布线绘制图 这里面可以选择自动布线也可以进行手动添加布线,布线的时候

电路原理图设计步骤

电路原理图设计步骤 1.新建一张图纸,进行系统参数和图纸参数设置; 2.调用所需的元件库; 3.放置元件,设置元件属性; 4.电气连线; 5.放置文字注释; 6.电气规则检查; 7.产生网络表及元件清单; 8.图纸输出. 模块子电路图设计步骤 1.创建主图。新建一张图纸,改名,文件名后缀为“prj”。 2.绘制主图。图中以子图符号表示子图内容,设置子图符号属性。 3.在主图上从子图符号生成子图图纸。每个子图符号对应一张子图图纸。 4.绘制子图。 5.子图也可以包含下一级子图。各级子图的文件名后缀均是“sch”。 6.设置各张图纸的图号。 元件符号设计步骤 1.新建一个元件库,改名,设置参数; 2.新建一个库元件,改名; 3.绘制元件外形轮廓; 4.放置管脚,编辑管脚属性; 5.添加同元件的其他部件; 6.也可以复制其他元件的符号,经编辑修改形成新的元件; 7.设置元件属性; 8.元件规则检查; 9.产生元件报告及库报告; 元件封装设计步骤 1.新建一个元件封装库,改名; 2.设置库编辑器的参数; 3.新建一个库元件,改名; 4.第一种方法,对相似元件的封装,可利用现有的元件封装,经修改编辑形成; 5.第二种方法,对形状规则的元件封装,可利用元件封装设计向导自动形成; 6.第三种方法,手工设计元件封装: ①根据实物测量或厂家资料确定外形尺寸; ②在丝印层绘制元件的外形轮廓; ③在导电层放置焊盘; ④指定元件封装的参考点 PCB布局原则 1.元件放置在PCB的元件面,尽量不放在焊接面; 2.元件分布均匀,间隔一致,排列整齐,不允许重叠,便于装拆; 3.属同一电路功能块的元件尽量放在一起;

51单片机AD89电路设计程序+原理图

AD0809在51单片机中的应用 我们在做一个单片机系统时,常常会遇到这样那样的数据采集,在这些被采集的数据中,大部分可以通过我们的I/O口扩展接口电路直接得到,由于51单片机大部分不带AD转换器,所以模拟量的采集就必须靠A/D或V/F实现。下现我们就来了解一下AD0809与51单片机的接口及其程序设计。 1、AD0809的逻辑结构 ADC0809是8位逐次逼近型A/D转换器。它由一个8路模拟开关、一个地址锁存译码器、一个A/D转换器和一个三态输出锁存器组成(见图1)。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。

2、AD0809的工作原理 IN0-IN7:8条模拟量输入通道 ADC0809对输入模拟量要求:信号单极性,电压围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。 地址输入和控制线:4条 ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道

的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。通道选择表如下表所示。 C B A 选择的通道 0 0 0 IN0 0 0 1 IN1 0 1 0 IN2 0 1 1 IN3 1 0 0 IN4 1 0 1 IN5 1 1 0 IN6 1 1 1 IN7 数字量输出及控制线:11条 ST为转换启动信号。当ST上跳沿时,所有部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。 CLK为时钟输入信号线。因ADC0809的部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ, VREF(+),VREF(-)为参考电压输入。

PCB电路板原理图的设计步骤

PCB电路板原理图的设计步骤 PCB从单层发展到双面、多层和挠性,并且仍旧保持着各自的发展趋势。由于不断地向高精度、高密度和高可靠性方向发展,不断缩小体积、减少成本、提高性能,使得印刷板在未来设备的发展工程中,仍然保持着强大的生命力。那 么PCB是如何设计的呢?看完以下七大步骤就懂啦! 1、前期准备 包括准备元件库和原理图。在进行PCB设计之前,首先要准备好原理图SCH 元件库和PCB元件封装库。PCB元件封装库最好是工程师根据所选器件的标准尺寸资料建立。原则上先建立PC的元件封装库,再建立原理图SCH元件库PCB元件封装库要求较高,它直接影响PCB的安装;原理图SCH元件库要求相对宽松,但要注意定义好管脚属性和与PCB元件封装库的对应关系。 2、PCB结构设计 根据已经确定的电路板尺寸和各项机械定位,在PCB设计环境下绘制PCB

板框,并按定位要求放置所需的接插件、按键/开关、螺丝孔、装配孔等等。充分考虑和确定布线区域和非布线区域(如螺丝孔周围多大范围属于非布线区域)。 3、PCB布局设计 布局设计即是在PCB板框内按照设计要求摆放器件。在原理图工具中生成网络表(Design→Create Netlist),之后在PCB软件中导入网络表(Design →Import Netlist)。网络表导入成功后会存在于软件后台,通过Placement操作可以将所有器件调出、各管脚之间有飞线提示连接,这时就可以对器件进行布局设计了。 PCB布局设计是PCB整个设计流程中的重要工序,越复杂的PCB板,布局的好坏越能直接影响到后期布线的实现难易程度。布局设计依靠电路板设计师的电路基础功底与设计经验丰富程度,对电路板设计师属于较高的要求。初级电路板设计师经验尚浅、适合小模块布局设计或整板难度较低的PCB布局设计任务。 4、PCB布线设计

硬件设计流程

硬件设计流程 一、硬件设计 1.1单板设计需求 单板设计之前需要明确单板的设计需求。单板的功能属性。单板的设计目的,使用场合,具体需求包括: 1.单板外部接口的种类,接口的数量,电气属性即电平标准。 2.单板内部的接口种类,电气属性。 3.单板外部输入电源大小 4.单板的尺寸 5.单板的使用场合,防护标准 若设计中需要用到CPU,需要确定设计中需要用到的FLASH大小和需求的内存的大小和CPU的处理能力。单板设计需求中需要明确单板的名字和版本并且要以文档的形式表现出来,是后续单板设计和追溯的主要依据。 单板设计需求完成之后,需要召开项目评审会,需要对设计需求说明中各类需求逐个确认。当各类需求均满足设计需要时则进入下一步。 1.2 单板设计说明 单板需求明确后,需要开始编写单板设计说明。其中需要包括单板设计所需要的各种信息如: 1.单板设计详细方案,需要具体到用到什么芯片,什么接口。 2.器件选型,器件选型需要满足设计的需求。 3.单板功耗、单板选型之后需要确定单板的功耗,为单板散热和电源设计提供依据 4.电源设计、电源设计需要包含单板中需要用到的各类电源。若相同的电源需要做隔离 的需要做需要详细指出。 5.时钟设计,单板若是用到多种时钟,则需要描述时钟的设计方法,时钟拓扑。 6.单板的实际尺寸 7.详细描述各个功能模块给出详细的设计方法 8.详细描述各接口的设计方法和接口的电气属性。 若设计模块有多种设计方法,选择在本设计中最佳的设计方案。若软件对单板中用到的器件有独特的要求,需要明确指出(如对某些制定管脚的使用情况)。除了各个功能模块之外单板设计说明中需要详细描述接口的防护方法。设计说明需要以文档的形式给出,是单板设计过程中重要的文档,其中需要包括单板的名称和单板的版本。如果有条件单板设计说明完成后项目中进行评审。 1.3原理图设计 设计说明完成之后就要开始单板的原理图设计,单板设计说明是单板原理图设计的重要依据。原理图设计之气需要确定单板设计用用到的各个器件原理图库中是否具有原理图符号,如果没有需要提前绘制。新绘制的原理图符号需要反应器件的电气属性,器件型号,最好包含品号信息,绘制完成之后将其放到相应的库中,原理图设计需要包含: 1.各个器件接口的正确电气连接。 2.原理图中的各个器件需要有单独的位号。 3.原理图中需要包含安装孔和定位孔。 4.原理图中的兼容设计或者在实际应用中不需要焊接的器件需要在原理图中明确标出。 原理图的名字需要和单板的名字一致。考虑到单板上所用器件可能会有较长的采购周

PCB电路板ADP原理图与PCB设计教程第章

PCB电路板ADP原理图与PCB设计教程 第章

第4章原理图设计 在前面几章讲述了电路设计的基础知识后,现在可以学习具体的原理图设计。本章主要讲述电子元件的布置、调整、布线、绘图以及元件的编辑等,最后将以一个FPGA应用板原理图和一个译码器原理图设计为实例进行讲解。 4.1元件库管理 在向原理图中放置元件之前,必须先将该元件所在的元件库载入系统。如果一次载入过多的元件库,将会占用较多的系统资源,同时也会降低应用程序的执行效率。所以,最好的做法是只载入必要且常用的元件库,其他特殊的元件库在需要时再载入。一般在放置元件时,经常需要在元件库中查找需要放置的元件,所以需要进行元件库的相关操作。 4.1.1浏览元件库 浏览元件库可以执行Design→BrowseLibrary命令,系统将弹出如图4-1所示的元件库管理器。在元件库管理器中,用户可以装载新的元件库、查找元件、放置元件等。 图4-1元件库管理器 (1)查找元件 80

元件库管理器为用户提供了查找元件的工具。即在元件库管理器中,单击Search按钮,系统将弹出如图4-2所示的查找元件库对话框,如果执行T ools→Findponent命令也可弹出该对话框,在该对话框中,可以设定查找对象以及查找范围。可以查找的对象为包含在.Intlib文件中的元件。该对话框的操作及使用方法如下: 图4-2简单查找元件库对话框 1)简单查找。图4-2所示为简单查找对话框,如果要进行高级查找,则单击图4-2所示对话框中的“Advanced”按钮,然后会显示高级查找对话框。 ●Filters操作框。在该操作框中可以输入查找元件的域属性, 如Name等;然后选择操作算子(Operator),如 Equals(等于)、Contains(包含)、StartsWith(起始)或者 EndsWith(结束)等;在Vlaue(值)编辑框中可以输入或选 择所要查找的属性值。 ●Scope操作框。该操作框用来设置查找的范围。当选中 AvailableLibraries单选按钮时,则在已经装载的元件库中 查找;当选中LibrariesonPath单选按钮时,则在指定的

原理图元件库的设计步骤

原理图元件库的设计步骤 一. 了解欲绘制的原理图元件的结构 1. 该单片机实际包含40只引脚,图中只出现了38只, 有两只引脚被隐藏,即电源VCC(Pin40)和GND(Pin20)。 2. 电气符号包含了引脚名和引脚编号两种基本信息。 3. 部分引脚包含引脚电气类型信息(第12脚、第13脚、 第32至第39脚)。 4. 除了第18脚和第19脚垂直放置,其余水平放置。由 于VCC及GND隐藏,所以放置方式可以任意。 5. 一些引脚的名称带有上划线及斜线,应正确标识。 二. 新建集成元件库及电气符号库 1. 在D盘新建一个文件夹D:/student 2. 建立一个工程文件,选择File/New/Project/Integrated Library,如:Dong自制元件库.LibPkg 3. 新建一个电气符号库,选择File/New/Library/Schematic Library,如:Dong自制元件库.SchLib 4. 追加原理图元件 在左侧的SCH Library标签中,点击库元件列表框(第一个窗口)下的Add(追加)按钮,弹出New Component Name对话框,追加一个原理图元件,输入8051并确认,8051随即被添加到元件列表框中。 三. 绘制原理图元件 1. 绘制矩形元件体 矩形框的左上角定位在原点,则矩形框的右下脚应位于(130,-250)。 注意:图纸设置中各Grids都设为10mil。 2. 放置引脚 (1)P0.0~P0.7的放置及属性设置 单击实用工具面板的引脚放置工具图标,并按Tab键,系统弹出【引脚属性】对话框: 【Display Name显示名称】文本框中输入“P0.0”; 【Designator标识符】文本框中输入“39”; 【Electrical Type电气类型】文本框中选择“IO”; 在【Symbols符号】选项组的【Inside内部】文本框中选择Open Collector;

FPGA原理图方式设计流程图

2 Quartus II软件的使用、开发板的使用 本章将通过3个完整的例子,一步一步的手把手的方式完成设计。完成这3个设计,并得到正确的结果,将会快速、有效的掌握在Altera QuartusII软件环境下进行FPGA设计与开发的方法、流程,并熟悉开发板的使用。 2.1 原理图方式设计3-8译码器 一、设计目的 1、通过设计一个3-8译码器,掌握祝组合逻辑电路设计的方法。 2、初步了解QuartusII采用原理图方式进行设计的流程。 3、初步掌握FPGA开发的流程以及基本的设计方法、基本的仿真分析方法。 二、设计原理 三、设计内容 四、设计步骤 1、建立工程文件 1)双击桌面上的Quartus II的图标运行此软件。

开始界面 2)选择File下拉菜单中的New Project Wizard,新建一个工程。如图所 示。 新建工程向导

3)点击图中的next进入工作目录。 新建工程对话框 4)第一个输入框为工程目录输入框,用来指定工程存放路径,建议可根据自己需要更改路径,若直接使用默认路径,可能造成默认目录下存放多个工程文件影响自己的设计,本步骤结束后系统会有提示(当然你可不必理会,不会出现错误的)。第二个输入框为工程名称输入框。第三个输入框为顶层实体名称输入框,一般情况下保证工程名称与顶层实体名称相同。设定完成后点击next。

指定工程路径、名称 5)设计中需要包含的其它设计文件,在此对话框中不做任何修改,直接点 击next。 工程所需其它文件对话框

6)在弹出的对话框中进行器件的选择。在Device Family框中选用Cyclone II,然后在Available device框中选择EP2C35F484C8,点击next进入下一步。 器件选择界面 7)下面的对话框提示可以勾选其它的第三方EDA设计、仿真的工具,暂时不作任何选择,在对话框中按默认选项,点击next。

pcb电路板原理图的设计步骤

PCB从单层发展到双面、多层和挠性,并且仍旧保持着各自的发展趋势。由于不断地向高精度、高密度和高可靠性方向发展,不断缩小体积、减少成本、提高性能,使得印刷板在未来设备的发展工程中,仍然保持着强大的生命力。那么PCB是如何设计的呢?看完以下七大步骤就懂啦! 1、前期准备 包括准备元件库和原理图。在进行PCB设计之前,首先要准备好原理图SCH 元件库和PCB元件封装库。PCB元件封装库最好是工程师根据所选器件的标准尺寸资料建立。原则上先建立PC的元件封装库,再建立原理图SCH元件库PCB元件封装库要求较高,它直接影响PCB的安装;原理图SCH元件库要求相对宽松,但要注意定义好管脚属性和与PCB元件封装库的对应关系。 2、PCB结构设计 根据已经确定的电路板尺寸和各项机械定位,在PCB设计环境下绘制PCB 板框,并按定位要求放置所需的接插件、按键/开关、螺丝孔、装配孔等等。充分考虑和确定布线区域和非布线区域(如螺丝孔周围多大范围属于非布线区域)。 3、PCB布局设计 布局设计即是在PCB板框内按照设计要求摆放器件。在原理图工具中生成

网络表(Design→Create Netlist),之后在PCB软件中导入网络表(Design →Import Netlist)。网络表导入成功后会存在于软件后台,通过Placement操作可以将所有器件调出、各管脚之间有飞线提示连接,这时就可以对器件进行布局设计了。 PCB布局设计是PCB整个设计流程中的重要工序,越复杂的PCB板,布局的好坏越能直接影响到后期布线的实现难易程度。布局设计依靠电路板设计师的电路基础功底与设计经验丰富程度,对电路板设计师属于较高的要求。初级电路板设计师经验尚浅、适合小模块布局设计或整板难度较低的PCB布局设计任务。 4、PCB布线设计 PCB布线设计是整个PCB设计中工作量大的工序,直接影响着PCB板的性能好坏。在PCB的设计过程中,布线一般有三种境界:首先是布通,这是PCB 设计的基本的入门要求;其次是电气性能的满足,这是衡量一块PCB板是否合格的标准,在线路布通之后,认真调整布线、使其能达到好的电气性能;再次是整齐美观,杂乱无章的布线、即使电气性能过关也会给后期改板优化及测试与维修带来极大不便,布线要求整齐划一,不能纵横交错毫无章法。

原理图及PCB板设计基础

原理图设计: 1、信号线束:把单条走线和总线汇集在一起进行连接,可在一个原理图中使用,也可以通 过输入/输出端口,与另外的原理图之间建立连接。 2、电气节点:在导线的T形交叉点处自动放置电气节点,表示所画线路在电气意义上是连 接的。但在十字交叉点处,系统无法判断导线是否连接,不会自动放置电气 节点。如果导线确实是相互连接的,就需要手动放置电气节点。P+J 3、特色工作面板 (1)SCH Inspector(检查器)面板:用于实时显示在原理图中所选取对象的属性;可同时编辑多个被选对象的属性。亦可用①用SCH Filter选中所需对象;②用SCH List对对象进行参数更改。来实现 (2)SCH Filter(过滤器)面板:查找多个具有相同或相似属性的对象,进而对其进行编辑或修改; (3)SCH List(列表)面板:进行过滤查找后,查找的结果除了在编辑窗口内直接显示出来以外,用户还可以使用SCH List面板对查找结果进行系统的浏览,并且可 以对有关对象的属性直接编辑修改。 (4)选择内存面板:把当前原理图文件或所有打开的原理图文件中的选取对象存入某一内部存储器中,需要时直接调用;还可以随时把新的选取对象加入内部存储器 中或者清除不在需要的对象等。 ①存储:Shift+1或者STO1按钮;②浏览:apply;③调用:RCL1按钮。 4、联合与片段: (1)联合及打碎器件:选中对象+右键unions。联合后的对象可以作为单个对象在窗口内进行移动、排列等编辑操作或者删除。 (2)片段:片段的生成与联合的生成过程基本相同。所不同的是,片段可以长久保存,并且能够使用系统提供的片段面板进行查看、管理。System-snippets PCB设计: 1、多层板的埋孔、过孔和盲孔(作用:连接所设计的电子线路,电气检查也不会报错) 导通孔:一种用于内层连接的金属化孔,并不用于插入元件引线或其他增强材料; 过孔:至少连通顶层和底层之间的电气连接通孔,过孔在顶层和底层上没有实际的电气连接;埋孔:一端连接在顶层或底层,另一端连接在中间层的电气连接半开孔;(一面没有空间允许设置过孔焊盘,另外在高速电路设计时设置埋孔还可以减小过孔焊盘的寄生电容、寄生电感对电子线路的影响) 盲孔:在两层中间层之间进行电气连接的金属化孔;(可以增加其他层面的走线空间,在高速电路设计中盲孔有利于电子线路电气性能的提高) 元件孔:用于将插针式元器件固定在印刷版上并进行电气连接的孔。 注:使用盲孔、埋孔一是因为对印刷电路板尺寸有要求,布线密度高,布线空间不够;二是在高速电路设计中,使用埋孔、盲孔能有效减小线路信号辐射,从而减小布线给高频小信号带来的电气干扰,但是在多层设计中大规模使用盲孔和埋孔会增加印刷版的制造成本。使用过孔对不同板层间的电子线路进行电气连接,能有效地减小印刷电路板的制造成本,也有利于提高印刷电路板的成品率。 2、印刷电路板常用术语 封装:插针式、表贴式; 过孔:被沉积上一层金属导电膜的小孔,用来连接不同层之间的铜膜导线,以建立电气连接。

原理图和PCB多通道设计方法介绍

原理图和PCB多通道设计方法介绍 设计原理图和PCB的过程中,你是否遇到过多幅一模一样的电路,但是不得不重复设计?原理图显得繁复,可读性差。而特别是在设计PCB,不得不重复布局,重复布线,不仅枯燥乏味而且也容易出错、或者电路不美观等等。下面介绍一种专门针对这类电路的设计方法,大大提高工作效率,以上问题都可以得到很好的解决。这里有点类似我们写程序的时候,把一段经常用的代码,封装为一个函数,减少重复劳动增加可读性。 首选给大家介绍,何谓多通道设计。简单的说,多通道设计就是把重复电路的原理图当成一个原件,在另一张原理图里面重复使用。下面介绍一个例子,在范例里面理解这个概念。一个有16路mos管输出电路。如下图是一路mos管电路: 如果按照常规设计,在原理图里这个相同的电路不得不copy 16次,这样电路图必然巨大无比,而且十分难读。下面用多通道设计试试。把单路《mos管》电路设计好以后,咱们保存,然后在同一个工程下面新建一个空原理图。打开新原理图,在里面做文章。首先选择place-》sheet syombl。激活该命令以后,在新原理图下拖动,将出现以绿色块。如下图

这个绿色块就是《mos管》电路的替代品了(也可以把他当中一个原件,或者一个函数入口)。这个元件究竟是代表那张原理图呢?咱们先双击设置一下,双击出现如下界面: 选择左下角filename 的…。马上弹出choose document to reference界面,在多个电路图(这里只有一个,但很多情况有多个)里面选择你需要那个电路图,点ok。顺便介绍下filename上面那个栏的designator:repeat(Mos,1,16)。这个是干嘛的?聪明的你也许能猜到了。Repeat就是重复mos这个原理图。重复几次?就是从1-16,就是16次啦。记住这里一点只能从1开始,不能从0开始。在我们经常画总线的时候习惯性把总线设置为:0-7或者0-15。这里就不允许这样,只能是1-8或者1-16。

protel 原理图设计步骤

protel 99 se原理图设计步骤 1.1 protel 99 se电路板设计步骤 一般而言,设计电路板最基本的过程可以分为三大步骤。 1电路原理图的设计 电路原理图的设计主要是protel 99 se的原理图设计系统(Advanced Schematic)来绘制一张电路原理图。在这一过程中,要充分利用protel 99 se所提供的各种原理图绘图工具、各种编辑功能,来实现我们的目的,即得到一张正确、精美的电路原理图。 2产生网络表 网络表是电路原理图设计(SCH)与印制电路板设计(PCB)之间的一座桥梁,它是电路板自动的灵魂。网络表可以从电路原理图中获得,也可从印制电路板中提取出来。 3印制电路板的设计 印制电路板的设计主要是针对protel 99 se的另外一个重要的部分PCB而言的,在这个过程中,我们借助protel 99 se提供的强大功能实现电路板的版面设计,完成高难度的等工作。 1.2 绘制简单电路图 1.2.1 原理图设计过程 原理图的设计可按下面过程来完成。 4设计图纸大小 首先要构思好零件图,设计好图纸大小。图纸大小是根据电路图的规模和复杂程度而定的,设置合适的图纸大小是设计好原理图的第一步。 5设置protel 99 se/Schematic设计环境 包括设置格点大小和类型,光标类型等等,大多数参数也可以使用系统默认值。 6旋转零件 用户根据电路图的需要,将零件从零件库里取出放置到图纸上,并对放置零件的序号、零件封装进行定义和设定等工作。

7原理图布线 利用protel 99 se/Schematic提供的各种工具,将图纸上的元件用具有电气意义的导线、符号连接起来,构成一个完整的原理图。 8调整线路 将初步绘制好的电路图作进一步的调整和修改,使得原理图更加美观。 9报表输出 通过protel 99 se/Schematic提供的各种报表工具生成各种报表,其中最重要的报表是网络表,通过网络表为后续的电路板设计作准备。 10文件保存及打印输出 最后的步骤是文件保存及打印输出。 原理图的设计流程图如下图1-1所示。 图1-1原理图设计流程 1.2.2 新建一个设计库 (1)启动Protel 99 se,出现以下启动界面,如图1-2所示。

电路原理图与电路板设计实验报告

电路原理图与电路板设计实验报告 学院: 班级: 专业: 姓名: 学号:

指导老师: 河南工业大学实验报告专业班级姓名 学号 同组者姓名完成日期 成绩评定 实验题目:(一)原理图设计环境画原理图实验 实验目的: 1.熟练PROTEL99se的原理图编辑环境。 2.掌握常用管理器,菜单的使用,电气规则检查。 3.掌握元器件的调用,属性含义。 实验内容: 教材: ,,,环境熟悉

,工具条对象,器件调用 ,菜单使用,元件属性修改 练习1---练习8 实验仪器:PROTEL99se软件 实验步骤: (1)放置元件:就是在元件库中找元件,然后用元件 管理器的Place按钮将元件放在原理图中。 放置元件时需要使用如下所示快捷键: 空格键:每单击一次空格键使元件逆时针旋转90度。 TAB键:当元件浮动时,单击TAB键就可以显示属性编辑窗口。 X键:元件水平镜像。 Y键:元件垂直镜像。 (2)连接导线。使用划线工具连接导线。 (3)放置电源,地线和网络标记。放置电源和地线标

记前要显示电源地线工具箱。 (4)自动元件编号:使用菜单Tool/Annotate对元件自动编号。 (5)编辑元件属性。单击元件,在弹出的属性窗口中输入元件的属性,注意一定要输入元件封装。(6)电气规则检查。使用Tool/ERC菜单,对画好的原理图进行电气规则检查,检查完毕后,出现报 表信息,就可以进行下一步。 (7)原件图元件列表。使用Edit/Export to Spread 菜单,按照向导提示进行操作。 (8)建立网络表。使用菜单Design/Netlist。 实验截图: 注意事项: 连线:从器件的端点开始到端点结束,不要多余的线,按空格旋转原件;PAGEDOWN PAGEUO缩放。 河南工业大学实验报告

Protel99SE多张原理图的设计步骤

Protel99SE多张原理图的设计步骤 1. Protel实现一个系统多张原理图,电路模块化的使用方法。 “在Protel中如何实现多张图的统一编号”即多张原理图其实是一个电路板(为了模块化才在多个图中画的)。以前建的Protel工程不大,一张图基本就搞定了,也没尝试过多图的。研究了一下,也不是很难,作为总结写在这里。 以下是步骤:(前提是你已经在你的工程中画好了原理图) (1)、先建一张空白电路原理图,比如Global.sch,并打开该原理图。 (2)、在Global.sch窗口下选择Designed-> Create Symbol From Sheet, 然后在弹出的窗口中选择你的第一张图,这时会有另一个对话框出现 点击OK后,在Global.sch里鼠标会有变化,用鼠标在Global.sch 上画一个框就代表你的第一张原理图,其他原理图照此办理。 (3)、这样你可以在Global.sch中Annotate(Tool->Annotate)了。将Options标签下的Current Sheet Only 项的小勾去掉。然后再选择Advanced Options标签下需要编号的图纸文件名前打上小勾,点击

OK,完成。 (4)、在Netlist Creation的时候注意在Sheets To Nitlist下选择“Active Project”。 2. Protel99SE多张原理图生成一张总网表的方法 (1). 新建一张原理图,点击"PlaceSheetSymbol"放置一个原理图符号,然后右击选其“proterties”,在filename 一栏输入你准备与之绑定的原理图文件名.确定ok。 依此类推...,直到把全部的原理图与每一个放置的原理图符号绑定完为止,最后保存。 (2). 打开全部的原理图(否则导入PCB时不能生成网络,只有元器件)。 (3). 打开"Design"菜单下的“Creat netlist..."选项,在"sheets to netlist"一栏选择“Active sheet plus sub sheets",然后点击ok,就可生成多张原理图的总网表。 (4). 在PCB图设计模式下导入总网表即可。 3. [小窍门]如何把多张原理图整合起来 在实际工作中我们可能需要把多张原理图连接起来,在同一PCB文件

(完整word版)电路原理图及PCB设计规范报告

电路原理图及PCB设计规范探讨 一、原理图绘制规范 1、电阻标号规范:电阻的标号统一采用Rn,R代表的是电阻,n代表的是编号1、 2、3······依照依次增大的原则。滑动电阻标号统一采用RPn,RP代表的是电阻,n代表的是编号1、2、3······依照依次增大的原则。 2、电容标号规范:电容的标号统一采用Cn,C代表的是电容,n代表的是编号1、2、3······依照依次增大的原则。 3、其它元件的标号规范:三极管的标号统一采用Qn,排针和接头都采用JPn,Q代表的是三极管,JP代表的是排针和接头,n代表的是编号1、2、3······依照依次增大的原则。

4、电源标识规范:正负电源统一采用+VCC,—VCC。当有其它的不同电源值的电源的时候,其规范为+或—所加的电源值,如正负电源3.3V分别表示为+3.3V,—3.3V。 5、布局规范:在设计允许的范围内,尽量按照原理图的设计思路,比如方波、三角波、正弦波之间的相互转换。 6、其他规范:在元器件的放置时考虑美观,原理图对称的时候放置元器件也对称,走线也遵循这样的原则,之后生成元器件报表。 7、原理图 二、PCB设计流程 (一)Pcb设计准备 1.与项目主管确认电路原理图设计已经通过评审,且不会有较大更改。 2.确认所有器件封装都已经建立,位于Powerpcb标准器件库或临时器件库。 3.熟悉电路要求:了解电路原理、接口和模块划分;了解电路设计中对PCB 设计有特殊要求的网络和器件,如高速信号、设计关键点、特定封装的器件(如对于安装在印刷电路板上的较大的组件,要加金属附件固定,以提高耐振、耐冲击性能);对PCB布局设计的特殊要求(如需要尽量放在正面的器件、需要考虑散热的器件等)。 4.了解结构制约:与项目主管、工业设计人员一起协商确定外部接口的要求、 影响内在结构的器件和电路板尺寸的要求。 5.分析和确定PCB的层数、基本布局、层安排、散热考虑、产品EMC/ESD等。(二)Pcb布局设计(前期设计) 1.网表输入:运行“FILE->INPORT”导入。

相关文档
最新文档