最近想做点遥控的小玩具,所以一直在寻找一款实用的开发板(最好是兼容Arduino的,因为我只会玩arduino,对于其他单片机编程烧写什么的一概不知道。。。),所以苦苦寻找了许久,然后发现了下面两款板子:号称世界上最小的arduino:基于ATTINY85的主板以及DF家的beetle。这两块板子体积都挺小的beetle(2022mm)以及attiny85(2318mm),功能上来说肯定Beetle更加优秀,但是价格略高。便宜的attiny85仅有的6个端口并不够我使用。。而且对于一些项目来说,对于主板的体积还是有一定要求的,这两块板子搭配上扩展板之后可能过于庞大(而且市面上还找不到这样的扩展板,DF家到是出了一块,但仅仅是将所有引脚引出)。于是纠结好久之后,按捺不住想自己画板子了,于是有了下文。

选取自己想要的功能是十分必要的,俗话说鱼和熊掌不可兼得,画电路板也是一样,不可能一块小小的板子上啥功能都有,所以先要明确自己的使用环境以及所需要的功能!!!

我的使用环境:

一些无线遥控的玩具或者机器人上,体积上越小越好,这些玩具一般是3.7V锂电池供电的,而且驱动方式一般是以电机或者舵机为主,一般至少3路电机驱动,当然要有可以控制玩具灯光的接口,因为这样比较炫酷,嘻嘻:lol。有了使用环境,那么需要的功能就很明了了!下面就是我列举的一些功能:

  • 1.首先最主要的是遥控!!(重点!),所以一个给无线通讯模块预留的接口是最重要的,同时呢,给无线模块供电工作也要做好!!(不然供电电压不够的话无线模块输出的数据就乱掉了,然后整个单片机就傻掉了。。。。然后就。。。

  • 2.供电方式是3.7V锂电池,所以一路电源升压电路是肯定必要的啦,这个电路可以将锂电池的电源升压到5V之后输出给单片机使用的。那么,电池玩着玩着没电了怎么办?这时候有个电压报警器就是很方便的了,他可以很好的保护我们的电池不会过放电!所以,划重点!!锂电池供电部分我们需要一个升压电路和一个电压报警器电路。

  • 3.说到电源的问题,是不是我们日常见到的电压有两种呢?一种是3.3V,一种是5V,有些芯片工作需要5V但是有的只要3.3V。你可能会问两个不就是差1.7V吗,接上去也没多大事,然而事实是这个芯片可能会活不久。。(不要问我怎么知道的)因此,为了兼顾多种芯片,我决定多加上输出电压3.3V的稳压电路。

  • 4.驱动方面,我说到主要是以舵机和电机为主,舵机可能不需要驱动(直接接PWM输出就好了),但是电机是必须要接驱动的(曾经有直接用单片机端口驱动电机的,后来他就弃坑了。。。)而且接上驱动模块之后电机还可以调速以及调节正反转。所以至少3路的驱动以及一路或者多路的舵机接口是必要的。

  • 5.控制灯光的接口就比较好弄了,直接怼上单片机的I/O口即可(注意单片机I/O口控制一般小的led还是可以的,谁要控制什么1w或者10w的大功率led灯珠就是作死了。。。)

  • 6.需要带有一些常规的数字接口或者模拟输入接口(这个数量当然是越多越好,方便后期扩展)

整理了一下,我列出了一个表格:

元件选择

1. 单片机的话毫不犹豫的选了Atmega328P-AU,这个芯片也是Arduino nano上使用的,由于需要体积小巧的要求,所以我选择的是贴片TQFP封装的。而且这个芯片买回来烧写上bootloader之后就可以使用Arduino ide来开发了,这也是我选择它的原因。

2.单片机选了当然需要一个USB转串口芯片给Atmega328p写程序啊,但是我并不想给整个板子加上一个电平转换芯片,一个是因为这样会占用本来就小的版面空间和多出一个usb接口,我还不如使用类似Arduino pro mini的那种方案,使用外置的USB转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,电路图如下:
至此为止,所有的器件都选择完毕了,下面就是细化每个部分的设计以及将电路图画出来。我会介绍一些基本的电路知识给大家,请大家拍砖。

电路的设计

对于电路的设计,我主张从大到小,从重要到次要的顺序来设计:这样我们可以搞清楚整个系统的主次关系,方便日后查找问题。1.Atmega328P外围电路的设计
Atmega328p的外围电路着实简单,仅需要几个器件就可以完成(基本上就是晶振电路和复位电路)没有什么好说的,我也省省篇幅,歇一会。。。上图!!!2.NRF24L01接口的设计
NRF24L01与Atmega328P采用SPI协议进行通讯,所以我将对应的引脚连接到Atmega328P上。在这里我给电源正负极之间接了一个47uf的电解电容,是为了保证电压的稳定(因为NRF24L01对电源的要求还是比较高的)3.锂电池升压电路的设计(输入0.9-5V,输出5V)
整个升压电路其实就只需要几个零件,在这里我说明需要注意的一些事项:选择的电感一定要是功率电感,二极管的话务必使用肖特基二极管(因为E50D的工作频率在300khz左右,所以普通二极管频率没有肖特基二极管这么快)推荐型号是1N5817或者1N58194.7-12V降压电路的设计(输入7-12V,输出5V)
这个电路和上一个基本上一样的,就是在输入端上加了一个10uf电容滤波,可以过滤掉一些输入电压的纹波。5.电机驱动电路的设计
对于电机驱动电路,电路图如下。其中单片机的输出信号脚经过一个保护电阻之后连接在mos管的栅极上,同时在mos管的栅极还有一个电阻接地,这是因为三极管的栅极存在结电容,所以这个电阻给mos管关断时候提供了一条电子释放通道。对于电动机的这类感性负载,用mos管控制开关的时候容易产生较大的感生电动势,容易击穿mos管,于是我添加了一个续流二极管在电动机的两端,来减少反向电压。同样的,这个二极管尽量选择肖特基二极管,以满足频率要求,我这里采用的是1N5819。6.报警电路的设计
对于这个报警器我想了很久,想过很多方式去控制蜂鸣器的鸣叫,纠结许久之后才定下来这个方案,采用Atmega328p采集电池电压数据,通过一个数字口来控制蜂鸣器的鸣叫。对于电压采集电路,因为输入的电压电压低于5V,所以直接使用Atmega328p的模拟输入端口读取电压数据。
关于控制蜂鸣器的鸣叫,我选择的是有源蜂鸣器,这种蜂鸣器只需要给一个高低电平信号即可发出声音,但是声音频率是固定的,若是选择无源蜂鸣器,我还需要给它输入PWM信号,这样做会占用一个PWM口,所以权衡之下还是使用有源蜂鸣器。
但是纠结的我又想了想,要是没电的时候一直响岂不是很烦人?我更希望是响一声,停几秒,再响一声,再停几秒。。这种的,于是我花了点时间回顾了单稳态触发器(我真的是给自己找坑挖。。。其实后来发现用定时器中断也可以做,那个样可以省略很多元器件)最后设计出来如下电路:

这里采用555芯片制作了一个单稳态触发器,触发器的输出口通过一个三极管控制蜂鸣器,需要注意的是蜂鸣器同样属于感性负载,务必接上一个续流二极管,这个二极管由于工作频率较低,没有什么限制。但是我还是选用了一个肖特基二极管(并不想多买一种二极管)555芯片的reset端我连接上了Atmega328p的四号端口,用这个脚的信号来控制整个蜂鸣器电路是否工作。这个电路即可控制蜂鸣器响一下,停一下......

阅读原文,查看完整内容!

arduino控制点阵屏与蜂鸣器_还在为遥控项目发愁?Arduino遥控套装解决你的所有问题(下)...相关推荐

  1. arduino控制点阵屏与蜂鸣器_数字制造讲义08-Arduino声音应用2

    数字制造讲义01-成为数字世界的建造者 数字制造讲义02-Arduino入门 数字制造讲义03-电路基础 数字制造讲义04-负责输入和输出的智能元件 数字制造讲义05-软硬件数据通信 数字制造讲义06 ...

  2. umi脚手架搭建的项目_还在从零开始搭建项目?手撸了款快速开发脚手架!

    之前开源了一款项目骨架mall-tiny,完整继承了mall项目的整个技术栈.总感觉mall-tiny集成了太多中间件,过于复杂了.这次对其进行了简化和升级,使它成为了一款拥有完整权限管理功能的快速开 ...

  3. Arduino控制灯与蜂鸣器

    最近在学习Arduino的简单器件组合 实验内容 按下按键,灯开始变换颜色, 当红灯亮了蜂鸣器响,蓝灯亮起时都不响 const int BLUE=11; //声明变量,蓝灯引脚接在第11针脚: con ...

  4. python生成的词云没有图案_还在为专栏封面发愁?我用Python写了个词云生成器!...

    妈妈再也不用担心我写专栏找不到合适的封面了!B站专栏的封面至少是我一直头疼的问题,每次写完文章却找不到合适的图片作为封面. 词云是一个很不错的选择,既美观,又提纲挈领.网上也有词云生成的工具,但大多收 ...

  5. Arduino控制8*8点阵显示(一)

    材料准备 Arduino UNO 1088AS 8*8点阵 杜邦线若干 接线步骤 行列定义 内部结构图 行共阴极 行共阳极 这里使用的点阵是共阴极的,那么接下来我们来看看接线,那么接线前我们需要认识一 ...

  6. arduino控制一位数码管、控制二位数码管动态显示(用不到中断程序)

    目的: 1.利用arduino控制一位共阳极数码管显示 2.利用arduino控制二位共阳极数码管显示 前言: 前段时间,在网上看到了一个视频,是关于二位数码管动态显示的视频,感觉很新奇,就想把它做出 ...

  7. 一种非常简单的用arduino控制蜂鸣器播放音乐的方案

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 今天来聊聊用arduino控制蜂鸣器播放音乐的方案,当然必须还是老风格,虽然可能不是最 ...

  8. arduino控制小车转向_利用XECU和激光雷达快速搭建入门级的自动驾驶小车

    利用XECU和激光雷达快速搭建入门级的自动驾驶小车 1 简介 如果关注过我们之前的推文和视频演示,相信大家对我们的XECU应该已经很熟悉了.那么今天就向大家介绍一下,如何利用我们的XECU和激光雷达快 ...

  9. proteus中仿真arduino控制L298实现电机正反转

    前面几篇博文,我们基本了解了几种在proteus中实现arduino仿真的方法(<proteus从开发板新建arduino仿真项目实例><Proteus Visual Designe ...

最新文章

  1. Nor 与Nand Flash 区别
  2. 浅析网站优化知识自学从哪些方面开始起步
  3. NYOJ 456 邮票分你一半
  4. GeoHash -------寻找附近人
  5. Python实用小技能,一个比一个高级!
  6. 面试官:InnoDB中一棵B+树可以存放多少行数据?
  7. java控制台输出百分比进度条示例
  8. 记得重用layout
  9. java oracle数据库连接代码,java连接oracle数据库代码实例(注释详解)
  10. HTML:调用静态页面html 的几种方法
  11. leetcode946. Validate Stack Sequences
  12. 事务失败返回_分布式事务方案 TCC
  13. Dataset增加行数据及常用方法
  14. 【优化算法】贪婪策略和变异策略的混合蚁群算法【含Matlab源码 1521期】
  15. Android五子棋游戏源码详解
  16. activex控件 java开发_ActiveX控件开发总结
  17. 矿井下无线基站和地面服务器,煤矿井下无线通信系统_矿井通信
  18. 计算机excel中百分比怎么算,excel如何自动算百分比
  19. Hugging Face:成为机器学习界的“GitHub”
  20. 生成Bernese格式的地球自转参数文件-POLUPD

热门文章

  1. python界面-python 可视化界面
  2. 财务有必要学python吗-会计要学python
  3. python入门经典-入门python有什么好的书籍推荐?
  4. 从零开始学习python编程-如何从零开始学python?
  5. python 下载文件-用python下载文件的若干种方法汇总
  6. python工资高还是java-深圳python工资高还是java
  7. 自学python能学成吗-大家觉得自学python多久能学会?
  8. python发音-Python如何实现文本转语音
  9. iphone之使用讯飞语音sdk实现语音识别功能
  10. 一种多功能语音识别技术和音乐播放器相结合的方法