原创 【TI博客大赛】【原创】基于MSP430的湿度计及定标

2012-8-29 19:34 2388 15 16 分类: 测试测量
    这算是我最后一个用单片机做的项目,到现在已经隔了2年多了。发现对软件上很多细节的地方都生疏了,而硬件则还好。可能是太久没摸单片机的缘故,也可能是用习惯了FPGA,针对任何应用首先考虑的方案都是使用FPGA的解决方案。当然,对于商业应用FPGA还远没有达到取代单片机,甚至完全取代DSP的程度。我想,随着FPGA的普及,尤其在我们这代,学DSP的人越来越少,MCU又五花八门,ARM/CorteX有计算机的抢饭碗,学电子的大多都会选择FPGA。就我所在的小圈里,真正能接触到科技前沿的毫无例外全是FPGA,其他的大多数只能停留在商业层面。话虽如此,不过现今赚钱才是硬道理,行行都能出状元。前段时间看科技频道我爱发明,就有一个人发明了一个光控锁发家了。这也充分说明了单片机也有大智慧,不必一味的追求高科技。

    下面和大家一起分享一下这个湿度计,顺便我也小总结一下。

    实物图如下:

小板.jpg

    上位机软件GUI界面:

 上位机串口调试软件.jpg

    系统功能概述:该湿度计由湿度采集和显示两部分组成,显示部分通过串口排线与采集部分相连,并采用7段式LED显示湿度值,定标所需的最小二乘法直线拟合参数由上位机软件计算完成并将参数发回湿度计进行定标处理。软件的定标也分手动和自动两部分,定标功能和湿度控制器类似。参见http://bbs.ednchina.com/BLOG_ARTICLE_3006306.HTM

 

    由于湿度显示部分较简单,接下来主要介绍湿度采集部分和上位机软件部分。

 

    湿度采集板概述:该板的主要特点就是小,板子的尺寸只有54*11(mm)。在这个尺寸上放置了单片机MSP430F2132、CD4046、MAX3232、MC34063以及相关的外围电路等。至于电路原理和湿度控制器一样。印象最深的就是手工焊接的时候老是丢东西,而且这款430小单片机不是被静电打坏,就是被焊坏。开关电源的开关芯片也是如此。所以,以后要是再有类似的活我肯定是不合格的,得请专业人士来弄。

 

   上位机软件概述:该软件是在串口调试助手代码的基础上修改的,当时并不是不熟悉VC或者其他语言,主要考虑到自己是学电子,以后主要从事信号处理的研究。参考上面贴出来的GUI界面,简单介绍一下各部分功能。

左板块:串口调试功能。扩展了10进制显示,uint32与float32发送。

右板块:湿度定标功能

1:设定任意5个由低到高的标准湿度环境

2:手动读取湿度值,记录读取次数,5次循环显示,清除数据。

3:定时自动读取湿度值,可设置环境切换时间与取样等待时间。

4:5次取数后进行数据拟合,打开图形窗打印拟合曲线与样点。同时得到拟合曲线方程系数,等待发送。

PS:通过调试已经加入了系统运行调试操作出错处理消息框。

    从打印出的菜单中可以看到有0~4这五种操作模式,单片机的程序和网上很多开发板的test程序类似。

图文说明如下:

   首先,发送十六进制命令“0”,打印菜单(此时字符显示)。

20120807171320712.jpg

    其次,发送十六进制命令“1”,显示当最新拟合公式计算的湿度定标数据(将字符显示转化为十进制显示)。如下图,从字符显示转为十进制的数据打印图。当前湿度为68%。

20120807171638429.jpg

    然后,发送十六进制命令“2”,等待发送直线拟合方程的浮点系数,窗口提示如下图。如不记得命令可以从新发“0”打印。

20120807172150601.jpg

    最后,将方程的斜率和截距以空格隔开同时输入,并切换为float32格式,点击发送即可。

20120807172442567002.jpg

20120807172437252001.jpg

   

    这时,窗口会显示当前存储的数据个数,选择“0”表示没有定标拟合计算的湿度值,选择“1”表示使用刚才保存的拟合数据进行定标计算的湿度值。以此类推,每输入一次将往下加并显示次数,可以保存多组数据,这也与湿度控制器一样,只不过没有16次那么多。本来应该将输入一个简单的直线方程的计算结果截图说明一下,但时间太久,有些图片已经不在或者当时没有保留。不过这并不影响对定标功能的理解。该项目做到这一步并不是直接的产品,而只是一个样板。定标是为了工厂在批量生产时出厂前的数据校正,不可能用matlab的上位机软件。顺便指出一下,湿度的准确测量有两个难点,一个是标准湿度环境不容易实现,密封性要求非常高,而且要在密封的湿度环境中取样也不容易。另一个就是湿度传感器的特性不一,当前用的湿度传感器在极限温度下将出现异常,这不仅与datasheet不服,而且对不同板子锁相环的中心频率点不好取舍。要达到一定的精度,采集电路还需要改进。

 

    接下来参考我以前写过的文档,将当时联调所遇到的问题以及怎么解决的总结一下(解决是解决了,但分析的原因可能不正确)。

 

所遇到的问题

             解决办法

