找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7352|回复: 1
收起左侧

[开源造车]51单片机两轮自平衡小车元器件选型

[复制链接]
ID:94185 发表于 2015-11-4 11:24 | 显示全部楼层 |阅读模式

以下内容,来源于喵呜实验室网站http://miaowlabs.com/book,要转载请征得许可。
设计硬件系统的时候,离不开元器件选型。那么我们在设计喵呜ISO两轮自平衡小车时,器件选型的依据是什么呢?且搬个小凳子坐下,听我们细细说明吧。
主控芯片
喵呜ISO两轮自平衡小车选用宏晶(STC)公司推出的IAP15W4K61S4作为控制芯片。
我们选择IAP15W4K61S4作为主控芯片当然是有原因的啦:
  • 一是IAP15W4K61S4性能牛逼,满足系统需求。
IAP15W4K61S4是STC生产的单时钟/机器周期(1T)的增强型8051单片机,4K字节SRAM,5个16位定时器,6路15位高精度PWM,主频能达到33.1776M。IAP15W4K61S4采用STC-Y5超高速CPU内核,在相同时钟频率下,速度比传统8051快7~12倍,速度也比STC早期的1T系列单片机(如STC12/11/10系列)的速度快20%。
  • 二是IAP15W4K61S4简单易学,降低学习门槛。
众多高校开设单片机课程都是以8051单片机作为讲解对象,为此,大部分同学都是以“用8051单片机点亮个LED灯”的方式踏上了学习单片机这条不归路的。IAP15W4K61S4是STC生产的单时钟/机器周期(1T)的增强型8051单片机,但万变不离其宗,IAP15W4K61S4始终还只是8051单片机,容易入门的特点仍在。
其实就是两句话:
因为IAP15W4K61S4性能牛逼,所以选择它;
因为IAP15W4K61S4简单易学,所以选择它。
有些人会质疑,STC15也是80C51内核单片机,运算速度那么慢,能行么?
对于质疑,我们可以用理论参数来回答,再不然,就用实践来证明。
当然,对于我们工程师,打破砂锅问到底是很有必要的,那么问题来了:STC15的运算速度到底有多慢?有没有什么指标可以表示,和ARM对应指标相比如何?
带着疑问,我们寻找答案。
MIPS
Million Instructions Per Second的缩写,每秒处理的百万级的机器语言指令数。这是衡量CPU速度的一个指标。像是一个Intel 80386 电脑CPU可以每秒处理3百万到5百万机器语言指令,既我们可以说80386是3到5MIPS的CPU。MIPS是衡量CPU性能的指标。
现如今CPU的频率越来越高,又是流水线又是超标量计算又是双核多核的,单纯以时钟频率来衡量计算机的速度已经不再科学,用MIPS来衡量相对比较合理。
MIPS/MHz 表示 CPU 在多少MHz的运行速度下可以执行多少个MIPS,如10MIPS/MHz,表示如果CPU运行在1MHz的频率下,每秒可执行一千万条指令,如果CPU运行在5MHz的频率下,每秒可执行五千万条指令。 MIPS/MHz可以很好的反映CPU的运行速度。
以ARM7为内核的S3C44B0X的推荐最高工作频率为66MHz,按照ARM公司提供的技术资料,ARM7类CPU的运算速度可按如下公式计算:MIPS=0.9×MHz,由此可得出,S3C44B0X的最大运算速度大约为0.9×66MHz=59.4MIPS。6M的51单片机通常是4个时钟周期才能完成1条指令,乘法和除法指令更需要48个时钟周期。这样,初步估算6M的51单片机的运算速度应该在0.2~0.5MIPS之间。可见8位机与32位机的运算速度还是有巨大的差异的。再以AVR为例,它的数据吞吐率可达1MIPS/MHz,即1MHz的震荡频率可达1MIPS。
综上,用MIPS衡量计算机速度合理,但对于不同的cpu,它的最高工作频率不同,数据吞吐率也不同,所以不可一概而论。
STC15是1T 8051单片机,可以设置1个机器周期就是1个时钟周期,我们在STC官网首页可以看到这样一句话:
一秒钟能运行1000万条指令的STC 8051也能做四轴飞行器
就是说在最佳状态下,STC15运算速度可达到10MIPS。如果您是营销人员,您会只专注于最佳情况,也就是假定每条指令只要一个工作周期,这样这款产品的性能就是10 MIPS。要知道程序可不可能一直只运行类似NOP这种单周期指令,如果您想了解最低的理论性能,那么就会假定每条指令需要6个工作周期,这就会得到1.66(10/6)MIPS。
传感器
喵呜ISO两轮自平衡小车选用MPU-6050三轴加速度传感器/三轴陀螺仪一体芯片。
这是最主要的姿态传感器。
InvenSense公司的MPU-6050芯片内部集成了三轴加速度计和三轴陀螺仪,不仅消除了我们焊接电路板时易造成的加速度计和陀螺仪之间的对准误差(alignment error),而且由于其内置了数字可编程的低通滤波器,在飞行器经受较大振动时,可用程序设置适当频率的低通滤波器,用来滤掉高频振动。这是一个很有效的方法用来减小四轴机体振动对陀螺仪数据的影响,这个方法同样适用于该公司的ITG3205。另外,MPU-6050内置一个可扩展的数字运动处理器DMP,还可用I2C连接一个第三方的数字传感器,比如磁力计。
以下列出部分特征:
  • 具有131LSBs/°/sec敏感度与全格感测范围为±250、±500、±1000与±2000°/sec(dps)的3轴角速度感测器(陀螺仪);
  • 可程式控制,且程式控制范围为+-2g 4g ,8g 16g的3轴加速度传感器;
  • 数字运动处理引擎DMP可减少负重的融合演算数据。
  • 感测器同步化。姿态感应等的负荷;
  • 高达400K Hz快速模式的I2C。
从数据手册中找到刻度系数表,用输出值除以这些刻度系数,即可得到以°/s为单位的角速度值和以g为单位的加速度值
以MPU6050加速度测量值为例:当测量范围是±2g时,测量精度是16384LSB/g,这个参数的含义简单说就是当测量的加速值是1g(重力加速度)时,那么加速度的输出就是16384,这也163842g=32768,±2g对应±32768,MPU6050的ADC是16位的,所以不管测量范围多大,最终的输出范围都不会超过±32768,所以测量范围越大,精度就越低。下面计算一下测量范围是±16g时的精度:162/65536=0.00048828125,然后取倒数1/0.00048828125=2048,和手册上完全一样。LSB/g是针对数字输出的传感器而言的。
单位是LSB(即最低位所表示的量)。 LSB(Least Significant Bit),意为最低有效位。以一个12位数据采集卡为例,她的采样精度为4096个点,模拟量输入范围是0~10V,那么一个点对应的模拟量是10V/4096,约等于2.5mV,0.5LSB的意思就是采集误差是2.5mV/2=1.25mV。
对两轮自平衡小车而言,MPU-6050的精度和性能已经足够,可只需要一颗芯片就能满足系统需求,而且节省人民币。如果采用多组件方案,例如分别选用陀螺仪ENC-03和加速度传感器MMA7260,那浪费在传感器上的人民币就翻要几倍,从成本角度看,这才凸显出MPU-6050的性价比高大上呀。
电机驱动芯片
喵呜ISO两轮自平衡小车选用飞思卡尔半导体公司生产的直流电机驱动器件MC33186。
另外,常见应用于两轮自平衡小车的直流电机驱动器件还有:B6612FNG、LN298N。
弃用L298N、B6612FNG原因有二:一是L298N体积大,工作效率低下;二是OpenBalan选用的电机堵转电流高达3A,一对电机同时堵转时电流达6A,而L298N和B6612FNG的可承受最大电流不符合要求。MC33186具有大电流MOSFET-H桥结构,工作效率高,最大输出峰值电流达8A。TB6612FNG采用SSOP24封装,体积超小,非L298N的Multiwatt15大块头封装可比。
MC33186VW与MC33186DH有什么区别性能一样,VW是无铅封装
USB-TTL芯片
喵呜ISO两轮自平衡小车板载USB-TTL下载电路,因为考虑到不是每个同学手上都有USB-TTL下载模块的,而且市面上的USB-TTL模块质量参差不齐,质量差的还会导致电脑蓝屏。
通过一根安卓手机标配的MicroUSB线,就可以轻易简单地对BALANCE-ISO进行固件更新和调试参数。如此简单的操作步骤,想来随便从大街拉一个路人过来应该都可以完成。
无线通信模块(蓝牙)
考虑手机遥控功能,以及后续版本要实现无线升级固件功能,放弃使用2.4G通信,决定选用蓝牙。但蓝牙协议是很复杂的,凭我现有的时间难以写出来。而蓝牙模块已经封装好,只要和单片机串口正确连接就可通信,很容易将喵呜ISO两轮自平衡小车与安卓设备对接起来。剩下的只是去开发适用于安卓平台的APP或者上位机了。
元器件选型就是这样子。

评分

参与人数 1威望 +10 黑币 +10 收起 理由
王朗的诱惑 + 10 + 10 赞一个!

查看全部评分

回复

使用道具 举报

ID:379452 发表于 2018-9-5 13:28 | 显示全部楼层
有了启发,超级感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表