自制Arduino遥控套装(上)

最近制作了一个基于Arduino的遥控器和配套的接受板,可以用在一些遥控小车或者机器人上面,用的无线方案使最常见的NRF24L01,接受板使用的是ATmega328P控制器,遥控器使用的是ATmega8A控制器 ,这一章我带来遥控器的制作过程。

这次我设计了一个遥控器的板子,体积很小,整个版面只有9.6mm*4.6mm,可以称的上是掌上遥控器,并且常用功能都不少。

设计篇

首先当然是对整个遥控器的功能规划,先定目标,就是我的成品需要达到什么功能,这样方便之后设计中可以保证我们目标的专一以及成品后就可以按照我的目标表去一一核对我的目标功能是否全部达标。
1.单片机选择
对于单片机我是选择atmega8,其实atmega328也可以选择,但是价格上贵一些,但是遥控器这样简单的设备来说用不着328那么大的内存,所以选择Mega8。两个芯片的引脚分部都是一样的,所以后期可以更换单片机芯片,而不用改变电路结构,下面是Atmega8的引脚图。

Atmega8A引脚图

2.无线通讯模块
采用的还是NRF24l01这款无线模块,在某宝上有许多版本的NRF24l01,我使用的是采用DIP2*4引脚输出的这款,据说还有一款加载了功率放大器的板子,接口是兼容的,所以如果后期想增加遥控距离的话可以采用带功放的模块。
关于给它供电的电路,还是使用MIC5205的方案,我在许多项目中都会用到它,体积小巧(采用SOT23-5封装)并且输出电流足够(150ma),外围电路足够简单,两个电容即可。不过大家在选择电容的时候注意它的最大承受电压,一般商家会在参数里面标注,我选择的是耐压10V的10uf电容。

常见的NRF24L01模块


带有功率放大器的NRF24L01模块,通讯距离较远


MIC5205线性稳压芯片,外围电路简单

3.摇杆
首先是作为一个遥控器,该有的比例控制摇杆肯定必须有,这样我们就可以操控一些比例通道(例如电机速度,灯的亮度,舵机旋转角度以及所有需要连续变化的量)。参照市面上的常用设计来看,设计两个全向摇杆是比较好的选择(类似于PS2手柄上的摇杆)关于摇杆的原理,我简单的介绍一下:

常见的摇杆

其实摇杆的本质就是让摇杆的转轴连接着一个电位计,使用电位计对摇杆进行定位,这样我们通过读取电位计的电压值就可以计算出摇杆的位置。如果是全向摇杆,一般就会有两个电位计去对摇杆在X轴和Y轴上的位置进行定位,这样使用单片机的ADC即可读取到电压,从而得知摇杆的位置。
那么每一个摇杆都有两个运动轴,两个摇杆就有四个运动轴,这样我就可以用两个摇杆去控制四个比例通道了。

4.按键
对于四个比例通道的控制显然不够用,有些项目也需要开关量的控制(比如灯的开关,模式的切换)于是我设计了两个额外的按键开关,可以用来控制一些开关量。

按键开关常见接法,使用单片机端口内部电阻上拉

关于按键开关的检测电路我在这里直接将按键开关的两个引脚分别连接到GND和单片机的引脚,没有设置上拉电阻的原因是我会使用单片机内部的上拉电阻,所以不再需要外接上拉电阻,这样也节省了版面空间。
对于引脚的连接是需要分外注意的一点,一定要和单片机的外部中断引脚连接,这里讲解一下原因:如果不使用中断引脚去检测按键开关的状态话,由于按键操作的时间很短,这容易造成单片机在运行其他程序的时候错过按键检测的程序,这样按键的按下就无法检测到。如果按键连接在中断引脚,这样无论单片机在执行什么程序,都可以第一时间停止执行当前程序,进入中断服务程序去执行按键指令。对于Atmgea8来说,有两个外部中断引脚,于是我将这两个按键连接到这两个引脚上。

5.boost升压电路
这一次给Atmega8供电的电路是采用E50D方案的升压电路,最大输出电流800ma左右,足够使用了。在这里提醒一句,由于E50D工作频率在300khz左右,所以大家在布线的时候注意和低频线路的隔离。图中的二极管选择的是肖特基二极管,有着速度快的特性。

典型的boost升压电路

6.供电
在遥控器的供电上我好不犹豫选择了18650锂电池,这种规格的电池是市面上最常见的(许多充电宝里面都会用到)而且内阻也低,体型规整,方便布线以及固定。具体哪个牌子的18650锂电效果好,据说松下的电池不错,但是价格感人。。:L所以我用了神火的18650,先试试,不行的话换其他家的。

7.充电电路
充电芯片的话,对于一节锂电池的方案大家还是比较统一的,某宝上搜18650充电板一搜一大把,但是究其使用的充电IC,基本上都是TP4056。不仅便宜而且用起来反响不错,唯一问题就是发热有点大。。。
我放出我的电路图,大家如果有想设计充电电路的也可以借鉴一下。

TP4056充电电路,充电绿灯常亮,充满后熄灭

R2连接在PROG引脚,用来设定充电电流,充电电流的设定可以参考公式:I=1/R*1200来设定,CHRG是充电状态指示引脚,当充电进行时,为低电平,充电完成后为高阻态。充电的接口用的就是micro usb,这样使用手机充电器就可以充电。

8.电压检测
关于电池保护电路我也想过,但是想到这是遥控器,万一低电量的时候保护板把输出断开了怎么办?(保护电路会在电池低电量的时候断开输出电压)那样岂不是会造成失控的后果?于是我放弃了使用保护电路,改为使用电压检测电路,这样当电池低电压的时候,可以维持整个系统的运作一段时间而不会立刻断电,从而提醒使用者更换电池。:lol
电压检测电路的话很简单,直接连接到atmega328的A0引脚,用ADC采样电压值。而关于报警电路,我使用555构成单稳态触发器,可以控制蜂鸣器断续鸣叫。

555单稳态触发器

9.USB转TTL电路
因为使用了micro usb接口,索性再添加一个USB转TTL电路,这样烧写程序和充电就可以共用一个接口了,使用起来方便了许多。
至于TTL芯片的选用,自然是考虑CH340系列芯片了,使用范围很广而且比较稳定,在CH340的产品线中也有很多不同型号的,使用比较多的是CH340G以及CH340C的型号,但是由于他们使用的是SOIC16的封装,体积较大,所以我采用了CH340E,是CH340中最小的一款,外围电路简单,十分适合我的项目。

典型的CH340E电路

其中TNOW表示串口正在发送,高电平有效,于是我接了一个LED灯来指示串口的状态,这样的设计在一些USB转TTL模块上也比较常见。

10.预留接口
由于遥控器上不会涉及到太多的外接设备,这一次我仅仅预留了少许的接口。因为Atmega8需要烧写bootloader,所以我预留了一个烧写的接口,方便以后烧写。对于I2C接口我也有预留,主要是方便以后连接led显示屏使用

预留烧写Bootloader 的端口

原理图绘制好了之后就是导出绘制PCB板了,因为要手持操作,所以对于外形还是很重要的,我绘制了一个长方形的边框,并把四周倒圆角,这样摸起来不会刮手。
经过一个多小时的布线以及摆放元件位置,我完成了设计:

正面


背面

这里有个改进的地方,就是发现这个电池盒的封装不对,于是又绘制了新的封装,并且将图纸发到工厂去了。。。

工厂制板中。。。。。。。。。

工厂制板中。。。。。。。。。

工厂制板中。。。。。。。。。

工厂制板中。。。。。。。。。

工厂制板中。。。。。。。。。

工厂制板中。。。。。。。。。

焊接测试篇

拿到了板子,接下来就是焊接的环节了,大家注意,一般正规PCB厂家发回来的板子都是真空包装的,这样可以防止焊盘被氧化,所以大家一定不要将所有的板子一股脑全部拿出来,我的习惯是焊几片我就拿几片出来,这样可以有效防止焊盘氧化。
下面就是刚刚寄回来的板子,用真空包装袋装着,热腾腾的:

制作好的板子

当时为了焊接的方便,我将所有的元件基本上都放在了板子的一面,这样可以避免焊接时候需要板子两边翻来翻去的问题,也可以减少麻烦。

板子的正反面

在选取电池的时候,我也在18650和锂聚合物电池两者之间0徘徊过,两者的最大区别就是外形,一个扁平长方形一个是圆柱形,但是考虑到握持手感的问题,如果使用锂聚合物可能会比较单薄,所以我特地用了18650电池,这样手握起来会比较饱满。我把18650电池盒的位置放在了板子的最下部。

介绍完了整体的布局,下面就是焊接过程了。对于焊接过程,并没有什么困难,关键就是对于引脚较密集的芯片的焊接,我使用了助焊剂,这样可以保证焊点不会出现粘连以及不饱满的现象。


在这次设计中我设计了USB转TTL芯片的位置,原因是充电和烧写程序正好可以公共用一个端口,这样节省了版面空间。对于芯片的选择,大家各执己见,但是我综合了我的板子情况考虑后,我选择了CH340E,仅仅需要几个外围滤波电容即可完成整个电路,这应该是市面上体积最小的USB转TTL方案,大家也可以考虑采用。


CH340 USB转TTL电路

在设计中,我提到了两款ATMEGA系列芯片,一款是ATMEGA28,一款就是ATEMGA8,两者具有相同的引脚排布以及外围电路,区别就是内部资源的多少。但是对于我的遥控器来说,使用ATMEGA328显然是大才小用,因为整个板子只会涉及到ADC采样以及SPI总线通信(与NRF24L01)所以价格低廉的ATMEGA8是我最好的选择。

Mega8A单片机

最后就是摇杆了,摇杆我使用的是PS2手柄上用的摇杆,某宝价格在3元一个左右,我的一个板子需要两个摇杆。

整个板子焊接完成大概用了一个多小时,然后就是对板子的测试了,关于充电功能,我设计的是充电红灯亮,充好电之后红灯熄灭,下面是测试结果。
充好电之后,将开关拨动到N的位置,可以看到电源红灯亮,说明E50D升压电路正常工作中。。。

充电中


供电电路正常

关于测试的视频我贴在这里:

关于遥控距离的测试我在这里就不测试了,因为我采用的是已经成品的方案,遥控器的距离完全取决于我的发射模块的品质以及功率,同时因为某宝上这种NRF24L01模块的接口大都兼容,所以自然我的板子也可以插接带有功放模块的NRF24L01无线通讯模块,这样就可以增加遥控距离。而且我单独为NRF24L01设计了一个5V降3.3V电路(最大150MA),所以供电电流有足够的保障。
关于外壳的问题我预留了4个安装孔,这样可以用3D打印或者木板切割制作一个外壳,使用起来会更加美观。
下面还是说一下这个遥控器的性能参数:
1.MCU:ATMEGA8A 16MHZ 5V
2.板载18650升压电路,输出电流超过500ma
3.板载MIC52053V3降压电路,输出电流150ma
4.板载TP4056锂电池充电电路,默认充电电流200ma
5.板载USB转TTL电路,直接用USB线下载程序
6.一个蜂鸣器报警电路
7.两个摇杆,可以提供4路模拟量输入
8.两个按键开关,可以采用中断触发
9.一个I2C接口并且带有5V电源输出,可以用来连接其他i2C设备
10.一个SPI接口,同时可以用来烧写bootloader
11.小巧便携:PCB尺寸96mm*49mm


本文为我原创

本文禁止转载或摘编

-- --
  • 投诉或建议
评论