物联网时代,对MCU嵌入式软件有哪些新要求


1 引言

文中设计的系统是源自于2010年TI杯湖北省电子设计大赛, 要求是设计并制作一个能够检测并指示点光源位置的光源跟踪系统, 系统示意图如图1所示。光源B使用单只1W白光LED, 固定在一支架上。LED的电流能够在150mA ~ 350mA 的范围内调节。初始状态下光源中心线与支架间的夹角约为60o, 光源距地面高约100cm, 支架可以用手动方式沿着以A为圆心、半径r 约173cm 的圆周在不大于 45o的范围内移动, 也可以沿直线LM 移动。在光源后3cm 距离内、光源中心线垂直平面上设置一直径不小于60cm 暗色纸板。光源跟踪系统A放置在地面, 通过使用光敏器件检测光照强度判断光源的位置, 并以激光笔指示光源的位置。文中采用MCU MSP430作为控制核心,充分发挥了其功耗超低、精度较高等优势,其他各部分电路设计时也充分考虑了简单、可靠、经济等因素,为实际应用提供了一定的参考价值。

2 系统方案论证

根据设计目标,系统方案论证如下:

2.1 光敏器件选择

光敏器件有很多种,但哪一种既能满足要求又能方便检测控制呢?点光源跟踪系统任务要求的检测距离基本为2m,最远也只达2.05m,光源利用1W白光LED,其发出的光线较强,利用光敏电阻即可满足要求,另外光敏电阻价格便宜、光敏电压检测电路简单,考虑到设计中肯定需要多组测量,因此光敏电阻是较好的选择[1]。

2.2 光源跟踪方案

方案一:直流电机带动激光笔跟踪光源

利用两个直流电机,采用全桥PWM控制,将固定在旋转电机上不同位置的光敏二极管感应到的电压信号送入比较器(比较电压以实际情况测取),通过比较器输出来控制直流电机正、反转,从而达到动态调节,直至激光笔直线对准光源中心位置。但该方案有许多不足之处,直流电机不易受单片机控制,旋转角度无法程序有效控制且精度不高,对于固定角度旋转比较困难。

方案二:步进电机带动激光笔,精确控制旋转角度

给步进电机加一个脉冲信号,电机则转过一个步距角,这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点,使得在速度、位置等控制领域采用步进电机控制变的非常的简单。控制时,可将电路处理后的信号送入单片机,经过单片机逻辑时序控制步进电机准确旋转一定角度,使得激光笔准确指示点光源;另外还可利用另一电机上安装的多个光敏电阻进行微调,形成闭环控制,使得点光源定位精确,稳定,可靠。

经试验比较,可采用第二种方案。

2.3 光敏检测控制方案

方案一:采用一个光敏电阻,在规定范围内进行扫描,采集尽可能多的电压值,比较选择最大电压值,激光笔将迅速回到反应最大电压值的那一点即找到最亮点实现光源的跟踪。此种方式简单方便,跟踪快,但精确度不高。

方案二:在规定范围内采用八个固定位置的光敏电阻进行检测,采集每一个光敏电阻电压值进行比较,找到最大电压值,计算相应角度,控制电机转到那一点,实现光源的跟踪,但此种方式结构复杂,控制精度不太高。

方案三:水平位置采用四个光敏电阻进行水平定位控制,另外在中间位置放置上下两个光敏电阻进行上下定位控制,定位准确,控制精度较高。

经比较,选择方案三。

2.4 LED电流调节

方案一:采用PWM控制芯片,利用闭环控制实现电流的自行调节。该方法自动化程度高,但电路比较复杂,实现起来有些费时。

方案二:采用LM317构成典型的电压可调恒流源电路,可以很简单的实现LED电流的调节。

经比较,选用方案二。

现在在家用电器的更新、市场开拓等方面,单片机的应用越来越广泛,比如电子玩具或者高级的电视游戏机中,会应用单片机实现其控制功能;而洗衣机可以利用单片机识别衣服的种类与脏污程度,从而自动选择洗涤强度与洗涤时间;在冰箱冷柜中采用单片机控制可以识别食物的种类与保鲜程度,实现冷藏温度与冷藏时间的自动选择;微波炉也可以通过单片机识别食物种类从而自动确定加热温度与加热时间等等,这些家用电器在应用单片机技术后,无论是性能还是功能,与传统技术相比均有长足的进步。

2.5 控制方案选择

根据控制对象的特点,比较PID控制、模糊控制和模糊PID控制这三种控制策略发现,常规PID(比例,积分,微分)控制具有简单、稳定性好、可靠性高的特点,但是,常规的PID控制存在一些问题。首先,常规PID控制器不能在线整定参数;并且,常规PID控制器对于非线性、时变的系统和模型不清楚的系统就不能很好的控制,其PID参数不是整定困难就是根本无法整定,因此不能得到预期的控制效果。简单模糊控制由于不具有积分环节,因而在模糊控制的系统中又很难消除稳态误差,而且在变量分级不够多的情况下,常常在平衡点附近会有小的振荡现象。但模糊控制器对复杂的和模型不清楚的系统都能进行简单而有效的控制,所以如果把两者结合起来,就可以构成兼有着两者优点的模糊PID(Fuzzy-PID)控制器。所以,针对被控对象的特性我们选择利用模糊控制方式来给PID 控制器在线自整定(或自校正,自调整)PID参数,组成模糊自整定(或自调整)参数PID控制器的控制策略。

2.6 系统总体方案

基于以上方案的比较选择,系统总体电路框图如图2所示。

整个设计以MSP430为核心,MSP430根据光敏电阻所反应的不同电压值经相应程序对两个步进电机进行控制,并由步进电机带动激光笔进行左右和上下精确定位,从而实现对光源的跟踪同时还具备对检测电压进行实时显示的功能,而LED电流调节则采用简单实用的LM317调压电路实现。

3 硬件电路设计


3.1 步进电机驱动模块
电路主要由光电耦合器TLP521-4和TLP521-2以及电机驱动芯片L298组成。IN

1、IN2控制电机正反转方向,ENA使能,同理,IN3、IN4和ENB实现对另一电机的控制。单片机控制端与L298之间采用光耦隔离以减少信号干扰。电机驱动模块电路如图3。

3.2 光敏电阻电压检测模块
电源电压经稳压芯片AMS1117稳压到3.3v 后提供给光敏电阻分压电路,其输出检测信号供后级电路处理[2]。如图4所示。

3.3 LED电流控制调节模块
该电路主要由LM317组成,通过可调电阻来调节LED的电流,使之满足电流在150~350mA范围内可调[3]。LED电流检测电路如图5。

4 软件设计
整个系统分左右位置和上下位置两部分判别是否到达光源中心。左右部分寻找光源通过不断比较两者大小来判别方向,当两者差值在一定范围内时,就可以认定横向范围内到达光源中心[4]。当光源支架走圆弧时,光源中心几乎不会偏离;只有光源支架走直线时,A点偏角度最大为0.8°,板上激光点上下偏离最大为2.67cm。而步进电机单步运行0.45°,因此只需记录旋转的范围区域就可控制上下激光点微调。
系统软件设计流程如下图6。

5 测试数据与结果分析
测试工具选用精度0.1cm的卷尺和 精度0.01s秒表。测试过程将光源固定于指定范围内的任一点,通过现场设置参数决定两个步进电机的运行,进行上下左右的定位。不同定位的测试结果如下:

(1) 激光笔偏离点光源30cm跟踪测试
将激光笔光点偏离光源30cm,我们对系统的跟踪性能进行了多次反复测试,测试数据如下表1所示:

从测试数据反映,系统跟踪精度好,跟踪速度快。

(2) 光源支架圆周移动20°跟踪测试
在激光笔基本对准光源时,以A为圆心,将光源支架沿着圆周缓慢(10~15秒内)平稳移动20o(约60cm),对系统的跟踪性能进行了多次反复测试,测试数据如下表2所示:

从测试数据反映,系统跟踪精度好,在测试过程中,激光笔跟踪的连续性很好。


(3) 光源支架沿着直线LM平稳缓慢移动跟踪测试
在激光笔基本对准光源时,将光源支架沿着直线LM平稳缓慢(15秒内)移动60cm,对激光笔跟踪情况进行反复测试,测试数据如下表3所示:

从测试数据反映,系统跟踪精度较好,激光笔跟踪的连续性较好。

(4) 光源支架移动20cm左右距离、再旋转一个角度(20°)跟踪测试
将光源支架移动20cm左右距离、再旋转一个角度(20°)后,对激光笔跟踪情况进行反复测试,测试数据如下表4所示:

从测试数据反映,系统跟踪精度比较好,跟踪速度比较快。

(5) 改变点光源的亮度时(LED驱动电流变化±50mA)系统自适应测试
通过LED电流调节电路调节LED电流在规定范围内变化,将光源支架沿着直线LM平稳缓慢(15秒内)移动60cm,反复测试系统跟踪情况,数据如表5所示:

从测试数据反映,系统自适应能力较强,尤其在光线越强时,精度越高。

6 结束语
通过测试,本论文设计的点光源跟踪系统完全实现了2m内的光源跟踪及定位,在跟踪定位的过程中,光敏电阻的布局和模糊控制算法起到了决定性作用,整个系统功能完善,跟踪精度较好,自适应能力较强,有一定的实用价值。

参考文献:
[1] 瞿安连.电子电路-分析与设计[M].武汉:华中科技大学出版社,2010.
[2] 王兆安,黄俊.电力电子技术[M].北京:机械工业出版社,2006,(4).
[3] 刘树棠等.基于运算放大器和模拟集成电路的设计[M].西安:西安交通大学出版社,2004.
[4] 张天钟,姜宝钧,邓兴成.基于MCS-51单片机的光源跟踪[J].实验科学与技术,2006,(1):39-40.
[5] 张日希等.MSP430系列单片机实用C语言程序设计[M].北京:人民邮电出版社,2005.

作者简介:雷丹(1981-),女,讲师,工程硕士,研究方向:电力电子及电力拖动自动控制系统系统。

> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >

这种for语句的延时时间到底有没有精确的算法呢?在C语言中这种延时语句不好算出它的精确时间,如果需要非常精确的延时时间,我们在后面会讲到利用单片机内部的定时器来延时,它的精度非常高,可以精确到微秒级。而一般的简单延时语句实际上我们并不需要太精确,不过我们也是有办法知道它大概延时多长时间的,请看下一节讲解。

生成海报
点赞 0

Abin

我还没有学会写个人说明!

相关推荐

汽车级MCU大战“一触即发”

汽车行业,尤其是智能汽车赛道,不仅仅只有高算力SoC。数据显示,汽车微控制器(MCU)市场在过去的十年里占据所有行业MCU总销量的40%。 台积电在去年披露的数据吸纳是&#

GD32F103配置SPI+DMA收发数据

GD32是国产的32位单片机,它和STM32非常非常像,就连以前的库函数都差不多(现在从GD官网下载的库函数换了一种风格)。配置SPI和DMA的方法和STM32差不多。 上图是DMA0各通