其中电机驱动、逻辑控制部分均为独立的单片机系统,这样设计主要出于:
1)单片机已十分便宜,可以像普通IC那样使用;
2)电机驱动逻辑比较简单,但是实时性要求较高,所以独立出来,编程较为容易,便于初学者上手;
3)电机驱动部分通常会有较大的干扰,尤其是驱动普通的直流有刷电机,电刷的火花干扰很强,单独使用简单、但抗干扰能力强的单片机可使系统更加可靠;
4)电机驱动部分独立做成一个模块后可以在以后自己的其它项目上使用,增加投入的附加值,例如作为RCX的大功率电机驱动器;
5)对于走轨迹项目而言逻辑部分并不十分复杂,完全可以将电机控制部分融入其中,但是这样系统就不容易修改为其它用途,编程难度也增加了,不利于学习;
6)采用独立的逻辑控制便于学习者掌握构建复杂系统的能力,学会多模块协同工作时如何交换信息、如何协调。目前在控制上利用单独的智能节点完成单一任务,采用通讯方式将这些独立节点组合实现复杂的功能是一个趋势。
7)采用独立的逻辑控制模块便于学习者随时根据学习需要替换为所要学习的单片机,目前我所采用的可能是51系列的,而日后如需要,可以随时替换为ARM或其它我所关注的型号,这些新的单片机通常都有成品模块出售,具有完善的数字、模拟以及通讯接口,这样设计就十分容易接入,达到学习、评估的目的。
5.2 单片机的选型依据
因为项目的目标是学习单片机的应用,所以我还是选用了51系列的单片机,因为51的架构十分典型,便于初学者理解,同时其公共资源是最多的,便于初学者自学和交流。
选择用于学习的单片机我认为主要考虑以下方面:
* 价格便宜;
* 开发手段便宜;
* 自己动手焊接相对容易(最好不选用BGA封装的,或是脚距小于0.5mm的)
基于上述考虑,我选择了宏晶科技的STC12C5410AD单片机,价格仅10元左右。它可以使用简单的串口编程(ISP),不需要专门的编程设备,自制一个串口适配器最多10元,如果选用现成的USB转串口产品,也只要40-50元(注意:不是每种USB转串口产品都可用)。下载软件厂家免费提供,开发成本很低。封装有SMD及DIP模式,SMD也是1.27mm脚距的,很好焊接。
很多人排斥51系列的原因是认为51资源较少,也比较慢,这实际上是最早的8051给人留下的印象,也是多数教材中所描述的,而实际上51架构已发生了很大变化,其资源已十分丰富,速度也有很大提高,以此款STC12C5410AD来说,其资源为:10K FlashROM ,512字节RAM,8路10位AD,4个PCA(可实现PWM、脉冲捕捉等定时功能),速度也十分快;详情可上该公司的网站上查询。
其它还有许多51架构的单片机具有优异的特性和特点,如:
*
ti的MSC系列具有一个24位AD,十分适合做高精度的仪器;
* SiliconLAB公司的51F系列单片机速度极快、功耗低、体积小、资源丰富,有各种不同的规格,最快的达100MPS ,引脚还可编程确定功能;
* ST公司的uPSD3xxx系列,有较大的内存,可以内置汉字库,还集成了片内PLD;
* Chipcon公司(现归属TI)的CC2430芯片将ZigBee无线通讯协议和51核集成,可构成ZigBee无线节点;
* Nodic公司的nRF24E1 芯片将2.4GHz的无线收发模块与51核集成,可方便的实现短距离无线通讯。
还有很多类似的产品,此处就不一一例举。主要是想说明,51架构还是有其优势的,否则不会有如此多的公司基于51架构开发出这么多产品。
至于可靠性、性价比等指标在学习时可忽略,设计产品时才需要考虑这些因素。
从另一个角度来说,由于目前编程通常使用C语言,所以对单片机的依附已不十分紧密,只是在设计硬件线路及程序中对硬件初始化时要涉及器件,而程序的逻辑部分几乎与硬件无关,所以选择什么单片机学习没有什么绝对的好与坏,关键看自己可利用的资源。
5.3 电机驱动部分硬件设计
因为考虑到做好后的驱动电路最好可用于其它场合,所以硬件设计上预留了许多功能。而且为了便于在其它场合使用,体积和封装都作了考虑。
5.3.1 需求
1)可驱动一个直流电机,驱动电压范围 5 – 12 V, 电流 10 - 20 A;
2)电机驱动要支持4种工作模式:正转、反转、惰走、制动;
3)控制信号可接受:UART、SPI控制,标准的宽度1 – 2 ms 、周期20ms的 PWM 控制;
4)可支持脉冲反馈,实现调速而非调功;
5)可根据脉冲计数控制行走距离。
6)可检测转动方向;
7)支持第二路反馈的脉冲信号,以实现转速跟踪;
5.3.2 概要设计
使用 STC12C54XX 系列51单片机控制,使用 MOSFET管构成 H 桥驱动,并使用门电路实现互锁,避免造成 MOSFET 短路。驱动管设计为可双管并联,以便于扩充驱动电流。
采用独立模块方式,一个模块驱动一个电机,为了能实现多个电机的连锁,提供一个跟踪通道,捕获需要跟踪的电机(轮子) 的转速,自动调整自己的速度,以实现准确的直线行走,或其它类似的目的。
5.3.3 详细硬件设计
以STC12C54XX 单片机为控制核心,该芯片具有4个通道的PCA,可以方便的实现转速脉冲测量和方向判断,同时也便于接受PWM控制信号。同时此款单片机为 1T的高速工作模式,可以使用定时中断控制MOSFET,因为需要实现4种电机工作模式,所以使用了4个IO独立控制H桥的4个MOSFET ,不能使用简单的PWM 输出控制。
因为用 4 个IO独立控制,所以必须避免MOSFET出现短路,使用2块4-2与非门构成互锁逻辑,保证不出现同侧上下MOSFET同时导通的情况。借此也可以隔离电机的噪声对单片机的影响。
因为需要支持5 – 12 V的电机工作电压,而且互锁逻辑输出还差一级反向,所以控制MOSFET使用双极性三极管9013,这样可使用普通的MOSFET,便于购买。(如果不使用9013 ,则需要选用逻辑电平控制的MOSFET)
在线路及
PCB的设计上,考虑MOSFET的双管并联工作,以便于日后需要提高驱动能力。
供给电机的电压直接接MOSFET,同时经稳压器SPX1117-3.3V稳压输出后供单片机和门电路,单片机选择3V的,门电路选用 74HCxx ,这样,电机的工作电压可以低到 5 V(4节充电电池)。
单片机硬件资源分配:
P2.4 – P2.7 :用于驱动 H桥;
PCA3 : 用于电机的PWM输出,工作在定时器模式;
PCA2/P2.0:用于主测速脉冲输入,工作在捕获模式,边沿触发;
P2.1 : 主脉冲输入方向辅助输入,用于判断转动的方向;
PCA1/P3.5 :用于跟踪脉冲输入,工作在捕获模式,边沿触发;
P3.4 :跟踪脉冲的辅助输入,用于判断方向;
PCA0/P3.7 : 用于PWM控制信号输入,,工作在捕获模式,边沿触发;
P1.4 – P1.7 :用于 SPI控制输入;
P1.2 、P1.3、P2.2、P2.3、INT0、INT1:用于连接无线模块PTR4000,以便实现无线控制;
P1.0、P1.1 :保留作为ISP 的控制口;
P3.0 – P3.1 :用于 UART控制输入
T1 :用于产生 UART 的波特率
T0 :系统时基;
因为希望体积小一些,可以装入一个 59 X 35 X15 mm的标准小机壳中,元器件采用的是表贴器件,将控制和H桥驱动分开,做成两块PCB,这样可以灵活一些,既可以使用独立的驱动器驱动,也可以用逻辑控制部分直接驱动,体积因此也缩小了。
两块PCB之间采用直针连接,形成类似于4层板的结构,抗干扰性有所改善。PCB采用1mm厚板材。
为了便于自行扩充,同时减少PCB的面积,所有输入输出均采用空中对接插头。
(如果实在不愿意使用表贴器件,也可以采用DIP封装的,用一块试验线路板作为第二层平台,直接在上面焊接元器件,试验线路板有双面和单面的,双面的略贵,约10元/块,单面的只要1-2元/块。但是这样做出来的东西只能用于这个小车了,在其它场合使用将会横不方便。)
详细电原理图和PCB图见附件。
所用标准件的照片:
59 X 35 X15 mm的标准小机壳:(市场有售,1.5元/只)
(未完待续)
参考资料:
1、 STC12C51XX系列单片机数据手册
http://www.mcu-memory.com/
2、 TI MSC 系列单片机
http://focus.ti.com.cn/cn/mcu/docs/mcugeneralcontent.tsp?sectionId=98&tabId=1515
3、 SiliconLAB公司的51F系列单片机
http://www.xhl.com.cn/
4、 ST公司的uPSD3xxx系列
www.upsd8051.com
5、 Chipcon公司(现归属TI)的CC2430芯片
http://focus.ti.com.cn/cn/docs/prod/folders/print/cc2430.html
6、 Nodic公司的nRF24E1 芯片
http://www.freqchina.com/nRF24E1.htm
`
0