本帖最后由 hushao 于 2016-1-5 01:17 编辑
本作品来源于桂林电子科技大学第二届“富士康杯·芯梦起航”电子设计竞赛,高年级组题目之一。预计实现的功能:测量任何风扇的转速,并且能够控制风扇转速,可以以百分比控制,也可以形成负反馈精确控制(技术不难但由于时间关系暂未加入)。测试仪可以与电脑连接,在PC端实时监测数据,控制转速,并将数据绘制成图表。
然而以上仅仅实现几点功能没有太多实际意义,本人认为还有更多的空间扩展。
计划扩展的功能有: 测试仪上增加温度传感器,同时监测产品的温度。但由于时间关系,温控功能暂不加入。
由于本作品较简单,所以决定公开制作过程。
设计思路:综合目前的技术,本人设计了以下方案实现本作品的功能: 方案一:使用物理传动方式测速。将一小平板与被测风扇轴心贴合,平板随着风扇轴心转动。平板带动测试仪上的微型电机转动,产生电流。用AD/DA芯片取样,微型电机的转速和电流比是已知的,程序通过函数映射求出被测风扇转速。 方案二:同样使用物理传动方式测速,类似方案一,但是在平板上安置编码盘,在测试仪上用红外光照射编码盘,同时接收返回的红外光,转换为PWM信号,换算出转速。 方案三:无需与被测风扇有物理接触,在散热风扇的前后两边各安置一个红外发送,红外接收,当扇叶转动时,遮挡到光路,就会形成一个PWM信号,单片机由此换算出转速。 方案四:在某一片扇叶上贴一张反光纸,测试仪对扇叶发射红外光,当扇叶经过时,由反光纸反射红外光到测试仪上,被测试仪接收,可以获得一个PWM信号进而换算出转速。 方案五:在某一片扇叶上贴一张反光纸,测试仪对扇叶发出微功率的激光,扇叶经过时,激光被反光纸反射,进而被测试仪接收,由此可得一个PWM脉冲信号,单片机将此换算出转速。 可行性分析:
方案一中,由于需要与被测风扇进行物理接触,对于普遍小产品散热风扇而言,他们的电机扭矩很小,同时微型电机本身的机械阻力以及线圈产生的反作用力对于这类散热风扇而已都是不可忽视的因素,大大增加了测量误差。因此方案一不可取。 方案二中,虽然没有方案一的微型电机这个阻力来源,但是平板在与风扇接触时,随着用户按压力度不同,会给风扇施加不可忽视的阻力。因此方案二不可取。 方案三中,对于普遍散热产品而言,其散热风扇往往一面对着散热片,另一面对着空气。在散热片的那一面,需要放置一个红外接收探头,这样会给用户操作带来极大的不便利。同时,由于每个产品的风扇扇叶大小各不相同,当转速比较慢时,风扇扇叶遮挡红外光占用的时间对转速测量的误差不可忽视,需要给测试仪设定扇叶大小方可准确测量。本方案实用性不强,不利于批量作业。因此不可取。 方案四中,虽然改进了方案三中双面检测,但是红外光干扰毕竟大,易发散,在某些场合下,外界的红外光以及扇叶材质反射的红外光会引起信号误判,造成测量误差。因此本方案不可取。 方案五中,采用了激光代替方案四的红外光,激光具有单一性强,不宜发散等特点,使得本作品可以在更多的场合下使用,加上可以采用调制过的激光信号,有效避免外界光源干扰,同时激光发射接收器的价格比较低廉,使得成本降低了很多。因此本项目采用此方案。 操作性分析:
本作品将往小型化方向设计,在实际使用中,只需要在某一片扇叶上贴一张小小的反光纸,将本产品的探头对准反光纸所在的同心圆,当风扇转动时,即可读出转速。同时使用串口线缆与PC机连接,配合本人设计的基于Windows的监控程序,可以自动将转速、温度数据绘制成图表动态显示,存储。若风扇电源由本产品供给,可以在程序中设定目标转速,使风扇达到用户想要的转速。 因此,本作品非常易用,操作简单,功能多样。
制作日志:
2015年11月16日22:03:26
上位机程序串口通讯功能设计完成。
2015年11月17日23:09:08
上位机程序总体框架设计完成。采用C++语言编写,MFC框架开发。
初步设计了程序UI,实现了动态快速绘制图表的功能。
随着记录点不停增多,如果要把他们全部都绘制在图表里就会显得不易观察。 上位机程序中,设定记录了20个点后,通过将整个数组左移一个元素,来抛弃前面的点不显示出来。 Array_LeftMove(timeSerial); Array_LeftMove(fan_speed); DrawPoint(m_chartSerial1, timeSerial,fan_speed, fan_sum);
2015年11月28日15:33:17
电路原理图,PCB设计,绘制完成。
2015年12月14日
发现一个坑爹的问题~~~!!!激光接收管的输出电平反了,在设计电路时看错型号。
结果当有激光照射时,接收管会输出高电平,没激光时会输出低电平。这样没办法触发单片机外部中断的。起码我目前用的这款STC单片机没有上升沿触发功能。AVR是有的。
悲催的我又懒得重做电路板,在基地硬件部没看到有CNC,懒得手动钻那么多个孔。。。于是就直接在电路板上面改电路,利用上面激光发射那里的一个三极管做了个电平反转。
2015年12月19日
完成上位机与下位机联调。实现转速读取,PWM控制,数据存储。
C++的MFC框架的确真的很老很老了。。。。今天为了打包程序弄了一个下午,没有控件时还好,静态编译后就可以直接在其他电脑上运行。可是有了控件之后,我使用了两个控件,T-Chart和MSCOMM这两个activity控件,总是很难把控件打包起来,并且要能够自动注册控件。
从这之后,我决定不再使用MFC了,起初当初用是因为我熟悉C++,直接用MFC可以避免语言方面的问题,比较方便。然而实际上已经跟不上时代,这真是一个悲伤的故事。以后要是写windows的程序,我决定使用C#或者Java。尤其是C#,.NET框架深深存在每一台windows电脑上,运行库的安装已经不成问题了,很轻松就可以使程序通用于各个电脑而且语言比C++精简许多,设计很轻巧简约。
2015年12月20日
完成设计论文编写。 作品制作完成。经实际效果测试,可以在10厘米的距离之内无接触地测出风扇转速,如照片所示。
|