查看: 1127|回复: 5

[项目] 《第四章》自制Arduino最小系统板,经过再次改进后终于完成

[复制链接]

该用户从未签到

发表于 2018-12-6 21:31 | 显示全部楼层 |阅读模式
经过了上次的失败后,我又重新设计了电路,选取了一些合适的器件来改进我的这块板子,我之前总结了我的第一版电路的一些问题,我会在这一版的设计中来完善它。。。
首先放上我之前的问题:
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芯片。
      下面给出它的数据表:
2345截图20181203213113.jpg


可以看出最大输出电流超过1A,足够我的使用,而且支持2.5V到12V的输入电压,非常适合我的项目,所以我就决定使用它了!
     电路的设计我在这款芯片的数据手册里面找到了如下的典型电路,我直接使用这个电路即可,下面是电路图:

2345截图20181203213604.jpg


对于这个电路我简单的讲解一下外围元件的功能,电压输入首先经过2个10uf的滤波电容,进入到芯片中,然后经过内部斩波电路,从out口输出,输出端通过两个电阻分压形成反馈电压,从FB口进入,同时输出电压给Power Good端口提供上拉,最后经过3个22uf滤波电容输出。电感L1给斩波电路提供了储能,所以会通过大电流,这点在布线的时候注意留出足够的线宽。


二、采用ME6210A33的降压电路

     查询Atmega328手册,发现Atmega328同样可以在3.3V电压下运行,而我供电使用的锂电池最低电压是咋3.7V左右,所以完全可以使用一个低压差线性稳压器为整个电路提供电源,由于我使用的无线模块NRF24L01同样是工作在3.3V电压的,所以这一举动可以将原来的三个电源IC缩减到一个,这会省下很多的空间以及价格。故我开始寻找合适的稳压芯片。对于这款稳压芯片,我需要压差非常小的稳压IC,而且同样需要可以兼容我的大电压输出(12V),所以一番寻找过后,我选择了ME6210A33这款,下面是数据表:

2345截图20181203215030.jpg


可以看出在200ma的输出电流环境下,输入与输出之间的压差只有260mv,这个参数完全可以达到我的要求,而且最大输出电流可以达到500ma,虽说没有TPS63060的输出电流大,但是也是足够我使用的,而且最主要的是ME6210A33的外围电路简单,故我将选择这个芯片方案,我在这款芯片的数据手册里面找到了典型电路,我将直接使用它:
2345截图20181203215433.jpg


整个电路非常简单,外围电路只需要两个滤波电容即可。
到这里,电源电路的改进就结束了。


2.电压采样电路
由于需要采集宽范围的电压(3.7-12V),最大电压超出单片机所能够承受的电压了,我不能直接将Atmega328的模拟输入引脚连接到电压输入上,所以我需要设计一个分压电路,电路图如下:

2345截图20181203220022.jpg


由于使用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,足够我的使用了,下面放出典型的电路图:

2345截图20181203221445.jpg


需要大家注意的是,这类驱动IC一般都内置功率型NMOS管以及续流二极管,无需外接续流二极管,所以建议大家在驱动电机的时候尽量选择这类驱动IC,可以省略很多外围器件。
     至此元器件的问题都解决了,下面是PCB布线上的问题解决。


4.关于555芯片复位电路的下拉电阻
     上一次做的555芯片没有接下拉电阻导致Reset引脚的电位不稳定,导致上电之后蜂鸣器不受单片机控制的问题。于是我添加下拉电阻来稳定555芯片Reset引脚的电位,由于我的555芯片是低电平复位的,所以我添加了47K的下拉电阻,这样保证了555默认情况下为复位状态,不会有输出,而当单片机引脚给出高电平时,电阻上方为高电平信号,使能555芯片从而让蜂鸣器发声。

                                                          第二部分
由于我更换了新的电源电路以及驱动IC,所以我的PCB电路需要重新编排各个元件的位置以及重新布线,为了尽可能的考虑到各个器件的最佳工作环境以及最佳工作状态,我采用手动布线去有针对性的考虑各个器件的问题。
由于采用集成IC驱动电机,而且有三路,所以我将板子右端部分留给电机驱动芯片,并将关键的高频信号线(连接NRF24l01的SPI总线)以及预留的SPI接口全部放在离驱动芯片最远的左边区域,这样可以减少电机驱动等大电流的器件所带来的干扰。我将晶振也从原来靠近电源芯片旁边挪到了左下方,保证晶振电路的稳定。对于蜂鸣器和电源降压模块,我将他们放到了板子的上方。一番调整后,器件的位置大体定下来了。

