26754| 25
|
[项目] 自制Arduino最小系统板,集成N多种功能!!赶快来围观吧》》 |
前文: 最近想做点遥控的小玩具,所以一直在寻找一款实用的开发板(最好是兼容Arduino的,因为我只会玩arduino,对于其他单片机编程烧写什么的一概不知道。。。),所以苦苦寻找了许久,然后发现了下面两款板子:号称世界上最小的arduino:基于ATTINY85的主板以及DF家的beetle。这两块板子体积都挺小的beetle(20*22mm)以及attiny85(23*18mm),功能上来说肯定Beetle更加优秀,但是价格略高。便宜的attiny85仅有的6个端口并不够我使用。。而且对于一些项目来说,对于主板的体积还是有一定要求的,这两块板子搭配上扩展板之后可能过于庞大(而且市面上还找不到这样的扩展板,DF家到是出了一块,但仅仅是将所有引脚引出)。于是纠结好久之后,按捺不住想自己画板子了,于是有了下文。 (上面是两种市面上可以购买到的最小的Arduino板) 第一部分 选取自己想要的功能是十分必要的,俗话说鱼和熊掌不可兼得,画电路板也是一样,不可能一块小小的板子上啥功能都有,所以先要明确自己的使用环境以及所需要的功能!!!:victory: 我的使用环境: 一些无线遥控的玩具或者机器人上,体积上越小越好,这些玩具一般是3.7V锂电池供电的,而且驱动方式一般是以电机或者舵机为主,一般至少3路电机驱动,当然要有可以控制玩具灯光的接口,因为这样比较炫酷,嘻嘻:lol。 有了使用环境,那么需要的功能就很明了了!下面就是我列举的一些功能: 1.首先最主要的是遥控!!(重点!:P),所以一个给无线通讯模块预留的接口是最重要的,同时呢,给无线模块供电工作也要做好!!(不然供电电压不够的话无线模块输出的数据就乱掉了,然后整个单片机就傻掉了。。。。然后就。。。:'() 2.供电方式是3.7V锂电池,所以一路电源升压电路是肯定必要的啦,这个电路可以将锂电池的电源升压到5V之后输出给单片机使用的。那么,电池玩着玩着没电了怎么办?这时候有个电压报警器就是很方便的了,他可以很好的保护我们的电池不会过放电!所以,划重点!!:curse:锂电池供电部分我们需要一个升压电路和一个电压报警器电路。 3.说到电源的问题,是不是我们日常见到的电压有两种呢?一种是3.3V,一种是5V,有些芯片工作需要5V但是有的只要3.3V。你可能会问两个不就是差1.7V吗,接上去也没多大事,然而事实是这个芯片可能会活不久。。(不要问我怎么知道的)因此,为了兼顾多种芯片,我决定多加上输出电压3.3V的稳压电路。 4.驱动方面,我说到主要是以舵机和电机为主,舵机可能不需要驱动(直接接PWM输出就好了),但是电机是必须要接驱动的(曾经有直接用单片机端口驱动电机的,后来他就弃坑了。。。)而且接上驱动模块之后电机还可以调速以及调节正反转。所以至少3路的驱动以及一路或者多路的舵机接口是必要的。 5.控制灯光的接口就比较好弄了,直接怼上单片机的I/O口即可(注意单片机I/O口控制一般小的led还是可以的,谁要控制什么1w或者10w的大功率led灯珠就是作死了。。。) 6.需要带有一些常规的数字接口或者模拟输入接口(这个数量当然是越多越好,方便后期扩展) 整理了一下,我列出了一个表格: 列出来了需要的功能,我感觉整个工作就完成了一大半,有选择恐惧症的我在决定哪些功能时候真的是非常头痛,然而现在感觉好了许多,设计的方向也就比较明了了。 接下来就是纠结的选器件了::Q 1.单片机的话我是真的除了atmel系列之外都不会,所以我毫不犹豫的选了Atmega328P-AU,这个芯片也是Arduino nano上使用的,由于需要体积小巧的要求,所以我选择的是贴片TQFP封装的。而且这个芯片买回来烧写上bootloader之后就可以使用Arduino ide来开发了,这也是我选择它的原因。 2.单片机选了当然需要一个Rs232转串口芯片给Atmega328p写程序啊,但是我并不想给整个板子加上一个电平转换芯片,一个是因为这样会占用本来就小的版面空间和多出一个usb接口,我还不如使用类似Arduino pro mini的那种方案,使用外置的RS232转TTL芯片去给328p写固件,这样可以最大化的节省板面空间(正经脸.JPG) 3.对于无线模块的选择可以说是非常重要了,稳定的模块决定了通讯的质量是否足够高,也决定了遥控的延迟以及手感。这部分我木有太多纠结,因为目标非常明显,就是NRF24L01,用过的都说好。而且使用SPI协议与Atmega328p通讯,速度快且稳定。这里放一张NRF24L01的图: 4. 5V升压的电路的设计我取自一款升压模块的电路,我在网上找到了原理图,如下:芯片使用的是E50D,输入电压0.9V-5V,恒定输出电压5V,最大输出电流超过500ma,足够我使用了。 5.3.3V的稳压芯片我使用的是MIC5205-3.3,MIC5205是一款LDO芯片(低压差线性稳压芯片)输入电压与输出电压之间最少可以只有350mv的电压差,对于电源不太稳定的电路实在再合适不过,最大输入电压16V,最大输出电流150ma,恒定输出电压3.3V。电路图如下: 6.电机驱动我并没有选择使用集成的电机驱动IC,因为我看了看封装都过于庞大,不适合这种小体积项目,而且我并不太需要双向的驱动,只用单向的即可。挑来挑去,我决定使用最简单的mos管驱动电机,便宜而且实用。mos管的话我使用的是nmos管,不建议使用pmos管的原因是pmos管的导通内阻较大,会造成很大的损耗。对着数据表格看了半天之后,我看中了AO3400,最大通过电流5.7A,足够使用了。 7.对于板子我还添加了一路电压输入,因为顾及到有些电池电压在5V以上的情况(例如7V,9V和12V)我的板子也要可以正常工作,于是我添加了一个降压电路,可以将输入的7-12V电压降到5V供给整个系统使用。芯片选的是ME6210A50PG,同样是一款低压差线性稳压芯片,最大输入电压18V,最大输出电流500ma,恒定输出电压5V,电路图如下: 至此为止,所有的器件都选择完毕了,下面就是细化每个部分的设计以及将电路图画出来。我会介绍一些基本的电路知识给大家,请大家拍砖。:lol:lol 第二部分 对于电路的设计,我主张从大到小,从重要到次要的顺序来设计:这样我们可以搞清楚整个系统的主次关系,方便日后查找问题。 1.Atmega328P外围电路的设计 Atmega328p的外围电路着实简单,仅需要几个器件就可以完成(基本上就是晶振电路和复位电路)没有什么好说的,我也省省篇幅,歇一会。。。上图!!! 2.NRF24L01接口的设计 NRF24L01与Atmega328P采用SPI协议进行通讯,所以我将对应的引脚连接到Atmega328P上。在这里我给电源正负极之间接了一个47uf的电解电容,是为了保证电压的稳定(因为NRF24L01对电源的要求还是比较高的) 3.锂电池升压电路的设计(输入0.9-5V,输出5V) 整个升压电路其实就只需要几个零件,在这里我说明需要注意的一些事项:选择的电感一定要是功率电感,二极管的话务必使用肖特基二极管(因为E50D的工作频率在300khz左右,所以普通二极管频率没有肖特基二极管这么快)推荐型号是1N5817或者1N5819 4.3.3V稳压电路的设计(输入5V,输出3.3V) 首先放上电路图,这个电路没有什么需要的外围器件,仅仅一个电容用来滤波即可 5.7-12V降压电路的设计(输入7-12V,输出5V) 这个电路和上一个基本上一样的,就是在输入端上加了一个10uf电容滤波,可以过滤掉一些输入电压的纹波。 6.电机驱动电路的设计 对于电机驱动电路,电路图如下。其中单片机的输出信号脚经过一个保护电阻之后连接在mos管的栅极上,同时在mos管的栅极还有一个电阻接地,这是因为三极管的栅极存在结电容,所以这个电阻给mos管关断时候提供了一条电子释放通道。对于电动机的这类感性负载,用mos管控制开关的时候容易产生较大的感生电动势,容易击穿mos管,于是我添加了一个续流二极管在电动机的两端,来减少反向电压。同样的,这个二极管尽量选择肖特基二极管,以满足频率要求,我这里采用的是1N5819。 7.报警电路的设计 对于这个报警器我想了很久,想过很多方式去控制蜂鸣器的鸣叫,纠结许久之后才定下来这个方案,采用Atmega328p采集电池电压数据,通过一个数字口来控制蜂鸣器的鸣叫。对于电压采集电路,因为输入的电压电压低于5V,所以直接使用Atmega328p的模拟输入端口读取电压数据。 关于控制蜂鸣器的鸣叫,我选择的是有源蜂鸣器,这种蜂鸣器只需要给一个高低电平信号即可发出声音,但是声音频率是固定的,若是选择无源蜂鸣器,我还需要给它输入PWM信号,这样做会占用一个PWM口,所以权衡之下还是使用有源蜂鸣器。 但是纠结的我又想了想,要是没电的时候一直响岂不是很烦人?我更希望是响一声,停几秒,再响一声,再停几秒。。这种的,于是我花了点时间回顾了单稳态触发器(我真的是给自己找坑挖。。。)最后设计出来如下电路: 这里采用555芯片制作了一个单稳态触发器,触发器的输出口通过一个三极管控制蜂鸣器,需要注意的是蜂鸣器同样属于感性负载,务必接上一个续流二极管,这个二极管由于工作频率较低,没有什么限制。但是我还是选用了一个肖特基二极管(并不想多买一种二极管)555芯片的reset端我连接上了Atmega328p的四号端口,用这个脚的信号来控制整个蜂鸣器电路是否工作。这个电路即可控制蜂鸣器响一下,停一下。 8.其他输出接口的设计 首先是给单片机下载程序的接口,如图 然后是两种电源输出的接口(3.3V和5V) 再就是4路模拟量输入接口(在这里我预留了Atmega328p的i2C接口A4和A5,方便连接其他使用i2C的设备) 最后就是6路的数字输出口,其中D3,D5,D6,D9,D10 5路为PWM和I/O复用端口,方便连接舵机,接入其他电机驱动板或者连接其他传感器设备。D2脚作为Atmega328p的外部中断端口,可以控制单片机的中断操作。但是注意,D3,D5,D6口也用来控制板载的mos管,所以当使用板载mos管控制电机时,这几个管脚请不要使用。 总结 至此为止,整个电路就设计完毕了,接下来就需要进行PCB电路板的排版以及布线,这个星期有点小忙,关于接下来的设计我会在下周放出,请大家期待,如果有什么关于电路设计以及PCB板的问题,欢迎大家提问,我会认真的回复你们。。 最后,感谢你们阅读我写的这么多文字,希望我此次做的电路可以对你们提供一些帮助和引导,谢谢。:handshake:handshake |
robo027 发表于 2018-12-11 11:33 东西确实好,但是有点小贵。。。而且不知道他们用的什么电源方案,我感觉我的板子优点可能就是小一点吧(37mm*32mm),但是可能接口不是标准的三线接口(尽管我已经尽量将所有常用的接口全部留出)。再就是我的板子上带有报警,这点可能市面上少有最小板带有了吧。在程序下载方面我需要用到一个ch340模块,但是romeo不用,后期我可能会考虑加一个串口转ttl电路上去,尽量保持大小不变吧。。。关于他的芯片方案的话还是不错的,Ti的蓝牙芯片用的还挺广,而且是集成的,这点很不错。反观我的板子,我想集成NRF24l01上去,但是由于不会画PCB天线,只能作罢。。。总结一下,我的板子和romeo可能主攻方向不同,我的准备用在遥控类项目上的,比如遥控车遥控船,遥控机器人什么的。。。而romeo主攻在手机控制的一些项目上,可能方向不太一样,不过我倒是建议dfrobot可以基于乐鑫esp8266开发一个板子,应为romeo上有两块芯片,一片蓝牙一片atmega328,有些浪费了。用esp8266就可以集成wifi与单片机功能了,正好还可以用arduino环境开发,一举多得。 |
#嘉诚欧巴# 发表于 2018-12-8 13:12 确实板子上这样的接口过少,但是由于板子大小限制,没法添加那么多。在最新的帖子中,我添加了一路舵机的接口,连接在Atmega328的10号引脚,既可以做舵机接口也可以用来处理传感器的信号 |
robo027 发表于 2018-12-16 18:26 关于24L01这里有篇帖子讲的很不错,你可以看看 https://blog.csdn.net/ling3ye/article/details/53054959 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed