« 上一篇下一篇 »

2016工程实训总结

一个多月没写博客,果然还是没有养成良好的写作与记录的习惯,还是需要慢慢的改善!

关于这篇总结,先做一个简短的说明。文章里面不会涉及到太多的技术性知识,因为这次的工程实训的确没有太多的技术含量(这里仅仅是指软件设计),所以本文主要从系统(整个的流程)的方面来描述一下我自己对于一些非技术性东西的感悟。

本次工程实训我们组的选题是《基于单片机的斩波式调压系统》,一看标题就知道这是个电压调节的题目,用单片机来进行控制,当然,这个题目的难点主要在于需要进行调节的原电压为市电输出的220V交流电压(50Hz),也就是说,这可以说是个强电的题目,而我们从未做过相关的课题或是实验,这就已经预告了这次的实训会出现很多的麻烦。

下面从技术与非技术两个方面来描述一下主要的问题及其解决办法。

一、技术方面

1、软件设计

1.1 中断的优先级

这是个很需要注意的点,有个时候如果问题出现在中断的优先级上面,而你又不知道问题出在哪,那么可能你要作死的去修改代码,最后才发现,原来还是解决不了问题。我在这次软件的斩波输出软启动控制中,就是因为一个中断的优先级的问题,花了一两天的时间才找出原因。关于STM32的优先级,或许需要深入的理解CM3。反正就是,在有多个中断时,一定要注意中断的优先级

1.2 STM32的ADC

在采用STM32的片上ADC的“连续转换”模式时,我发现无论怎么配置ADC,它的采样时间都长的要命,完全与手册上描述的不符,于是就配置成“单次转换”模式,每次采样前需要重新打开ADC使能,在这种模式下,采样速率基本符合手册描述。所以,如果需要快速的采样多个点,一定不要使用“连续转换”模式,而应该用“单次转换”模式,由自己来控制采样的时间间隔。

1.3 软启动与软关闭

即驱动信号的输出不要一下子突变,而应该慢慢地增加或减少至一个指定的值,这样可以防止器件在开关的那一瞬间被烧坏。

2、硬件设计

2.1 过零检测电路

我们组用的是比较器的方法,所以每次检测到零点时输出电压就会反向,从而就得到一个间隔的“上升沿——下降沿——上升沿——下降沿”的脉冲输出,在这种情况下,要想检测到每一个零点,就需要单片机做到既能够检测到上升沿,又能够检测到下降沿,所以,如果用传统的8051单片机,则需要用两个外部中断才能使用这个过零检测电路,而传统51一共才只有两个外部中断,这样一来就全部用掉了,显然,这不是个好的选择;如果用STM32或是其他的芯片(STC15W系列),其外部中断都具有双边沿检测的功能,这样就只需要用一个外部中断来配合这个过零电路。当然,过零电路还有其他的,比如说,每次过零产生一个脉冲,但是会有延时,从而会导致一定的误差,所以用比较器的方法来进行过零检测+双边沿触发的外部中断,我认为是一个较为不错的选择。

2.2 驱动电路

我们组用的斩波控制器件为晶闸管,所以就需要一个驱动电路来控制晶闸管的开关,而驱动信号则由单片机给出。

二、非技术方面

1、设计思维

就技术上而言,我或许并不比别人差多少,但如果是设计思想,我就可能不如别人,为什么呢?就拿软启动来说,这个想法是别人提出来的,虽然技术上不难实现,但我也认为,这的确是个比较重要的东西,而这种想法,我根本就没有,或许可以这样说,我根本就没有去考虑软件的启动是否会对器件造成损害?又怎么去避免这种损害?这些东西或许不难,但的确很重要,在实际的产品开发中,完善的考虑或许会减少很多不必要的损耗。

2、稳定的控制、明了的状态指示

这个问题要从系统的角度来说明,因为这是在所有的东西做完装箱后才体现出来的问题。问题就是在装箱后,整个箱子成密封状态,于是我们之前的红外摇控就不太灵了,毕竟隔了一个铁皮箱,哪里还能指望红外线能够透过去呢,你特么以为是X光线啊?这实在是一个很蛋疼的问题,并非我们没有考虑到这个问题,而是没有去落实的找一个解决的办法;而类似的问题,我们的状态指示灯,在装箱后,也是一片黑暗,丝毫无前途可言,看不到它英明的状态指示啊,我的天!

因为这两个问题,在最后的答辩上我感觉很吃瘪——我特么不知道到底有没有控制到它?既没有状态指示,红外的控制又还不确定,所以说呢,这些非技术的问题,真的真的是非常非常的重要,如果说,我们把状态指示灯引出来,放在箱子面板上,把红外接收也引出来,在哪里开个孔给“兜”着,那该多清爽,然而问题是,我们并没有这么做,唉,说出来都是泪啊!

3、控制芯片的选择

首先,我认为选择STM32的确是太耗费成本的,这次实训中就烧坏了一块芯片,好几十块钱呢,都能买几个大西瓜了。但没办法,我们手头只有51和STM32,如果想功能强一点,就只能选STM32了,但如果以后,在一些应用难度适中的情况下,最好选择一些价格适中的芯片,比如增强型的51或是其他的芯片,成本太高的话,承受不起。

4、开发进度的控制

我认为,硬件肯定是要早点搞完的,然后交给软件设计者调试,先进行单一模块的调试,再整体联合起来调试。而硬件搞完至少不能超过整个开发周期的1/2,或者是更早,软件和硬件联合调试完毕后,才是装箱,装箱好了之后,则是整体的调试,老师是这么说的,“平台搭建好了以后,真正的工作才开始”,也就是说,在装好箱后,我们还需要留比较多的时间来调试,就好像我们这次一样,原本好好的,一装箱什么都没有了,所以在装好箱以后还需要花较多的时间调试,从而保证它最后能够稳定的工作。

动手之前多考虑,能够避免后来的很多问题,而有一些问题,则要在调试及最后的工作中才能发现并着手修改的,所以后面的调试一定要留有比较多的时间。

5、人员关系

本来实训都结束了,没什么好说的。但我必须要努力在以后的工作中改善这种情况,所以就一定要多反思。首先,这次的组队,有些人并不是我乐意的,因为本来我只是和YANG说了两个人组队,因为我们不是同一个班的,所以我说每个人在班上找几个人,后来我发现他居然找了几个我意想不到的人,好吧,是我没考虑好,没想到他们原来是一个班的,也没想到他会找到他们。因为有个别人,我以前是打过交道的,所以才再也不想和个别人打交道,结果误打误撞,又给搞一起了。搞一起就搞一起了,反正都是一起做事,结果没搞几天,他们班的人自己就内讧起来了,吵得还特激烈,几个实验室的人都知道了,我特么也是醉了。有些人呢,说话好像他妈的不经脑子似的,每说一句话,都让人听着难受,比如某个z;有些人呢,事情没见做什么,指导意见倒是不少,唉,对这种人,我仅仅是不想和他共事而已,眼高手低,再没别的;还有个别人,平日里挺能说,但其实真正做起事来,又不见得有多大能耐,关于此类人,平日里说笑就行了,一起共事嘛,还是免了,省得最后事情还得全部自己做。

就这些,或许有人会说我看人的眼光忒高,但这就是我的观点,高有高的好处,如果你与什么人都能够为伍的话,那我真的很佩服您!

好了,终于把这个总结写完了,希望下次能够做得更好,加油啦。