经过前两讲,相信从51过渡到STC IAP15的朋友已经有一部分了~
由于在实际应用时,官方开发板的大小、外围电路都有可能不能满足我们的系统要求,这时,我们就会选择去做一个最小系统板来进行自己的系统设计,完成作品。
这里我们就开辟了额外一个帖子,教大家制作一块STC IAP15单片机系统板,方便大家今后自己开发以及将制作过程中遇到的问题分享出来!
/**********************************************************/
本次主要内容:
1. IAP15F2K61S2核心板制作。
2. PCB设计说明。
3. IAP15的PWM(脉宽调制)解析。
/**********************************************************/
首先,我们需要绘制电路原理图。这里我们使用的是AltiumDesigner.
对于这块板的设计,并不是真正的最小系统,为什么这样说呢?
最小系统板通常指的是:
1. STC IAP15F2K61S2单片机。
2. 该单片机复位电路。
3. 该单片机晶振电路。
因为STC15的最大特点是省去外部复位电路、晶振电路(内部自带高精度两电路,详见准备工作贴)。又因为平时我们下载个人习惯是按下复位键下载,所以在该板设计上保留了复位电路。
好~回归正题!不是最小系统的原因是因为我们为了让该主控在实际工作中运行更稳定:
1. ADC接口上默认预留了两路ADC,并加入官方推荐的滤波电路,当然作普通I/O时,这两个口也能正常使用。
2. 加入了两颗LED灯,一颗作电源指示灯,另一颗是程序状态指示灯(详见第一讲)。
3. 串口上加入一个限流电路,保证串口不受损坏。
4. 加入了光电隔离电路,主要是针对PWM输出口的,这一做法是这样考虑:在绝大多数普通应用中,PWM是用来作电机驱动的,为了减少电机对主控的影响,我们加入了高速光电隔离器(6N137)俗称光耦。
/**********************************************************/
在光耦选择方面也是很有讲究的,我们尝试过两种光耦:TLP521、PC817,这两种光耦在PWM频率较高时都是不行的,会造成严重失真,最终我们找到了6N137这一高速光耦,在合理的参数选择后,波形还是比较美好的,以下是分别是6N137、TLP521、PC817波形图:
6N137波形图
TLP521波形图
PC817波形图
以上图中光耦使用的两个电阻参数分别为:220Ω的限流电阻与220Ω的上拉电阻。(大家可以尝试自己修改参数观察现象。)从图中可以看出,高速光耦6N137波形的确美好~该参数下输出的电压峰峰值也比较理想!
/**********************************************************/
总的来说,我们整板带有电源开关、电源指示灯,带有复位电路,用排针引出了各I/O引脚以及+5V电源引脚、GND引脚,将PWM引脚集合并作了光耦隔离,ADC部分作了滤波。
/**********************************************************/
第一步绘制完成原理图后我们需要从绘制的原理图生成PCB图。
楼主绘制完成的PCB图如下:
IAP15F2K61S2系统PCB顶层
IAP15F2K61S2系统PCB底层
绘制PCB时楼主是这样进行的:
1. 电源输入部分是直接铺铜。
2. GND不作连接,后面以铺铜完成,(以GND为NET,间距0.8mm防止焊接时候信号线与铺铜误黏结)最终形成回路,减小地环路,增强抗干扰能力。(这里需要注意:由于这是手工制作电路板,所以我们需要做一些过孔使顶层和底层的GND连通。)
3. 图中三条线未连接是因为我们将3条PWM信号线连接到了光耦,最后从光耦出来集合到一起,方便接插。
4. 为了制板方便,信号线使用的是20mil的线宽。
5. 楼主大多数元件使用的是0805贴片。
6. 留了3个机械孔作固定。
楼主最终的PCB工程附给大家作参考:
/**********************************************************/
以上都搞定了那咱们就可以制板了,这儿只给大家简单介绍下基本流程及方法了:
1. 准备物资:
(1) 光铜板一片,自由裁剪大小,细砂纸。
(2) 腐蚀剂一包(环保腐蚀剂)。安全~~~
(3) 钻孔设备、钻针0.8mm、1.0mm各一支。
(4) 腐蚀使用的塑料盆、热水。
(5) 熨斗、热转印纸、激光打印机、油性笔。
2. 使用激光打印机将PCB顶层、底层打印到热转印纸上。
3. 用砂纸将光铜板表面的氧化层打磨掉,至光铜板表面平整、光滑。
4. 用熨斗将打印出来的PCB转印到打磨好的铜板上(底层、顶层先选一面作转印)。
5. 钻孔选好定位孔转印另一面。
6. 用油性笔将之前不慎搞得不清晰的黑线补齐。
7. 盆中放入腐蚀剂、热水,丢入铜板,最后腐蚀。(不断摇晃盆体)
8. 腐蚀完成,打磨多余的黑色部分,露出铜箔。
9. 焊接。完成后喷上电路板保护漆防止铜表面氧化。
制板完成,如下图:
IAP15F2K61S2系统板实物正面
根据原理图,图中1N4148二极管去掉。这样属于我们的系统板就做好了,大家就可以运用到任何地方了!
/**********************************************************/
本次制作中,用到了PWM(脉宽调制),这里我们就给大家一起玩一下(同样只说重点其它在程序中已经注释清晰):
首先我们的PWM是工作于8位的也就是0~255,粗略说就是代表占空比0~255级可调。
这里要注意我们常常使用的PWM都是对脉宽进行调制(也就是占空比,频率基本恒定),其次要注意,因为所有PWM都是寄于一个PCA定时器产生的,所以3路PWM频率都是相同的,但是占空比能够独立变化。
PWM频率处于8位时是这样计算的:
PWM的频率=PCA时钟输入源频率/256
PCA时钟源可以从以下8钟中选择:SYSCLK、SYSCLK/2、SYSCLK/4、SYSCLK/6、SYSCLK/8、SYSCLK/12、定时器0溢出、ECI/P1.2输入。
在这儿楼主就列举了常用的PWM模式,足够用于大多数场合,其它的,有兴趣大家可以从官方手册中了解。
PWM初始化配置
最后要注意的是寄存器的配置,有兴趣的可以同样参考芯片手册进行配置。
附上源代码:
由于楼主最近事情繁多,代码没能够和之前的范例对齐,但是也够OK的!望大家见谅!
/**********************************************************/
UltraFire:分享使人进步,同时发现自身不足!
以上就是本次玩转STC15的全部内容,感谢大家的阅读观看!
感谢大家的支持!局限于作者知识,如若有错误大家可以提出!
共同进步,共同学习!
若有疑问可直接在下跟帖提问,UltraPlus会根据你的疑问为你解答!
提问格式:
问题标题:
问题描述:
问题现象:
最后,衷心感谢大家的支持!
UltraPlus
2014-10-24