2345截图20181204205046.jpg


我这一次会尤其注意导线的线宽,留出足够的富裕保证线路的可靠。一般的,EDA软件中计算长度都会使用mil单位,具体换算的话是1mil=0.0254mm
根据经验值,当铜箔为1oz厚时,0.4mm宽的导线大概可以通过1A的电流,换算成mil单位就是16mil,所以对于我的这个驱动芯片,最大电流为800ma,我将为电机驱动的线宽设计为40mil,留出超过两倍的富裕,保证稳定的使用。
对于高频信号和低频信号一定要分开布线,尽量避免多跟信号线长距离并行布线,这样会造成很大的干扰。
因为我的板子是两层板,所以没有内置的电源层和地线层,所以我将空白的区域全部铺铜并且和地线连接在一起,并且使用过孔将正反两面的地线连接在一起,我在元器件周围设置了许多过孔去连接两侧地线,保证每个元件都有最近的接地处理。
同时注意滤波电容的布置位置,对于单片机以及L9110芯片的电源滤波电容,一定 要将电容靠近IC芯片放置以起到最好的效果,经过铺铜后的效果如下:

2345截图20181204210010.jpg 2345截图20181204210021.jpg


所以呢全部的部分都做完了,我已经将PCB文件发送给工厂加工,经过几天的等待之后,收到了寄回来的板子:
微信图片_20181206210430.jpg 微信图片_20181206210442.jpg


这一次呢只做了5块,因为我担心会出现一些意想不到的问题,所以先少做一点实验一下。收到了板子之后我检查了版面,发现没有看出明显的问题,所以我将元器件一一焊接上,具体的焊接教程可以参考上一篇帖子,里面有详细的讲解,经过一番焊接,我完成了,效果如图:(注:蜂鸣器我没有焊接,电机驱动我也只焊接了一块,只用来做实验用,后续的成品板子我会全部焊接上)
微信图片_20181206210445.jpg 微信图片_20181206210449.jpg 微信图片_20181206210452.jpg


焊接完成之后就是给芯片烧写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的无线通讯方案,如有想了解的同学请继续关注我,谢谢)





自制最小板资料.zip

238.32 KB, 下载次数: 28

该用户从未签到

发表于 2018-12-10 08:55 | 显示全部楼层
这个值得鼓励。 这个模拟接口,留的是可以 IIC  通信共用的针口么?
  • TA的每日心情
    开心
    2019-2-21 00:35
  • 签到天数: 691 天

    [LV.9]以坛为家II

    发表于 2018-12-10 11:14 | 显示全部楼层
    鼓励!鼓励!精神可嘉!继续加油!

    该用户从未签到

     楼主| 发表于 2018-12-10 16:10 | 显示全部楼层
    上海老王 发表于 2018-12-10 11:14
    鼓励!鼓励!精神可嘉!继续加油!

    谢谢,还在画遥控器板子

    该用户从未签到

     楼主| 发表于 2018-12-10 16:10 | 显示全部楼层
    qq667121 发表于 2018-12-10 08:55
    这个值得鼓励。 这个模拟接口,留的是可以 IIC  通信共用的针口么?

    当然了,预留就是要预留功能多的接口
  • TA的每日心情
    无聊
    2019-2-16 14:16
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2019-2-10 17:03 | 显示全部楼层
    讲的很详细 ,学习了。
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    博哥零基础教你玩转ESP8266(十三) ESP8266WiFiGeneric库
    博哥零基础教你玩转ESP826
    帖子导航帖 博哥零基础教你玩转ESP8266(一) 重识ESP8266 博哥零基础教你玩转ESP8266
    求助!WeMos D1 WiFi怎么接0.96寸OLED?(ㄒoㄒ)
    求助!WeMos D1 WiFi怎么
    求助!WeMos D1 WiFi怎么接0.96寸OLED?(ㄒoㄒ) 想用WeMos D1 WiFi接收服务器的数据然
    串口发送16进制指令求助
    串口发送16进制指令求助
    我准备串口发出16进制指令到我的外置设备 代码如下图 我分别监控ARDUINO的tx口和USB口
    一文教你选择Arduino开发板,小白进
    一文教你选择Arduino开发
    笔者在2016年接触了Arduino,跳了万条坑,行了千里弯,到今天也算是Arduino的一
    大神们!1602显示屏上的MQ2浓度示数不是实时监测的何解
    大神们!1602显示屏上的MQ
    本人小白,刚刚接触arduino,长时间的查阅资料后,通过复制修改代码接线实现了DHT11实
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表