摘要
對綠色能源的開發(fā)和利用是響應(yīng)我國節(jié)能減排重要決策邑时,太陽能跟蹤裝置。此裝置使用了單片機觅闽,外加兩個步進電機珊楼,光電轉(zhuǎn)換器和相關(guān)的外部元器件及傳感器等等,其中太陽能電池板和云臺都可以很好的完成360°旋轉(zhuǎn)绪爸,使用兩個步進電機也可以更精確的定位旋轉(zhuǎn)角度湾碎,使用單片機控制,感光元器件采樣奠货,再進行電平對比來實現(xiàn)方位和角度的控制介褥,當(dāng)兩者沒有電平差的時候,電機靜止運作,當(dāng)有電平差的時候單片機控制步進電機運動柔滔,課題成果不僅可以用于太陽能發(fā)電溢陪,還可以用到其它的向光場所,如天文觀測等具有較高的實用價值睛廊。
關(guān)鍵詞:太陽能形真;步進電機;單片機控制超全;感光元器件
Abstract
The development and utilization of green energy is an importantdecision in response to China's energy conservation and emission reduction,solar tracking device. This device USES a single chip microcomputer, plus twostepper motors, photoelectric converter and related external components andsensors and so on, including solar panels and yuntai can be very good tocomplete 360 ° rotation, using two step motor can also be more precisepositioning of the rotation Angle, using single-chip microcomputer control,photosensitive components sampling, Again level compared to realize theposition and Angle control, when there is no level difference between the motorstill work, when the level difference single-chip microcomputer controlstepping motor sports, subject results not only can be used for solar power,can also use the other to light place, such as astronomical observation hashigh practical value.
Key words: solar energy; Stepper motor;MCU control; Sensitive element
?? 第一章 緒論
1.1 前言
隨著時代的進步與科技的飛速發(fā)展咆霜,使得對能源的需求隨之增加,對不可再生能源的過度依賴卵迂,從而使得不可再生能源的存儲量急劇減少裕便,一些不可再生能源(石油)被視為戰(zhàn)略資源,據(jù)目前統(tǒng)計见咒,煤炭偿衰、石油、天然氣也會在歲月的實踐中而日趨枯竭[1]改览,消耗殆盡下翎。為更好可持續(xù)發(fā)展,此次設(shè)計提出了可行性方案太陽跟蹤解決方案宝当。
1.2 研究太陽能跟蹤器的目的和意義
為了解決人們對不可再生資源的過度依賴和對清潔能源的高利用率视事。提出設(shè)計一款零污染高效率的裝置——太陽追蹤器。通過電機庆揩,控制器俐东,采光板光線傳感器等元器件之間的相互配合,實現(xiàn)對太陽光照射最強的方位跟蹤订晌,安全且絕對的無污染清潔能源虏辫,這也就很好的闡述了光能的可行性⌒獠Γ——對此提出太陽跟蹤裝置設(shè)計與制作砌庄。
1.3 對太陽能的認(rèn)識
優(yōu)點:太陽作為一個取之不盡用之不竭的能源。在《太陽能利用技術(shù)》[2]就有相關(guān)的提到奕枢,所到達地球表面能量等同于每秒向地球源源不斷的投放了500萬噸煤炭娄昆。陽光所到之處,皆為財富缝彬,免費使用的同時也不需要考慮任何的運輸費用以及零污染等特性萌焰。缺點:即便如此的看似完美無缺,也存在著兩個致命性缺點[3]:一是能流密度很泄惹场扒俯;二是太陽的光照強度也會因為(天氣族购、白夜等)因素的不同而有著很大的差距,很難長時間維持在恒定值陵珍,這也在一定程度上大大的影響了使用效率[4]。
1.4 太陽追蹤器國內(nèi)外現(xiàn)狀與發(fā)展趨勢
國外太陽追蹤器:對太陽能的使用在兩千零四年到兩千零六年太陽能的發(fā)電量都是驚人的4961MW[5]违施,在一九九七年互纯,美國的Blackace研制了單軸追蹤器,熱接收率提高了百分之十五......, [6]磕蒲。
國內(nèi)太陽追蹤器:在應(yīng)用市場上面得到了不斷擴張留潦,對于太陽能追蹤器的利用那也是一個相當(dāng)熱門的談話主題,途徑多年的經(jīng)驗辣往,將其用在了熱水器兔院、路燈以及西部計劃、太陽能發(fā)電站削、太陽能供暖等等[7]坊萝。
更多的往往是采用單軸跟蹤的方式,相比之下更需要多軸许起,實現(xiàn)全方位無死角跟蹤十偶。
1.5 工作內(nèi)容
自動控制和手動調(diào)節(jié)工作方式:
“自動模式”:自動模式顧名思義也就是不受人為控制的一種自動追尋的過程。設(shè)備上電后园细,初始化完成惦积,根據(jù)感光元件對光強度值得采集,后經(jīng)過A/D轉(zhuǎn)換將電信號轉(zhuǎn)換成數(shù)字信號猛频,根據(jù)數(shù)字信號的大小關(guān)系實行控制電機運動狮崩,當(dāng)光照強度值下方大于上方,單片機發(fā)出控制指令鹿寻,上端電機向下翻轉(zhuǎn)睦柴;同理光照強度上方大于下面,單片機發(fā)出控制指令上端電機向上翻轉(zhuǎn)烈和;當(dāng)且僅當(dāng)上下光照強度均等時爱只,上端電機不進行任何的相對翻轉(zhuǎn)。左右方向轉(zhuǎn)動招刹,光照強度值右高于左方恬试,單片機發(fā)出指令,控制下方電機左方向旋轉(zhuǎn)相應(yīng)角度疯暑;光照強度值左高于右時時训柴,單片機發(fā)出控制指令,下方電機向左轉(zhuǎn)動相應(yīng)角度妇拯;當(dāng)左右方位采光度也保持幾乎均應(yīng)的時候光照幻馁,那么下方位的第一個電機也將保持不動洗鸵。
手動模式下,通過手動控制四個按鈕的高低電平狀態(tài)實現(xiàn)上仗嗦,下膘滨,左,右翻轉(zhuǎn)動作稀拐。
?
2.1 方案選擇
2.1.1 編譯語言的選取
選項1:C語言
語言結(jié)構(gòu)火邓,豐富的運算符和程序在編寫時既簡單又緊湊。直接訪問物理地址可實現(xiàn)直接硬件控制德撬。該程序運行非常有效铲咨。
作為面向過程的C語言,它的特征在于對算法和數(shù)據(jù)結(jié)構(gòu)的處理蜓洪。通過直接算術(shù)處理纤勒,實現(xiàn)高效率輸出。
選擇2:C++語言
C ++面向?qū)ο舐√矗玫剡m應(yīng)現(xiàn)代編程摇天。使用過程中C++的使用具有局限性,嵌入式的應(yīng)用中恐仑,更多的依舊是采用C語言作為開發(fā)環(huán)境使用闸翅,C語言運行也較快。C++由于過于復(fù)雜菊霜,在這方面就稍遜一籌坚冀。
選擇3:Java
Java是一種解釋性語言,Java在運行程序時鉴逞,運行前進行解釋记某,使得速度會減慢;而C++會被直接編譯系統(tǒng)所能識別的二進制代碼形式构捡,使得在運行速度更快液南。
從系統(tǒng)的復(fù)雜性出發(fā)來考慮,同時整個過程的計算量比較大勾徽,因此我選用了浮點數(shù)的計算方式滑凉,選用1作為整個系統(tǒng)編譯方式。
2.1.2控制系統(tǒng)總體方案選取
選擇1:視日尋跡追蹤模式
這種模式是基于天文學(xué)公式喘帚,通過公式對其理想化計算得出太陽在不同時候所處的不同方位和角度畅姊。后期依據(jù)當(dāng)?shù)氐拿咳諏嶋H運行軌跡進行對應(yīng)控制算法程序的編寫來完成兩個步進電機來達到俯仰和方位上的轉(zhuǎn)動。優(yōu)點是對外界環(huán)境的依賴小吹由,弊端是不管外界環(huán)境是何種天氣若未,它都會以同樣的工作方式運動,增加了不必要的能耗和元器件的壽命磨損倾鲫。
太陽俯仰角h和方位角A的兩個位置參數(shù)粗合,可表達如下所示:
[if !vml]
[endif]
δ傾角萍嬉,Φ局部緯度,Ω太陽時角隙疚。?????????????????????????????(5-1)
選擇2:光電跟蹤模式
特定方法:模擬電池板的不同之處在于壤追,在四個方向上安裝了光敏元件[8],并且有關(guān)外部光強度的信息的反饋通過光敏元件傳輸?shù)胶诵陌迳系腁/D轉(zhuǎn)換供屉。單片機再進行信息處理比對光照強度下大于上STM32發(fā)出控制指令大诸,驅(qū)動上端電機向下翻轉(zhuǎn);另外的三種不同的運動情況,也都是完全相同的控制比較方式贯卦。
通過兩者的比較,選擇2焙贷,簡單易操作性撵割,更適合被普及廣泛使用,在同等使用條件下辙芍,最簡方案啡彬,則是最優(yōu)方案。
2.1.3主控系統(tǒng)選擇
選擇1:51單片機控制芯片的選擇故硅。程序修改庶灿,相當(dāng)方便快捷,價格低吃衅,但A/D轉(zhuǎn)換需要拓展往踢,增加軟硬件負(fù)擔(dān),運行速度慢徘层,在使用中保護能力欠佳峻呕。
選項2:FPGA基于SRAM,編程信息存儲SRAM中趣效。缺點系統(tǒng)斷電后信息遺失瘦癌,每次使用都必須重新配置。
選擇3:ARM高性能嵌入式系統(tǒng)跷敬。對解決數(shù)據(jù)處理和控制功能具有相當(dāng)不錯的表現(xiàn)讯私,十分適用于太陽能跟蹤,斷電后信息不會丟失西傀,可無限次使用斤寇。
結(jié)合任務(wù)要求,選用3作為設(shè)計標(biāo)準(zhǔn)拥褂,采用STM32F103C8T6抡驼。
2.1.4電機選擇
選擇1:步進電機≈茁兀可以精確控制電機的轉(zhuǎn)到角度致盟,以便于更好的實時跟蹤碎税。
選擇2:直流電機。減速機提高轉(zhuǎn)矩馏锡,具有較大的負(fù)載雷蹂,高精度電機控制直流電機無法滿足設(shè)計要求。
通過控制脈沖數(shù)直接控制啟動和停止杯道。啟動速度快匪煌,步距角和速度僅取決于脈沖頻率,不受外部因素的影響党巾。因此萎庭,作為此設(shè)計任務(wù)的前提條件,我們選擇了方案1作為本路線設(shè)計的驅(qū)動電機齿拂,以便更精確地控制角度值并更好地利用太陽能驳规。
2.1.5電機驅(qū)動系統(tǒng)選擇
選擇1:L298專業(yè)電機驅(qū)動模塊選型,這種類型的驅(qū)動模塊易于使用和連接署海,并且可以同時驅(qū)動步進電機和直流電機吗购。
選擇2:用于三極管和其他分立元件的H橋。重點是優(yōu)點砸狞,簡單的控制方法和簡單的結(jié)構(gòu)捻勉。載流量小,由于元件離散刀森,體積大踱启,穩(wěn)定性得不到保證。
選擇3:采用集成芯片研底,ULN2003禽捆。
可驅(qū)動八個步進電機芯片,可用于兩個步進電機飘哨。在實際使用中胚想,它通常被用作為大型步進機動車輛提供動力的起點。
在本設(shè)計中芽隆,根據(jù)實際設(shè)計要求選擇了選項3作為步進電機驅(qū)動系統(tǒng)浊服。
2.1.5實體結(jié)構(gòu)框架選擇
選擇1:電機互相處成90°角安裝,電機的左右翻轉(zhuǎn)和上下翻轉(zhuǎn)胚吁,缺少互助設(shè)備會出現(xiàn)運動死角牙躺。
選擇2:將兩個電機垂直安裝,改變?yōu)榇笥?0°的安裝腕扶,在不引入外部設(shè)備的情況下孽拷,可以很好的避開運動死角,從而可實現(xiàn)全方位無死角跟蹤半抱,綜合上述情況選擇方案二進行本次的實體結(jié)構(gòu)設(shè)計脓恕。
2.2系統(tǒng)設(shè)計2.2.1 單片機構(gòu)成如下圖:
[if !vml]
[endif]
圖2–2–1 單片機構(gòu)成示意圖
控制方式:第一步是將數(shù)據(jù)程序裝置膜宋,輸入設(shè)備將程序發(fā)送到CPU,并且相應(yīng)地將每個程序發(fā)送到控制器炼幔,然后控制器完成相互命令的傳輸秋茫,最后作用在輸出裝置上,輸出設(shè)備上顯示的結(jié)果是原始程序的效果乃秀。
2.2.2系統(tǒng)整體控制框圖如下:
[if !vml]
[endif]
圖2–2–2 系統(tǒng)整體控制框圖
控制方式:完成整個驅(qū)動控制肛著,第一步就是感光元件及光敏電阻傳感器對外界光的采集,完成電壓跟隨跺讯,通過A/D轉(zhuǎn)換枢贿,然后通過電壓的比較,使用STM32F103C8T6單片機控制電機的驅(qū)動刀脏,最終完成不同電機在不同的光照強度情況下不同方向的運動局荚,最后實現(xiàn)對光的最大化接收。
2.2.3電機控制框圖如下:
[if !vml]
[endif]
圖2–2–3 電機控制框圖
控制方式:通過光的采集火本,實現(xiàn)對電機運動方式的最終選擇和控制。
1當(dāng)?shù)谝唤M感光元件接收到的光強度值大于其他三個方向的光強度值時聪建,電機完成電機在水平方向的正向旋轉(zhuǎn)钙畔,并返回到原始狀態(tài)。
2當(dāng)?shù)诙M感光元件接收到的光強度大于其他三個方向的光強度時金麸,電機在水平方向上完成電機反轉(zhuǎn)并返回到原始狀態(tài)擎析。
3當(dāng)?shù)谌M感光元件采集到光敏數(shù)值大于另外任何方位的值,垂直方向電機做正向旋轉(zhuǎn)挥下。
4當(dāng)?shù)谒慕M感光元件采集到光敏數(shù)值大于另外任何方位的值揍魂,垂直方向反向運動。
感光元件在接收管的均勻照明下時棚瘟,此時的照明強度幾乎相等现斋,這意味著電機的狀態(tài)不移動。
2.2.4整體電路原理圖如下:
[if !vml]
[endif]
圖2-2-4 整體電路原理圖
系統(tǒng)上電啟動偎蘸,感光元器件采集此時此刻的光照強度庄蹋,進行A/D轉(zhuǎn)換后單片機對光強值比較,發(fā)出指令控制步進電機相應(yīng)運動【2】迷雪,初始默認(rèn)狀態(tài)是自動跟蹤模式【3】限书。
手動模式,通過控制4個按鍵的高低電平來實現(xiàn)接通與斷開章咧,單個控制開關(guān)分別控制兩個電機四種不同的狀態(tài)運動倦西,升壓模塊是為了給整個系統(tǒng)穩(wěn)定供電而存在。
第三章 元器件介紹
3.1 系統(tǒng)硬件系統(tǒng)分析設(shè)計
3.1.1
STM32單片機核心電路設(shè)計
較低的功耗赁严,在達到使用要求的情況下扰柠,可為實驗之外提供更多的串口和擴展的應(yīng)用電路【4】粉铐,對發(fā)展前景的選擇多于51。
一耻矮、STM32優(yōu)點:
ARM架構(gòu)秦躯,Cortex-M3內(nèi)核;功耗控裆装;易于開發(fā)等踱承。
二、STM32平臺的選擇可靠性:
存儲空間和管腳應(yīng)用大哨免;引腳與軟件的高度兼容性茎活。
STM32F103C8T6圖如下:
[if !vml]
[endif]
圖3-1-1(a) STM32單片機核心板接口原理圖
STM32單片機實物圖如下圖所示:
[if !vml]
[endif]
圖3-1-1(b) STM32單片機核心板實物圖
3.1.2 步進電機驅(qū)動電路設(shè)計
在系統(tǒng)中,選擇了4期5線的5V-步進電機琢唾。
[if !supportLists]1.??????[endif]型號為28BYJ-48载荔。
[if !supportLists]2.??????[endif]直徑:28mm
[if !supportLists]3.??????[endif]電壓:5V
[if !supportLists]4.??????[endif]步進角度:5.625 x 1/64
[if !supportLists]5.??????[endif]減速比:1/64
[if !supportLists]6.??????[endif]單個重:0.04KG
具體驅(qū)動電路原理圖如下:
[if !vml]
[endif]
圖3-1-2(a) 驅(qū)動電路原理圖
[if !vml]
[endif]
圖3-1-2(b) 驅(qū)動電路原理圖
[if !vml]
[endif]
圖3-1-2(c) 步進電機實物圖
3.1.3 按鍵電路設(shè)計
按鍵控制相當(dāng)于一種電子開關(guān),當(dāng)S1受外力按下時采桃,電路導(dǎo)通從而達到人機交互的效果懒熙。按鍵時,引腳電平發(fā)生變化普办,由高變低工扎,系統(tǒng)開始傳輸手動輸入指令,電機運動衔蹲。
原理見下圖:
[if !vml]
[endif]
圖3-1-3 按鍵電路原理圖
3.1.4 光照檢測電路設(shè)計
本系統(tǒng)的感光元件是行業(yè)最新出現(xiàn)的光敏電阻元件肢娘,通過四個光敏電阻的串聯(lián),既能達到分壓的效果舆驶,又對整個系統(tǒng)起到保護作用橱健。光敏電阻原理圖如下:
[if !vml]
[endif]
圖3-1-4 光敏電阻原理
3.1.5
TFT觸摸彩屏1.44寸模塊
TFT,也被稱為電影場效應(yīng)晶體管沙廉。由點脈沖控制拘荡,這相當(dāng)于為每個像素設(shè)置了一個控制開關(guān)。節(jié)點之間完全獨立撬陵,也可連續(xù)控制俱病,連續(xù)控制可提高反應(yīng)速度。
一袱结、該模塊有如下特點:
[if !supportLists]1)? [endif]128×128分辨率亮隙。
[if !supportLists]2)? [endif]1.44寸的彩顯示器。
[if !supportLists]3)? [endif]色彩深度:16位垢夹。
二溢吻、接口定義
表 3-1-5 接口定義表
管腳順序管腳定義功能闡述
1GND電源接地端
2VCC電源正極
3SCLSPI時鐘輸入
4SDASPI數(shù)據(jù)輸入
5RES屏得復(fù)位
6DC命令/數(shù)據(jù)選擇
7CSSPI片選輸入
8BL背光控制輸入
三、模塊實物圖如下圖所示:
[if !vml]
[endif]
圖3-1-5 顯示屏
原理圖如下:
[if !vml]
[endif]
圖3-1-5 顯示屏原理圖
3.1.6 太陽能發(fā)電電路設(shè)計
太陽輻射能要通過光電效應(yīng)或化學(xué)效應(yīng)實現(xiàn)轉(zhuǎn)換,那么我們首先就要使用到可以吸收太陽光的太陽能大多數(shù)面板(Solarpanel)仍然是由“硅”促王。對于普通的干電池或充電電池犀盟,重點是節(jié)能環(huán)保零污染
特點:超白玻璃作為高透明性的低鐵玻璃,透光率達到了驚人的91.5%蝇狼。
組件在自然情況下是全部裸露阅畴,而空氣中的容易色變,從而影響組件的透光率迅耘。
晶體硅主要是分為多晶和單晶料是最主要的光伏材料贱枣,市場中占比也是驚人的達到了90%以上,然而在今后較長時間內(nèi)也是主要是以硅作為太陽能電池板的主要材料,可將其相當(dāng)不錯的未來可預(yù)見性颤专。
實物圖如下圖所示:
[if !vml]
[endif]
圖3-1-6(a) 太陽能電池板實物圖
其電路接口原理圖如下圖所示:
[if !vml]
[endif]
圖3-1-6(b) 太陽能電池板發(fā)電接口原理圖
3.1.7 TP4056鋰電池充電模塊電路設(shè)計
TP4056鋰電池充電模塊纽哥,防倒充電電路,TP4056作為恒定電流/電壓可持續(xù)性充電模塊栖秕,作為本次選擇的有力據(jù)春塌。為了防止因為高溫和大功率狀態(tài)下對芯片的影響,選用TP4056可完成對電流大小的可控調(diào)節(jié)簇捍。
本模塊的特點:
[if !supportLists]1)?????[endif]外設(shè)通過USB直接通電只壳。
[if !supportLists]2)?????[endif]IN+和IN-針供電。
[if !supportLists]3)?????[endif]輸入電壓:4v-8v暑塑。
[if !supportLists]4)?????[endif]充電紅燈點亮吼句,充電后藍燈點亮。
TP4056鋰電池梯投,并聯(lián)電容器命辖,穩(wěn)定電壓輸出濾波功能况毅。
充電原理圖見下:
[if !vml]
[endif]
圖3-1-7(a) TP4056鋰電池充電模塊接口原理圖
TP4056鋰電池充電模塊實物圖如下圖所示:
[if !vml]
[endif]
圖3-1-7(b) 鋰電池充電模塊實物圖
3.1.8 USB-5V升壓模塊電路設(shè)計
USB5V升壓模塊分蓖,高效輸出以及恒定頻率《恚可提供中等電壓輸出規(guī)格么鹤。本設(shè)計系統(tǒng)采用升壓模塊將電壓從3.7V升壓到5V
實物圖如下:
[if !vml]
[endif]
圖3-1-8(a) 模塊5V跳線取線圖
在焊接USB-5V升壓模塊時,直接與電源線焊接味廊,也可以單排插腳焊接后插入PCB板或通用板蒸甜。
USB開關(guān)閉合,升壓模塊得電工作余佛,鋰電池3.3V升壓到5V柠新。增壓模塊失電,減小電壓波動辉巡,使電壓輸出更加穩(wěn)定恨憎。接口原理圖如下:
[if !vml]
[endif]
圖3-1-8(b) USB-5V升壓模塊接口原理圖
USB-5V升壓模塊實物圖如下圖所示:
[if !vml]
[endif][if !vml]
[endif]
圖3-1-8(c)USB-5V升壓模塊實物圖
3.1.9 分壓電路設(shè)計
采集電壓信號大于光電轉(zhuǎn)換模塊要求上限值時,需要采用分壓器的形式來解決電壓過高引起的溢出問題。
3.2
STM32 單片機系統(tǒng)軟件設(shè)計
3.2.1 Keil程序開發(fā)環(huán)境
C語言邏輯結(jié)構(gòu)清晰憔恳,包括鏈接器和圖書館管理瓤荔,我們使用集成開發(fā)環(huán)境(Vision)把各個部分放在一起。選擇Keil通過以上的基本解釋钥组,即最后的選擇输硝,最好的選擇。
Keil界面如下:
[if !vml]
[endif]
圖3-3-2Keil uVision5開發(fā)界面圖
3.2.2 STM ISP程序燒錄
STM ISP是用于編程的燒錄軟件可以直接下載單片機使用的程序程梦,同時程序檢查和編程点把。32開發(fā)板、下載器以及PC連接后作烟,選擇相應(yīng)的串口號愉粤,選擇目標(biāo)程序?qū)?yīng)端口,單擊“開始變成(P)就可以完成對程序的下載”拿撩。
具體下載界面如下圖所示:
[if !vml]
[endif]
圖3-3-3 燒錄軟件下載界面
3.2.3
CH340串口程序燒寫模塊介紹
[if !vml]
[endif]
圖3-3-4(a) CH340串口燒寫模塊
二衣厘、CH340串口燒寫模塊引腳說明
[if !supportLists]1.??????[endif]TXD 對應(yīng)RXD引腳
[if !supportLists]2.??????[endif]RXD 對應(yīng)RXD引腳
[if !supportLists]3.??????[endif]GND 對應(yīng)GND。
三压恒、CH340串口燒寫模塊
具體接線圖如下表所示:
表3-4-4(b)
CH340串口燒寫模塊與單片機接線
CH340模塊單片機開發(fā)板
TXD引腳PA10
RXD引腳PA9
GNDGND
3.4 軟件開發(fā)工具
[if !supportLists]1.??[endif]STC11F16XE單片機開發(fā)集成環(huán)境:Keil
[if !supportLists]2.??????[endif]單片機下載上位機軟件:STM
ISP下載器MCUISP
[if !supportLists]3.??????[endif]PCB繪圖軟件:dxp
[if !supportLists]4.??????[endif]流程圖繪畫軟件:WPSOffice
第四章 系統(tǒng)測試
4.1 軟件調(diào)試
為了防下載程序出錯影暴,在調(diào)試前,我們需要特別留意探赫,所編寫程序在對單片機選型型宙,是否準(zhǔn)確無誤,串口也要正確伦吠,本設(shè)計所使用的單片機型號為STM32F103c8t6妆兑,使用keil軟件作為編程工具,程序完成后生成毛仪。hex文件搁嗓,現(xiàn)在編譯程序,當(dāng)軟件編譯完成后箱靴,下方顯示檢查無錯誤腺逛,接著就是程序的調(diào)試部分,調(diào)試完成衡怀,生成最后的最終程序其型號選擇如圖4-1所示棍矛。Keil編譯程序成功如圖4-2所示。
[if !vml]
[endif]
圖4-1 Keil單片機型號選擇
[if !vml]
[endif]
程序編譯結(jié)束抛杨,切換輸出選項卡够委,生成.hex文件,確認(rèn)保存路徑怖现,重新編譯和組建程序茁帽,后生成.hex文件。Keil生成.hex如圖下圖。最后將程序從Keil傳輸?shù)絊TM32F103c8t6最小系統(tǒng)
[if !vml]
[endif]
圖4-3 Keil生成.hex文件
4.2 系統(tǒng)整體調(diào)試
利用軟件AD15將原理圖繪制成PCB板脐雪。繪制PCB板過程是:來到了軟件首先調(diào)用畫好的原理圖厌小,再者電路設(shè)計圖打開后點擊設(shè)計菜單欄,選擇Update PCB Document PCB1.PcbDoc战秋;第三步點擊驗證變更璧亚,將原理圖導(dǎo)入PCB,正常生成PCB脂信,個體圖PCB完成后癣蟋,自動布線,整體的PCB完成狰闪。利用keil軟件下載器將程序?qū)?2單片機后疯搅,按照預(yù)定要求進行調(diào)試。
[if !vml]
[endif]
圖5-6 布置好線的PCB圖
第五章 全文總結(jié)與展望
5.1全文總結(jié)
整個系統(tǒng)使用了STM32F103C8T6核心板埋泵、光敏采集電路幔欧、調(diào)壓模塊、步進電機等構(gòu)成丽声。光敏采集板和主控板連接線相互連接礁蔗。光敏采集板安裝光敏傳感器模擬太陽能板。主控板按鍵控制及相關(guān)驅(qū)動方面進行指令控制雁社。
一浴井、太陽能板采光。電路穩(wěn)壓后將電能備用到電池里面進行儲能霉撵,3.3升壓到5V給整個系統(tǒng)供電偏化,有單獨的電源控制開關(guān)可以進行電源的通斷控制励翼。在給設(shè)備系統(tǒng)進行上電后闲先,系統(tǒng)最初的默認(rèn)形式為隨太陽運動而運動的“自動模式”摧找,還有就是可以通人為控制改為“手動模式”[9]。
二崭参、 系統(tǒng)上電時呵曹,無論是自動還是手動款咖,光敏電阻都會采集光強度并完美地顯示在顯示屏上何暮,上、下铐殃、左海洼、右四個方位。通過兩個步進電機驅(qū)動來完成上下左右運動富腊,將兩個步進電機焊接在一塊形成了一個角度多自由度的整體坏逢。兩個電機都是通過連接線與主板進行的連接,通過光敏電阻對光強度的采集獲得四個方位的不同關(guān)照強度值,最后通過與預(yù)計值的比較是整,最后來確定電機的運動軌跡[10]肖揣。
三、自動模式:Automatically judge the light
intensity, if the light intensity below is greater than the light intensity
above, the STM32 MCU will directly drive the upper motor to flip down浮入;以便于在下午太陽西落的時候龙优,獲得更多的關(guān)照,若上面光照強度大于下面光照強度事秀,STM32單片機就會直接驅(qū)動上端步進電機向上進行運動[11]彤断;若上下兩個方位的光照強度均是大小相差無幾,那么上端步進電機則不進行任何的動作易迹。接下來就是對于當(dāng)上下光照均勻左右運動的情況宰衙,若右方位的光照強度大于左方位的情況下,STM32單片機就直接驅(qū)動下方位第一個步進電機向左方位一定角度轉(zhuǎn)動[12]睹欲;左方光照強度高于右方光照強度供炼,單片機直接驅(qū)動下方位步進電機左位運動[13];當(dāng)左右方位采光度也保持幾乎均應(yīng)的時候光照窘疮,那么下方位的第一個電機也將保持不動劲蜻。那么此時此刻設(shè)備的狀態(tài)將是完全的禁止,STM32單片機將不對電機給出任何的運動指令[14]考余。
四先嬉、切換“手動模式”狀態(tài)手動按鍵完成設(shè)備狀態(tài)切換。四個按鈕控制:上楚堤、下疫蔓、左、右四個方位的運動身冬。通過點動的方式來控制驅(qū)動步進電機的實際運動[15]衅胀。
四、當(dāng)太陽能收集有限時酥筝,此時使用外部電源USB充電模塊對其進行鋰電池上電滚躯,以保障系統(tǒng)的正常運行[16]。
顯示屏顯示光敏電阻采集光的范圍0-1000嘿歌。自動模式和手動模式掸掏,對上、下宙帝、左丧凤、右方向進行光的采集。兩個步進電機實現(xiàn)多維度控制步脓,上下翻轉(zhuǎn)和左右轉(zhuǎn)動愿待。
5.2后續(xù)工作展望
它在原有的基礎(chǔ)上浩螺,還可以與外部設(shè)備配合使用,如利用電廠的儲能仍侥,向魚塘的制氧機供電要出,通過電力實現(xiàn)步行關(guān)燈,藍牙控制路燈等
致? 謝
時間很快农渊,畢業(yè)設(shè)計已經(jīng)開始接近尾聲厨幻,幾年的大學(xué)學(xué)習(xí)生涯即將告一段落,在后期的研究生生涯中希望可以得到更好的視野拓展腿时。通過本次的設(shè)計况脆,問題也是層出不窮,也是這些困難讓我學(xué)會了成長批糟,以前幾乎自己一個人沒有單獨做過設(shè)計格了,因此也遇到C程序的編寫這一大困難。慢慢的一切都會因人而解徽鼎,吳導(dǎo)師的大力幫助盛末,是很重要的一個環(huán)節(jié)。
從這次的畢業(yè)設(shè)計中否淤,深刻的體會到學(xué)習(xí)中悄但,要理論聯(lián)系實際,把我們所學(xué)的理論知識用到實際當(dāng)中石抡,學(xué)習(xí)單機片機更是如此檐嚣,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次畢業(yè)設(shè)計中的最大收獲啰扛。硬件只有多做嚎京,自己多搭建電路來調(diào)試才能真正的學(xué)得知識。
首先隐解,我要感謝我的導(dǎo)師對我的悉心指導(dǎo)鞍帝。他為我的畢業(yè)設(shè)計指導(dǎo)盡心竭力,他淵博的知識煞茫、平易近人的性格以及在設(shè)計上敏銳的洞察力帕涌,使我受益非淺。在整個畢業(yè)設(shè)計期間续徽,老師時不時提醒著我蚓曼,要做什么了,聽在耳里炸宵,看在眼里更是記在心里辟躏。從最初的選題到后期的完成谷扣,少不了導(dǎo)師的教導(dǎo)土全。占用了老師的寶貴時間捎琐,得以最后完成論文。
在大學(xué)的幾年學(xué)習(xí)生活中裹匙,感謝學(xué)院也感謝各位老師讓我們有了獲取知識的平臺瑞凑,結(jié)識了一幫有著共同愛好的朋友,我們大家共同學(xué)習(xí)概页,為完成畢業(yè)設(shè)計打下了基礎(chǔ)——感謝得以與大家相識籽御、相知、相惜惰匙。
謝謝大家技掏!
參考文獻
[if !supportLists][1]??[endif]張翠華,范小振.《能源新視野》. [M]. Boston: Artech House, 2017 , 5-8
[if !supportLists][2]??[endif]羅金玲.《電腦編程技巧與維護》.[M].2015年第22期31-32,37共3頁
[if !supportLists][3]??[endif]武奇生.《基于ARM的單片機應(yīng)用及實踐》.[M].機械工業(yè)出版社12頁
[if !supportLists][4]??[endif]郭欣. 太陽能雙軸跟蹤系統(tǒng)的研究與設(shè)計[J].裝備制造與教育, 2017, 03 , 6-9
[if !supportLists][5]??[endif]楊亞龍. 太陽能電池板自動追光系統(tǒng)研究與實現(xiàn)[D]. 長安大學(xué), 2014 , 5-6
[if !supportLists][6]??[endif]高緒昊. 太陽能跟隨系統(tǒng)設(shè)計[J].硅谷, 2013 02
[if !supportLists][7]??[endif]劉卿卿,俞強,趙毛毛,王競雄. 基于STM32的光電式太陽跟蹤系統(tǒng)設(shè)計[J]. 儀表技術(shù)與傳感器, 2017, 01
[if !supportLists][8]??[endif]扎西頓珠袁超 胡石峰.《黑龍江科學(xué)》. [M].2019年第24期28-31,共4頁
[if !supportLists][9]??[endif]?
[if !supportLists][10]??????????[endif]李仁浩,龔思敏,楊帆. 基于單片機控制太陽能智能跟蹤控制系統(tǒng)的設(shè)計[J]. 儀表技術(shù)與傳感器.2015(04) :21-23
[if !supportLists][11]??????????[endif]葉偉慧,廖才,石金強,陳國康.基于陽光方位探測器的太陽能收集板姿態(tài)調(diào)節(jié)系統(tǒng) [J]. 儀表技術(shù)與傳感器, 2011(03) :156-160
[if !supportLists][12]??????????[endif]劉卿卿,俞強,趙毛毛,王競雄.基于STM32的光電式太陽跟蹤系統(tǒng)設(shè)計[J].儀表技術(shù)與傳感器.2017(01)
[if !supportLists][13]??????????[endif]李仁浩,龔思敏,楊帆,劉松,李小兵.基于單片機控制太陽能智能跟蹤控制系統(tǒng)的設(shè)計[J].儀表技術(shù)與傳感器.2015(04)
[if !supportLists][14]??????????[endif]王定玲,夏美娟.太陽能自動跟蹤系統(tǒng)設(shè)計[J].江蘇科技信息. 2017(02)
[if !supportLists][15]??????????[endif]申來明,楊亞龍.一種利用單片機實現(xiàn)太陽跟蹤的設(shè)計方法[J].現(xiàn)代電子技術(shù). 2014(10)
[if !supportLists][16]??????????[endif]許義泉,王燕昌,王子文,慕松.赤道坐標(biāo)系下新型太陽能自動跟蹤裝置設(shè)計[J].機械設(shè)計與制造. 2013(09)
[if !supportLists][17]??????????[endif]閆云飛,張智恩,張力,代長林.太陽能利用技術(shù)及其應(yīng)用[J].太陽能學(xué)報. 2012(S1)
[if !supportLists][18]??????????[endif]王陽.太陽能電池板追光系統(tǒng)的研究[D].沈陽工業(yè)大學(xué).2017
[if !supportLists][19]??????????[endif]Du Xiaoqiang,Li Yuechan,WangPengcheng,Ma Zenghong,Li Dangwei,Wu Chuanyu. Design and optimization of solartracker with U-PRU-PUS parallel mechanism [J] IOP J.MECHMACHTHEORY.2020.104107
[if !supportLists][20]??????????[endif]Qingli HaidongLiu. Design of
Solar Energy Automatic Tracking Control System Based on Single Chip
Microcomputer [J]. IOP Conference Series Earth and Environmental Science March
2019
[if !supportLists][21]??????????[endif]Du Xiaoqiang, Li Yuechan, WangPengcheng, et al. Design and optimization of solar tracker with U-PRU-PUSparallel mechanism[J]. 2021, 155:104107
附錄Ⅰ系統(tǒng)PCB如下:
[if !vml]
[endif]
附件圖 0–1主控板PCB
[if !vml]
[endif]
附件圖 0–2光敏PCB
#include "my_include.h"
char dis0[25];//液晶顯示暫存數(shù)組
char dis1[25];//液晶顯示暫存數(shù)組
#define F_SIZE????? 16
#define MyLCD_Show(m,n,p)????LCD_ShowString(LCD_GetPos_X(F_SIZE,m),LCD_GetPos_Y(F_SIZE,n),p,F_SIZE,false)
#define RONGCHAZHI_UD? 500 //容差值
#define RONGCHAZHI? 500 //容差值
#define ZHUANDONG_ZZ? 50 //轉(zhuǎn)動一個正角度
#define ZHUANDONG_FZ? -50 //轉(zhuǎn)動另一個方向轉(zhuǎn)動
int lighVla_left = 0;//ad采集結(jié)果1??
int lighVla_up = 0;//ad采集結(jié)果
int lighVla_right = 0;//ad采集結(jié)果
int lighVla_down = 0;//ad采集結(jié)果
float batteryVolt = 0;//鋰電池電壓ad采集結(jié)果
float BatCap=80;??????????????????? ? //容量初始化
unsigned char disFlag = 0;//更新顯示
unsigned char setMode =0;//設(shè)置模式
unsigned char rememberMode =0xff;//記錄上一次設(shè)置狀態(tài)
int main(void)
{
????? unsigned chardisYplace=0; //顯示所在行遞增變量
????? USARTx_Init(USART1,9600);
//??? My_LED_Init();
//??? My_RTC_Init(false);
????? My_ADC_Init(ADC1);
????? My_KEY_Init();
????? My_StepMotor_Init();
????? LCD_Init();?? //tft初始化??? ? ?? ?
//??? TP_Init(); //校準(zhǔn)已經(jīng)包括再此函數(shù)中 先執(zhí)行LCD_Init();? 觸摸校準(zhǔn)調(diào)用顯示?????
????? LCD_Clear(Color16_BLACK);//清全屏
????? BACK_COLOR=Color16_BLACK;
????? FRONT_COLOR=Color16_LIGHTGRAY; disYplace=0; //顯示所在行遞增變量?????????
????? MyLCD_Show(2,disYplace++,"雙軸追光系統(tǒng)");//顯示
????? FRONT_COLOR=Color16_LIGHTBLUE;
????? MyLCD_Show(1,disYplace++,"光照參數(shù): ");//顯示??????
????? MyLCD_Show(4,disYplace++,"上: ");//顯示????
????? MyLCD_Show(1,disYplace,"左: ");//顯示?
????? MyLCD_Show(9,disYplace++,"右: ");//顯示????
????? MyLCD_Show(4,disYplace++,"下: ");//顯示????
????? MyLCD_Show(1,disYplace++,"設(shè)置: ");//顯示
????? while(1)
????? {
???????????? My_KeyScan();
???????????? if(KeyIsPress(KEY_5))
???????????? {
??????????????????? if(setMode!=0 )setMode =0;//自動模式
??????????????????? elsesetMode=1;//手動模式
???????????? }
???????????? switch(setMode)
???????????? {
??????????????????? case 0: //自動模式
???????????????????????????????????????? if((lighVla_left- lighVla_right)>RONGCHAZHI_UD ) //調(diào)整向強光方向轉(zhuǎn)動
???????????????????????????????????????? {My_StepMotor_RotateAngle(0,ZHUANDONG_ZZ);}
???????????????????????????????????????? elseif((lighVla_right - lighVla_left )>RONGCHAZHI_UD )//調(diào)整向強光方向轉(zhuǎn)動
???????????????????????????????????????? {My_StepMotor_RotateAngle(0,ZHUANDONG_FZ);}
???????????????????????????????????????? else{My_StepMotor_Stop(10);}
???????????????????????????????????????? if((lighVla_up- lighVla_down)>RONGCHAZHI_UD ) //調(diào)整向強光方向轉(zhuǎn)動
???????????????????????????????????????? {My_StepMotor_RotateAngle(1,ZHUANDONG_ZZ);}
???????????????????????????????????????? elseif((lighVla_down - lighVla_up )>RONGCHAZHI_UD )//調(diào)整向強光方向轉(zhuǎn)動
???????????????????????????????????????? {My_StepMotor_RotateAngle(1,ZHUANDONG_FZ);} ??????
???????????????????????????????????????? else? {My_StepMotor_Stop(10);}??????
???????????????????????????????????????? break;
??????????????????? case 1: //手動模式??????????????????????????????????????????????
???????????? ??????????????????????????? if(KeyIsPressed(KEY_1))//按鍵按下
???????????????????????????????????????? {
?????????????????????????????????????????????? My_StepMotor_RotateAngle(0,ZHUANDONG_ZZ);//轉(zhuǎn)動度數(shù)正值一個方向負(fù)值另一個方向
???????????????????????????????????????? }
???????????????????????????????????????? elseif(KeyIsPressed(KEY_3))//按鍵按下
???????????????????????????????????????? {
???????????????????????????????????????? ?????? My_StepMotor_RotateAngle(0,ZHUANDONG_FZ);//轉(zhuǎn)動 度數(shù) 正值一個方向 負(fù)值另一個方向
???????????????????????????????????????? }???????????
?????????????????????????? ????????????? else {My_StepMotor_Stop(0);}??????????????????
???????????????????????????????????????? if(KeyIsPressed(KEY_2))//按鍵按下
???????????????????????????????????????? {
???????????????????????????????????????? ?????? My_StepMotor_RotateAngle(1,ZHUANDONG_FZ);//轉(zhuǎn)動 度數(shù) 正值一個方向 負(fù)值另一個方向
???????????????????????????????????????? }???????????????????????????????????????
???????????????????????????????????????? elseif(KeyIsPressed(KEY_4))//按鍵按下
???????????????????????????????????????? {
???????????????????????????????????????? ?????? My_StepMotor_RotateAngle(1,ZHUANDONG_ZZ);//轉(zhuǎn)動 度數(shù) 正值一個方向 負(fù)值另一個方向
???????????????????????????????????????? }
???????????????????????????????????????? else{My_StepMotor_Stop(10);}??
???????????????????????????????????????? break;
??????????????????? default:break;???????????
???????????? }
???????????? lighVla_left =1000- 1000*My_ADC_GetValue(ADC1,ADC_Channel_0)/4096; //讀取ad值 轉(zhuǎn)化為0-1000
???????????? lighVla_up = 1000- 1000*My_ADC_GetValue(ADC1,ADC_Channel_1)/4096; //讀取ad值 轉(zhuǎn)化為0-1000
???????????? lighVla_right =1000 - 1000*My_ADC_GetValue(ADC1,ADC_Channel_2)/4096; //讀取ad值 轉(zhuǎn)化為0-1000
???????????? lighVla_down =1000 - 1000*My_ADC_GetValue(ADC1,ADC_Channel_3)/4096; //讀取ad值 轉(zhuǎn)化為0-1000
???????????? if(disFlag == 1)//更新顯示
???????????? {
??????????????????? disFlag =0;
??????????????????? FRONT_COLOR=Color16_LIGHTBLUE; disYplace=2; //顯示所在行遞增變量???????
??????????????????? sprintf(dis0,"上:%d? ",lighVla_up);//打印
??????????????????? MyLCD_Show(4,disYplace++,dis0);//顯示?????????????
??????????????????? sprintf(dis0,"%d",lighVla_left);//打印
??????????????????? MyLCD_Show(4,disYplace,dis0);//顯示????????????????????????
??????????????????? sprintf(dis0,"%d",lighVla_right);//打印
??????????????????? MyLCD_Show(12,disYplace++,dis0);//顯示????
??????????????????? //**Allnotes can be deleted and modified**//
??????????????????? if(rememberMode!= setMode)
??????????????????? {
?????????????????????????? rememberMode= setMode;//記錄設(shè)置模式
?????????????????????????? if(setMode== 0)MyLCD_Show(8,disYplace++,"自動? ");//顯示?????????????
?????????????????????????? elseif(setMode == 1)MyLCD_Show(8,disYplace++,"手動? ");//顯示????????????
??????????????????? }
??????????????????? batteryVolt? =My_ADC_GetValue(ADC1,ADC_Channel_4)*3.3/4096 *2 ;//鋰電池電壓
??????????????????? if(batteryVolt>4.15)? //電壓值對比
??????????????????? {BatCap =0.99;}//容量????????????????
??????????????????? elseif(batteryVolt<3.4)
??????????????????? {BatCap=0;}
??????????????????? else
??????????????????? {BatCap =(batteryVolt-3.4)/(4.15-3.4);}//正常情況下計算比例
??????????????????? if(BatCap<0.45){FRONT_COLOR=Color16_RED; }
??????????????????? sprintf(dis0,"B:%3.1fvQ:%02d%% ",batteryVolt,(int)(BatCap*100)); ?????? //打印???????????????????????????????
??????????????????? MyLCD_Show(1,6,dis0);//顯示???????????????????????????????
???????????? }
????? }?????????????????????????????????????????????????????????????????????????? ???
}???