本帖最后由 oyingzi007 于 2013-6-30 22:34 编辑
潜水已久,最近做了一款遥控器,跟大家分享下过程。
一、介绍:1. 观看视频
优酷视频: v.youku.com/v_show/id_XNTc2MjcxNzY4.html (复制到地址栏打开)
2. 资源说明
3. 适用场合: 遥控器软件开源,可自行修订通信协议。因此,该遥控器可以用于遥控如:四轴飞行器、各类航模、直立小车、飞思卡尔智能车等。用途在哪主要取决于应用场所。
二、硬件原理篇:1. 硬件介绍:
1.1 拨盘电位器:外观:
可用于如速度控制、位置控制。十分灵活。拨盘电位器选用阻值为10K。
1.2 拨码开关:外观:
可用于设定状态,如调试模式、正常模式、极限模式等。拨上为导通。
1.3 按键:外观
可用于参数设定、紧急按钮等作用。可通过软件识别触发、或者常按。
1.4 3D摇杆:外观:
作用:可获得操控的力度及方向,实质是两个垂直摆放的电位器来获得的。通过电位器的线性变化,可以获得对应的摇杆坐标值。可用于方向遥控、速度遥控、姿态遥控等。
1.5 nRF24L01:2.4G通信,可用于发送我们遥控器的数据。操作简单易上手。采用SPI通信方式。 1.6 预留MPU6050以及AK8975.MPU6050集成陀螺仪和加速度计,AK8975是磁力计。通过这三样可以进行融合,获取Yaw、Pitch以及Roll。 采用IIC通信方式。
1.7 UART接口:数据不仅可以通过2.4G无线通信,也可以通过串口进行数据通信。 2. 原理讲解:2.1 AD部分:外设基本情况就上面介绍的那样。遥控器上有2个摇杆、2个拨盘电位器,也就是说控制器至少要有6路AD对其进行采样。控制器采塘M054,是ARM 32-bit Cortex-M0内核。
AD采样计算: AD基准电压是Vref(这个电压一般就是VDD),那么AD口的电压和AD值的关系就是: V= Vref * (AD / MAX); AD是12位,所以MAX = 2^12 – 1 也就是4095,系统的参考电压是3.3V Vx处电压值:
单位:V 这样可以算出通过测量得出的电压值与系统AD采集完计算的值是否正确。 以上AD部分适用于拨盘电位器、3D摇杆以及锂电池电压测量。 2.2 按键及拨码开关: 按键触发时,电平被拉低。单片机进行周期性采集可以获得按键的状态。但是由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动:
可用软件滤波的方法来去除这些干扰。常见的为软件延时、或者隔10ms以上的间隔进行采样。以此进行消抖。 拨码开关常处以常开或者常闭状态,故方便处理。程序上将拨码开关的状态认为是按键一直按住或者断开来处理。十分方便。
2.3 电源处理: 锂电池充满电为4.2V左右,释放完电量大概在3.7V。遥控器的电压为3.3V,也就是说没电时候的压差大概在0.4V或者更低。根据ASM1117-3.3 这款芯片压差范围在0.4V底下是无法工作提供3.3V电压(实际测量也是无**常工作中极低压差)。因为稳压器的选择选用XC6206P332MR,这款芯片可以提供3.3V电压,也能正常工作在这么低的压差。
2.4 OLED12864显示屏:OLED显示自发光,无需背光源,无论白天夜晚显示明亮锐利!全屏点亮显示 整机耗电约22.75mA;全黑不显示不休眠,耗电1.2mA;普通汉字整屏显示,耗电约5mA;休眠状态约几百uA。如何显示将在软件篇介绍。
2.5 2.4G通信模块:采用nRF24L01,SPI通信接口。非常方便存数据,短距离通信是否方便。
2.6 单片机选择:NuMicro M054是以ARM® Cortex™-M0为内核的32位微控制器,价格合适。可以用J-Link V8、ST-Link、Nu-Link进行仿真调试。调试接口是SWD。以上三种仿真器都测试过,可以完美下载仿真。程序底层代码与STM32库的使用方法类似,一些驱动已完成编写,利用C语言模块化编程,可以比较快的上手。
2.7 NuMicro M054资源如下:Memories: - SRAM: 4K - App Flash: 16K - ISP Flash: 4K - Data Flash: 4K Features: - I/O: up to 40 - Timer: 4x32bit - UART: 2 - SPI: 2 - I2C: 1 - Comp.: 2 - PWM: 8 - ADC: 8x12bit - EBI: Supported - ISP/ICP: Supported - Package: LQFP48
目前软件篇正在编写中。相互学习,有啥好建议也可以说说。大家顶顶贴,不要沉了。
小店: t.cn/zHs6cZZ (复制到地址栏打开)
|