7581| 6
|
[项目] 第四章》自制Arduino最小系统板,经过再次改进后终于完成 |
经过了上次的失败后,我又重新设计了电路,选取了一些合适的器件来改进我的这块板子,我之前总结了我的第一版电路的一些问题,我会在这一版的设计中来完善它。。。 首先放上我之前的问题: 1.电源以及动力线的宽度不够,可能导致电流大时候烧毁,需要重新设定线宽 2.AO3400封装错误 3.5V输出焊盘没有线连接 4.555芯片复位电路需要下拉电阻 5.经过多个考虑,还是想取消使用mos管驱动的方案,改为使用驱动芯片的方案 6.对于这个板子,输入电压可以从0.9V一直到12V,但是是需要从两个接口输入,并且经过两个电路去升压和降压,容易发生接错的问题,于是考虑更换升降压电路,改为从一个接口输入宽电压的方案 7.同时,为了适应宽电压的输入,我还需要重新设计电压采样电路 一共有七条问题,在这一次的设计中我会一个一个来解决。 第一部分 1.关于宽电压输入的电源方案改进 第一次设计的电路是分成两个部分来进行的,一路5V升压电路一路5V降压电路,这样导致了整个电路的电压输入端口有两个,一个只支持低于5V的电压输入,一个只支持高于5V的电压输入,这样就导致了很多问题: >两路电源电路占据了大量的版面空间,导致其他元件的摆放受到很大影响 >两路电源输入接口容易混淆,容易造成烧坏电路板现象发生 >让整个电路板的功耗增加 介于这三个问题的存在,我给出了两种解决方案,这两种方案都将原来的两个输入口合二为一,希望大家予以借鉴 一、采用BUCK-BOOS电源芯片的自动升降压电路 首先为大家讲解一下什么是buck-boost,顾名思义buck意思为降压,boost意思为升压,和我们常见的降压或者升压芯片不同,这种电源芯片将升压电路和降压电路合二为一,集成在一个芯片中,而且可以在升压模式和降压模式之间自动切换,可以达到对于宽范围电压输入,给出稳定电压输出的要求,十分适合我的要求。对于自动升降压的原理可以自行去百度搜索一下斩波电路,里面有很详细的讲解。这里我选择的是来自德州仪器的TPS63060芯片。 下面给出它的数据表: 可以看出最大输出电流超过1A,足够我的使用,而且支持2.5V到12V的输入电压,非常适合我的项目,所以我就决定使用它了! 电路的设计我在这款芯片的数据手册里面找到了如下的典型电路,我直接使用这个电路即可,下面是电路图: 对于这个电路我简单的讲解一下外围元件的功能,电压输入首先经过2个10uf的滤波电容,进入到芯片中,然后经过内部斩波电路,从out口输出,输出端通过两个电阻分压形成反馈电压,从FB口进入,同时输出电压给Power Good端口提供上拉,最后经过3个22uf滤波电容输出。电感L1给斩波电路提供了储能,所以会通过大电流,这点在布线的时候注意留出足够的线宽。 二、采用ME6210A33的降压电路 查询Atmega328手册,发现Atmega328同样可以在3.3V电压下运行,而我供电使用的锂电池最低电压是咋3.7V左右,所以完全可以使用一个低压差线性稳压器为整个电路提供电源,由于我使用的无线模块NRF24L01同样是工作在3.3V电压的,所以这一举动可以将原来的三个电源IC缩减到一个,这会省下很多的空间以及价格。故我开始寻找合适的稳压芯片。对于这款稳压芯片,我需要压差非常小的稳压IC,而且同样需要可以兼容我的大电压输出(12V),所以一番寻找过后,我选择了ME6210A33这款,下面是数据表: 可以看出在200ma的输出电流环境下,输入与输出之间的压差只有260mv,这个参数完全可以达到我的要求,而且最大输出电流可以达到500ma,虽说没有TPS63060的输出电流大,但是也是足够我使用的,而且最主要的是ME6210A33的外围电路简单,故我将选择这个芯片方案,我在这款芯片的数据手册里面找到了典型电路,我将直接使用它: 整个电路非常简单,外围电路只需要两个滤波电容即可。 到这里,电源电路的改进就结束了。 2.电压采样电路 由于需要采集宽范围的电压(3.7-12V),最大电压超出单片机所能够承受的电压了,我不能直接将Atmega328的模拟输入引脚连接到电压输入上,所以我需要设计一个分压电路,电路图如下: 由于使用3.3V给单片机供电的缘故,单片机内置ADC的参考电压引脚也为3.3V,所以导致我需要一个能将最大电压12V分压到3.3V以下的电路,综合了常用电阻值和电压检测的精度之后,我选择了150k和50k作为分压电阻,因此根据电阻分压公式,R11上的电压等于BAT端电压的四分之一,因此当A0引脚读到电压数据之后,将值乘以4即可计算出输入电压。所以在A0脚的最大电压为12/4=3V左右,刚好适合单片机的ADC转换使用。 3.电机驱动的改进 第一次设计的mos管驱动电路,我将mos管买回来之后发现一接上电机就烧掉了,到现在一直没有找出是什么原因,所以不得已选择用集成驱动IC驱动电机。市场上电机驱动IC实在太多了,我需要挑选出满足我的要求的: 输入电压一定要宽范围 每一路的驱动电流要足够 外围电路尽量简单 需要的输入引脚尽可能少 选来选去,我看中了LG的L9110s,这是一款单路电机驱动芯片,而且外围电路简单,仅仅需要两个引脚就可以控制电机调速以及正反转以及刹车,最大电流800ma,足够我的使用了,下面放出典型的电路图: 需要大家注意的是,这类驱动IC一般都内置功率型NMOS管以及续流二极管,无需外接续流二极管,所以建议大家在驱动电机的时候尽量选择这类驱动IC,可以省略很多外围器件。 至此元器件的问题都解决了,下面是PCB布线上的问题解决。 4.关于555芯片复位电路的下拉电阻 上一次做的555芯片没有接下拉电阻导致Reset引脚的电位不稳定,导致上电之后蜂鸣器不受单片机控制的问题。于是我添加下拉电阻来稳定555芯片Reset引脚的电位,由于我的555芯片是低电平复位的,所以我添加了47K的下拉电阻,这样保证了555默认情况下为复位状态,不会有输出,而当单片机引脚给出高电平时,电阻上方为高电平信号,使能555芯片从而让蜂鸣器发声。 第二部分 由于我更换了新的电源电路以及驱动IC,所以我的PCB电路需要重新编排各个元件的位置以及重新布线,为了尽可能的考虑到各个器件的最佳工作环境以及最佳工作状态,我采用手动布线去有针对性的考虑各个器件的问题。 由于采用集成IC驱动电机,而且有三路,所以我将板子右端部分留给电机驱动芯片,并将关键的高频信号线(连接NRF24l01的SPI总线)以及预留的SPI接口全部放在离驱动芯片最远的左边区域,这样可以减少电机驱动等大电流的器件所带来的干扰。我将晶振也从原来靠近电源芯片旁边挪到了左下方,保证晶振电路的稳定。对于蜂鸣器和电源降压模块,我将他们放到了板子的上方。一番调整后,器件的位置大体定下来了。 我这一次会尤其注意导线的线宽,留出足够的富裕保证线路的可靠。一般的,EDA软件中计算长度都会使用mil单位,具体换算的话是1mil=0.0254mm 根据经验值,当铜箔为1oz厚时,0.4mm宽的导线大概可以通过1A的电流,换算成mil单位就是16mil,所以对于我的这个驱动芯片,最大电流为800ma,我将为电机驱动的线宽设计为40mil,留出超过两倍的富裕,保证稳定的使用。 对于高频信号和低频信号一定要分开布线,尽量避免多跟信号线长距离并行布线,这样会造成很大的干扰。 因为我的板子是两层板,所以没有内置的电源层和地线层,所以我将空白的区域全部铺铜并且和地线连接在一起,并且使用过孔将正反两面的地线连接在一起,我在元器件周围设置了许多过孔去连接两侧地线,保证每个元件都有最近的接地处理。 同时注意滤波电容的布置位置,对于单片机以及L9110芯片的电源滤波电容,一定 要将电容靠近IC芯片放置以起到最好的效果,经过铺铜后的效果如下: 所以呢全部的部分都做完了,我已经将PCB文件发送给工厂加工,经过几天的等待之后,收到了寄回来的板子: 这一次呢只做了5块,因为我担心会出现一些意想不到的问题,所以先少做一点实验一下。收到了板子之后我检查了版面,发现没有看出明显的问题,所以我将元器件一一焊接上,具体的焊接教程可以参考上一篇帖子,里面有详细的讲解,经过一番焊接,我完成了,效果如图:(注:蜂鸣器我没有焊接,电机驱动我也只焊接了一块,只用来做实验用,后续的成品板子我会全部焊接上) 焊接完成之后就是给芯片烧写bootloader了,我使用一片Arduino nano当作烧写器,给这一块烧写bootloader,具体的烧写方法论坛里有很多教程,我在这就不详述了,烧写好了之后,这一块板子就可以使用了!我经过一番测量,发现所有的元件工作良好,电机驱动也可以正常工作,第一次设计出现的问题基本上得到解决,不过唯一的缺憾是这块板子没有5V电压输出,所以我们后续测试的时候只能采用3.3V的设备了。 在设计这块板子中,我遇到了很多困难,也学习到了很多知识以及掌握了很多经验,这将近一个月以来,我不断的完善我的设计,同时又在焊接测试中发现问题,我从中学会了很多技巧也获得了很多经验,所谓在实践中学习吧。希望各位也可以从我的经验中得到一些启发,对于我的这个设计,我相信还有许多不足的地方,希望有经验的大神可以在我的基础上改进,做出功能最强,体积最小的Arduino集成板。我在这里放上我的设计文件,希望大家下载学习,谢谢。 我重新列举一下此板的特点: 1.3路电机驱动(2路双向,1路单向,最大电流800ma每一路) 2.2路3.3V电源接口引出 3.一路3.7V-12V电压输入 4.板载电源电压检测电路 5.一路蜂鸣器报警电路 6.一个NRF24L01接口 7.一个串口(用作下载程序) 8.4路模拟量输入接口 9.一路SPI总线接口 10.预留arduino数字2,3,5,6,9口用作外部输入输出 11一路舵机接口(新增加的) 对于板载USB口的设想,我最近正在学习USB转串口的电路,会在以后的版本中增加USB转ttl芯片,这样就可以不再外接USB转ttl模块给板子烧写程序了,初步决定使用CH340的方案,我会在以后的版本中更新,希望大家持续关注。 到这里所有的制作Arduino最小集成板的过程就结束了,谢谢大家的浏览,如果你也想自己制作Arduino的最小系统板,或者遇到什么问题,欢迎来咨询我。也可以加我的QQ:2877137721来咨询。谢谢大家。 (PS:既这块板子完成之后,我会开始着手设计与之配套的遥控器电路,同样采用NRF24l01的无线通讯方案,如有想了解的同学请继续关注我,谢谢) |
238.32 KB, 下载次数: 1166
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed