本帖最后由 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厘米的距離之內無接觸地測出風扇轉速,如照片所示。



|