1.如何通过430单片机发送数据到PC中使Matlab GUI中的Edit控件换行,用于美化打印的命令菜单。 原因:Edit控件接收两种换行命令ASCII码10(LF),16(CR),使用10容易出现跑死,猜测是因为串口接收过程中,定时回调函数与输入缓冲区满回调函数对Edit控件的赋值过程冲突,造成程序跑死。而使用16正常。
2.如何通过PC向430单片机发送4个byte以内的各种数据类型。在发送4byte数据时,单片机中uint32能实时转化保存,而float32不行 原因:之前的接收方法多此一举。因为经过调试发现串口发送的本就是相应数据的数据格式,不必接收后转化为相应类型再保存,可直接受完将缓冲数组保存至FLASH,读取时使用指向需要类型的指针即可。
3.MSP430F2132单片机在IAR环境中,调试容易出现堆栈溢出现象,FLASH各种数据类型存储不方便。系统涉及到长字符串的处理,C语言处理麻烦。设想使用C\C++混编。 堆栈溢出的原因:在2132接收中断处理函数中分支语句不能嵌套2层以上,特别对于分支较多的程序,不能使用switch语句,容易堆栈溢出,同时不能过多的在函数中设定static变量。设定IAR堆栈不能超过250。另外,在线调试的断点数不能超过2个。深层次的原因不详。对于FLASH操作可使用C++中函数重载的方式,对于字符串问题可使用C++中string类,效率比较谁高谁低占不清楚。

 

    经过这两个单片机项目的洗礼,可以说当时几乎把MSP430大小系列的单片机拥有的资源都用了一遍。相比早前用的STC,ARM7,她最大的优势就是低功耗编程模式。所有的代码都是在中断响应内完成的。这完全得益于430较其他单片机复杂的系统时钟结构。最近,我刚接触到了日本的Renesas(瑞萨)M16C/62P系列单片机。要知道,在十大芯片供应商中,以单片机为主的就是瑞萨。我个人认为瑞萨应该就是单片机之王。而在我们身边,又有多少人了解这种单片机。真正看过德国人和日本人做的东西的人就知道,他们一直用的东西到我们手里后,大多都被认为是我们已经被淘汰的东西,但结果却是他们的产品反到经久耐用。我想这就是大量引进外资,进口芯片让我们思想上形成的弊病,求新求快,反正有钱好办事。在这样的思维方式的牵引下,要想摆脱制造转型设计不知道有多难。

附件:

基于matlab的上位机定标软件rar.gifRH.rar

文章评论1条评论)

登录后参与讨论

用户1585063 2013-11-30 21:47

2.2.3的f2公式错了,b应该是d;f1的加号后面应是b*s1

用户961355 2013-4-26 15:35

不错,继续学习。

用户312471 2013-3-4 15:31

学习中,收获不小

357028335_973093314 2013-1-8 19:24

我是个初学者,那个反熔丝实现的乘 加 等怎么看出来的 有没有例子可以举下哈 万分感谢

用户427466 2012-9-6 16:49

你已经理解了啊,乘法器的乘因子可以放到S端和某一输入端,另一端输入为0即可,加法器将S端附常值,加因子在S位0端的本身取反就行了

用户425498 2012-9-4 23:50

在输入信号s、a、b输入端各选一个反熔丝进行通电拉长,假如是1、3、5,按照之前的约定,那么就得到输出为 。不知道大家发现一个规律没有,当发生乘操作的时候,都有s信号或其反信号,为二选一的选择开关信号;当发生加操作的时候,加的两项加数是作为二选一的被选择信号. 无意间看到这篇博文,不是很理解,能不能解释下上面那句话。如何用2路选择器做加法器和乘法器?

用户403664 2012-8-10 17:23

坐个沙发
相关推荐阅读
用芯创造未来 2018-04-21 18:46
【博客大赛】五年后,回到这里聊聊“芯”事
      五年前我正值毕业季,刚刚走上工作岗位。因为那年在研究生电子设计大赛中的一些切身感受,本着分享技术经验和职场感悟的想法在EDN上开了博客,希望结识更多的同行,也...
用芯创造未来 2014-10-22 09:37
当前科技成果转化中的种种误区
      中科院最近一直在进行各种改革的尝试,正在进行摸索的是“率先行动计划”,但是包括我本人在内的很多人还不明就里。所里前不久到各个课题组进行了摸底谈话,我也就个人的一些意见进行了交流,其中就...
用芯创造未来 2014-10-21 15:53
(转载)当前科技成果转化中的种种误区
      中科院最近一直在进行各种改革的尝试,正在进行摸索的是“率先行动计划”,但是包括我本人在内的很多人还不明就里。所里前不久到各个课题组进行了摸底谈话,我也就个人的一些意见进行了交流,其中就...
用芯创造未来 2014-10-10 23:45
【博客大赛】为什么现在不考虑读博深造
    时间过得很快,现在不怎么喜欢写网络博客,但记录的习惯没有丢。平时把工作周报当成了技术问题记录和个人博客在单位内部共享,时不时自己回头看看,这样能保持清醒的头脑,坚持自己的技术追求。今年中秋节的...
用芯创造未来 2014-10-10 23:43
为什么现在不考虑读博深造
    时间过得很快,现在不怎么喜欢写网络博客,但记录的习惯没有丢。平时把工作周报当成了技术问题记录和个人博客在单位内部共享,时不时自己回头看看,这样能保持清醒的头脑,坚持自己的技术追求。今年中秋...
用芯创造未来 2014-06-09 15:57
[博客大赛]对电子学与测量学的一点感悟与困惑
         最近思想有点跑偏,在长沙这个电子信息产业发展相对落后,或者说有点闭塞的地方,每当自己想捣鼓捣鼓一些感兴趣的东西时总是一筹莫展。如果换在成都,在两个层次的理工类高校、大小企业和研究...
我要评论
1
15
关闭 站长推荐上一条 /2 下一条